部门视图重构代码提交

This commit is contained in:
yujh 2025-02-21 22:46:10 +08:00
parent 031b2ac6bf
commit 7c11497920

View File

@ -105,4 +105,77 @@ public class TreeUtil {
} }
return rootNodes; return rootNodes;
} }
//建立树形结构
//rootSign 根节点标识
//tLevel 节点层级用于指定展示层数
//nodeType 节点类型用于多数据类型合并
public static List<Map> buildTreeFileFirst(String type,List<Map> nodeMaps,String rootSign,String rootNodeType,String tLevel,String nodeType){
List<Map> treeNodes =new ArrayList<>();
if("1".equals(type)) {
HashMap<String, Object> deptNode = new HashMap<>();
nodeType = "dept";
deptNode.put("ID","all");
deptNode.put("PARENTID","0");
deptNode.put("name","全部");
deptNode.put("ORDERINDEX","1");
deptNode.put("TLEVEL","");
deptNode.put("nodeType", "dept");
treeNodes.add(deptNode);
}
for (Map treeNode : getRootNode(nodeMaps,rootSign,rootNodeType)) {
treeNode = buildChildTreeFileFirst(treeNode,nodeMaps,tLevel,nodeType);
treeNodes.add(treeNode);
}
// 子节点进行排序
List<Map> treeNodesSort = Optional.ofNullable(treeNodes)
.map(List::stream)
.orElseGet(Stream::empty)
.sorted(Comparator.comparing(treeNode->Integer.valueOf(treeNode.get("ORDERINDEX").toString())))
.collect(Collectors.toList());
return treeNodesSort;
}
//递归建立子树形结构
private static Map buildChildTreeFileFirst(Map pNode, List<Map> nodeMaps, String tLevel, String nodeType){
List<Map> childNodes =new ArrayList<>();
if (null == tLevel || tLevel.equals("")) {
for (Map nodeMap : nodeMaps) {
if (nodeMap.get("PARENTID").equals(pNode.get("ID"))) {
childNodes.add(buildChildTreeFileFirst(nodeMap,nodeMaps,tLevel,nodeType));
}
}
if(CollectionUtils.isNotEmpty(childNodes)){
List<Map> childNodesSort = Optional.ofNullable(childNodes)
.map(List::stream)
.orElseGet(Stream::empty)
.sorted(Comparator.comparing((Map treeNode) -> "file".equals(treeNode.get("nodeType").toString()) ? 0 : 1)
// 然后按 ORDERINDEX 排序
.thenComparing(treeNode -> Integer.valueOf(treeNode.get("ORDERINDEX").toString())))
.collect(Collectors.toList());
pNode.put("children",childNodesSort);
}
} else {
for (Map nodeMap : nodeMaps) {
if (Integer.valueOf(tLevel)>=Integer.valueOf(String.valueOf(nodeMap.get("TLEVEL")))) {
if (nodeMap.get("PARENTID").equals(pNode.get("ID"))) {
childNodes.add(buildChildTree(nodeMap,nodeMaps,tLevel,nodeType));
}
}
if (Integer.valueOf(tLevel)<Integer.valueOf(String.valueOf(nodeMap.get("TLEVEL"))) && String.valueOf(nodeMap.get("nodeType")).equals(nodeType)) {
if (nodeMap.get("PARENTID").equals(pNode.get("ID"))) {
childNodes.add(buildChildTree(nodeMap,nodeMaps,tLevel,nodeType));
}
}
}
if(CollectionUtils.isNotEmpty(childNodes)){
List<Map> childNodesSort = Optional.ofNullable(childNodes)
.map(List::stream)
.orElseGet(Stream::empty)
.sorted(Comparator.comparing(childNodesOrigin->Integer.valueOf(childNodesOrigin.get("ORDERINDEX").toString())))
.collect(Collectors.toList());
pNode.put("children",childNodesSort);
}
}
return pNode;
}
} }