Explorar o código

档案系统档案查询优化,档案同步修改质量评定的处理

lvy hai 1 mes
pai
achega
3401fa66a5

+ 4 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -218,7 +218,7 @@
 
     <select id="approvalFile" resultType="org.springblade.archive.vo.ArchivesAutoVO$ApprovalFile">
         <if test="archiveId!=null">
-            select * from u_archive_file where archive_id = #{archiveId} and is_element = 0 order by sort
+            select * from u_archive_file where archive_id = #{archiveId} order by sort
         </if>
     </select>
 
@@ -1172,7 +1172,7 @@
                uaa.id,uaa.name,uaa.page_n ,uaa.remark ,uaa.file_number,uaa.unit,uaa.start_date,uaa.end_date,
                 (select bdb.dict_value  from blade_dict_biz bdb WHERE bdb.is_sealed = 0 and bdb.code = 'storage_period' and bdb.dict_key = uaa.storage_time limit 1 ) as storageTimeValue
         from m_archive_tree_contract matc right join u_archives_auto uaa on matc.id = uaa.node_id
-        WHERE uaa.is_deleted = 0 and matc.is_deleted = 0 and uaa.is_apply = #{isApply} and matc.ancestors like concat("%",#{firstNode},"%")
+        WHERE uaa.is_deleted = 0 and matc.is_deleted = 0 and uaa.is_apply = #{isApply} and matc.ancestors like concat("%",#{firstNode},"%") and uaa.is_archive = 1
         order by uaa.tree_sort
     </select>
     <select id="getNodeArchives" resultType="org.springblade.archive.vo.ArchiveInspectVO">
@@ -1273,7 +1273,7 @@
         )
     </select>
     <select id="getRoutingInspection" resultType="org.springblade.archive.vo.ArchiveWarningVO">
-        select uaf.file_name ,uaf.file_url,0 as sourceType,uaf.node_id,
+        select uaf.file_name ,IF(uaf.file_url is null or uaf.file_url = '', uaf.pdf_file_url, uaf.file_url) as file_url,0 as sourceType,uaf.node_id,
                (select uaa.name from u_archives_auto uaa WHERE uaa.id = uaf.archive_id) as archive_name,
                (select GROUP_CONCAT(uai.opinion) from u_archive_inspection uai WHERE uai.file_id = uaf.id) as allopinion
         from u_archive_file uaf join m_archive_tree_contract atc on uaf.node_id  = atc.id
@@ -1284,7 +1284,7 @@
     <select id="getSpotCheck" resultType="org.springblade.archive.vo.ArchiveWarningVO">
         select GROUP_CONCAT(aei.opinion) as allopinion,aei.archive_name ,aei.node_id,1 as sourceType,
                (select uaf.file_name from u_archive_file uaf WHERE uaf.id = aei.file_id) as fileName,
-               (select uaf.file_url from u_archive_file uaf WHERE uaf.id = aei.file_id) as fileUrl
+               (select IF(uaf.file_url is null or uaf.file_url = '', uaf.pdf_file_url, uaf.file_url) as file_url from u_archive_file uaf WHERE uaf.id = aei.file_id) as fileUrl
         from m_archive_tree_contract atc join u_archive_expert_inspection aei on aei.node_id  = atc.id
         where atc.project_id  = #{projectId} and atc.is_deleted = 0 and aei.is_deleted = 0 and aei.is_pass = 0
           and atc.is_deleted = 0

+ 81 - 32
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -371,8 +371,38 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		if (StringUtils.isNotBlank(vo.getSecretLevel())) {
 			vo.setSecretLevelValue("1".equals(vo.getSecretLevel()) ? "机密" : ("2".equals(vo.getSecretLevel()) ? "绝密" : "秘密"));
 		}
