xiangpei
2024-04-28 786ee0e73509f54805520e911df93841e9148166
ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
@@ -3,6 +3,7 @@
import annotation.DataScope;
import com.ycl.exception.ServiceException;
import com.ycl.platform.base.BaseSelect;
import com.ycl.platform.base.Cascader;
import com.ycl.system.Result;
import com.ycl.system.domain.TreeSelect;
import com.ycl.system.entity.SysDept;
@@ -19,9 +20,7 @@
import org.springframework.stereotype.Service;
import utils.text.Convert;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -327,6 +326,43 @@
        return Result.ok().data(vos);
    }
    @Override
    public Result cascader() {
        List<Cascader> data = deptMapper.cascader();
        return Result.ok().data(this.buildTree(data));
    }
    public List<Cascader> buildTree(List<Cascader> cascaders) {
        // 创建一个映射,以parentId为键,对应的子节点列表为值
        Map<Long, List<Cascader>> map = new HashMap<>();
        for (Cascader cascader : cascaders) {
            Long parentId = cascader.getParentId();
            map.computeIfAbsent(parentId, k -> new ArrayList<>()).add(cascader);
        }
        // 递归函数,用于构建树
        List<Cascader> tree = new ArrayList<>();
        for (Cascader cascader : cascaders) {
            if (cascader.getParentId().equals(0L)) { // 根节点
                tree.add(setChildren(cascader, map));
            }
        }
        // 更新原始列表为树形结构
        cascaders.clear();
        cascaders.addAll(tree);
        return cascaders;
    }
    private Cascader setChildren(Cascader cascader, Map<Long, List<Cascader>> map) {
        List<Cascader> children = map.getOrDefault(cascader.getValue(), new ArrayList<>());
        for (Cascader child : children) {
            setChildren(child, map); // 递归设置子节点的子节点
        }
        cascader.setChildren(children);
        return cascader;
    }
    /**
     * 递归列表
     */