package com.hivekion.supplier.controller; import com.hivekion.common.entity.ResponseData; import com.hivekion.common.entity.TreeNode; import com.hivekion.supplier.entity.SuppliesDict; import com.hivekion.supplier.service.SuppliesDictService; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** *

* 物资字典表 前端控制器 *

* * @author liDongYu * @since 2025-09-09 */ @RestController @RequestMapping("/suppliesDict") public class SuppliesDictController { @Resource private SuppliesDictService suppliesDictService; @GetMapping("/tree") public ResponseData> supplierTree() { List dictList = suppliesDictService.list(); //获取所有的顶级节点 List topList = dictList.stream().filter(a -> a.getParentId() == null) .collect(Collectors.toList()); Map> parentMap = dictList.stream() .filter(a -> a.getParentId() != null) .collect(Collectors.groupingBy(SuppliesDict::getParentId)); List treeNodeList = new ArrayList<>(); topList.forEach(a -> { TreeNode treeNode = new TreeNode(); treeNode.setKey(a.getId()); treeNode.setData(a); treeNode.setTitle(a.getSupplierName()); buildChildren(treeNode, parentMap); treeNodeList.add(treeNode); }); return ResponseData.success(treeNodeList); } private void buildChildren(TreeNode node, Map> parentMap) { if (parentMap.get(node.getKey()) != null) { List childrenList = new ArrayList<>(); node.setChildren(childrenList); parentMap.get(node.getKey()).forEach(a -> { TreeNode treeNode = new TreeNode(); treeNode.setKey(a.getId()); treeNode.setData(a); treeNode.setValue(a.getId()); treeNode.setTitle(a.getSupplierName()); childrenList.add(treeNode); buildChildren(treeNode, parentMap); }); }else{ node.setLeaf(true); } } }