浏览代码

系统级和项目级展开划分树

huangtf 2 年之前
父节点
当前提交
7242dd146a

+ 11 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeVO2.java

@@ -43,8 +43,11 @@ public class WbsTreeVO2 implements INode<WbsTreeVO2> {
 
     private Integer isExistForm;
 
+    private Integer majorDataType;
+
     private String ancestors;
 
+
     @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private Boolean hasChildren;
 
@@ -136,6 +139,14 @@ public class WbsTreeVO2 implements INode<WbsTreeVO2> {
         this.value = value;
     }
 
+    public Integer getMajorDataType() {
+        return majorDataType;
+    }
+
+    public void setMajorDataType(Integer majorDataType) {
+        this.majorDataType = majorDataType;
+    }
+
 
     public String toString() {
         return "TreeNode(nodeType=" + this.getNodeType()

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

@@ -133,11 +133,12 @@ public class ArchiveTreeController extends BladeController {
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "projectId", value = "项目id,0是系统级"),
             @ApiImplicitParam(name = "disPlayTree", value = "是否加载显示树 'null'=不加载 '1'=加载"),
-            @ApiImplicitParam(name = "nodeType", value = "'null'=全加载 '1'=关联电子原生文件类型树 '2'=文件上传类型树")
+            @ApiImplicitParam(name = "nodeType", value = "'null'=全加载 '1'=关联电子原生文件类型树 '2'=文件上传类型树"),
+            @ApiImplicitParam(name = "wbsId", value = "对应的wbs树,用于展示关联质检节点下的"),
     })
