Преглед на файлове

档案wbs树同步优化

lvy преди 2 седмици
родител
ревизия
70b5e2c187

+ 34 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -647,6 +647,18 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 				if (ar.getTreeCode()!= null && ar.getTreeCode().equals("S")) {
 					classify = 2;
 				}
+				if (ar.getChildren() ==  null || ar.getChildren().isEmpty()) {
+					ArchiveTreeVO2 tmpSubTree = ForestNodeMergerEx.getSubTree(srcTree, ar.getFromId());
+					if (tmpSubTree != null) {
+						List<ArchiveTreeContract> tmpSaveList = archiveTreeContractSync.getNormalSaveListEx(tmpSubTree.getId(),
+								tmpSubTree,ar.getId(),ar);
+						saveList.addAll(tmpSaveList);
+						//获取工序节点
+						List<ArchiveTreeContract> extSaveList = archiveTreeContractSync.getExtSaveList(ar.getId(),
+								ar,dstNode.getProjectId(),classify);
+						saveList.addAll(extSaveList);
+					}
+				}
 
 				for (ArchiveTreeContractVO2 contractNode : ar.getChildren()){
 
@@ -655,12 +667,24 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 							|| dstScopeTree.getId().equals(contractNode.getParentId())) {
 
 						ArchiveTreeVO2 tmpSubTree = srcTree;
-						ArchiveTreeContractVO2 temp = contractNode;
 						Long dstNodeId = dstNode.getId();
-						if ((dstNode.getParentId() == 0 ||  dstScopeTree.getId().equals(contractNode.getParentId())) && !contractNode.getId().equals(dstNode.getId())) {
-							tmpSubTree = ForestNodeMergerEx.getSubTree(srcTree,ar.getFromId());
-							dstNodeId = ar.getId();
-							temp = ar;
+						ArchiveTreeContractVO2 tempDstTree = contractNode;
+						boolean flag = false;
+						if (dstNode.getParentId() == 0 ||  dstScopeTree.getId().equals(contractNode.getParentId()) ) {
+							if (contractNode.getValue() == null || contractNode.getValue() != 1L) {
+								tmpSubTree = ForestNodeMergerEx.getSubTree(srcTree,ar.getFromId());
+								dstNodeId = ar.getId();
+								tempDstTree = ar;
+								if (tmpSubTree == null) {
+									tmpSubTree = srcTree;
+									tempDstTree = ForestNodeMergerEx.getSubTree(dstTree,dstNode.getId());
+									dstNodeId = dstNode.getId();
+								}
+								flag = true;
+							} else {
+								tmpSubTree = ForestNodeMergerEx.getSubTree(srcTree,ar.getFromId());
+								dstNodeId = contractNode.getId();
+							}
 						}
 						if (tmpSubTree == null) {
 							continue;
@@ -669,14 +693,16 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 						//getNormalSaveList 接口除了同步新增节点,还会同步已有节点的属性。
 						//因为关联工序的位置是固定的,先不考虑新增一个关联工序节点,且一次同步完成情况
 						tmpSaveList = archiveTreeContractSync.getNormalSaveListEx(tmpSubTree.getId(),
-								tmpSubTree,dstNodeId,temp);
+								tmpSubTree,dstNodeId,tempDstTree);
 						saveList.addAll(tmpSaveList);
 
 						//获取工序节点
 						List<ArchiveTreeContract> extSaveList = archiveTreeContractSync.getExtSaveList(dstNodeId,
-								temp,dstNode.getProjectId(),classify);
+								tempDstTree,dstNode.getProjectId(),classify);
 						saveList.addAll(extSaveList);
-
+						if (flag) {
+							break;
+						}
 
 					}
 				}