广州市综治平台后端
xusd
2 days ago c490640493f04e2ed0fc5c4c8fbc92ebdd4d5380
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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.*;
 
/**
 * @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) {
                String s1 = selectTermDTO.getValue().replaceAll("[^0-9]", "");
                if(ObjectUtils.isEmpty(s1)){
                    s1 = "0";
                }
                Double totalScore1 = Double.valueOf(s1);
                selectTermDTO.setSort(totalScore1);
                String area = getArea(selectTermDTO.getLabel());
                if(ObjectUtils.isNotEmpty(area)){
                    selectTermDTO.setSort(Double.valueOf(area));
                }
                termsList.add(selectTermDTO);
            }
            termsList.sort((o1, o2)->{
                Double totalScore1 = o1.getSort();
                Double totalScore2 = o2.getSort();
                if(totalScore1 > totalScore2) {
                    return 1;
                }else if (totalScore1.equals(totalScore2)) {
                    return 0;
                }else {
                    return -1;
                }
            });
        }
        return termsList;
    }
 
    public static String getArea(String areaName) {
        Map<String, String> map = new HashMap<>();
        map.put("越秀区", "2");
        map.put("海珠区", "3");
        map.put("荔湾区", "4");
        map.put("天河区", "5");
        map.put("白云区", "6");
        map.put("黄埔区", "7");
        map.put("花都区", "8");
        map.put("番禺区", "9");
        map.put("南沙区", "10");
        map.put("从化区", "11");
        map.put("增城区", "12");
        for (String s : map.keySet()) {
            if(areaName.contains(s)){
                return map.get(s);
            }
        }
        return null;
    }
 
}