huangtf 2 年 前
コミット
b5e67dfe96

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -38,6 +38,7 @@ import org.springblade.manager.dto.ArchiveTreeDTO;
 import org.springblade.manager.dto.ArchiveTreeSortDTO;
 import org.springblade.manager.entity.ArchiveTree;
 import org.springblade.manager.service.IArchiveTreeService;
+import org.springblade.manager.service.impl.ArchiveTreeContractSyncImpl;
 import org.springblade.manager.vo.ArchiveTreeContractVO2;
 
 import org.springblade.manager.vo.ArchiveTreeContractVO4;
@@ -73,6 +74,8 @@ public class ArchiveTreeContractController extends BladeController {
 
     private final IArchiveTreeService archiveTreeService;
 
+    private final ArchiveTreeContractSyncImpl archiveTreeContractSync;
+
     /**
      * 详情
      */
@@ -378,4 +381,12 @@ public class ArchiveTreeContractController extends BladeController {
     public R getChildrenNodeByNodeId(Long nodeId) {
         return R.data(archiveTreeContractService.getChildrenNodeByNodeId(nodeId));
     }
+
+    @PostMapping("getChildrenNodeByNodeId")
+    @ApiOperation(value = "同步业务数据", notes = "传入节点id")
+    public R syncBusinessData(Long projectId,Long contractId) {
+
+        archiveTreeContractSync.syncBusinessData(projectId,contractId);
+        return R.success("同步成功");
+    }
 }

+ 60 - 34
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -238,10 +238,7 @@ public class ArchiveTreeContractSyncImpl {
      */
     public void  syncBusinessData(Long projectId,Long contractId) {
 
-        //检查是否有配置关联质检的节点
-
-
-
+        //检查是否有配置关联质检的节
         //新增的文件题名
         List<InformationQuery> newInformationQueryList = new ArrayList<>();
         //新增的文件
@@ -264,9 +261,6 @@ public class ArchiveTreeContractSyncImpl {
         //获取某个合同段下所有的质检归档文件
         List<ArchiveFile>  archiveFiles = getArchiveFiles(contractId);
 
-        //获取该合同段下的wbs节点
-//        List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId);
-
         //wbs的keyId到 归档文件的映射
         Map<Long,ArchiveFile> archiveKeyIdMap = new LinkedHashMap<>();
         for (ArchiveFile ar: archiveFiles)  {
@@ -275,12 +269,6 @@ public class ArchiveTreeContractSyncImpl {
             }
         }
 
-        //wbs的keyId到 归档树的映射
-//        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());
         if (wbsTrees == null || wbsTrees.size() == 0) {
@@ -304,29 +292,39 @@ 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());
+        //同步质检关联节点
+        syncNodes(contractId, informationQueryList, wbsTreeContractVO6Map, wbsTreeKeyToSortMap,
+                wbsTreeKeyToIdMap, archiveKeyIdMap, contractIndfo);
 
-            //获取该合同段下的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());
-            }
+        //wbs的keyId到 归档树的映射
+//        Map<Long,Long> archiveTreeContractIdMap = new LinkedHashMap<>();
+//        for (ArchiveTreeContract ar :archiveTreeContracts) {
+//            archiveTreeContractIdMap.put(ar.getExtKeyId(),ar.getId());
+//        }
+//        Integer level = 5;
+//        List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
+//        if (associatedNodes == null || associatedNodes.size() == 0) {
+//            return;
+//        }
 
-            syncNode(informationQueryList,wbsTreeContractVO6Map,wbsTreeKeyToSortMap,wbsTreeKeyToIdMap,
-                    archiveKeyIdMap,archiveTreeContractIdMap,
-                    nodeLevel,node.getMajorDataType(),contractIndfo);
-        }
+        //遍历所有的关联节点
+//        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());
 //
 //
@@ -348,7 +346,6 @@ public class ArchiveTreeContractSyncImpl {
 //                || (sort!= null && sort != archiveFile.getSort()) ) {
 //
 //                    //需要更新的
-//                    //todo 后续需增加判断已组件或者锁定的不要更新?
 //                    archiveFile.setPdfFileUrl(info.getEVisaPdfUrl());
 //                    archiveFile.setEVisaFile(info.getEVisaPdfUrl());
 //                    archiveFile.setFilePage(info.getEVisaPdfPage());
@@ -381,6 +378,35 @@ public class ArchiveTreeContractSyncImpl {
 //        handleAddandUpdateFiles(newArchiveFiles,updateArchiveFiles);
     }
 
+    private void syncNodes(Long contractId, List<InformationQuery> informationQueryList,
+                           Map<Long, WbsTreeContractVO6> wbsTreeContractVO6Map, Map<Long, Integer> wbsTreeKeyToSortMap,
+                           Map<Long, Long> wbsTreeKeyToIdMap, Map<Long, ArchiveFile> archiveKeyIdMap,
+                           ContractInfo contractIndfo) {
+        // 获取关联节点
+        List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
+        if (associatedNodes == null || associatedNodes.isEmpty()) {
+            return;
+        }
+
+        Map<Long,Long> archiveTreeContractIdMap = new LinkedHashMap<>();
+
+        for (ArchiveTreeContract node : associatedNodes) {
+            Integer nodeLevel = Integer.valueOf(associatedNodes.get(0).getDisplayHierarchy());
+
+            // 获取该合同段下的wbs节点
+            List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId, node.getId());
+
+            // 更新archiveTreeContractIdMap映射
+            archiveTreeContractIdMap.clear();
+            for (ArchiveTreeContract ar : archiveTreeContracts) {
+                archiveTreeContractIdMap.put(ar.getExtKeyId(), ar.getId());
+            }
+
+            syncNode(informationQueryList, wbsTreeContractVO6Map, wbsTreeKeyToSortMap, wbsTreeKeyToIdMap,
+                    archiveKeyIdMap, archiveTreeContractIdMap,
+                    nodeLevel, node.getMajorDataType(), contractIndfo);
+        }
+    }
 
     void syncNode(List<InformationQuery> informationQueryList,
                   Map<Long,WbsTreeContractVO6> wbsTreeContractVO6Map,