瀏覽代碼

Merge remote-tracking branch 'origin/master' into master

yangyj 2 年之前
父節點
當前提交
6920ff2405

+ 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

+ 1 - 1
blade-service/blade-business/src/main/resources/application-dev.yml

@@ -1,6 +1,6 @@
 #服务器端口
 server:
-  port: 5399
+  port: 15399
 
 #数据源配置
 spring:

+ 17 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -113,10 +113,6 @@ public class ArchiveTreeContractController extends BladeController {
 	@ApiOperation(value = "新增", notes = "传入archiveTreeContractDTO")
 	public R save(@Valid @RequestBody ArchiveTreeContractDTO archiveTreeContractDTO) {
 
-		if (archiveTreeContractDTO.getProjectId() == null) {
-			archiveTreeContractDTO.setProjectId(1578599210897772545L);
-		}
-
 		if (archiveTreeContractService.submit(archiveTreeContractDTO)) {
 			CacheUtil.clear(SYS_CACHE);
 			return R.data(archiveTreeContractDTO);
@@ -131,8 +127,20 @@ public class ArchiveTreeContractController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入archiveTreeContract")
 	public R update(@Valid @RequestBody ArchiveTreeContract archiveTreeContract) {
-		archiveTreeContract.setFullName(archiveTreeContract.getNodeName());
-		return R.status(archiveTreeContractService.updateById(archiveTreeContract));
+		if (archiveTreeContract == null ) {
+			return  R.fail(200, "未查询到对应节点信息");
+		}
+
+		ArchiveTreeContract ar = archiveTreeContractService.getById(archiveTreeContract.getId());
+		if (ar == null) {
+			return  R.fail(200, "未查询到对应节点信息");
+		}
+		ar.setNodeName(archiveTreeContract.getNodeName());
+		ar.setFullName(archiveTreeContract.getNodeName());
+		ar.setIsStorageNode(archiveTreeContract.getIsStorageNode());
+		ar.setStorageType(archiveTreeContract.getStorageType());
+
+		return R.status(archiveTreeContractService.updateById(ar));
 	}
 
 	/**
@@ -158,9 +166,9 @@ public class ArchiveTreeContractController extends BladeController {
 			if (archiveTree.getParentId() == Long.parseLong(id)) {
 				throw new ServiceException("当前节点下存在子节点,删除失败");
 			}
-			if (archiveTree.getIsUploadFileDisplayConfigurationTree() == 1) {
-				throw new ServiceException("当前节点被引用中,删除失败");
-			}
+//			if (archiveTree.getIsUploadFileDisplayConfigurationTree() == 1) {
+//				throw new ServiceException("当前节点被引用中,删除失败");
+//			}
 		});
 
 		return R.status(archiveTreeContractService.deleteLogic(Func.toLongList(id)));

+ 3 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeController.java

@@ -111,9 +111,9 @@ public class ArchiveTreeController extends BladeController {
             if (archiveTree.getParentId() == Long.parseLong(id)) {
                 throw new ServiceException("当前节点下存在子节点,删除失败");
             }
-            if (archiveTree.getIsUploadFileDisplayConfigurationTree() == 1) {
-                throw new ServiceException("当前节点被引用中,删除失败");
-            }
+//            if (archiveTree.getIsUploadFileDisplayConfigurationTree() == 1) {
+//                throw new ServiceException("当前节点被引用中,删除失败");
+//            }
         });
         return R.status(archiveTreeService.deleteLogic(Func.toLongList(id)));
     }

+ 7 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java

@@ -17,17 +17,20 @@
 package org.springblade.manager.service;
 
 import feign.Param;
+
 import org.springblade.manager.dto.ArchiveTreeContractAutoRuleMapDTO;
 import org.springblade.manager.dto.ArchiveTreeContractDTO;
 import org.springblade.manager.dto.ArchiveTreeDTO;
 import org.springblade.manager.entity.ArchiveTree;
 import org.springblade.manager.entity.ArchiveTreeContract;
+
 import org.springblade.manager.vo.ArchiveTreeContractVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.vo.ArchiveTreeContractVO2;
-import org.springblade.manager.vo.ArchiveTreeVO;
 
+
+import java.util.ArrayList;
 import java.util.List;
 
 import java.util.List;
@@ -82,4 +85,7 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 	boolean syncProjectTree(ArchiveTreeContract dstNode);
 
 	boolean UpdateByArchiveTree(ArchiveTree archiveTree);
+
+	boolean deleteTree(Long id);
+
 }

+ 99 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -25,6 +25,7 @@ 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;
+import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.Func;
@@ -49,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;
@@ -383,6 +385,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 				contractMap.put(contractInfo.getId(),contractInfo);
 			}
 
+			dstTree.setValue(1L);
 			for (ArchiveTreeContractVO2 ar: dstTree.getChildren()) {
 				//施工和监理
 				ar.setValue(1L);
@@ -450,16 +453,39 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 					//同步
 					if (dstNode.getParentId() == 0 || dstScopeTree.getId() == ar.getId()) {
 						//同步
-						List<ArchiveTreeContract> tmpSaveList = archiveTreeContractSync.getNormalSaveList(srcNode.getId(),
-								srcTrees.get(0),dstNode.getId(),ar);
+						List<ArchiveTreeContract> tmpSaveList = null;
+						if (dstNode.getParentId() == 0) {
+							ArchiveTreeVO2 tmpSubTree = ForestNodeMergerEx.getSubTree(srcTree,ar.getFromId());
+							if (tmpSubTree == null) {
+								continue;
+							}
+							tmpSaveList = archiveTreeContractSync.getNormalSaveList(tmpSubTree.getId(),
+									tmpSubTree,ar.getId(),ar);
+						}else {
+							tmpSaveList = archiveTreeContractSync.getNormalSaveList(srcNode.getId(),
+									srcTree,dstNode.getId(),ar);
+						}
+
+
 						saveList.addAll(tmpSaveList);
 					}
 				}else {
 					for (ArchiveTreeContractVO2 contractNode : ar.getChildren()){
+
+						List<ArchiveTreeContract> tmpSaveList = null;
 						if (dstNode.getParentId() == 0 || dstScopeTree.getId() == contractNode.getId()) {
 
-							List<ArchiveTreeContract> tmpSaveList = archiveTreeContractSync.getNormalSaveList(srcNode.getId(),
-									srcTrees.get(0),dstNode.getId(),contractNode);
+							ArchiveTreeVO2 tmpSubTree = srcTree;
+							Long dstNodeId = dstNode.getId();
+							if (dstNode.getParentId() == 0) {
+								tmpSubTree = ForestNodeMergerEx.getSubTree(srcTree,ar.getFromId());
+								dstNodeId = contractNode.getId();
+							}
+							if (tmpSubTree == null) {
+								continue;
+							}
+							tmpSaveList = archiveTreeContractSync.getNormalSaveList(tmpSubTree.getId(),
+									tmpSubTree,dstNodeId,contractNode);
 							saveList.addAll(tmpSaveList);
 						}
 					}
@@ -467,6 +493,9 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 			}
 		}
 
+		ArchiveTreeVO2 subTree = ForestNodeMergerEx.getSubTree(srcTree,srcNode.getId());
+		UpdateByArchiveTree(dstNode.getProjectId(),subTree);
+
 		//更新排序
 		archiveTreeContractSync.InitTreeSort(dstTree,saveList);
 
@@ -482,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);
 	}
@@ -511,6 +539,71 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 
+	/**
+	 * 删除子树
+	 * @param id
+	 * @return
+	 */
+	public  boolean deleteTree(Long id) {
+		ArchiveTreeContract dstNode = this.getById(id);
+		if (dstNode == null ) {
+			return false;
+		}
+
+		List<ArchiveTreeContractVO2> dstTrees = this.tree2Root(AuthUtil.getTenantId(),null,null,dstNode.getProjectId(),null);
+		if (dstTrees == null || dstTrees.size() == 0) {
+			return false;
+		}
+
+		ArchiveTreeContractVO2 subTree = ForestNodeMergerEx.getSubTree(dstTrees.get(0),id);
+
+		List<Long> ids = ForestNodeMergerEx.getChildrenIds(subTree);
+
+		ids.add(id);
+
+		return this.deleteLogic(ids);
+	}
+
+
+	/**
+	 * 批量更新
+	 * @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;
+	}
+
+
 
 
 

+ 6 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -194,11 +194,16 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
 
     @Override
     public List<ArchiveTreeVO2> tree2(String tenantId,Long projectId, Integer disPlayTree, Integer nodeType,String wbsId,boolean bgetExtNodes) {
+        if (projectId == null) {
+            projectId = 0L;
+        }
+
         List<ArchiveTreeVO2> archiveTreeVOList = baseMapper.tree2(tenantId, projectId,disPlayTree, nodeType);
         List<ArchiveTreeVO2> treeVO2s = ForestNodeMergerEx.merge(archiveTreeVOList);
         //todo 遍历树,找到质检节点,调用getWbsArchiveTree,根据关联层级,拼接上去
+
         //是否获取扩展的wbs节点
-        if (StringUtils.isEmpty(wbsId) && projectId != 0 && bgetExtNodes) {
+        if (StringUtils.isEmpty(wbsId) && projectId!= null && projectId != 0 && bgetExtNodes) {
             ProjectInfo projectInfo = projectInfoService.getOne(projectId);
             if (projectInfo!= null) {
                 Long lWbsId = projectInfo.getReferenceWbsTemplateId();

+ 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;
     }