广州市综治平台后端
xusd
2025-06-07 36306491396230522fa20585c2621a7fc899849a
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package cn.huge.module.utils;
 
import cn.huge.base.common.utils.ObjectUtils;
import cn.huge.module.ctuser.dto.CtUnitTreeDTO;
import org.apache.commons.collections.CollectionUtils;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
 
/**
 * @author zhouxiantao
 * @create 2025-03-25 10:17
 */
public class TreeUtils {
    /**
     * 创建树形结构
     *
     * @param selectTermDTOList 所有集合
     * @return List
     */
    public static List<CtUnitTreeDTO> createUserTree(List<CtUnitTreeDTO> selectTermDTOList) {
        List<CtUnitTreeDTO> firstMapList = new ArrayList<>();
        for (CtUnitTreeDTO selectTermDTO : selectTermDTOList) {
            for (CtUnitTreeDTO currentParam : selectTermDTOList) {
                if (currentParam.getValue().equals(selectTermDTO.getParentId())) {
                    addToMBean(currentParam, selectTermDTO);
                    break;
                }
            }
        }
        //取第一级节点
        for (CtUnitTreeDTO selectTermDTO : selectTermDTOList) {
            if ("root".equals(selectTermDTO.getParentId())) {
                firstMapList.add(selectTermDTO);
            }
        }
        return firstMapList;
    }
 
    /**
     * 获取组织的子级组织
     *
     * @param targetUnit  目标组织
     * @param currentUnit 子级组织
     */
    public static void addToMBean(CtUnitTreeDTO targetUnit, CtUnitTreeDTO currentUnit) {
        List<CtUnitTreeDTO> childListObj = targetUnit.getChildren();
        List<CtUnitTreeDTO> childList = null;
        if (CollectionUtils.isEmpty(childListObj)) {
            childList = new ArrayList();
            targetUnit.setChildren(childList);
        } else {
            childList = childListObj;
        }
        childList.add(currentUnit);
    }
 
    public static List<CtUnitTreeDTO> sort(Set<CtUnitTreeDTO> termsSet){
        List<CtUnitTreeDTO> termsList = new ArrayList<>();
        if(ObjectUtils.isNotEmpty(termsSet)){
            for (CtUnitTreeDTO selectTermDTO : termsSet) {
                termsList.add(selectTermDTO);
            }
            termsList.sort((o1, o2)->{
                String s1 = o1.getValue().replaceAll("[^0-9]", "");
                if(ObjectUtils.isEmpty(s1)){
                    s1 = "0";
                }
                String s2 = o2.getValue().replaceAll("[^0-9]", "");
                if(ObjectUtils.isEmpty(s2)){
                    s2 = "0";
                }
                Double totalScore1 = Double.valueOf(s1);
                Double totalScore2 = Double.valueOf(s2);
                if(totalScore1 < totalScore2) {
                    return 1;
                }else if (totalScore1.equals(totalScore2)) {
                    return 0;
                }else {
                    return -1;
                }
            });
        }
        return termsList;
    }
 
}