Преглед на файлове

公有、私有wbs搜索

liuyc преди 2 години
родител
ревизия
6b74bb42c5

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

@@ -0,0 +1,18 @@
+package org.springblade.manager.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import org.springblade.manager.entity.WbsTreePrivate;
+
+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;
+
+}

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

@@ -0,0 +1,19 @@
+package org.springblade.manager.vo;
+
+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;
+
+}

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -445,6 +445,17 @@ public class WbsTreeController extends BladeController {
         return R.data(wbsFormElements, "未查询到元素");
     }
 
+    /**
+     * 根据节点名、表名模糊查询数据
+     */
+    @GetMapping("/getQueryValueByType")
+    @ApiOperationSupport(order = 21)
+    @ApiOperation(value = "根据节点名、表名模糊查询数据", notes = "传入queryValue、wbsId、projectId、type")
+    public Object getQueryValueByType(@RequestParam String queryValue, @RequestParam String wbsId, @RequestParam String projectId, @RequestParam String type) {
+        Object result = wbsTreeService.getQueryValueByType(queryValue, wbsId, projectId, type);
+        return R.data(result);
+    }
+
 }
 
 

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java

@@ -78,4 +78,6 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
 
     boolean syncNodeInfo(Long pKeyId);
 
+    Object getQueryValueByType(String queryValue, String wbsId, String projectId, String type);
+
 }

+ 99 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -405,6 +405,105 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return true;
     }
 
+    @Override
+    public Object getQueryValueByType(String queryValue, String wbsId, String projectId, String type) {
+        if (StringUtils.isNotEmpty(queryValue)) {
+            if (("1").equals(type)) { //节点
+                if (StringUtils.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 { //私有
+                    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
+                }
+            } 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());
+        if (parentIds.size() > 0) {
+            List<WbsTree> parentNodes = baseMapper.selectList(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId, parentIds));
+            if (parentNodes.size() > 0) {
+                resultNodes.addAll(parentNodes);
+                this.getParentNodesPublicWbs(parentNodes, resultNodes);
+            }
+        }
+    }
+
+    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);
+            if (childrenList != null && childrenList.size() > 0) {
+                wbsTree.setHasChildren(true);
+                recursionFnTreeByGetQueryValueByType(childrenList, map);
+            }
+        }
+    }
+
+    /**
+     * 私有树构造
+     */
+    private void getParentNodesPrivateWbs(List<WbsTreePrivate> wbsTreePrivates, Set<WbsTreePrivate> resultNodes, String projectId, String wbsId) {
+        Set<Long> parentIds = wbsTreePrivates.stream().map(WbsTreePrivate::getParentId).collect(Collectors.toSet());
+        if (parentIds.size() > 0) {
+            List<WbsTreePrivate> parentNodes = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getId, parentIds).eq(WbsTreePrivate::getType, 1).eq(WbsTreePrivate::getWbsId, wbsId).eq(WbsTreePrivate::getProjectId, projectId));
+            if (parentNodes.size() > 0) {
+                resultNodes.addAll(parentNodes);
+                this.getParentNodesPrivateWbs(parentNodes, resultNodes, projectId, wbsId);
+            }
+        }
+    }
+
+    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());
+            wbsTree.setChildren(childrenList);
+            if (childrenList != null && childrenList.size() > 0) {
+                wbsTree.setHasChildren(true);
+                recursionFnTreeByGetQueryValueByTypePrivate(childrenList, map);
+            }
+        }
+    }
+
+    /**
+     * 获取现在项目的子级节点
+     *
+     * @param obj
+     * @return
+     */
     private List<WbsTreePrivate> getChildNodesAllNowProject(WbsTreePrivate obj) {
         List<WbsTreePrivate> childNodesAllNowProject = this.getChildNodes(obj);
         if (childNodesAllNowProject == null) {