diff --git a/laws-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java b/laws-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java index a573bbd8..1d39469e 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java @@ -150,11 +150,78 @@ public class SysDictItemController { @ApiOperationSupport(order = 2) @ApiOperation(value = "查询字典内容树形列表") @GetMapping("/treeList") - public Result> queryTreeList(SysDictItem sysDictItem, + public Result>> queryTreeList(SysDictItem sysDictItem, HttpServletRequest req, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap()); + Page pageList = sysDictItemService.page(page, queryWrapper); + List sysDictItems = pageList.getRecords(); + List rootIds = sysDictItems.stream().map(SysDictItem::getId).collect(Collectors.toList()); + // 递归查询子节点 + queryChildrenNode(sysDictItems, rootIds); + // 重新获取ids + List idList = sysDictItems.stream().map(SysDictItem::getId).collect(Collectors.toList()); + //当查询结果中有数据的父级不存在时,赋值父级id为"0" + 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> 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()); + // 扩展属性 ... + Map map = BeanUtil.beanToMap(treeNode,"dictId","parentId","itemText","itemValue","enName","description","sortOrder","status","isReadOnly"); + for (String s : map.keySet()) { + tree.putExtra(s, map.get(s)); + } + }); + Page> treePage = new Page<>(pageNo, pageSize); + if (treeNodes == null){ + treeNodes = new ArrayList<>(); + } + treePage.setRecords(treeNodes); + treePage.setTotal(pageList.getTotal()); + return Result.OK(treePage); + } + + + /** + * @功能:查询字典数据树形列表 + * @param sysDictItem + * @param req + * @return + */ + @ApiOperationSupport(order = 2) + @ApiOperation(value = "查询字典内容树形列表") + @GetMapping("/treeListByTag") + public Result> queryTreeListBytag(SysDictItem sysDictItem, + HttpServletRequest req, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap()); + queryWrapper.select("del_flag","description","dict_id","en_name","id","is_read_only","is_tag_dict","item_text", + "item_value","item_text as name","parent_id as pId","parent_id","sort_order","status"); List listSysDictItem = sysDictItemService.list(queryWrapper); List listAll = new ArrayList<>(); // 树形查询手动封装分页 diff --git a/laws-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java b/laws-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java index 31350e5e..819f6969 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java @@ -175,6 +175,9 @@ public class SysDictItem implements TreeNode { @TableField(exist = false) private String dictCode; + @TableField(exist = false) + private String name; + /** * 层级 */