定义bean:
@Data
public class TreeNode {
String id;
String name;
String level;
String type;
String pid;
List<TreeNode> list;
}
方法逻辑:
public CommonResult getGreenTree(Collection<String> greenIds) {
//查询数据
List<GsBaseGreen> list = iGsBaseGreenService.list(queryWrapper);
ArrayList<TreeNode> rootList = new ArrayList<>();
HashMap<String, ArrayList<TreeNode>> childmap = new HashMap<>();
for (GsBaseGreen e : list) {
String pid = e.getPid();
String level = e.getLevel();
TreeNode treeNode = new TreeNode();
treeNode.setId(e.getId());
treeNode.setLevel(level);
treeNode.setPid(pid);
treeNode.setName(e.getName());
if ("1".equals(level)) {
rootList.add(treeNode);
}
ArrayList<TreeNode> childList = childmap.get(pid);
if (childList == null) {
childList = new ArrayList<>();
}
childList.add(treeNode);
childmap.put(pid, childList);
}
this.createTree(rootList, childmap);
return new CommonResult().ofSuccess().setData(rootList);
}
public void createTree(ArrayList<TreeNode> nodeList, HashMap<String, ArrayList<TreeNode>> childmap) {
for (TreeNode e : nodeList) {
String id = e.getId();
ArrayList<TreeNode> child = childmap.get(id);
if (child == null || child.isEmpty()) {
return;
}
e.setList(child);
this.createTree(child, childmap);
}
}
返回结果:
{
"success": true,
"code": "0",
"message": "操作成功",
"data": [
{
"id": "IGD3",
"name": "清洁能源产业",
"level": "1",
"type": null,
"pid": "0",
"list": [
{
"id": "IGD31",
"name": "新能源与清洁能源装备制造",
"level": "2",
"type": null,
"pid": "IGD3",
"list": [
{
"id": "IGD312",
"name": "太阳能发电装备制造",
"level": "3",
"type": null,
"pid": "IGD31",
"list": null
}
]
}
]
}
],
"count": "1"
}