diff --git a/archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java b/archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java index fad70d4..362fa52 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java +++ b/archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java @@ -32,9 +32,9 @@ public class ArchivesController { @ApiOperation("档案列表") @GetMapping("/initArchivesView") public ApiResponse initArchivesView( - String categoryId,String query,Integer archivesState,boolean isdel,Pageable page + String categoryId,String parentsId,String query,Integer archivesState,boolean isdel,Pageable page ){ - return ApiResponse.success(archivesService.initArchivesView(categoryId,query,archivesState,isdel,page)); + return ApiResponse.success(archivesService.initArchivesView(categoryId,parentsId,query,archivesState,isdel,page)); } @ApiOperation("档案预编辑") @@ -77,6 +77,14 @@ public class ArchivesController { return ApiResponse.success(archivesService.editFile(dto)); } + @ApiOperation("删除档案附件") + @PostMapping("/deleteFile") + public ApiResponse deleteFile( + @Validated @RequestBody ArchivesFileDTO dto + ){ + return ApiResponse.success(archivesService.deleteFile(dto)); + } + @ApiOperation("档案删除") @PostMapping("/delete") public ApiResponse delete( diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java index da722a9..71f6689 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java @@ -9,7 +9,7 @@ public interface ArchivesService { //初始化档案列表标题 Object initArchivesViewTable(String categoryId); //初始化档案列表 - Object initArchivesView(String categoryId, String query,Integer archivesState, boolean isdel,Pageable page); + Object initArchivesView(String categoryId,String parentsId, String query,Integer archivesState, boolean isdel,Pageable page); //预编辑档案 初始化信息 Object doedit(String categoryId,String archivesId); //档案编辑 判断值是否超昂福 @@ -20,6 +20,8 @@ public interface ArchivesService { Object initArchiveFilesView(String categoryId,String archiveId); //编辑档案附件 Object editFile(ArchivesFileDTO dto); + //删除档案附件 + Object deleteFile(ArchivesFileDTO dto); //档案删除进回收站 Object delete(ArchivesDTO dto); //档案回收站删除 diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java index 87b617b..40025f6 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java @@ -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 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+"%') "; + + " 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 countList = entityManager.createNativeQuery("select count(1) from "+queryTable+additional).getResultList(); + List countList = entityManager.createNativeQuery("select count(1) from "+queryTable+additional+queryparentsId).getResultList(); Object count = countList.get(0); - List list = entityManager.createNativeQuery("select "+queryField+" from "+queryTable+additional+quertOrder + List list = entityManager.createNativeQuery("select "+queryField+appendQuery+" from "+queryTable+additional+queryparentsId+quertOrder +" limit "+page.getPageNumber()*page.getPageSize()+","+page.getPageSize()).getResultList(); List 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 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 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 null; + return result; + } + + @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 diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/domain/ArchivesDictionary.java b/archives/src/main/java/com/storeroom/modules/dictionary/domain/ArchivesDictionary.java index e1d0a53..9ff6606 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/domain/ArchivesDictionary.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/domain/ArchivesDictionary.java @@ -4,6 +4,8 @@ import com.storeroom.base.BaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.NotFound; +import org.hibernate.annotations.NotFoundAction; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -29,6 +31,7 @@ public class ArchivesDictionary extends BaseEntity implements Serializable { @ManyToOne(targetEntity = Dictionary.class) @ApiModelProperty(value = "系统字典id") + @NotFound(action= NotFoundAction.IGNORE) @JoinColumn(name = "dictionary_config_id",referencedColumnName = "id") private Dictionary dictionaryConfigId; diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesTypeRepository.java b/archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesTypeRepository.java index bfb5bdc..59a5faf 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesTypeRepository.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesTypeRepository.java @@ -11,4 +11,7 @@ import java.util.List; public interface ArchivesTypeRepository extends JpaRepository, JpaSpecificationExecutor { List findByCnName(String cn); + + @Query("select enName from ArchivesType where pid = ?1") + String findEnNameByPid(String pid); } diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DynamicTableImpl.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DynamicTableImpl.java index d4f5575..89d74ba 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DynamicTableImpl.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DynamicTableImpl.java @@ -46,7 +46,7 @@ public class DynamicTableImpl implements DynamicTableService { List integerList = new ArrayList<>(); if (type == 4 || type == 5) { //#生成文件表名称 - String fileTableName = "file_tb_"; + String fileTableName = "file_"+tableName; integerList.add(1); integerList.add(2); @@ -57,7 +57,6 @@ public class DynamicTableImpl implements DynamicTableService { integerList.add(3); List fileList = queryList(integerList); DynamicInsert(fileList, archiveTypeId); - fileTableName += DateUtils.getNowDateTime(); DynamicCreateFileTable(fileList, fileTableName); } else {