From 827e624e32d711152763df6955f1927f25b92e3f Mon Sep 17 00:00:00 2001 From: liao Date: Thu, 2 Nov 2023 14:14:27 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=A0=91=E5=9E=8B=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysDictItemController.java | 45 ++++++++++++++++--- 1 file changed, 38 insertions(+), 7 deletions(-) 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 dc7eb0bc..95f3b03f 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 @@ -26,6 +26,7 @@ import com.jero.common.constant.enums.LanguageEnum; import com.jero.common.util.MessageUtils; import com.jero.modules.system.util.TreeUtils; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.formula.functions.T; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -70,7 +71,7 @@ public class SysDictItemController { @ApiOperation(value = "查询字典内容列表") @GetMapping("/page") public Result> queryPageList(SysDictItem sysDictItem, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { Result> result = new Result<>(); QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap()); queryWrapper.orderByAsc("sort_order"); @@ -89,12 +90,23 @@ public class SysDictItemController { */ @ApiOperation(value = "查询字典内容树形列表") @GetMapping("/treeList") - public Result queryTreeList(SysDictItem sysDictItem, - HttpServletRequest req) { + 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); + // 只查父节点 + sysDictItem.setParentId("0"); QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap()); - List sysDictItems = sysDictItemService.list(queryWrapper); - //当查询结果中有数据的父级不存在时,赋值父级id为"0" + //List sysDictItems = sysDictItemService.list(queryWrapper); + 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 ->{ @@ -127,9 +139,28 @@ public class SysDictItemController { tree.putExtra(s, map.get(s)); } }); + Page> treePage = new Page<>(pageNo, pageSize); + treePage.setRecords(treeNodes); + treePage.setTotal(pageList.getTotal()); + return Result.OK(treePage); + } - JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(treeNodes,SerializerFeature.WriteMapNullValue)); - return Result.OK(jsonArray != null ? jsonArray : new JSONArray()); + /** + * @Author: liao + * @Date: 2023/11/2 14:04 + * @Description: 递归查询子节点 + **/ + private void queryChildrenNode(List sysDictItems, List idList) { + if (CollectionUtils.isNotEmpty(idList)) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysDictItem::getParentId, idList); + List dictItemChildren = sysDictItemService.list(queryWrapper); + if (CollectionUtils.isNotEmpty(dictItemChildren)) { + List idChildren = dictItemChildren.stream().map(SysDictItem::getId).collect(Collectors.toList()); + sysDictItems.addAll(dictItemChildren); + queryChildrenNode(sysDictItems, idChildren); + } + } } @ApiOperation(value = "选择框查询字典内容树形列表")