controller
@LoginJWT
@PostMapping("/spaceList.json")
@NeedMonitorLog(bizCode = "spaceList",bizName = "空间查询下拉框")
public ResultEntity<List<Tree<String>>> spaceList() {
return ResultEntity.success(meterRecordsMonthManager.getTreeSpace());
}
service
/**
* 空间下拉列表
* @return
*/
List<Tree<String>> getTreeSpace();
@Override
public IboSaasSpace getByParentIsNull() {
IboSaasSpace iboSaasSpace = iboSaasSpaceMapper.selectBySpaceCode(SessionUtil.getCorpId());
return iboSaasSpace;
}
@Override
public List<Tree<String>> getTreeSpace() {
IboSaasSpace byParentIsNull = this.getByParentIsNull();
String spaceCode = byParentIsNull.getSpaceCode();
List<IboSaasSpace> iboSaasSpaces = iboSaasSpaceManager.listAllChildSpaceByParentCode(spaceCode, SessionUtil.getCorpId());
byParentIsNull.setParentCode("0");
iboSaasSpaces.add(byParentIsNull);
List<IboSaasSpaceTreeNode> iboSaasSpaceTreeNodeList = iboSaasSpaces.stream().map(iboSaasSpace -> {
IboSaasSpaceTreeNode iboSaasSpaceTreeNode = new IboSaasSpaceTreeNode();
BeanUtils.copyProperties(iboSaasSpace, iboSaasSpaceTreeNode);
iboSaasSpaceTreeNode.setNode(String.valueOf(iboSaasSpace.getSpaceCode()));
iboSaasSpaceTreeNode.setName(iboSaasSpace.getSpaceName());
iboSaasSpaceTreeNode.setParentNode(iboSaasSpace.getParentCode());
return iboSaasSpaceTreeNode;
}).collect(Collectors.toList());
// 构建node列表
List<TreeNode<String>> nodeList = CollUtil.newArrayList();
for (IboSaasSpaceTreeNode iboSaasSpaceTreeNode : iboSaasSpaceTreeNodeList) {
nodeList.add(new TreeNode<>(iboSaasSpaceTreeNode.getNode(),
iboSaasSpaceTreeNode.getParentNode(),
iboSaasSpaceTreeNode.getName(), 0));
}
List<Tree<String>> treeNodes = TreeUtil.build(nodeList, "0");
return treeNodes;
}
实体类
@Data
public class IboSaasSpaceTreeNode {
/**
* 节点ID
*/
private String node;
/**
* 节点名字
*/
private String name;
/**
* 父节点ID
*/
private String parentNode;
/**
* 子标签
*/
private List<T> children;
}
效果
{
"success": true,
"errorMsg": null,
"errorCode": 0,
"errorCtx": null,
"content": [
{
"id": "e2cda19446c04ebcab6ee89feafea3a3",
"parentId": "2c9fe76b5abc4f728e985dde3cc3d11b",
"weight": 0,
"name": "",
"children": [
{
"id": "c4136f421b7a4331b2625d452158691c",
"parentId": "2c9fe76b5abc4f728e985dde3cc3d11b",
"weight": 0,
"name": "根空间-1场景测试",
"children": [
{
"id": "e69d90436690429ba51ba0d343fa1ce3",
"parentId": "c4136f421b7a4331b2625d452158691c",
"weight": 0,
"name": "根空间-2场景测试",
"children": [
{
"id": "c752a034d7954785bad23904fad646c7",
"parentId": "e69d90436690429ba51ba0d343fa1ce3",
"weight": 0,
"name": "根空间-3场景测试",
"children": [
{
"id": "9cb9b031c7df41349dd8fc179cad0475",
"parentId": "c752a034d7954785bad23904fad646c7",
"weight": 0,
"name": "根空间-4场景测试"
}
]
}
]
}
]
},
{
"id": "4811f07104484ce08ad62f14d998980d",
"parentId": "2c9fe76b5abc4f728e985dde3cc3d11b",
"weight": 0,
"name": "test4"
},
{
"id": "6c656b3c60454a6cb9bf39d2945cd218",
"parentId": "2c9fe76b5abc4f728e985dde3cc3d11b",
"weight": 0,
"name": "test5"
},
]
}
参考文档
https://www.hutool.cn/docs/#/core/%E8%AF%AD%E8%A8%80%E7%89%B9%E6%80%A7/%E6%A0%91%E7%BB%93%E6%9E%84/%E6%A0%91%E7%BB%93%E6%9E%84%E5%B7%A5%E5%85%B7-TreeUtil