|
|
@ -47,7 +47,7 @@ public class ArchivesServiceImpl implements ArchivesService { |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Object initArchivesView(String categoryId, String query,Integer archivesState, boolean isdel,Pageable page) { |
|
|
|
public Object initArchivesView(String categoryId,String parentsId, String query,Integer archivesState, boolean isdel,Pageable page) { |
|
|
|
Optional<ArchivesType> optional = archivesTypeRepository.findById(categoryId); |
|
|
|
if(!optional.isPresent()) |
|
|
|
return "未查询到到门类信息!"; |
|
|
@ -57,29 +57,35 @@ public class ArchivesServiceImpl implements ArchivesService { |
|
|
|
queryFields.add("tid"); |
|
|
|
queryFields.add("case_no"); |
|
|
|
String queryField = queryFields.stream().map(String::valueOf).collect(Collectors.joining(",")); |
|
|
|
|
|
|
|
String queryTable = archivesType.getEnName(); |
|
|
|
String quertOrder = ""; |
|
|
|
String appendQuery = ""; |
|
|
|
queryFields.add("children_num"); |
|
|
|
if(archivesType.getIsType() == ArchivesTypeEnum.project.getCode() || archivesType.getIsType() == ArchivesTypeEnum.archives.getCode()){ |
|
|
|
queryFields.add("chichildren_num"); |
|
|
|
String childrenTable = archivesTypeRepository.findEnNameByPid(archivesType.getId()); |
|
|
|
appendQuery = StringUtils.isEmpty(childrenTable) ? ",0 " :",(select count(1) from "+childrenTable+" c where c.parent_id = t.id) "; |
|
|
|
}else{ |
|
|
|
appendQuery = ",(select count(1) from file_"+queryTable+" c where c.archive_id = t.id) "; |
|
|
|
} |
|
|
|
|
|
|
|
String queryTable = archivesType.getEnName(); |
|
|
|
String quertOrder = ""; |
|
|
|
Sort sort = page.getSort(); |
|
|
|
Object[] objects = sort.get().toArray(); |
|
|
|
for(Object obj:objects){ |
|
|
|
String[] splits = obj.toString().split(":"); |
|
|
|
quertOrder += splits[0].trim()+" "+splits[1].trim() +","; |
|
|
|
} |
|
|
|
String additional = isdel ? " where is_delete_time is not null " : " where is_delete_time is null "; |
|
|
|
String additional = isdel ? " t where is_delete_time is not null " : " where is_delete_time is null "; |
|
|
|
|
|
|
|
String queryparentsId = StringUtils.isEmpty(parentsId) ? " " : " and parent_id = '"+parentsId+"' "; |
|
|
|
|
|
|
|
additional = StringUtils.isEmpty(query) ? additional : additional |
|
|
|
+ " and (maintitle like '%"+query+"%' or archive_no like '%"+query+"%' or archive_year like '%"+query+"%') "; |
|
|
|
if(objects.length > 0) |
|
|
|
quertOrder = " order by " + quertOrder.substring(0,quertOrder.length()-1); |
|
|
|
|
|
|
|
List<Object[]> countList = entityManager.createNativeQuery("select count(1) from "+queryTable+additional).getResultList(); |
|
|
|
List<Object[]> countList = entityManager.createNativeQuery("select count(1) from "+queryTable+additional+queryparentsId).getResultList(); |
|
|
|
Object count = countList.get(0); |
|
|
|
List<Object[]> list = entityManager.createNativeQuery("select "+queryField+" from "+queryTable+additional+quertOrder |
|
|
|
List<Object[]> list = entityManager.createNativeQuery("select "+queryField+appendQuery+" from "+queryTable+additional+queryparentsId+quertOrder |
|
|
|
+" limit "+page.getPageNumber()*page.getPageSize()+","+page.getPageSize()).getResultList(); |
|
|
|
List<Map> returnlist = new ArrayList<>(); |
|
|
|
for(Object[] objs:list){ |
|
|
@ -286,24 +292,50 @@ public class ArchivesServiceImpl implements ArchivesService { |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Object editFile(ArchivesFileDTO dto) { |
|
|
|
int result = 0; |
|
|
|
ArchivesType archivesType = archivesTypeRepository.findById(dto.getCategoryId()).get(); |
|
|
|
List<ArchivesDictionary> queryShow = archivesDictionaryRepository.findAllByCategoryIdAndIsTypeOrderByIsSequenceAsc(dto.getCategoryId(),3); |
|
|
|
ArchivesDictionary idad = new ArchivesDictionary(); |
|
|
|
idad.setFieldName("id");idad.setIsDataType(1); |
|
|
|
queryShow.add(idad); |
|
|
|
JSONArray jsonArray = new JSONArray(dto.getJsonString()); |
|
|
|
String archivesId = new JSONObject(jsonArray.get(0)).get("archive_id")+""; |
|
|
|
String delsql = "delete from file_"+archivesType.getEnName()+" where archive_id = '"+archivesId+"'"; |
|
|
|
entityManager.createNativeQuery(delsql).executeUpdate(); |
|
|
|
List<String> fields = queryShow.stream().map(archivesDictionary -> { |
|
|
|
return archivesDictionary.getFieldName(); |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
fields.add("id"); |
|
|
|
String queryFields = fields.stream().map(String::valueOf).collect(Collectors.joining(",")); |
|
|
|
for (Object obj:jsonArray){ |
|
|
|
JSONObject json = new JSONObject(obj); |
|
|
|
String insertValue = ""; |
|
|
|
for(ArchivesDictionary archivesDictionary:queryShow){ |
|
|
|
|
|
|
|
if("id".equals(archivesDictionary.getFieldName()) && (StringUtils.isEmpty(json.get("id")+"") || "null".equals(json.get("id")))){ |
|
|
|
insertValue += "'"+NanoIdUtils.randomNanoId() +"',"; |
|
|
|
break; |
|
|
|
} |
|
|
|
insertValue += archivesDictionary.getIsDataType() == 1 ? |
|
|
|
StringUtils.isEmpty(json.get(archivesDictionary.getFieldName())+"") || "null".equals(json.get(archivesDictionary.getFieldName())) ? null : "'"+json.get(archivesDictionary.getFieldName()) +"'," |
|
|
|
: StringUtils.isEmpty(json.get(archivesDictionary.getFieldName())+"") || "null".equals(json.get(archivesDictionary.getFieldName())) ? null : json.get(archivesDictionary.getFieldName()) +","; |
|
|
|
} |
|
|
|
insertValue = insertValue.length() != 0 ? insertValue.substring(0,insertValue.length()-1) : ""; |
|
|
|
String sql = "insert into file_"+archivesType.getEnName()+"("+queryFields+") values ("+insertValue+")"; |
|
|
|
int thisresult = entityManager.createNativeQuery(sql).executeUpdate(); |
|
|
|
result += thisresult; |
|
|
|
} |
|
|
|
|
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
return null; |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Object deleteFile(ArchivesFileDTO dto) { |
|
|
|
ArchivesType archivesType = archivesTypeRepository.findById(dto.getCategoryId()).get(); |
|
|
|
String ids = dto.getIds().stream().map(String::valueOf).collect(Collectors.joining("','")); |
|
|
|
ids = ids.length() > 0 ? "'"+ids+"'" : ids; |
|
|
|
String sql = "delete from "+archivesType.getEnName()+" where id in ("+ids+")"; |
|
|
|
int result = entityManager.createNativeQuery(sql).executeUpdate(); |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|