-    public R<List<ArchiveTreeVO2>> tree(Long projectId,Integer disPlayTree, Integer nodeType) {
+    public R<List<ArchiveTreeVO2>> tree(Long projectId,Integer disPlayTree, Integer nodeType,String wbsId) {
 
-        List<ArchiveTreeVO2> tree = archiveTreeService.tree2(AuthUtil.getTenantId(),projectId, disPlayTree, nodeType);
+        List<ArchiveTreeVO2> tree = archiveTreeService.tree2(AuthUtil.getTenantId(),projectId, disPlayTree, nodeType,wbsId);
         if (tree != null && tree.size() > 0) {
             return R.data(tree);
         }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeClientImpl.java

@@ -41,6 +41,6 @@ public class ArchiveTreeClientImpl implements ArchiveTreeClient {
 
     @Override
     public R<List<ArchiveTreeVO2>> tree(Long projectId,Integer disPlayTree, Integer nodeType) {
-        return R.data(this.archiveTreeService.tree2(AuthUtil.getTenantId(),projectId, disPlayTree, nodeType));
+        return R.data(this.archiveTreeService.tree2(AuthUtil.getTenantId(),projectId, disPlayTree, nodeType,null));
     }
 }

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.xml

@@ -203,6 +203,7 @@
         d.node_type AS nodeType,
         d.project_type,
         d.storage_type,
+        d.association_type,
         d.ext_type,
         d.ext_id,
         d.exp_data_type,
@@ -242,6 +243,7 @@
         node_type AS nodeType,
         project_type,
         storage_type,
+        association_type,
         ext_type,
         ext_id,
         exp_data_type,

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -57,6 +57,7 @@
         <result column="value" property="value"/>
         <result column="key" property="key"/>
         <result column="has_children" property="hasChildren"/>
+        <result column="major_data_type" property="majorDataType"/>
         <result column="type" property="type"/>
         <result column="nodeType" property="nodeType"/>
         <result column="wbsType" property="wbsType"/>
@@ -266,6 +267,7 @@
             d.type AS "type",
             d.id AS "value",
             d.id AS "key",
+            d.major_data_type,
             d.node_type AS "nodeType",
             d.is_exist_form AS "isExistForm",
             a.wbs_type AS "wbsType"

+ 5 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -48,11 +48,12 @@
 
     <resultMap id="WbsTreeResultMap2" type="org.springblade.manager.vo.WbsTreeVO2">
         <id column="id" property="id"/>
-        <result column="parentId" property="parentId"/>
+        <result column="parent_id" property="parentId"/>
         <result column="title" property="title"/>
         <result column="value" property="value"/>
         <result column="key" property="key"/>
         <result column="has_children" property="hasChildren"/>
+        <result column="major_data_type" property="majorDataType"/>
         <result column="type" property="type"/>
         <result column="nodeType" property="nodeType"/>
         <result column="wbsType" property="wbsType"/>
@@ -393,8 +394,8 @@
 
     <select id="tree2" resultMap="WbsTreeResultMap2">
         select
-        id, parent_id, node_name as title,type as "type", id as "value", id as "key" ,
-        node_type AS "nodeType", is_exist_form AS "isExistForm",
+        id, parent_id , node_name as title,type as "type", id as "value", id as "key" ,
+        node_type AS "nodeType", is_exist_form AS "isExistForm",major_data_type,
         wbs_type as "wbsType"
         from m_wbs_tree_private
         where
@@ -403,6 +404,7 @@
         and `type` = 1
         and project_id = #{projectId}
         and wbs_id = #{wbsId}
+        and parent_id is not null
         <if test="wbsType != null and wbsType != ''">
             and wbs_type = #{wbsType}
         </if>

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

@@ -20,7 +20,7 @@ public interface IArchiveTreeService extends BaseService<ArchiveTree> {
 //	List<ArchiveTreeVO> tree(String tenantI, Integer disPlayTree, Integer nodeType);
 
 	List<ArchiveTreeVO2> lazyTree2(String tenantId, Long projectId, Long parentId, Long extId,Long level);
-	List<ArchiveTreeVO2> tree2(String tenantI, Long projectId, Integer disPlayTree, Integer nodeType);
+	List<ArchiveTreeVO2> tree2(String tenantI, Long projectId, Integer disPlayTree, Integer nodeType,String wbsId);
 
 	List<ArchiveTree> selectByParentIdOrId(String id);
 

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

@@ -164,7 +164,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	@Override
 	public boolean initTree2(String tenantId, Long projectId){
 
-		List<ArchiveTreeVO2> tree = archiveTreeService.tree2(AuthUtil.getTenantId(), projectId,null, null);
+		List<ArchiveTreeVO2> tree = archiveTreeService.tree2(AuthUtil.getTenantId(), projectId,null, null,null);
 		if (tree == null || tree.size() == 0) {
 			return false;
 		}

+ 42 - 18
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -15,6 +15,8 @@ import org.springblade.manager.dto.ArchiveTreeDTO;
 import org.springblade.manager.dto.ArchiveTreeSortDTO;
 import org.springblade.manager.entity.ArchiveTree;
 import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.entity.ProjectInfo;
+import org.springblade.manager.service.IProjectInfoService;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.manager.utils.DiffListUtil;
@@ -39,6 +41,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
     private final ArTreeContractInitServiceImpl archiveTreeContractInitService;
     private final IWbsTreeService wbsTreeService;
     private final IWbsTreePrivateService wbsTreePrivateService;
+    private final IProjectInfoService projectInfoService;
 
     @Override
     public boolean initArchiveTree() {
@@ -144,7 +147,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
             throw new ServiceException("根节点已存在,请先删除后再进行初始化");
         }
 
-        List<ArchiveTreeVO2> sysTrees = this.tree2(AuthUtil.getTenantId(), projectId,null, null);
+        List<ArchiveTreeVO2> sysTrees = this.tree2(AuthUtil.getTenantId(), projectId,null, null,null);
         if (sysTrees == null || sysTrees.size() == 0) {
             return false;
         }
@@ -227,24 +230,36 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
 //    }
 
     @Override
-    public List<ArchiveTreeVO2> tree2(String tenantId,Long projectId, Integer disPlayTree, Integer nodeType) {
+    public List<ArchiveTreeVO2> tree2(String tenantId,Long projectId, Integer disPlayTree, Integer nodeType,String wbsId) {
         List<ArchiveTreeVO2> archiveTreeVOList = baseMapper.tree2(tenantId, projectId,disPlayTree, nodeType);
         List<ArchiveTreeVO2> treeVO2s = ForestNodeMerger.merge(archiveTreeVOList);
         //todo 遍历树,找到质检节点,调用getWbsArchiveTree,根据关联层级,拼接上去
         //待传入wbsId,把child 加入ar的childred
-//        String wbsId = "";
-//        if (com.mixsmart.utils.StringUtils.isNotEmpty(wbsId)) {
-//            for (ArchiveTreeVO2 ar : archiveTreeVOList) {
-//                if (ar.getAssociationType() == 1) {
-//                    ArchiveTreeVO2 child = getWbsArchiveTree(tenantId,projectId,ar.getId(),
-//                            wbsId,"1",Long.parseLong(ar.getDisplayHierarchy()));
-//                    if (child!= null) {
-//
-//                    }
-//                }
-//            }
-//        }
+        if (StringUtils.isEmpty(wbsId) && projectId != 0) {
+            ProjectInfo projectInfo = projectInfoService.getOne(projectId);
+            if (projectInfo!= null) {
+                Long lWbsId = projectInfo.getReferenceWbsTemplateId();
+                if (lWbsId != null) {
+                    wbsId = projectInfo.getReferenceWbsTemplateId().toString();
+                }
+            }
+        }
 
+        if (StringUtils.isNotEmpty(wbsId)) {
+            for (ArchiveTreeVO2 ar : archiveTreeVOList) {
+                //关联质检资料
+                if (ar.getAssociationType()!= null
+                        &&  ar.getAssociationType() == 1
+                        && ar.getDisplayHierarchy() != null ) {
+                    ArchiveTreeVO2 child = getWbsArchiveTree(tenantId,projectId,ar.getId(),
+                            wbsId,"1",Long.parseLong(ar.getDisplayHierarchy()));
+
+                    if (child!= null) {
+                        ar.getChildren().add(child);
+                    }
+                }
+            }
+        }
         return treeVO2s;
     }
 
@@ -377,16 +392,25 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
             wbsTreeVO2s = wbsTreePrivateService.tree2(wbsId, projectId.toString());
         }
 
+        List<WbsTreeVO2> wbsTreeVO2List = new ArrayList<>();
+        ForestNodeMerger.getTreeList(wbsTreeVO2s.get(0),wbsTreeVO2List);
+
         //遍历构建
-        for (WbsTreeVO2 wbsTreeVO2:wbsTreeVO2s) {
+        for (WbsTreeVO2 wbsTreeVO2:wbsTreeVO2List) {
             //只展示指定层级之上的
+            if (wbsTreeVO2.getMajorDataType() != null ) {
+                if (wbsTreeVO2.getMajorDataType() == 1
+                    || wbsTreeVO2.getMajorDataType() == 2
+                    || wbsTreeVO2.getMajorDataType() == 3){
+                    continue;
+                }
+            }
             if (wbsTreeVO2.getNodeType() > level){
                 continue;
             }
-
             ArchiveTreeVO2 archiveTree = new ArchiveTreeVO2();
-            archiveTree.setId(SnowFlakeUtil.getId());
-            archiveTree.setParentId(parentId);
+            archiveTree.setId(wbsTreeVO2.getId());
+            archiveTree.setParentId(wbsTreeVO2.getParentId());
             archiveTree.setTitle(wbsTreeVO2.getTitle());
             archiveTree.setExtId(wbsTreeVO2.getId());
             archiveTree.setDisplayHierarchy(level.toString());

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/ForestNodeMerger.java

@@ -9,7 +9,7 @@ public class ForestNodeMerger {
     public static <T extends INode<T>> List<T> merge(List<T> items) {
         ForestNodeManager<T> forestNodeManager = new ForestNodeManager(items);
         items.forEach((forestNode) -> {
-            if (forestNode.getParentId() != 0L) {
+            if (forestNode.getParentId()!= null && forestNode.getParentId() != 0L) {
                 INode<T> node = forestNodeManager.getTreeNodeAt(forestNode.getParentId());
                 if (node != null) {
                     node.getChildren().add(forestNode);