fix(测试计划): 生成报告模块树造成的迭代问题
This commit is contained in:
parent
993508e2f7
commit
b41eaa2d82
|
@ -19,29 +19,43 @@ public class ModuleTreeUtils {
|
|||
|
||||
/**
|
||||
* 解析并返回模块的全路径
|
||||
* @param allNodes 模块集合
|
||||
* @param filterNodes 模块集合
|
||||
* @param nodePathMap 树节点路径集合
|
||||
*/
|
||||
public static void genPathMap(List<TestPlanBaseModule> allNodes, Map<String, String> nodePathMap, List<String> scanIds) {
|
||||
private static void realGenPathMap(List<TestPlanBaseModule> filterNodes, Map<String, String> nodePathMap, List<String> scanIds) {
|
||||
int lastLoopSize = nodePathMap.size();
|
||||
if (MapUtils.isEmpty(nodePathMap)) {
|
||||
// 根节点遍历
|
||||
List<TestPlanBaseModule> rootNodes = allNodes.stream().filter(node ->
|
||||
List<TestPlanBaseModule> rootNodes = filterNodes.stream().filter(node ->
|
||||
StringUtils.isBlank(node.getParentId()) || StringUtils.equals(node.getParentId(), "NONE")).toList();
|
||||
rootNodes.forEach(node -> nodePathMap.put(node.getId(), MODULE_PATH_PREFIX + node.getName()));
|
||||
// 下一级父节点
|
||||
scanIds = rootNodes.stream().map(TestPlanBaseModule::getId).toList();
|
||||
filterNodes.removeAll(rootNodes);
|
||||
} else {
|
||||
// 非根节点遍历
|
||||
List<String> finalScanIds = scanIds;
|
||||
List<TestPlanBaseModule> scanNodes = allNodes.stream().filter(node -> finalScanIds.contains(node.getParentId())).toList();
|
||||
List<TestPlanBaseModule> scanNodes = filterNodes.stream().filter(node -> finalScanIds.contains(node.getParentId())).toList();
|
||||
scanNodes.forEach(node -> nodePathMap.put(node.getId(), nodePathMap.getOrDefault(node.getParentId(), StringUtils.EMPTY) + MODULE_PATH_PREFIX + node.getName()));
|
||||
// 下一级父节点
|
||||
scanIds = scanNodes.stream().map(TestPlanBaseModule::getId).toList();
|
||||
// 每次过滤的数据
|
||||
filterNodes.removeAll(scanNodes);
|
||||
}
|
||||
if (CollectionUtils.isEmpty(scanIds)) {
|
||||
// 叶子节点不存在, 跳出
|
||||
return;
|
||||
}
|
||||
genPathMap(allNodes, nodePathMap, scanIds);
|
||||
if (lastLoopSize == nodePathMap.size()) {
|
||||
// 处理前后无新数据产生, 无效的迭代, 跳出;
|
||||
return;
|
||||
}
|
||||
realGenPathMap(filterNodes, nodePathMap, scanIds);
|
||||
}
|
||||
|
||||
public static void genPathMap(List<TestPlanBaseModule> allNodes, Map<String, String> nodePathMap, List<String> scanIds) {
|
||||
// 过滤掉一些不好的数据
|
||||
allNodes.removeIf(node -> StringUtils.equals(node.getId(), "NONE") || StringUtils.equals(node.getId(), node.getParentId()));
|
||||
realGenPathMap(allNodes, nodePathMap, scanIds);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue