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