浏览代码

客户端归档目录树同步

lvy 3 月之前
父节点
当前提交
8896874657

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeService.java

@@ -70,4 +70,6 @@ public interface IArchiveTreeService extends BaseService<ArchiveTree> {
 
     //删除子树
     boolean deleteTree(Long id);
+
+    List<ArchiveTreeVO2> getAllChildren(ArchiveTree node);
 }

+ 50 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -27,6 +27,7 @@ import org.springblade.archive.entity.ArchiveExpertConclusion;
 import org.springblade.archive.feign.ArchiveAutoClient;
 import org.springblade.archive.vo.UpdateExpertVO;
 import org.springblade.business.feign.ArchiveFileClient;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -135,7 +136,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 
 
-		List<ArchiveTreeVO2> tree = archiveTreeService.tree2(AuthUtil.getTenantId(), projectId,null, null,null,false);
+		List<ArchiveTreeVO2> tree = archiveTreeService.getAllChildren(archiveTree);
 		if (tree == null || tree.size() == 0) {
 			return false;
 		}
@@ -430,8 +431,8 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 
 		//取出 -- 系统级 wbs树的数据
-		List<ArchiveTreeVO2> srcTrees = archiveTreeService.tree2(AuthUtil.getTenantId(), dstNode.getProjectId(),
-				null, null,null,false);
+//		List<ArchiveTreeVO2> srcTrees = archiveTreeService.tree2(AuthUtil.getTenantId(), dstNode.getProjectId(), null, null,null,false);
+		List<ArchiveTreeVO2> srcTrees = archiveTreeService.getAllChildren(srcNode);
 		ArchiveTreeVO2 srcTree = srcTrees.get(0);
 		if (srcTree == null) {
 			return false;
@@ -655,7 +656,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 						//getNormalSaveList 接口除了同步新增节点,还会同步已有节点的属性。
 						//因为关联工序的位置是固定的,先不考虑新增一个关联工序节点,且一次同步完成情况
-						tmpSaveList = archiveTreeContractSync.getNormalSaveListEx(srcNode.getId(),
+						tmpSaveList = archiveTreeContractSync.getNormalSaveListEx(tmpSubTree.getId(),
 								tmpSubTree,dstNodeId,contractNode);
 						saveList.addAll(tmpSaveList);
 
@@ -1001,12 +1002,56 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 		for (ArchiveTreeVO2 src : srcChilds) {
 			if (dstMap.get(src.getId()) == null ) {
-				List<ArchiveTreeContract> tmpSaveList = archiveTreeContractSync.getNormalSaveListEx(src.getId(),src,dstNode.getId(),dstTree);
+				List<ArchiveTreeContract> tmpSaveList = new ArrayList<>();
+				if (contractInfos != null && !contractInfos.isEmpty()) {
+					addNewContract1(contractInfos,src,dstTree,tmpSaveList);
+				} else {
+					tmpSaveList = archiveTreeContractSync.getNormalSaveListEx(src.getId(),src,dstNode.getId(),dstTree);
+				}
 				saveList.addAll(tmpSaveList);
 			}
 		}
 
 	}
+	void addNewContract1(List<ContractInfo> contractInfos,ArchiveTreeVO2 srcTree,ArchiveTreeContractVO2 dstTree,List<ArchiveTreeContract> saveList){
+
+		dstTree.setValue(1L);
+		ArchiveTreeContract contractNode = null;
+		ArchiveTreeContractVO2 destNode = null;
+		for(ContractInfo contractInfo : contractInfos){
+			List<ArchiveTreeContract> tmpSaveList = new ArrayList<>();
+
+			if (srcTree.getTitle().contains("施工单位归档资料") && contractInfo.getContractType() == 1) {
+				if (contractNode == null) {
+					contractNode = new ArchiveTreeContract(srcTree);
+					contractNode.setId(SnowFlakeUtil.getId());
+					contractNode.setParentId(dstTree.getId());
+					saveList.add(contractNode);
+					contractNode.setTreeCode("C");
+				}
+				if (destNode == null) {
+					destNode = new ArchiveTreeContractVO2(contractNode);
+				}
+				tmpSaveList = archiveTreeContractSync.getContractSaveList(srcTree,destNode,contractInfo,contractNode);
+			}
+			if (srcTree.getTitle().contains("监理单位归档资料") && contractInfo.getContractType() == 2) {
+				//复制监理
+				if (contractNode == null) {
+					contractNode = new ArchiveTreeContract(srcTree);
+					contractNode.setId(SnowFlakeUtil.getId());
+					contractNode.setParentId(dstTree.getId());
+					saveList.add(contractNode);
+					contractNode.setTreeCode("S");
+				}
+				if (destNode == null) {
+					destNode = new ArchiveTreeContractVO2(contractNode);
+				}
+//				dstTree.getChildren().add(destNode);
+				tmpSaveList = archiveTreeContractSync.getContractSaveList(srcTree,destNode,contractInfo,contractNode);
+			}
+			saveList.addAll(tmpSaveList);
+		}
+	}
 
 	/**
 	 * 返回某个合同段关联质检资料的节点