Selaa lähdekoodia

关联原生电子文件到归档

huangtf 2 vuotta sitten
vanhempi
commit
51af322aa3

+ 120 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -239,12 +239,7 @@ public class ArchiveTreeContractSyncImpl {
     public void  syncBusinessData(Long projectId,Long contractId) {
 
         //检查是否有配置关联质检的节点
-        Integer level = 5;
-        List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
-        if (associatedNodes == null || associatedNodes.size() == 0) {
-            return;
-        }
-        level = Integer.valueOf(associatedNodes.get(0).getDisplayHierarchy());
+
 
 
         //新增的文件题名
@@ -270,7 +265,7 @@ public class ArchiveTreeContractSyncImpl {
         List<ArchiveFile>  archiveFiles = getArchiveFiles(contractId);
 
         //获取该合同段下的wbs节点
-        List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId);
+//        List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId);
 
         //wbs的keyId到 归档文件的映射
         Map<Long,ArchiveFile> archiveKeyIdMap = new LinkedHashMap<>();
@@ -281,10 +276,10 @@ public class ArchiveTreeContractSyncImpl {
         }
 
         //wbs的keyId到 归档树的映射
-        Map<Long,Long> archiveTreeContractIdMap = new LinkedHashMap<>();
-        for (ArchiveTreeContract ar :archiveTreeContracts) {
-            archiveTreeContractIdMap.put(ar.getExtKeyId(),ar.getId());
-        }
+//        Map<Long,Long> archiveTreeContractIdMap = new LinkedHashMap<>();
+//        for (ArchiveTreeContract ar :archiveTreeContracts) {
+//            archiveTreeContractIdMap.put(ar.getExtKeyId(),ar.getId());
+//        }
 
         //获取合同段wbs划分树,用来组织树
         List<WbsTreeContractVO6> wbsTrees = contractInfoService.tree8(lWbsId.toString(), projectId.toString(), contractId.toString());
@@ -309,12 +304,120 @@ public class ArchiveTreeContractSyncImpl {
             wbsTreeKeyToIdMap.put(wbsTreeContractVO6.getPKeyId(),wbsTreeContractVO6.getId());
         }
 
+        Integer level = 5;
+        List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
+        if (associatedNodes == null || associatedNodes.size() == 0) {
+            return;
+        }
+
+        //遍历所有的关联节点
+        for (ArchiveTreeContract node :associatedNodes) {
+            Integer nodeLevel  = Integer.valueOf(associatedNodes.get(0).getDisplayHierarchy());
+
+            //获取该合同段下的wbs节点
+            List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId,node.getId());
+
+            //wbs的keyId到 归档树的映射
+            Map<Long,Long> archiveTreeContractIdMap = new LinkedHashMap<>();
+            for (ArchiveTreeContract ar :archiveTreeContracts) {
+                archiveTreeContractIdMap.put(ar.getExtKeyId(),ar.getId());
+            }
+
+            syncNode(informationQueryList,wbsTreeContractVO6Map,wbsTreeKeyToSortMap,wbsTreeKeyToIdMap,
+                    archiveKeyIdMap,archiveTreeContractIdMap,
+                    nodeLevel,node.getMajorDataType(),contractIndfo);
+        }
+//        level = Integer.valueOf(associatedNodes.get(0).getDisplayHierarchy());
+//
+//
+//        //遍历,所有已归档文件
+//        for (InformationQuery info: informationQueryList) {
+//
+//            if (info.getWbsId() != null) {
+//                ArchiveFile archiveFile = archiveKeyIdMap.get(info.getWbsId());
+//                Integer sort = wbsTreeKeyToSortMap.get(info.getWbsId());
+//
+//                //归档文件里没有则新增
+//                if ( archiveFile == null) {
+//                    if (sort!= null) {
+//                        info.setSort(sort);
+//                    }
+//                    newInformationQueryList.add(info);
+//                }//文件不同,则说明重签过,需要更新,顺序不同也更新
+//                else if (!archiveFile.getPdfFileUrl().equals(info.getEVisaPdfUrl())
+//                || (sort!= null && sort != archiveFile.getSort()) ) {
+//
+//                    //需要更新的
+//                    //todo 后续需增加判断已组件或者锁定的不要更新?
+//                    archiveFile.setPdfFileUrl(info.getEVisaPdfUrl());
+//                    archiveFile.setEVisaFile(info.getEVisaPdfUrl());
+//                    archiveFile.setFilePage(info.getEVisaPdfPage());
+//                    archiveFile.setFileSize(info.getEVisaPdfSize());
+//                    archiveFile.setSort(sort);
+//                    updateArchiveFiles.add(archiveFile);
+//                }
+//            }
+//        }
+//
+//        for (InformationQuery info: newInformationQueryList) {
+//
+//            Long keyId = info.getWbsId();
+//            //通过keyid 获取id
+//            Long id = wbsTreeKeyToIdMap.get(keyId);
+//            if (id == null) {
+//                continue;
+//            }
+//            //向上找到符合条件的level
+//            Long levelKeyId = findPKeyIdByNodeType(wbsTreeContractVO6Map,id,level);
+//
+//            //根据map获取到对应的归档树节点nodeid
+//            Long nodeId = archiveTreeContractIdMap.get(levelKeyId);
+//            //生成新增的归档文件
+//            ArchiveFile archiveFile = getArchiveFile(info,nodeId,info.getWbsId(),contractIndfo.archivesUnit());
+//            newArchiveFiles.add(archiveFile);
+//        }
+//
+//        //刷新文件
+//        handleAddandUpdateFiles(newArchiveFiles,updateArchiveFiles);
+    }
+
+
+    void syncNode(List<InformationQuery> informationQueryList,
+                  Map<Long,WbsTreeContractVO6> wbsTreeContractVO6Map,
+                  Map<Long,Integer> wbsTreeKeyToSortMap,
+                  Map<Long,Long> wbsTreeKeyToIdMap,
+                  Map<Long,ArchiveFile> archiveKeyIdMap,
+                  Map<Long,Long> archiveTreeContractIdMap,
+                  Integer level,
+                  String majarDataType,
+                  ContractInfo contractIndfo) {
+
+        //新增的文件题名
+        List<InformationQuery> newInformationQueryList = new ArrayList<>();
+
+        //新增的文件
+        List<ArchiveFile> newArchiveFiles = new ArrayList<>();
+        //更新的文件
+        List<ArchiveFile> updateArchiveFiles = new ArrayList<>();
+
         //遍历,所有已归档文件
         for (InformationQuery info: informationQueryList) {
+            Long keyId = info.getWbsId();
+            if (keyId != null) {
+                Long id = wbsTreeKeyToIdMap.get(keyId);
+
+
+                ArchiveFile archiveFile = archiveKeyIdMap.get(keyId);
+                Integer sort = wbsTreeKeyToSortMap.get(keyId);
+
+                //业内类型不匹配则不处理
+                WbsTreeContractVO6 treeContractVO6 = wbsTreeContractVO6Map.get(id);
+                if (treeContractVO6.getMajorDataType()!= null) {
+                    if (!majarDataType.contains(treeContractVO6.getMajorDataType().toString())) {
+                        continue;
+                    }
+                }
 
-            if (info.getWbsId() != null) {
-                ArchiveFile archiveFile = archiveKeyIdMap.get(info.getWbsId());
-                Integer sort = wbsTreeKeyToSortMap.get(info.getWbsId());
 
                 //归档文件里没有则新增
                 if ( archiveFile == null) {
@@ -324,7 +427,7 @@ public class ArchiveTreeContractSyncImpl {
                     newInformationQueryList.add(info);
                 }//文件不同,则说明重签过,需要更新,顺序不同也更新
                 else if (!archiveFile.getPdfFileUrl().equals(info.getEVisaPdfUrl())
-                || (sort!= null && sort != archiveFile.getSort()) ) {
+                        || (sort!= null && sort != archiveFile.getSort()) ) {
 
                     //需要更新的
                     //todo 后续需增加判断已组件或者锁定的不要更新?
@@ -399,10 +502,11 @@ public class ArchiveTreeContractSyncImpl {
         return archiveFiles;
     }
 
-    public List<ArchiveTreeContract>  getArchiveTreeContractsWbs(Long contractId) {
+    public List<ArchiveTreeContract>  getArchiveTreeContractsWbs(Long contractId,Long attachId) {
 
         List<ArchiveTreeContract> archiveTreeContracts = 	archiveTreeContractMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
                 .eq(ArchiveTreeContract::getContractId, contractId)
+                .eq(ArchiveTreeContract::getExtAttachId, attachId)
                 .eq(ArchiveTreeContract::getExtType, 2));
         return archiveTreeContracts;