Ver Fonte

修改同步错误

huangtf há 2 anos atrás
pai
commit
da08c0965a

+ 1 - 1
blade-common/src/main/java/org/springblade/common/utils/ForestNodeMergerEx.java

@@ -145,7 +145,7 @@ public class ForestNodeMergerEx {
 
         if (dstTree.getFromId() == null ) {
             bRootMatch = false;
-        }else if (!dstTree.getFromId().equals(srcTree.getId()))  {
+        }else if (!dstTree.getFromId().equals(srcTree.getId()) && dstTree.getParentId() != 0)  {
             bRootMatch = false;
         }
 

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -270,7 +270,7 @@
         <if test="code!=null and code!=''">
             AND (d.tree_code = #{code} or d.tree_code = #{contractId} or d.parent_id = 0)
         </if>
-        OR ( parent_id = 0 AND project_id = #{projectId} )
+        OR ( parent_id = 0 AND project_id = #{projectId} AND is_deleted = 0 )
         ORDER BY sort
     </select>
 

+ 36 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -427,6 +427,10 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 			addNewContract(contractInfos,srcTree,dstTree,dstNode,saveList);
 		}
 
+		if (dstNode.getId().equals(dstTree.getId())) {
+			addNewRootChild(contractInfos,srcTree,dstTree,dstNode,saveList);
+		}
+
 		//如果有新的合同段,合并新增代码到
 		if (saveList.size() > 0) {
 			archiveTreeContractSync.mergerToTree(dstTree,saveList,null);
@@ -873,4 +877,36 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 
+	/**
+	 * 新增合同段时,要复制一份合同段的分支出来
+	 * @param contractInfos
+	 * @param srcTree
+	 * @param dstTree
+	 * @param dstNode
+	 * @param saveList
+	 */
+	void addNewRootChild(List<ContractInfo> contractInfos,ArchiveTreeVO2 srcTree,ArchiveTreeContractVO2 dstTree,
+						ArchiveTreeContract dstNode,List<ArchiveTreeContract> saveList){
+
+		//
+		List<ArchiveTreeVO2> srcChilds = srcTree.getChildren();
+		List<ArchiveTreeContractVO2> dstChilds  = dstTree.getChildren();
+		Map<Long,Long> dstMap = new HashMap<>();
+
+		for (ArchiveTreeContractVO2 dst: dstChilds) {
+			if (dst.getFromId()!= null ) {
+				dstMap.put(dst.getFromId(),dst.getId());
+			}
+		}
+
+		for (ArchiveTreeVO2 src : srcChilds) {
+			if (dstMap.get(src.getId()) == null ) {
+				List<ArchiveTreeContract> tmpSaveList = archiveTreeContractSync.getNormalSaveListEx(src.getId(),src,dstNode.getId(),dstTree);
+				saveList.addAll(tmpSaveList);
+			}
+		}
+
+	}
+
+
 }