| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 递归列表 |
| | | */ |