package cn.e4j.modular.iqs.utils; import cn.e4j.core.dto.impl.Dto; import cn.e4j.modular.iqs.entity.FrsadT; import cn.e4j.modular.iqs.entity.TreeNode; import cn.e4j.modular.iqs.service.impl.Frs04ServiceImpl; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Component public class BuildTreeUtil { @Resource private Frs04ServiceImpl frs04Service; public List<TreeNode> getFRSADTTreeList(Dto inDto) { List<FrsadT> parentId = frs04Service.getParentId(inDto); List<TreeNode> nodes = new ArrayList<>(); List<FrsadT> list = frs04Service.getList(); list.forEach(item -> { TreeNode treeNode = new TreeNode(item.getAD001(), item.getAD002(), item.getAD004(), item.getAD004()); nodes.add(treeNode); }); if (parentId != null) { return buildTree(nodes, parentId.get(0).getParent_code()); } return null; } public static List<TreeNode> buildTree(List<TreeNode> treeNodes, String parentId) { List<TreeNode> treeList = new ArrayList<>(); treeNodes.stream() .filter(node -> parentId.equals(node.getParentId())) .peek(treeList::add) .forEach(root -> addChildren(root, treeNodes)); return treeList; } private static void addChildren(TreeNode treeNode, List<TreeNode> treeNodes) { treeNodes.stream() .filter(node -> treeNode.getId().equals(node.getParentId())) .peek(treeNode.getChildren()::add) .forEach(child -> addChildren(child, treeNodes)); } }
03-27
222
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-27
794
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
09-28
5171
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)