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 createUserTree(List selectTermDTOList) { List 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 childListObj = targetUnit.getChildren(); List childList = null; if (CollectionUtils.isEmpty(childListObj)) { childList = new ArrayList(); targetUnit.setChildren(childList); } else { childList = childListObj; } childList.add(currentUnit); } public static List sort(Set termsSet){ List 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 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; } }