huangtf hace 2 años
padre
commit
92479dabc3

+ 18 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTreeContract.java

@@ -250,6 +250,24 @@ public class ArchiveTreeContract extends BaseEntity {
 		this.archiveAutoType = archiveTree.getArchiveAutoType();
 	}
 
+	public void sync(ArchiveTreeVO2 archiveTree) {
+		if (archiveTree == null) {
+			return;
+		}
+		this.nodeType = archiveTree.getNodeType();
+		this.postType = archiveTree.getPostType();
+		this.associationType = archiveTree.getAssociationType();
+		this.majorDataType = archiveTree.getMajorDataType();
+		this.displayHierarchy = archiveTree.getDisplayHierarchy();
+		this.isStorageNode = archiveTree.getIsStorageNode();
+		this.isBuiltDrawing = archiveTree.getIsBuiltDrawing();
+		this.isInterfaceNode = archiveTree.getIsInterfaceNode();
+		this.projectType = archiveTree.getProjectType();
+		this.storageType = archiveTree.getStorageType();
+		this.expDataType = archiveTree.getExpDataType();
+		this.archiveAutoType = archiveTree.getArchiveAutoType();
+	}
+
 
 	public boolean isContractRoot(){
 		if (this.getExtType() != null && this.getExtType() == 2

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

@@ -50,6 +50,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.manager.wrapper.ArchiveTreeContractWrapper;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.wildfly.common.archive.Archive;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -492,6 +493,9 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 			}
 		}
 
+		ArchiveTreeVO2 subTree = ForestNodeMergerEx.getSubTree(srcTree,srcNode.getId());
+		UpdateByArchiveTree(dstNode.getProjectId(),subTree);
+
 		//更新排序
 		archiveTreeContractSync.InitTreeSort(dstTree,saveList);
 
@@ -507,9 +511,8 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	 * @return
 	 */
 	public  boolean deleteTreeChildren(ArchiveTreeContractVO2 tree) {
-		List<Long> ids = new ArrayList<>();
 
-		ForestNodeMergerEx.getChildrenIds(tree,ids);
+		List<Long> ids = ForestNodeMergerEx.getChildrenIds(tree);
 
 		return this.deleteLogic(ids);
 	}
@@ -542,8 +545,6 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	 * @return
 	 */
 	public  boolean deleteTree(Long id) {
-		List<Long> ids = new ArrayList<>();
-
 		ArchiveTreeContract dstNode = this.getById(id);
 		if (dstNode == null ) {
 			return false;
@@ -556,7 +557,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 		ArchiveTreeContractVO2 subTree = ForestNodeMergerEx.getSubTree(dstTrees.get(0),id);
 
-		ForestNodeMergerEx.getChildrenIds(subTree,ids);
+		List<Long> ids = ForestNodeMergerEx.getChildrenIds(subTree);
 
 		ids.add(id);
 
@@ -564,6 +565,45 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 
+	/**
+	 * 批量更新
+	 * @param projectId
+	 * @param srcTree
+	 * @return
+	 */
+	public boolean UpdateByArchiveTree(Long projectId, ArchiveTreeVO2 srcTree){
+
+		List<Long> ids = new ArrayList<>();
+		List<ArchiveTreeVO2> archiveTreeVO2List = new ArrayList<>();
+
+		ForestNodeMergerEx.getTreeList(srcTree,archiveTreeVO2List);
+		ids = ForestNodeMergerEx.getChildrenIds(srcTree);
+
+		Map<Long, ArchiveTreeVO2> map = new LinkedHashMap<>();
+		for (ArchiveTreeVO2 ar : archiveTreeVO2List) {
+			map.put(ar.getId(),ar);
+		}
+
+		List<ArchiveTreeContract> archiveTreeContracts =  baseMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
+				.in(ArchiveTreeContract::getFromId, ids)
+				.eq(ArchiveTreeContract::getProjectId, projectId)
+				.eq(ArchiveTreeContract::getIsDeleted, 0)
+		);
+
+		List<ArchiveTreeContract> upList = new ArrayList<>();
+		for (ArchiveTreeContract archiveTreeContract : archiveTreeContracts) {
+			ArchiveTreeVO2 archiveTreeVO2 = map.get(archiveTreeContract.getFromId());
+			if (archiveTreeVO2!= null) {
+				archiveTreeContract.sync(archiveTreeVO2);
+				upList.add(archiveTreeContract);
+			}
+
+		}
+		this.saveOrUpdateBatch(archiveTreeContracts);
+		return true;
+	}
+
+
 
 
 

+ 5 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/ForestNodeMergerEx.java

@@ -78,9 +78,11 @@ public class ForestNodeMergerEx {
         }
     }
 
-    public static <T extends INodeEx<T>> void getChildrenIds(T tree, List<Long> ids){
+    public static <T extends INodeEx<T>> List<Long> getChildrenIds(T tree){
+        List<Long> ids = new ArrayList<>();
+
         if (tree == null) {
-            return;
+            return ids;
         }
 
         List<T> nodes = new ArrayList<>();
@@ -90,6 +92,7 @@ public class ForestNodeMergerEx {
         if (ids.size() > 0) {
             ids.remove(0);
         }
+        return ids;
     }