|
@@ -1501,36 +1501,28 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
public List<WbsTreePrivateVO> getMixRatioTestTree(String pKeyId) {
|
|
|
WbsTreePrivate wbsTreePrivate = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, pKeyId));
|
|
|
if (wbsTreePrivate != null && StringUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds())) {
|
|
|
- Set<String> idsSet = new HashSet<>();
|
|
|
- List<String> ancestorsIds = Func.toStrList(wbsTreePrivate.getAncestors());
|
|
|
List<String> mixRatioTestIds = Func.toStrList(wbsTreePrivate.getMixRatioTestIds());
|
|
|
- idsSet.addAll(ancestorsIds);
|
|
|
- idsSet.addAll(mixRatioTestIds);
|
|
|
-
|
|
|
- if (idsSet.size() > 0) {
|
|
|
- //删除值为0根节点的元素
|
|
|
- idsSet.removeIf("0"::equals);
|
|
|
- List<WbsTreePrivate> wbsTreePrivates = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
- .in(WbsTreePrivate::getId, idsSet)
|
|
|
- .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getWbsType, wbsTreePrivate.getWbsType())
|
|
|
- .eq(WbsTreePrivate::getStatus, 1));
|
|
|
-
|
|
|
- WbsTreePrivate root = wbsTreePrivates.stream().filter(f -> f.getParentId() == 0L).findAny().orElse(null);
|
|
|
- if (root == null) {
|
|
|
- WbsTreePrivate rootNode = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
- .eq(WbsTreePrivate::getParentId, 0L)
|
|
|
- .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getWbsType, wbsTreePrivate.getWbsType())
|
|
|
- .eq(WbsTreePrivate::getStatus, 1));
|
|
|
- if (rootNode != null) {
|
|
|
- wbsTreePrivates.add(rootNode);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- List<WbsTreePrivateVO> wbsTreePrivateVOS = BeanUtil.copyProperties(wbsTreePrivates, WbsTreePrivateVO.class);
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
+ .in(WbsTreePrivate::getId, mixRatioTestIds)
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getWbsType, wbsTreePrivate.getWbsType())
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1));
|
|
|
+
|
|
|
+ //所有父级节点
|
|
|
+ Set<WbsTreePrivate> resultNode = new HashSet<>();
|
|
|
+ this.fxSelectParentNode(wbsTreePrivates, resultNode, wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getWbsType());
|
|
|
+
|
|
|
+ //本身节点
|
|
|
+ resultNode.addAll(wbsTreePrivates);
|
|
|
+
|
|
|
+ //排序
|
|
|
+ List<WbsTreePrivate> resultNodeRe = resultNode.stream().sorted(Comparator.comparing(WbsTreePrivate::getPKeyId).thenComparing(WbsTreePrivate::getNodeName)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //构造返回
|
|
|
+ if (resultNodeRe.size() > 0) {
|
|
|
+ List<WbsTreePrivateVO> wbsTreePrivateVOS = BeanUtil.copyProperties(resultNodeRe, WbsTreePrivateVO.class);
|
|
|
return this.buildWbsTreeByStream(wbsTreePrivateVOS);
|
|
|
}
|
|
|
return null;
|
|
@@ -1539,6 +1531,24 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //反向递归查询父级节点
|
|
|
+ private void fxSelectParentNode(List<WbsTreePrivate> wbsTreePrivates, Set<WbsTreePrivate> resultNode, String projectId, String wbsId, String wbsType) {
|
|
|
+ List<Long> fuIds = wbsTreePrivates.stream().map(WbsTreePrivate::getParentId).distinct().collect(Collectors.toList());
|
|
|
+ if (fuIds.size() > 0 && fuIds.get(0) != 0L) {
|
|
|
+ List<WbsTreePrivate> fuNodes = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
+ .in(WbsTreePrivate::getId, fuIds)
|
|
|
+ .eq(WbsTreePrivate::getProjectId, projectId)
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsId)
|
|
|
+ .eq(WbsTreePrivate::getWbsType, wbsType)
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1));
|
|
|
+
|
|
|
+ if (fuNodes.size() > 0) {
|
|
|
+ resultNode.addAll(fuNodes);
|
|
|
+ this.fxSelectParentNode(fuNodes, resultNode, projectId, wbsId, wbsType);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Map<String, List<Object>> treeRecordTrial(String wbsId, String projectId, String pKeyId) {
|
|
|
WbsInfo wbsInfo = wbsInfoMapper.selectOne(Wrappers.<WbsInfo>query().lambda().select(WbsInfo::getWbsType).eq(WbsInfo::getId, wbsId));
|