zhongrj
2023-04-03 ed0a71a11aeffcbb441d5a67e2a5663bd0f0e8ed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package cn.gistack.common.utils;
 
import cn.gistack.common.node.TreeNode;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
 
/**
 * node tree 工具类
 * @author zhongrj
 * @since 2021-11-23
 */
public class NodeTreeUtil {
 
    /**
     * map 转 tree 组织机构(父子id不会重复的情况,数据查询来自同一个表)
     * @param treeMap
     * @return
     */
    public  static List<TreeNode> getNodeTree(Map<String, TreeNode> treeMap){
        List<TreeNode> tree = new ArrayList<>();
        if (treeMap.size() > 1) {
            treeMap.forEach((id, treeNode) -> {
                if (treeMap.containsKey(treeNode.getParentId())) {
                    treeMap.get(treeNode.getParentId()).getChildren().add(treeNode);
                } else {
                    tree.add(treeNode);
                }
            });
        }
        return tree;
    }
 
    /**
     * list 转 tree 组织机构
     * @param parentList
     * @param childrenList
     * @return
     */
    public  static List<TreeNode> getNodeTree(List<TreeNode> parentList,List<TreeNode> childrenList){
        // 遍历
        for (TreeNode parentNode : parentList) {
            // 判断是否有孩子
            if (parentNode.getHasChildren()) {
                List<TreeNode> tree = new ArrayList<>();
                // 遍历子集合
                for (TreeNode childrenNode : childrenList) {
                    if (parentNode.getId().equals(childrenNode.getParentId())) {
                        tree.add(childrenNode);
                    }
                }
                // 设置孩子节点
                parentNode.setChildren(tree);
            }
        }
        return parentList;
    }
}