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 835feb29..a573bbd8 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 @@ -76,13 +76,71 @@ public class SysDictItemController { Result> result = new Result<>(); QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap()); queryWrapper.orderByAsc("sort_order"); - Page page = new Page<>(pageNo, pageSize); - IPage pageList = sysDictItemService.page(page, queryWrapper); + List listSysDictItem = sysDictItemService.list(queryWrapper); + // 树形查询手动封装分页 + if(!CollectionUtils.isEmpty(listSysDictItem) && listSysDictItem.stream().anyMatch(o -> Objects.equals(o.getParentId(), "0"))){ + List listRes = getDictItem(listSysDictItem, "0"); + IPage pageList = new Page<>(pageNo, pageSize); + pageList.setRecords(getPageItems(listRes,pageNo,pageSize)); + pageList.setTotal(Long.parseLong(String.valueOf(listRes.size()))); + result.setResult(pageList); + }else{ + Page page = new Page<>(pageNo, pageSize); + IPage pageList = sysDictItemService.page(page, queryWrapper); + result.setResult(pageList); + } result.setSuccess(true); - result.setResult(pageList); return result; } + public static List getPageItems(List itemList, int currentPage, int pageSize) { + // 计算起始索引 + int startIndex = (currentPage - 1) * pageSize; + + // 确保起始索引不超过列表的最大索引 + if (startIndex > itemList.size()) { + return new ArrayList<>(); // 返回空列表 + } + + // 计算结束索引 + int endIndex = Math.min(startIndex + pageSize, itemList.size()); + + // 截取子列表 + return itemList.subList(startIndex, endIndex); + } + + private List getDictItem(List listSysDictItem, String parentId) { + List listAll = new ArrayList<>(); + List listSysDictItemParent = listSysDictItem.stream().filter(o->Objects.equals(o.getParentId(),parentId)).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listSysDictItemParent)){ + listSysDictItemParent = listSysDictItemParent.stream().sorted(Comparator.comparing(SysDictItem::getSortOrder)).collect(Collectors.toList()); + for (SysDictItem sysDictItem : listSysDictItemParent) { + listAll.add(sysDictItem); + List listSub = getDictItem(listSysDictItem, sysDictItem.getId()); + if(!CollectionUtils.isEmpty(listSub)){ + listAll.addAll(listSub); + } + } + } + return listAll; + } + + private List getDictItemTree(List listSysDictItem, String parentId) { + List listAll = new ArrayList<>(); + List listSysDictItemParent = listSysDictItem.stream().filter(o->Objects.equals(o.getParentId(),parentId)).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listSysDictItemParent)){ + listSysDictItemParent = listSysDictItemParent.stream().sorted(Comparator.comparing(SysDictItem::getSortOrder)).collect(Collectors.toList()); + for (SysDictItem sysDictItem : listSysDictItemParent) { + List listSub = getDictItem(listSysDictItem, sysDictItem.getId()); + if(!CollectionUtils.isEmpty(listSub)){ + sysDictItem.setChildren(listSub); + } + listAll.add(sysDictItem); + } + } + return listAll; + } + /** * @功能:查询字典数据树形列表 * @param sysDictItem @@ -92,61 +150,60 @@ 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)); + List listSysDictItem = sysDictItemService.list(queryWrapper); + List listAll = new ArrayList<>(); + // 树形查询手动封装分页 + if(!CollectionUtils.isEmpty(listSysDictItem)){ + if(!StringUtils.isBlank(sysDictItem.getItemText())){ + List listSelectAll = new ArrayList<>(); + for (SysDictItem dictItem : listSysDictItem) { + listSelectAll.add(dictItem); + List sub = getParentData(dictItem.getParentId()); + if(!CollectionUtils.isEmpty(sub)){ + listSelectAll.addAll(sub); } - }); - Page> treePage = new Page<>(pageNo, pageSize); - if (treeNodes == null){ - treeNodes = new ArrayList<>(); + } + if(!CollectionUtils.isEmpty(listSelectAll)){ + listSysDictItem = listSelectAll.stream().distinct().collect(Collectors.toList()); + } + } + List listSysDictItemParent = listSysDictItem.stream().filter(o->Objects.equals(o.getParentId(),"0")).collect(Collectors.toList()); + for (SysDictItem dictItem : listSysDictItemParent) { + List listRes = getDictItemTree(listSysDictItem, dictItem.getId()); + if(!CollectionUtils.isEmpty(listRes)){ + dictItem.setChildren(listRes); + } + listAll.add(dictItem); + } } - treePage.setRecords(treeNodes); - treePage.setTotal(pageList.getTotal()); + + Page treePage = new Page<>(pageNo, pageSize); + treePage.setRecords(listAll); + treePage.setTotal(listAll.size()); return Result.OK(treePage); } + private List getParentData(String parentId){ + List listSelectAll = new ArrayList<>(); + SysDictItem dictItemChildren = sysDictItemService.getById(parentId); + if(!Objects.isNull(dictItemChildren)){ + listSelectAll.add(dictItemChildren); + if(!StringUtils.isBlank(dictItemChildren.getParentId()) + && !Objects.equals(dictItemChildren.getParentId(),"0")){ + List sub = getParentData(dictItemChildren.getParentId()); + if(!CollectionUtils.isEmpty(sub)){ + listSelectAll.addAll(sub); + } + } + } + return listSelectAll; + } + /** * @Author: liao * @Date: 2023/11/2 14:04 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 5024f539..31350e5e 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 @@ -203,4 +203,12 @@ public class SysDictItem implements TreeNode { public String obtainTreeNodeParentId() { return parentId; } + + + /** + * 层级 + */ + @TableField(exist = false) + private List children; + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java index c98e3f14..4f9e39a4 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java @@ -205,13 +205,13 @@ public class MarketStandardDetailController { } /** - * 下载模板 + * 下载模版 * * @param * @return */ - @AutoLog(value = "外部标准库-市场法规清单-下载模板") - @ApiOperation(value = "外部标准库-市场法规清单-下载模板", notes = "外部标准库-市场法规清单-下载模板") + @AutoLog(value = "外部标准库-市场法规清单-下载模版") + @ApiOperation(value = "外部标准库-市场法规清单-下载模版", notes = "外部标准库-市场法规清单-下载模版") @ApiOperationSupport(order = 7) @GetMapping(value = "/downloadTemplate") @RequiresPermissions("marketStandard:detail:operate")