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));
}
}
stream流拼接树形结构
最新推荐文章于 2024-07-09 09:01:51 发布
1万+

被折叠的 条评论
为什么被折叠?



