From 2de1e96115d1e98d315300a8b8fb98cf7977a2bd Mon Sep 17 00:00:00 2001 From: Parker Date: Tue, 9 Feb 2021 13:11:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=B0=E5=9F=9F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/web/system/area/SysAreaRestApi.java | 9 +++ .../area/web/SysAreaRestController.java | 73 ++++++++++++++++++- 2 files changed, 81 insertions(+), 1 deletion(-) diff --git a/opsli-api/src/main/java/org/opsli/api/web/system/area/SysAreaRestApi.java b/opsli-api/src/main/java/org/opsli/api/web/system/area/SysAreaRestApi.java index 250462d9..197bdd38 100644 --- a/opsli-api/src/main/java/org/opsli/api/web/system/area/SysAreaRestApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/system/area/SysAreaRestApi.java @@ -20,6 +20,7 @@ import org.opsli.api.wrapper.system.area.SysAreaModel; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; @@ -61,6 +62,14 @@ public interface SysAreaRestApi { @GetMapping("/findTree") ResultVo findTree( String parentId ); + /** + * 组织树 + * @param deep 层级 + * @return ResultVo + */ + @GetMapping("/findTreeAll") + ResultVo findTreeAll(@RequestParam(name = "deep", defaultValue = "3", required = false) Integer deep); + /** * 组织机构表 新增 * @param model 模型 diff --git a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/area/web/SysAreaRestController.java b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/area/web/SysAreaRestController.java index 3995f260..b9bfc03d 100644 --- a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/area/web/SysAreaRestController.java +++ b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/area/web/SysAreaRestController.java @@ -105,7 +105,7 @@ public class SysAreaRestController extends BaseRestController wrapper = queryBuilder.build(); wrapper.eq(HumpUtil.humpToUnderline(MyBatisConstants.FIELD_PARENT_ID), parentId); - // 获得用户 对应菜单 + // 获得用户 对应地域 List dataList = IService.findList(wrapper); //配置 @@ -163,6 +163,77 @@ public class SysAreaRestController extends BaseRestController findTreeAll(Integer deep) { + + List dataList = IService.findList(new QueryWrapper<>()); + + + //配置 + TreeNodeConfig treeNodeConfig = new TreeNodeConfig(); + // 自定义属性名 都要默认值的 + treeNodeConfig.setWeightKey("sortNo"); + treeNodeConfig.setNameKey("areaName"); + // 最大递归深度 + treeNodeConfig.setDeep(deep); + + List> treeNodes = TreeUtil.build(dataList, "0", treeNodeConfig, + (treeNode, tree) -> { + + String areaCode = treeNode.getAreaCode(); + int sort = 0; + if(StringUtils.isNotEmpty(areaCode)){ + try { + sort = Integer.parseInt(areaCode); + }catch (Exception ignored){} + } + + tree.setId(treeNode.getId()); + tree.setParentId(treeNode.getParentId()); + tree.setWeight(sort); + tree.setName(treeNode.getAreaName()); + // 扩展属性 ... + // 不是外链 则处理组件 + tree.putExtra("areaCode", areaCode); + tree.putExtra("version", treeNode.getVersion()); + }); + + Set parentIds = Sets.newHashSet(); + for (Tree treeNode : treeNodes) { + parentIds.add(treeNode.getId()); + } + + // 数据排查是否存在下级 + List hasChildrenList = IService.hasChildren(parentIds); + if(CollUtil.isNotEmpty(hasChildrenList)){ + Map tmp = Maps.newHashMap(); + for (HasChildren hasChildren : hasChildrenList) { + if(hasChildren.getCount() != null && hasChildren.getCount() > 0){ + tmp.put(hasChildren.getParentId(), true); + } + } + + for (Tree treeNode : treeNodes) { + Boolean tmpFlag = tmp.get(treeNode.getId()); + if(tmpFlag != null && tmpFlag){ + treeNode.putExtra("hasChildren", true); + } + } + } + + return ResultVo.success(treeNodes); + } + /** * 地域 新增 * @param model 模型