add 选择框查询字典内容树形列表

This commit is contained in:
liao
2023-09-13 11:35:44 +08:00
parent dd7596d7ed
commit a821a4238c
5 changed files with 53 additions and 159 deletions
@@ -1,10 +1,7 @@
package com.jero.modules.system.controller;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -135,6 +132,49 @@ public class SysDictItemController {
return Result.OK(jsonArray != null ? jsonArray : new JSONArray());
}
@ApiOperation(value = "选择框查询字典内容树形列表")
@GetMapping("/treeListOption")
public Result<JSONArray> treeListOption(SysDictItem sysDictItem,
HttpServletRequest req) {
QueryWrapper<SysDictItem> queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap());
List<SysDictItem> sysDictItems = sysDictItemService.list(queryWrapper);
//当查询结果中有数据的父级不存在时,赋值父级id为"0"
List<String> idList = sysDictItems.stream().map(SysDictItem::getId).collect(Collectors.toList());
idList.add("0");
//赋值pId
sysDictItems.forEach(i ->{
String parentId = i.getParentId();
if (idList.contains(parentId)) {
i.setPId(parentId);
}else {
i.setPId("0");
}
});
//配置
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
// 自定义属性名 都要默认值的
treeNodeConfig.setWeightKey("sortOrder");
treeNodeConfig.setIdKey("id");
treeNodeConfig.setParentIdKey("pId");
// 最大递归深度
treeNodeConfig.setDeep(-1);
//转换器
List<Tree<String>> treeNodes = TreeUtil.build(sysDictItems, "0", treeNodeConfig,
(treeNode, tree) -> {
String id = treeNode.getId();
tree.setId(id);
tree.setParentId(treeNode.getPId());
tree.setWeight(treeNode.getSortOrder());
tree.setName(treeNode.getItemText());
tree.putExtra("key", id);
tree.putExtra("value", id);
tree.putExtra("title", treeNode.getItemText());
});
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(treeNodes,SerializerFeature.WriteMapNullValue));
return Result.OK(jsonArray != null ? jsonArray : new JSONArray());
}
/**
* @功能:新增
* @return