|
@@ -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);
|
|
|
}
|
|
|
}
|
|
|
}
|