浏览代码

公有、私有wbs搜索

liuyc 2 年之前
父节点
当前提交
743da69de9

+ 0 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateQueryValueVO.java

@@ -1,6 +1,5 @@
 package org.springblade.manager.vo;
 
-import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Data;
 import org.springblade.manager.entity.WbsTreePrivate;
 
@@ -9,10 +8,8 @@ import java.util.List;
 @Data
 public class WbsTreePrivateQueryValueVO extends WbsTreePrivate {
 
-    @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private List<WbsTreePrivateQueryValueVO> children;
 
-    @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private Boolean hasChildren;
 
 }

+ 0 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeQueryValueVO.java

@@ -4,16 +4,13 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Data;
 import org.springblade.manager.entity.WbsTree;
 
-import java.util.ArrayList;
 import java.util.List;
 
 @Data
 public class WbsTreeQueryValueVO extends WbsTree {
 
-    @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private List<WbsTreeQueryValueVO> children;
 
-    @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private Boolean hasChildren;
 
 }

+ 2 - 2
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -139,14 +139,14 @@ public class FormulaUtils {
     }
 
 
-    public static void main(String[] args) {
+    /*public static void main(String[] args) {
         FormData fd = new FormData();
         fd.setEName("1111");
         List<ElementData> list = new ArrayList<>();
         list.add(new ElementData(1,1,1));
         test(fd);
         System.out.println(fd.getEName());
-    }
+    }*/
     public static void  test(FormData fd){
         fd.setEName("22222");
         fd.getValues().add(new ElementData(2,2,2));

+ 52 - 35
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -408,34 +408,65 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     @Override
     public Object getQueryValueByType(String queryValue, String wbsId, String projectId, String type) {
         if (StringUtils.isNotEmpty(queryValue)) {
-            if (("1").equals(type)) { //节点
-                if (StringUtils.isEmpty(projectId)) { //公有
+            if (("1").equals(type)) {//节点
+                if (ObjectUtil.isEmpty(projectId)) {//公有
                     Set<WbsTree> resultNodes = new HashSet<>();
                     List<WbsTree> wbsTrees = baseMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getType, 1).eq(WbsTree::getWbsId, wbsId).like(WbsTree::getNodeName, queryValue));
                     this.getParentNodesPublicWbs(wbsTrees, resultNodes);
                     resultNodes.addAll(wbsTrees);
                     List<WbsTreeQueryValueVO> wbsTreeQueryValueVOS = BeanUtil.copyProperties(resultNodes, WbsTreeQueryValueVO.class);
-                    this.buildWbsTreeByGetQueryValueByType(wbsTreeQueryValueVOS);
-                    return wbsTreeQueryValueVOS;
-                } else { //私有
+                    if (wbsTreeQueryValueVOS.size() > 0) {
+                        List<WbsTreeQueryValueVO> listRoot = wbsTreeQueryValueVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
+                        Map<Long, List<WbsTreeQueryValueVO>> mapAll = wbsTreeQueryValueVOS.stream().collect(Collectors.groupingBy(WbsTreeQueryValueVO::getParentId));
+                        this.buildWbsTreeByGetQueryValueByType(listRoot, mapAll);
+                        return listRoot;
+                    }
+                } else {//私有
                     Set<WbsTreePrivate> resultNodes = new HashSet<>();
                     List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getType, 1).eq(WbsTreePrivate::getWbsId, wbsId).eq(WbsTreePrivate::getProjectId, projectId).like(WbsTreePrivate::getNodeName, queryValue));
                     this.getParentNodesPrivateWbs(wbsTreePrivates, resultNodes, projectId, wbsId);
                     resultNodes.addAll(wbsTreePrivates);
                     List<WbsTreePrivateQueryValueVO> wbsTreePrivateQueryValueVOS = BeanUtil.copyProperties(resultNodes, WbsTreePrivateQueryValueVO.class);
-                    this.buildWbsTreePrivateByGetQueryValueByType(wbsTreePrivateQueryValueVOS);
-                    return wbsTreePrivateQueryValueVOS;
-                    //TODO
+                    if (wbsTreePrivateQueryValueVOS.size() > 0) {
+                        List<WbsTreePrivateQueryValueVO> listRoot = wbsTreePrivateQueryValueVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
+                        Map<Long, List<WbsTreePrivateQueryValueVO>> mapAll = wbsTreePrivateQueryValueVOS.stream().collect(Collectors.groupingBy(WbsTreePrivateQueryValueVO::getParentId));
+                        this.buildWbsTreePrivateByGetQueryValueByType(listRoot, mapAll);
+                        return listRoot;
+                    }
+                }
+            } else if (("2").equals(type)) {//表
+                if (ObjectUtil.isEmpty(projectId)) {//公有
+                    Set<WbsTree> resultNodes = new HashSet<>();
+                    List<WbsTree> wbsTreesTab = baseMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getType, 2).eq(WbsTree::getWbsId, wbsId).like(WbsTree::getNodeName, queryValue));
+                    this.getParentNodesPublicWbs(wbsTreesTab, resultNodes);
+                    resultNodes.addAll(wbsTreesTab);
+                    List<WbsTreeQueryValueVO> wbsTreeQueryValueVOS = BeanUtil.copyProperties(resultNodes, WbsTreeQueryValueVO.class);
+                    if (wbsTreeQueryValueVOS.size() > 0) {
+                        List<WbsTreeQueryValueVO> listRoot = wbsTreeQueryValueVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
+                        Map<Long, List<WbsTreeQueryValueVO>> mapAll = wbsTreeQueryValueVOS.stream().collect(Collectors.groupingBy(WbsTreeQueryValueVO::getParentId));
+                        this.buildWbsTreeByGetQueryValueByType(listRoot, mapAll);
+                        return listRoot;
+                    }
+                } else {//私有
+                    Set<WbsTreePrivate> resultNodes = new HashSet<>();
+                    List<WbsTreePrivate> wbsTreePrivatesTab = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getWbsId, wbsId).eq(WbsTreePrivate::getProjectId, projectId).like(WbsTreePrivate::getNodeName, queryValue));
+                    this.getParentNodesPrivateWbs(wbsTreePrivatesTab, resultNodes, projectId, wbsId);
+                    resultNodes.addAll(wbsTreePrivatesTab);
+                    List<WbsTreePrivateQueryValueVO> wbsTreePrivateQueryValueVOS = BeanUtil.copyProperties(resultNodes, WbsTreePrivateQueryValueVO.class);
+                    if (wbsTreePrivateQueryValueVOS.size() > 0) {
+                        List<WbsTreePrivateQueryValueVO> listRoot = wbsTreePrivateQueryValueVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
+                        Map<Long, List<WbsTreePrivateQueryValueVO>> mapAll = wbsTreePrivateQueryValueVOS.stream().collect(Collectors.groupingBy(WbsTreePrivateQueryValueVO::getParentId));
+                        this.buildWbsTreePrivateByGetQueryValueByType(listRoot, mapAll);
+                        return listRoot;
+                    }
                 }