-		if (vo.getApprovalFileList() != null && vo.getApprovalFileList().size() > 0) {
-			vo.setPageNumber(vo.getApprovalFileList().size());
+		List<ArchivesAutoVO.ApprovalFile> approvalFiles = vo.getApprovalFileList();
+		ArchivesAutoVO.ApprovalFile front = null;
+		ArchivesAutoVO.ApprovalFile cataLog = null;
+		ArchivesAutoVO.ApprovalFile spare = null;
+		ArchivesAutoVO.ApprovalFile back = null;
+		if (approvalFiles != null && !approvalFiles.isEmpty()) {
+			// 四要素
+			Map<String, List<ArchivesAutoVO.ApprovalFile>> collect = approvalFiles.stream().collect(Collectors.groupingBy(approvalFile -> {
+				if (approvalFile != null &&
+						(approvalFile.getFileName().equals("封面") || approvalFile.getFileName().equals("卷内目录") || approvalFile.getFileName().equals("备考表") || approvalFile.getFileName().equals("背脊"))) {
+					return approvalFile.getFileName();
+				}
+				return "0";
+			}, Collectors.toList()));
+			List<ArchivesAutoVO.ApprovalFile> approvalFiles1 = collect.get("0");
+			if (approvalFiles1 == null) {
+				approvalFiles1 = new ArrayList<>();
+			}
+			vo.setPageNumber(approvalFiles1.size());
+			vo.setApprovalFileList(approvalFiles1);
+			if (collect.containsKey("封面")) {
+				front = collect.get("封面").stream().max(Comparator.comparing(ArchivesAutoVO.ApprovalFile::getId)).orElse(null);
+			}
+			if (collect.containsKey("卷内目录")) {
+				cataLog = collect.get("卷内目录").stream().max(Comparator.comparing(ArchivesAutoVO.ApprovalFile::getId)).orElse(null);
+			}
+			if (collect.containsKey("备考表")) {
+				spare = collect.get("备考表").stream().max(Comparator.comparing(ArchivesAutoVO.ApprovalFile::getId)).orElse(null);
+			}
+			if (collect.containsKey("背脊")) {
+				back = collect.get("背脊").stream().max(Comparator.comparing(ArchivesAutoVO.ApprovalFile::getId)).orElse(null);
+			}
 		} else {
 			vo.setPageNumber(0);
 		}
@@ -381,15 +411,12 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			// 根据 factorType 字符串生成档案号码字符串链表
 			ArchiveProjectConfig config = archiveProjectConfigService.getByProjectIdOrNew(vo.getProjectId());
 			String[] frontUrls = outUrl.split(",");
-			ArchivesAutoVO.ApprovalFile front = new ArchivesAutoVO.ApprovalFile();
-			ArchivesAutoVO.ApprovalFile cataLog = new ArchivesAutoVO.ApprovalFile();
-			ArchivesAutoVO.ApprovalFile spare = new ArchivesAutoVO.ApprovalFile();
-			ArchivesAutoVO.ApprovalFile back = new ArchivesAutoVO.ApprovalFile();
 			for (String frontUrl : frontUrls) {
 				// 封面(原r_Archives_front)增加中文"封面"匹配
-				if ((frontUrl.contains(ArchiveAutoPdfServiceImpl.ARCHIVE_NUMBER[0])
+				if (front == null && (frontUrl.contains(ArchiveAutoPdfServiceImpl.ARCHIVE_NUMBER[0])
 						|| frontUrl.contains("封面"))
 						&& config.getFactorType().contains("1")) {
+					front = new ArchivesAutoVO.ApprovalFile();
 					front.setFileName("封面");
 					if(frontUrl.contains("@@@")){
 						front.setFileUrl(frontUrl.substring(0,frontUrl.indexOf("@@@")));
@@ -398,9 +425,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					}
 				}
 				// 卷内目录(原r_Archives_catalog)增加中文匹配
-				else if ((frontUrl.contains(ArchiveAutoPdfServiceImpl.ARCHIVE_NUMBER[1])
+				else if (cataLog == null && (frontUrl.contains(ArchiveAutoPdfServiceImpl.ARCHIVE_NUMBER[1])
 						|| frontUrl.contains("卷内目录"))
 						&& config.getFactorType().contains("2")) {
+					cataLog = new ArchivesAutoVO.ApprovalFile();
 					cataLog.setFileName("卷内目录");
 					if(frontUrl.contains("@@@")){
 						cataLog.setFileUrl(frontUrl.substring(0,frontUrl.indexOf("@@@")));
@@ -409,9 +437,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					}
 				}
 				// 备考表(原r_Archives_spare)增加中文匹配
-				else if ((frontUrl.contains(ArchiveAutoPdfServiceImpl.ARCHIVE_NUMBER[2])
+				else if (spare == null && (frontUrl.contains(ArchiveAutoPdfServiceImpl.ARCHIVE_NUMBER[2])
 						|| frontUrl.contains("备考表"))
 						&& config.getFactorType().contains("3")) {
+					spare = new ArchivesAutoVO.ApprovalFile();
 					spare.setFileName("备考表");
 					if(frontUrl.contains("@@@")){
 						spare.setFileUrl(frontUrl.substring(0,frontUrl.indexOf("@@@")));
@@ -420,9 +449,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					}
 				}
 				// 背脊(原r_Archives_back)增加中文匹配
-				else if ((frontUrl.contains(ArchiveAutoPdfServiceImpl.ARCHIVE_NUMBER[3])
+				else if (back == null && (frontUrl.contains(ArchiveAutoPdfServiceImpl.ARCHIVE_NUMBER[3])
 						|| frontUrl.contains("背脊"))
 						&& config.getFactorType().contains("4")) {
+					back = new ArchivesAutoVO.ApprovalFile();
 					back.setFileName("背脊");
 					if(frontUrl.contains("@@@")){
 						back.setFileUrl(frontUrl.substring(0,frontUrl.indexOf("@@@")));
@@ -431,32 +461,51 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					}
 				}
 			}
-			List<ArchivesAutoVO.ApprovalFile> files = vo.getApprovalFileList();
-			if (files != null && !files.isEmpty()) {
-				ArchivesAutoVO.ApprovalFile temp = files.get(0);
-				if (front.getFileUrl() != null) {
-					front.setId(temp.getId() + "_1");
-					front.setPdfFileUrl(front.getFileUrl());
-					files.add(0,front);
+			List<ArchivesAutoVO.ApprovalFile> files = vo.getApprovalFileList();;
+			if (files != null) {
+				String tempId = null;
+				if (!files.isEmpty()) {
+					tempId = files.get(0).getId();
 				}
-				if (cataLog.getFileUrl() != null) {
-					cataLog.setId(temp.getId()  + "_2");
-					cataLog.setPdfFileUrl(cataLog.getFileUrl());
-					if (front.getFileUrl() != null) {
-						files.add(1,cataLog);
-					} else {
-						files.add(0,cataLog);
+				if (front != null && front.getFileUrl() != null) {
+					if (front.getId() == null && tempId != null) {
+						front.setId(tempId + "_1");
+					}
+					if (front.getId() != null) {
+						front.setPdfFileUrl(front.getFileUrl());
+						files.add(0,front);
 					}
 				}
-				if (spare.getFileUrl() != null) {
-					spare.setId(temp.getId()  + "_3");
-					spare.setPdfFileUrl(spare.getFileUrl());
-					files.add(spare);
+				if (cataLog != null && cataLog.getFileUrl() != null) {
+					if (cataLog.getId() == null && tempId != null) {
+						cataLog.setId(tempId  + "_2");
+					}
+					if (cataLog.getId() != null) {
+						cataLog.setPdfFileUrl(cataLog.getFileUrl());
+						if (front != null && front.getFileUrl() != null) {
+							files.add(1,cataLog);
+						} else {
+							files.add(0,cataLog);
+						}
+					}
+				}
+				if (spare != null && spare.getFileUrl() != null) {
+					if (spare.getId() == null && tempId != null) {
+						spare.setId(tempId  + "_3");
+					}
+					if (spare.getId() != null) {
+						spare.setPdfFileUrl(spare.getFileUrl());
+						files.add(spare);
+					}
 				}
-				if (back.getFileUrl() != null) {
-					back.setId(temp.getId()  + "_4");
-					back.setPdfFileUrl(back.getFileUrl());
-					files.add(back);
+				if (back != null && back.getFileUrl() != null) {
+					if (back.getId() == null && tempId != null) {
+						back.setId(tempId  + "_4");
+					}
+					if (back.getId() != null) {
+						back.setPdfFileUrl(back.getFileUrl());
+						files.add(back);
+					}
 				}
 			}
 		}

+ 9 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -619,8 +619,10 @@ public class ArchiveTreeContractSyncImpl {
                         archiveFile.setFilePage(info.getEVisaPdfPage());
                         archiveFile.setFileSize(info.getEVisaPdfSize());
                         archiveFile.setIsCertification(1);
-                        archiveFile.setCertificationTime(info.getBusinessTime());
-                        archiveFile.setFileTime(info.getBusinessTime());
+                        if (StringUtils.isNotEmpty(info.getBusinessTime())) {
+                            archiveFile.setCertificationTime(info.getBusinessTime());
+                            archiveFile.setFileTime(info.getBusinessTime());
+                        }
                         archiveFile.setSort(sort);
                         if (nodeId != null && !nodeId.toString().equals(archiveFile.getNodeId())) {
                             archiveFile.setNodeId(nodeId.toString());
@@ -688,14 +690,14 @@ public class ArchiveTreeContractSyncImpl {
             // 特殊类型处理:根据 nodeType 匹配对应的数字
             if (treeContractVO6.getNodeType() != null) {
                 switch (treeContractVO6.getNodeType()) {
-                    case 1: // 单位工程 → 匹配 2
-                        return majarDataType.contains("2");
+                    case 1: // 单位工程 → 匹配 9
+                        return majarDataType.contains("9");
                     case 2: // 分部工程 → 匹配 8
                     case 3: // 子分部工程 → 匹配 8
                         return majarDataType.contains("8");
-                    case 4: // 分项工程 → 匹配 9
-                    case 5: // 子分项工程 → 匹配 9
-                        return majarDataType.contains("9");
+                    case 4: // 分项工程 → 匹配 2
+                    case 5: // 子分项工程 → 匹配 2
+                        return majarDataType.contains("2");
                     default:
                         return majarDataType.contains(currentMajor);
                 }