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;
|
}
|
|
}
|