-            } else if (("2").equals(type)) { //表
-
             }
         }
         return null;
     }
 
     /**
-     * 公有树构造
+     * 公有树构造,获取所有父级节点
      */
     private void getParentNodesPublicWbs(List<WbsTree> wbsTrees, Set<WbsTree> resultNodes) {
         Set<Long> parentIds = wbsTrees.stream().map(WbsTree::getParentId).collect(Collectors.toSet());
@@ -448,26 +479,19 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         }
     }
 
-    private List<WbsTreeQueryValueVO> buildWbsTreeByGetQueryValueByType(List<WbsTreeQueryValueVO> wbsTrees) {
-        List<WbsTreeQueryValueVO> list = wbsTrees.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
-        Map<Long, List<WbsTreeQueryValueVO>> map = wbsTrees.stream().collect(Collectors.groupingBy(WbsTreeQueryValueVO::getParentId));
-        this.recursionFnTreeByGetQueryValueByType(list, map);
-        return list;
-    }
-
-    private void recursionFnTreeByGetQueryValueByType(List<WbsTreeQueryValueVO> list, Map<Long, List<WbsTreeQueryValueVO>> map) {
-        for (WbsTreeQueryValueVO wbsTree : list) {
-            List<WbsTreeQueryValueVO> childrenList = map.get(wbsTree.getId());
-            wbsTree.setChildren(childrenList);
+    private void buildWbsTreeByGetQueryValueByType(List<WbsTreeQueryValueVO> listRoot, Map<Long, List<WbsTreeQueryValueVO>> mapAll) {
+        for (WbsTreeQueryValueVO wbsTree : listRoot) {
+            List<WbsTreeQueryValueVO> childrenList = mapAll.get(wbsTree.getId());
             if (childrenList != null && childrenList.size() > 0) {
+                wbsTree.setChildren(childrenList);
                 wbsTree.setHasChildren(true);
-                recursionFnTreeByGetQueryValueByType(childrenList, map);
+                this.buildWbsTreeByGetQueryValueByType(childrenList, mapAll);
             }
         }
     }
 
     /**
-     * 私有树构造
+     * 私有树构造,获取所有父级节点
      */
     private void getParentNodesPrivateWbs(List<WbsTreePrivate> wbsTreePrivates, Set<WbsTreePrivate> resultNodes, String projectId, String wbsId) {
         Set<Long> parentIds = wbsTreePrivates.stream().map(WbsTreePrivate::getParentId).collect(Collectors.toSet());
@@ -480,20 +504,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         }
     }
 
-    private List<WbsTreePrivateQueryValueVO> buildWbsTreePrivateByGetQueryValueByType(List<WbsTreePrivateQueryValueVO> wbsTreePrivateQueryValueVOS) {
-        List<WbsTreePrivateQueryValueVO> list = wbsTreePrivateQueryValueVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
-        Map<Long, List<WbsTreePrivateQueryValueVO>> map = wbsTreePrivateQueryValueVOS.stream().collect(Collectors.groupingBy(WbsTreePrivateQueryValueVO::getParentId));
-        this.recursionFnTreeByGetQueryValueByTypePrivate(list, map);
-        return list;
-    }
-
-    private void recursionFnTreeByGetQueryValueByTypePrivate(List<WbsTreePrivateQueryValueVO> list, Map<Long, List<WbsTreePrivateQueryValueVO>> map) {
-        for (WbsTreePrivateQueryValueVO wbsTree : list) {
-            List<WbsTreePrivateQueryValueVO> childrenList = map.get(wbsTree.getId());
+    private void buildWbsTreePrivateByGetQueryValueByType(List<WbsTreePrivateQueryValueVO> listRoot, Map<Long, List<WbsTreePrivateQueryValueVO>> mapAll) {
+        for (WbsTreePrivateQueryValueVO wbsTree : listRoot) {
+            List<WbsTreePrivateQueryValueVO> childrenList = mapAll.get(wbsTree.getId());
             wbsTree.setChildren(childrenList);
             if (childrenList != null && childrenList.size() > 0) {
                 wbsTree.setHasChildren(true);
-                recursionFnTreeByGetQueryValueByTypePrivate(childrenList, map);
+                this.buildWbsTreePrivateByGetQueryValueByType(childrenList, mapAll);
             }
         }
     }