From ba4d0be41f83f6f73dd092725732559747a74ff5 Mon Sep 17 00:00:00 2001 From: xia Date: Tue, 28 Jun 2022 08:55:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A1=A3=E6=A1=88=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=20=E6=A1=A3=E6=A1=88=E8=AF=A6=E6=83=85=E3=80=81?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=85=83=E6=95=B0=E6=8D=AE=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=A1=A3=E6=A1=88=E7=9B=92=20=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=20=E7=BB=91=E5=AE=9A=E3=80=81=E8=A7=A3?= =?UTF-8?q?=E7=BB=91=E6=A0=87=E7=AD=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ArchivesController.java | 16 ++++ .../archives/controller/CaseController.java | 12 ++- .../archives/domain/vo/ArchivesDetailsVO.java | 2 + .../repository/ArchivesCaseRepository.java | 8 +- .../archives/service/ArchivesCaseService.java | 4 +- .../archives/service/ArchivesService.java | 2 + .../service/impl/ArchivesCaseServiceImpl.java | 53 +++++++---- .../service/impl/ArchivesServiceImpl.java | 87 ++++++++++++++++--- 8 files changed, 148 insertions(+), 36 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 725e8d6..958f6ac 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 @@ -69,6 +69,14 @@ public class ArchivesController { return ApiResponse.success(archivesService.archiveDetails(categoryId,archivesId)); } + @ApiOperation("档案元数据") + @GetMapping("/archivesMetadata") + public ApiResponse archivesMetadata( + String categoryId,String archivesId + ){ + return ApiResponse.success(archivesService.archivesMetadata(categoryId,archivesId)); + } + @ApiOperation("档案预编辑") @GetMapping("/doedit") public ApiResponse doedit( @@ -216,4 +224,12 @@ public class ArchivesController { return ApiResponse.success("/"+path); } + @ApiOperation("标签管理") + @GetMapping("/initTagView") + public ApiResponse initTagView( + String query,Integer tagType,Pageable page + ){ + return ApiResponse.success(null); + } + } diff --git a/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java b/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java index 120efa7..a4acea6 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java +++ b/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java @@ -61,14 +61,22 @@ public class CaseController { ){ String binding = caseService.findIsBingdingLabel(dto.getTid()); String[] bindings = binding.split(","); - - if("0".equals(bindings[1]) || dto.getCoverLabel()){ + boolean coverLabel = null == dto.getCoverLabel() ? false : dto.getCoverLabel(); + if("0".equals(bindings[1]) || coverLabel){ return ApiResponse.success(caseService.addCaseTag(dto.getId(),dto.getTid(),dto.getLabelType(),bindings[1],bindings[0])); }else{ return ApiResponse.error(ResponseStatus.LABEL_BOUND); } } + @ApiOperation("解绑标签") + @PostMapping("/bingdingLabel") + public ApiResponse unbindTag( + @Validated @RequestBody CaseDTO dto + ){ + return ApiResponse.success(caseService.unbindTag(dto.getTid(),dto.getLabelType())); + } + @ApiOperation("档案盒装盒列表") @GetMapping("/initCartoningList") public ApiResponse initCartoningList( diff --git a/archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesDetailsVO.java b/archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesDetailsVO.java index 7442f36..ca0ea7d 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesDetailsVO.java +++ b/archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesDetailsVO.java @@ -9,6 +9,8 @@ public class ArchivesDetailsVO { private String fieldName; private String fieldCnName; + private Integer editLength; + private Boolean isLine; private Object context; } diff --git a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java index 605ac06..2367f82 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java +++ b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java @@ -25,12 +25,12 @@ public interface ArchivesCaseRepository extends JpaRepository findCaseName(List caseIds); - @Query(nativeQuery = true, - value = "update archives_case set tid = null where tid = ?1") + @Modifying + @Query(value = "update ArchivesCase set tid = '' where tid = ?1") void unbindTag(String tid); - @Query(nativeQuery = true, - value = "update archives_case set tid ?1 where id = ?2 ") + @Modifying + @Query(value = "update ArchivesCase set tid = ?1 where id = ?2 ") Integer bindTag(String tid,String archivesId); @Modifying diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java index 8433e7c..e71a0e3 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java @@ -18,8 +18,10 @@ public interface ArchivesCaseService { Object edit(CaseDTO dto); //查询该标签是否绑定过 String findIsBingdingLabel(String label); - //添加盒标签 + //添加标签 Object addCaseTag(String caseId,String tid,Integer labelType,String bindingCount,String tagType); + //解绑标签 + Object unbindTag(String tid,Integer labelType); //档案盒装盒列表 Object initCartoningList(String tid, String caseName,String barcode,Integer caseType, Pageable page); //装盒 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 88050e3..ca519d0 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 @@ -16,6 +16,8 @@ public interface ArchivesService { String retention,String securityClass,String organizationMatter, boolean isdel,Pageable page); //根据门类id 档案id 获取显示档案详情信息 List archiveDetails(String categoryId,String archivesId); + //根据门类id 档案id 获取元数据 + StringBuffer archivesMetadata(String categoryId,String archivesId); //导出档案数据 List exportArchivesData(String categoryId,String archivesId,Pageable page); //预编辑档案 初始化信息 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 f978aaf..f0ac1a3 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 @@ -143,27 +143,46 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { default: break; } - - //绑定标签 - switch (labelType){ - case 1: - archivesSummaryRepository.bindTag(tid,caseId); - String sql = "update "+archivesTable+" set tid = null where id = '"+caseId+"'"; - returnCount = entityManager.createNativeQuery(sql).executeUpdate(); - break; - case 2: - returnCount = caseRepository.bindTag(tid,caseId); - break; - case 3: - break; - default: - break; - } - + } + //绑定标签 + switch (labelType){ + case 1: + archivesSummaryRepository.bindTag(tid,caseId); + String sql = "update "+archivesTable+" set tid = null where id = '"+caseId+"'"; + returnCount = entityManager.createNativeQuery(sql).executeUpdate(); + break; + case 2: + returnCount = caseRepository.bindTag(tid,caseId); + break; + case 3: + break; + default: + break; } return returnCount; } + @Override + public Object unbindTag(String tid, Integer labelType) { + Integer result = 0; + switch (labelType){ + case 1: + ArchivesSummary archivesSummary = archivesSummaryRepository.findFirstByTagNo(tid); + archivesSummaryRepository.unbindTag(tid); + String archivesTable = archivesSummary.getArchivesTableName(); + String sql = "update "+archivesTable+" set tid = null where id = '"+archivesSummary.getArchivesId()+"'"; + result = entityManager.createNativeQuery(sql).executeUpdate(); + break; + case 2: + caseRepository.unbindTag(tid); + result = 1; + break; + default: + break; + } + return result; + } + @Override public Object initCartoningList(String tid, String caseName, String barcode, Integer caseType, Pageable page) { tid = StringUtils.isEmpty(tid) ? "" : tid; 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 04b5ccb..45c0e3d 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,10 +18,14 @@ import com.storeroom.utils.NanoIdUtils; import com.storeroom.utils.PageUtil; import com.storeroom.utils.StringUtils; import lombok.RequiredArgsConstructor; +import org.jdom2.Document; +import org.jdom2.output.Format; +import org.jdom2.output.XMLOutputter; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.jdom2.Element; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -82,11 +86,11 @@ public class ArchivesServiceImpl implements ArchivesService { String queryparentsId = StringUtils.isEmpty(parentsId) ? " " : " and parent_id = '"+parentsId+"' "; - additional = StringUtils.isEmpty(archiveYear) ? archiveYear : additional + " and archive_year = '"+archiveYear+"'"; - additional = StringUtils.isEmpty(department) ? department : additional + " and department = '"+department+"'"; - additional = StringUtils.isEmpty(retention) ? retention : additional + " and retention = '"+retention+"'"; - additional = StringUtils.isEmpty(securityClass) ? securityClass : additional + " and security_class = '"+securityClass+"'"; - additional = StringUtils.isEmpty(organizationMatter) ? organizationMatter : additional + " and organization_matter = '"+organizationMatter+"'"; + additional = StringUtils.isEmpty(archiveYear) ? additional : additional + " and archive_year = '"+archiveYear+"'"; + additional = StringUtils.isEmpty(department) ? additional : additional + " and department = '"+department+"'"; + additional = StringUtils.isEmpty(retention) ? additional : additional + " and retention = '"+retention+"'"; + additional = StringUtils.isEmpty(securityClass) ? additional : additional + " and security_class = '"+securityClass+"'"; + additional = StringUtils.isEmpty(organizationMatter) ? additional : additional + " and organization_matter = '"+organizationMatter+"'"; additional = StringUtils.isEmpty(query) ? additional : additional + " and (maintitle like '%"+query+"%' or archive_no like '%"+query+"%' or archive_year like '%"+query+"%') "; @@ -116,30 +120,89 @@ public class ArchivesServiceImpl implements ArchivesService { @Override public List archiveDetails(String categoryId, String archivesId) { List returnVo = new ArrayList<>(); + List archivesDictionaries = archivesDictionaryRepository.findDisPlay(categoryId); ArchivesType archivesType = archivesTypeRepository.findById(categoryId).get(); - List queryFields = archivesDictionaryRepository.findDisPlayField(categoryId); - List queryCnFields = archivesDictionaryRepository.findDisPlayCnField(categoryId); + List queryFields = new ArrayList<>(); + List queryCnFields = new ArrayList<>(); + List queryEditLength = new ArrayList<>(); + List queryisLine = new ArrayList<>(); + for(ArchivesDictionary archivesDictionary:archivesDictionaries){ + queryFields.add(archivesDictionary.getFieldName()); + queryCnFields.add(archivesDictionary.getFieldCnName()); + queryEditLength.add(archivesDictionary.getEditLength()); + queryisLine.add(archivesDictionary.getIsLine()); + } +// archivesDictionaryRepository.findDisPlayField(categoryId); +// archivesDictionaryRepository.findDisPlayCnField(categoryId); String queryField = queryFields.stream().map(String::valueOf).collect(Collectors.joining(",")); String queryTable = archivesType.getEnName(); String appendQuery = ",tid,(select group_concat(case_name) from archives_case t inner join archives_case_cartoning t1 on t.id = t1.case_id where archives_id = z.id)," + "folder_location,borrow_type,barcode "; List list = entityManager.createNativeQuery("select "+queryField+appendQuery+" from "+queryTable + " z where z.id = '"+archivesId+"'").getResultList(); - queryFields.add("tid");queryCnFields.add("TID"); - queryFields.add("case_name");queryCnFields.add("盒名称"); - queryFields.add("folder_location");queryCnFields.add("库房位置"); - queryFields.add("borrow_type");queryCnFields.add("借阅状态"); - queryFields.add("barcode");queryCnFields.add("条形码"); + queryFields.add("tid");queryCnFields.add("TID");queryEditLength.add(null);queryisLine.add(null); + queryFields.add("case_name");queryCnFields.add("盒名称");queryEditLength.add(null);queryisLine.add(null); + queryFields.add("folder_location");queryCnFields.add("库房位置");queryEditLength.add(null);queryisLine.add(null); + queryFields.add("borrow_type");queryCnFields.add("借阅状态");queryEditLength.add(null);queryisLine.add(null); + queryFields.add("barcode");queryCnFields.add("条形码");queryEditLength.add(null);queryisLine.add(null); for(int i = 0;i ads = archivesDictionaryRepository.findAllByCategoryIdAndIsTypeAndIsInputOrderByIsSequenceAsc(categoryId,2,true); + List queryFields = new ArrayList<>(); + List queryCnFields = new ArrayList<>(); + for(ArchivesDictionary archivesDictionary:ads){ + queryFields.add(archivesDictionary.getFieldName()); + queryCnFields.add(archivesDictionary.getFieldCnName()); + } + String queryField = queryFields.stream().map(String::valueOf).collect(Collectors.joining(",")); + String queryTable = archivesType.getEnName(); + String appendQuery = ""; + if(archivesType.getIsType() == ArchivesTypeEnum.project.getCode() || archivesType.getIsType() == ArchivesTypeEnum.archives.getCode()){ + String childrenTable = archivesTypeRepository.findEnNameByPid(archivesType.getId()); + appendQuery = StringUtils.isEmpty(childrenTable) ? "0 as zj6 " :"(select count(1) from "+childrenTable+" c where c.parent_id = t.id) as zj6 "; + }else{ + appendQuery = "(select count(1) from file_"+queryTable+" c where c.archive_id = t.id) as zj6 "; + } + + List list = entityManager.createNativeQuery("select "+queryField+"" + + ",roomplace as zj1,case_no as zj2,folder_location as zj3,tid as zj4,barcode as zj5,"+appendQuery + + " from "+queryTable + " t where id = '"+archivesId+"'").getResultList(); + Object[] doeditEntity = list.size() > 0 ? list.get(0) : new Object[queryFields.size()+6]; + + + StringBuffer sb = new StringBuffer(); + sb.append(""); + sb.append("<元数据信息>"); + sb.append("<内容描述>"); + for (int i = 0;i< queryFields.size();i++){ + sb.append("<"+queryCnFields.get(i)+">"+doeditEntity[i]+""); + } + sb.append(""); + sb.append("<系统数据>"); + sb.append("<库房名>"+doeditEntity[queryFields.size()]+""); + sb.append("<盒号>"+doeditEntity[queryFields.size()+1]+""); + sb.append("<存放位置>"+doeditEntity[queryFields.size()+2]+""); + sb.append("<标签编号>"+doeditEntity[queryFields.size()+3]+""); + sb.append("<条码号>"+doeditEntity[queryFields.size()+4]+""); + sb.append("<子条目数>"+doeditEntity[queryFields.size()+5]+""); + sb.append(""); + sb.append(""); + return sb; + } + @Override public List exportArchivesData(String categoryId, String archivesId,Pageable page) { ArchivesType archivesType = archivesTypeRepository.findById(categoryId).get();