From 22ea92cb0e56848a7348f41997f8d20c321ae01d Mon Sep 17 00:00:00 2001 From: xia Date: Fri, 8 Jul 2022 10:30:59 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=9B=B4=E6=96=B0=E6=A1=A3=E6=A1=88=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=90=9C=E7=B4=A2=E6=A0=8F=202.=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=88=A0=E9=99=A4=E3=80=81=E8=BF=98=E5=8E=9F?= =?UTF-8?q?=E3=80=81=E5=BD=BB=E5=BA=95=E5=88=A0=E9=99=A4=E3=80=81=E9=99=84?= =?UTF-8?q?=E4=BB=B6=E5=88=A0=E9=99=A4=E7=AD=89=E5=8A=9F=E8=83=BD=203.?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=87=E7=AD=BE=E6=97=A5=E5=BF=97=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E3=80=81=E5=AF=BC=E5=87=BA=E7=AD=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ArchivesController.java | 8 +- .../archives/controller/TagController.java | 42 +++ .../archives/domain/ArchivesTagLog.java | 3 +- .../repository/ArchivesSummaryRepository.java | 6 +- .../repository/ArchivesTagLogRepository.java | 11 +- .../archives/service/ArchivesService.java | 5 +- .../archives/service/ArchivesTagService.java | 3 + .../service/impl/ArchivesCaseServiceImpl.java | 2 +- .../service/impl/ArchivesServiceImpl.java | 253 +++++++++++++++++- .../service/impl/ArchivesTagServiceImpl.java | 13 +- .../repository/ArchivesTypeRepository.java | 3 + 11 files changed, 321 insertions(+), 28 deletions(-) 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 72ef465..04a5311 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 @@ -55,11 +55,11 @@ public class ArchivesController { @ApiOperation("档案列表") @GetMapping("/initArchivesView") public ApiResponse initArchivesView( - String categoryId,String parentsId,Integer queryType,String queryTitle,String archiveNo,Integer archivesState,String archiveYear,String department, - String retention,String securityClass,String organizationMatter,boolean isdel,Pageable page + String categoryId,String parentsId,Integer queryType,String queryTitle,String itemNo,String archiveNo,String archiveCtgNo,String responsibleby, + Integer archivesState,String archiveYear,String department,String retention,String securityClass,String organizationMatter,boolean isdel,Pageable page ){ - return ApiResponse.success(archivesService.initArchivesView(categoryId,parentsId,queryType,queryTitle,archiveNo,archivesState, - archiveYear,department,retention,securityClass,organizationMatter,isdel,page)); + return ApiResponse.success(archivesService.initArchivesView(categoryId,parentsId,queryType,queryTitle,itemNo,archiveNo,archiveCtgNo,responsibleby, + archivesState,archiveYear,department,retention,securityClass,organizationMatter,isdel,page)); } @ApiOperation("档案列表外放接口") diff --git a/archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java b/archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java index 6adc748..7a6e6b5 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java +++ b/archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java @@ -1,17 +1,26 @@ package com.storeroom.modules.archives.controller; +import com.storeroom.annotaion.rest.AnonymousGetMapping; +import com.storeroom.modules.archives.domain.ArchivesTagLog; import com.storeroom.modules.archives.service.ArchivesTagService; import com.storeroom.modules.archives.service.dto.CaseDTO; +import com.storeroom.modules.common.ExcelUtil; import com.storeroom.utils.ApiResponse; import com.storeroom.utils.enums.ResponseStatus; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.data.domain.Pageable; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; +import java.util.Map; @RestController @RequiredArgsConstructor @@ -20,6 +29,7 @@ import java.util.List; public class TagController { private final ArchivesTagService archivesTagService; + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); @ApiOperation("标签列表") @GetMapping("/initTagList") @@ -59,4 +69,36 @@ public class TagController { return ApiResponse.success(archivesTagService.initTagLogList(tid,title,operType,bindingType,page)); } + @ApiOperation("导出标签使用信息") + @AnonymousGetMapping("/exportTagLogList") + @ResponseBody + public void exportTagLogList( + HttpServletResponse response, + String tid, String title,Integer operType,Integer bindingType + ){ + List tagLogs = archivesTagService.initTagLogListAll(tid,title,operType,bindingType); + String[] Etitle = {"序号","类型","TID","绑定对象","标签名称","操作时间"}; + String [][] content = new String[tagLogs.size()][]; + for(int i = 0;i> getArchivesRelease(Pageable page); @Modifying @@ -33,7 +33,7 @@ public interface ArchivesSummaryRepository extends JpaRepository{ +import java.util.List; + +public interface ArchivesTagLogRepository extends JpaRepository{ @Query(nativeQuery = true, value = "select * from archives_tag_log where if(?1 is null,1=1,tid like ?1) " + @@ -16,4 +18,11 @@ public interface ArchivesTagLogRepository extends JpaRepository initTagLogList(String tid, String title, Integer operType, Integer bindingType, Pageable page); + @Query(nativeQuery = true, + value = "select * from archives_tag_log where if(?1 is null,1=1,tid like ?1) " + + "and if(?2 is null,1=1,title like ?2) " + + "and if(?3 is null,1=1,oper_type = ?3) " + + "and if(?4 is null,1=1,binding_type = ?4) ") + List initTagLogListAll(String tid, String title, Integer operType, Integer bindingType); + } 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 9394e3f..f0672c0 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 @@ -12,8 +12,9 @@ public interface ArchivesService { //初始化档案列表标题 Object initArchivesViewTable(String categoryId); //初始化档案列表 - Object initArchivesView(String categoryId,String parentsId,Integer queryType, String queryTitle,String archiveNo,Integer archivesState,String archiveYear,String department, - String retention,String securityClass,String organizationMatter, boolean isdel,Pageable page); + Object initArchivesView(String categoryId,String parentsId,Integer queryType, String queryTitle,String itemNo,String archiveNo,String archiveCtgNo, + String responsibleby,Integer archivesState,String archiveYear,String department,String retention,String securityClass, + String organizationMatter,boolean isdel,Pageable page); //档案列表外放接口 Object getArchivesRelease(Pageable page); //根据门类id 档案id 获取显示档案详情信息 diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesTagService.java b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesTagService.java index 724edc3..5e19835 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesTagService.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesTagService.java @@ -1,5 +1,6 @@ package com.storeroom.modules.archives.service; +import com.storeroom.modules.archives.domain.ArchivesTagLog; import com.storeroom.modules.archives.service.dto.CaseDTO; import org.springframework.data.domain.Pageable; @@ -11,6 +12,8 @@ public interface ArchivesTagService { Object initTagList(String tid, String query,Integer isType, Pageable page); //初始化标签日志列表 Object initTagLogList(String tid, String title,Integer operType,Integer bindingType, Pageable page); + //根据条件查询标签全部日志 + List initTagLogListAll(String tid, String title,Integer operType,Integer bindingType); //查看标签是否绑定 Integer findIsBingdingLabel(String label); //绑定标签 diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java index a06e2ab..b463a4f 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java @@ -224,7 +224,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { } String caseIdArr = caseIds.stream().collect(Collectors.joining(",")); //当装盒为案卷 - if(caseType == 2){ + if(caseType == 2){ ArchivesType archivesTypeP = archivesTypeRepository.findById(archivesType.getPid()).get(); String psql = "update "+archivesTypeP.getEnName()+" set case_no = '"+caseIdArr +"' where id = '"+dtos.get(0).getArchivesParentsId()+"'"; 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 07a66bc..b2c9171 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 @@ -18,6 +18,7 @@ import com.storeroom.utils.NanoIdUtils; import com.storeroom.utils.PageUtil; import com.storeroom.utils.StringUtils; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -40,6 +41,9 @@ public class ArchivesServiceImpl implements ArchivesService { private final ArchivesTypeRepository archivesTypeRepository; private final ArchivesDictionaryRepository archivesDictionaryRepository; + @Value("${file.windows.path}") +// @Value("${file.linux.path}") + private String prefixPath; @PersistenceContext EntityManager entityManager; @@ -50,9 +54,9 @@ public class ArchivesServiceImpl implements ArchivesService { } @Override - public Object initArchivesView(String categoryId,String parentsId,Integer queryType, String queryTitle,String archiveNo,Integer archivesState, - String archiveYear,String department,String retention,String securityClass,String organizationMatter, - boolean isdel,Pageable page) { + public Object initArchivesView(String categoryId,String parentsId,Integer queryType, String queryTitle,String itemNo,String archiveNo,String archiveCtgNo, + String responsibleby,Integer archivesState,String archiveYear,String department,String retention,String securityClass, + String organizationMatter,boolean isdel,Pageable page) { Optional optional = archivesTypeRepository.findById(categoryId); if(!optional.isPresent()) return "未查询到到门类信息!"; @@ -66,9 +70,11 @@ public class ArchivesServiceImpl implements ArchivesService { String quertOrder = ""; String appendQuery = ""; queryFields.add("children_num"); + String append2Query = isdel ? " and is_delete_time is not null " : " and is_delete_time is null "; + if(archivesType.getIsType() == ArchivesTypeEnum.project.getCode() || archivesType.getIsType() == ArchivesTypeEnum.archives.getCode()){ String childrenTable = archivesTypeRepository.findEnNameByPid(archivesType.getId()); - appendQuery = StringUtils.isEmpty(childrenTable) ? ",0 " :",(select count(1) from "+childrenTable+" c where c.parent_id = t.id and is_delete_time is null) "; + appendQuery = StringUtils.isEmpty(childrenTable) ? ",0 " :",(select count(1) from "+childrenTable+" c where c.parent_id = t.id "+append2Query+") "; }else{ appendQuery = ",(select count(1) from file_"+queryTable+" c where c.archive_id = t.id) "; } @@ -89,7 +95,10 @@ public class ArchivesServiceImpl implements ArchivesService { additional = StringUtils.isEmpty(securityClass) ? additional : additional + " and security_class = '"+securityClass+"'"; additional = StringUtils.isEmpty(organizationMatter) ? additional : additional + " and organization_matter = '"+organizationMatter+"'"; additional = StringUtils.isEmpty(queryTitle) ? additional : additional + " and maintitle like '%"+queryTitle+"%' "; + additional = StringUtils.isEmpty(itemNo) ? additional : additional + " and item_no like '%"+itemNo+"%' "; additional = StringUtils.isEmpty(archiveNo) ? additional : additional + " and archive_no like '%"+archiveNo+"%' "; + additional = StringUtils.isEmpty(archiveCtgNo) ? additional : additional + " and archive_ctg_no like '%"+archiveCtgNo+"%' "; + additional = StringUtils.isEmpty(responsibleby) ? additional : additional + " and responsibleby like '%"+responsibleby+"%' "; if(objects.length > 0) quertOrder = " order by " + quertOrder.substring(0,quertOrder.length()-1); @@ -102,7 +111,7 @@ public class ArchivesServiceImpl implements ArchivesService { for(Object[] objs:list){ Map map = new HashMap(); for(int i = 0;i list = entityManager.createNativeQuery("select "+queryField+appendQuery+" from "+queryTable + " z where z.id = '"+archivesId+"'").getResultList(); @@ -317,7 +326,7 @@ public class ArchivesServiceImpl implements ArchivesService { for(Object[] objs:list){ if(json.get(archivesDictionary.getFieldName()).equals(objs[1])){ if(dto.getId() == null || !dto.getId().equals(objs[0])){ - return ApiResponse.error(50002,archivesDictionary.getFieldName()+"不可重复"); + return ApiResponse.error(50002,archivesDictionary.getFieldCnName()+"不可重复"); } } } @@ -516,6 +525,33 @@ public class ArchivesServiceImpl implements ArchivesService { String sql = "update " + queryTable + " set is_delete_time = '" +sdf.format(new Date())+"',is_delete_man='"+dto.getDelMan() +"' where id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; int result = entityManager.createNativeQuery(sql).executeUpdate(); + + //若删除为项目 + if(archivesType.getIsType() == 2){ + //获取档案表名 + ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId()); + //获取该项目下所有案卷id + String query3sql = "select id from "+archivesType_3.getEnName()+" where parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List list3 = entityManager.createNativeQuery(query3sql).getResultList(); + if(null != list3 && list3.size()!=0){ + //删除案卷 + String update3sql = "update " + archivesType_3.getEnName() + " set is_delete_time = '" +sdf.format(new Date())+"',is_delete_man='"+dto.getDelMan() + +"' where id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + //获取卷内表名 + String enName_4 = archivesTypeRepository.findEnNameByPid(archivesType_3.getId()); + //删除卷内 + String update4sql = "update " + enName_4 + " set is_delete_time = '" +sdf.format(new Date())+"',is_delete_man='"+dto.getDelMan() + +"' where parent_id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + entityManager.createNativeQuery(update3sql).executeUpdate(); + entityManager.createNativeQuery(update4sql).executeUpdate(); + } + //若删除为案卷 + }else if(archivesType.getIsType() == 3){ + String enName_4 = archivesTypeRepository.findEnNameByPid(archivesType.getId()); + String update4sql = "update " + enName_4 + " set is_delete_time = '" +sdf.format(new Date())+"',is_delete_man='"+dto.getDelMan() + +"' where parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + entityManager.createNativeQuery(update4sql).executeUpdate(); + } return result; } @@ -523,6 +559,7 @@ public class ArchivesServiceImpl implements ArchivesService { @Transactional(rollbackFor = Exception.class) public Object reduction(ArchivesDTO dto) { List ids = dto.getIds(); + List eliminate = new ArrayList<>(); int success = 0; ArchivesType archivesType = archivesTypeRepository.findById(dto.getCategoryId()).get(); List fieldNames = archivesDictionaryRepository.findFieldNameByCategoryIdAndIsTypeAndIsRepeat(dto.getCategoryId(),2,true); @@ -533,18 +570,129 @@ public class ArchivesServiceImpl implements ArchivesService { "= (select "+fieldName+" from "+archivesType.getEnName()+" where id = '"+id+"')"; List list = entityManager.createNativeQuery(querysql).getResultList(); if(list.size()>0){ + eliminate.add(id); isRepeat = false; } + if(isRepeat){ + String checkDelRepeatSql = "select id from "+archivesType.getEnName()+" where id = '"+id+"' and "+fieldName+ + " in (select "+fieldName+" from "+archivesType.getEnName()+" where is_delete_time is not null" + + " and id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"') group by " + fieldName + + " having count("+fieldName+") > 1)"; + List repeatCount = entityManager.createNativeQuery(checkDelRepeatSql).getResultList(); + if(repeatCount.size() > 0){ + eliminate.add(id); + continue; + } + } + } + } + HashSet setIds = new HashSet<>(ids); + HashSet setEliminate = new HashSet<>(eliminate); + setIds.removeAll(setEliminate); + List screen = new ArrayList<>(); + screen.addAll(setIds); + + for(String id:screen){ + String sql = "update " + archivesType.getEnName() + " set is_delete_time = null,is_delete_man = null " + + "where id = '"+id+"'"; + int result = entityManager.createNativeQuery(sql).executeUpdate(); + success += result; + } + + //若恢复为项目时 + if(archivesType.getIsType() == 2){ + //获取案卷门类 + ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId()); + //查看档案不允许重复字段 + List fieldNames_3 = archivesDictionaryRepository.findFieldNameByCategoryIdAndIsTypeAndIsRepeat(archivesType_3.getId(),2,true); + //查询还原所有档案 + String add3IdsSql = "select id from "+archivesType_3.getEnName() + + " where is_delete_time is not null and parent_id in ('" + +screen.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List all3Ids = entityManager.createNativeQuery(add3IdsSql).getResultList(); + List eliminate_3 = new ArrayList<>(); + for(String fieldName:fieldNames_3){ + String eliminate_3_sql1 = "select id from " + archivesType_3.getEnName() + " where "+fieldName + + " in (select "+fieldName+" from "+archivesType_3.getEnName() + + " group by "+fieldName+" having count("+fieldName+") > 1) " + + " and id in ('"+all3Ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List eliminate_3_1 = entityManager.createNativeQuery(eliminate_3_sql1).getResultList(); + eliminate_3.addAll(eliminate_3_1); + } + HashSet setIds_3 = new HashSet<>(all3Ids); + HashSet setEliminate_3 = new HashSet<>(eliminate_3); + setIds_3.removeAll(setEliminate_3); + List screen_3 = new ArrayList<>(); + screen_3.addAll(setIds_3); + for(String id:screen_3){ + String sql_3 = "update " + archivesType_3.getEnName() + " set is_delete_time = null,is_delete_man = null " + + "where id = '"+id+"'"; + int result_3 = entityManager.createNativeQuery(sql_3).executeUpdate(); + } + + + //获取卷内门类 + ArchivesType archivesType_4 = archivesTypeRepository.findByPid(archivesType_3.getId()); + //查看卷内不允许重复字段 + List fieldNames_4 = archivesDictionaryRepository.findFieldNameByCategoryIdAndIsTypeAndIsRepeat(archivesType_4.getId(),2,true); + //查询还原所有卷内 + String add4IdsSql = "select id from "+archivesType_4.getEnName() + + " where is_delete_time is not null and parent_id in ('" + +screen_3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List all4Ids = entityManager.createNativeQuery(add4IdsSql).getResultList(); + List eliminate_4 = new ArrayList<>(); + for(String fieldName:fieldNames_4){ + String eliminate_4_sql1 = "select id from " + archivesType_4.getEnName() + " where "+fieldName + + " in (select "+fieldName+" from "+archivesType_4.getEnName() + + " group by "+fieldName+" having count("+fieldName+") > 1) " + + " and id in ('"+all4Ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List eliminate_4_1 = entityManager.createNativeQuery(eliminate_4_sql1).getResultList(); + eliminate_4.addAll(eliminate_4_1); } - //当没有重复 - if(isRepeat){ - String sql = "update " + archivesType.getEnName() + " set is_delete_time = null,is_delete_man = null " + + HashSet setIds_4 = new HashSet<>(all4Ids); + HashSet setEliminate_4 = new HashSet<>(eliminate_4); + setIds_4.removeAll(setEliminate_4); + List screen_4 = new ArrayList<>(); + screen_4.addAll(setIds_4); + for(String id:screen_4){ + String sql_4 = "update " + archivesType_4.getEnName() + " set is_delete_time = null,is_delete_man = null " + "where id = '"+id+"'"; - int result = entityManager.createNativeQuery(sql).executeUpdate(); - success += result; + int result_3 = entityManager.createNativeQuery(sql_4).executeUpdate(); } + //若恢复为案卷时 + }else if(archivesType.getIsType() == 3){ + + //获取卷内门类 + ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId()); + //查看卷内不允许重复字段 + List fieldNames_3 = archivesDictionaryRepository.findFieldNameByCategoryIdAndIsTypeAndIsRepeat(archivesType_3.getId(),2,true); + //查询还原所有卷内 + String add3IdsSql = "select id from "+archivesType_3.getEnName() + + " where is_delete_time is not null and parent_id in ('" + +screen.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List all3Ids = entityManager.createNativeQuery(add3IdsSql).getResultList(); + List eliminate_3 = new ArrayList<>(); + for(String fieldName:fieldNames_3){ + String eliminate_3_sql1 = "select id from " + archivesType_3.getEnName() + " where "+fieldName + + " in (select "+fieldName+" from "+archivesType_3.getEnName() + + " group by "+fieldName+" having count("+fieldName+") > 1) " + + " and id in ('"+all3Ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List eliminate_3_1 = entityManager.createNativeQuery(eliminate_3_sql1).getResultList(); + eliminate_3.addAll(eliminate_3_1); + } + HashSet setIds_3 = new HashSet<>(all3Ids); + HashSet setEliminate_3 = new HashSet<>(eliminate_3); + setIds_3.removeAll(setEliminate_3); + List screen_3 = new ArrayList<>(); + screen_3.addAll(setIds_3); + for(String id:screen_3){ + String sql_3 = "update " + archivesType_3.getEnName() + " set is_delete_time = null,is_delete_man = null " + + "where id = '"+id+"'"; + int result_3 = entityManager.createNativeQuery(sql_3).executeUpdate(); + } + } - return "成功还原"+success+"条数据"; + return success; } @Override @@ -556,9 +704,88 @@ public class ArchivesServiceImpl implements ArchivesService { String sql = "delete from " +queryTable+" where id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; int result = entityManager.createNativeQuery(sql).executeUpdate(); int result1 = 0; + + //若删除为文件级 则删除附件 if(ArchivesTypeEnum.inChive.getCode() == archivesType.getIsType() || ArchivesTypeEnum.files.getCode() == archivesType.getIsType()){ + String fileSql = "select file_path from file_"+queryTable+" where archive_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List filePath = entityManager.createNativeQuery(fileSql).getResultList(); String sql1 = "delete from file_" +queryTable+" where archive_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; result1 = entityManager.createNativeQuery(sql1).executeUpdate(); + for(String paths : filePath){ + if(!StringUtils.isEmpty(paths)){ + File file = new File(prefixPath + paths); + if(file.isFile() && file.exists()){ + file.delete(); + } + } + } + //当删除为项目级 + }else if(ArchivesTypeEnum.project.getCode() == archivesType.getIsType()){ + //获取档案表名 + ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId()); + //获取该项目下所有案卷id + String query3sql = "select id from "+archivesType_3.getEnName()+" where is_delete_time is not null and parent_id in ('" + +ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List list3 = entityManager.createNativeQuery(query3sql).getResultList(); + if(null != list3 && list3.size()!=0){ + //删除案卷 + String delete3sql = "delete from " + archivesType_3.getEnName() + " where id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + entityManager.createNativeQuery(delete3sql).executeUpdate(); + //获取卷内表名 + String enName_4 = archivesTypeRepository.findEnNameByPid(archivesType_3.getId()); + //删除卷内 + String delete4sql = "delete from " + enName_4 + " where is_delete_time is not null " + + "and parent_id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + //删除卷内文件 + String sql1 = "delete from file_" +enName_4+" where archive_id in (select id from "+enName_4 + +" where is_delete_time is not null and parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')) "; + //获取卷内附件路径 + String fileSql = "select file_path from file_" + enName_4 + " where archive_id in (select id from "+enName_4 + +" where is_delete_time is not null and parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')) ";; + List filePath = entityManager.createNativeQuery(fileSql).getResultList(); + //删除卷内 + entityManager.createNativeQuery(delete4sql).executeUpdate(); + //删除卷内附件 + result1 = entityManager.createNativeQuery(sql1).executeUpdate(); + for(String paths : filePath){ + if(!StringUtils.isEmpty(paths)){ + File file = new File(prefixPath + paths); + if(file.isFile() && file.exists()){ + file.delete(); + } + } + } + } + }else if(ArchivesTypeEnum.archives.getCode() == archivesType.getIsType()){ + //获取卷内表名 + ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId()); + //获取该项目下所有卷内id + String query3sql = "select id from "+archivesType_3.getEnName()+" where is_delete_time is not null and parent_id in ('" + +ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + List list3 = entityManager.createNativeQuery(query3sql).getResultList(); + if(null != list3 && list3.size()!=0){ + //删除卷内 + String delete3sql = "delete from " + archivesType_3.getEnName() + " where id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')"; + //获取卷内附件路径 + String fileSql = "select file_path from file_" + archivesType_3.getEnName() + " where archive_id in (select id from "+archivesType_3.getEnName() + +" where is_delete_time is not null and parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')) "; + List filePath = entityManager.createNativeQuery(fileSql).getResultList(); + //删除卷内文件 + String sql1 = "delete from file_" +archivesType_3.getEnName()+" where archive_id in (select id from "+archivesType_3.getEnName() + +" where is_delete_time is not null and parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')) "; + //删除卷内 + entityManager.createNativeQuery(delete3sql).executeUpdate(); + //删除卷内附件 + result1 = entityManager.createNativeQuery(sql1).executeUpdate(); + for(String paths : filePath){ + if(!StringUtils.isEmpty(paths)){ + File file = new File(prefixPath + paths); + if(file.isFile() && file.exists()){ + file.delete(); + } + } + } + } } return result+","+result1; } diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesTagServiceImpl.java b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesTagServiceImpl.java index 3d2c142..fe75769 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesTagServiceImpl.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesTagServiceImpl.java @@ -48,6 +48,13 @@ public class ArchivesTagServiceImpl implements ArchivesTagService { return PageUtil.toPage(archivesTagLogRepository.initTagLogList(tid,title,operType,bindingType,page)); } + @Override + public List initTagLogListAll(String tid, String title, Integer operType, Integer bindingType) { + tid = null != tid ? "%"+tid+"%" : null; + title = null != title ? "%"+title+"%" : null; + return archivesTagLogRepository.initTagLogListAll(tid,title,operType,bindingType); + } + @Override public Integer findIsBingdingLabel(String label) { Optional optional = archivesTagRepository.findById(label); @@ -84,9 +91,11 @@ public class ArchivesTagServiceImpl implements ArchivesTagService { //绑定标签 switch (labelType){ case 1: - oldTid = archivesSummaryRepository.findByArchivesId(parentId).getTagNo(); + ArchivesSummary archivesSummary = archivesSummaryRepository.findByArchivesId(parentId); + archivesTable = archivesSummary.getArchivesTableName(); + oldTid = archivesSummary.getTagNo(); archivesSummaryRepository.bindTag(tid,parentId); - String sql = "update "+archivesTable+" set tid = null where id = '"+parentId+"'"; + String sql = "update "+archivesTable+" set tid = '"+tid+"' where id = '"+parentId+"'"; returnCount = entityManager.createNativeQuery(sql).executeUpdate(); title = entityManager.createNativeQuery("select maintitle from "+archivesTable+" where id = '"+parentId+"'").getResultList().get(0); break; 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 a168cc4..7ebd299 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 @@ -12,6 +12,9 @@ public interface ArchivesTypeRepository extends JpaRepository findByCnName(String cn); + @Query("from ArchivesType where pid = ?1") + ArchivesType findByPid(String pid); + @Query("select pid from ArchivesType where id = ?1") String findPidById(String id);