diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptTreeDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptTreeDTO.java new file mode 100644 index 000000000..f5c9977be --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptTreeDTO.java @@ -0,0 +1,23 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: qushutong + * @Date: 2019/12/13 14:02 + * @Description: 部门表树结构 + */ +@Data +public class DeptTreeDTO implements Serializable { + private static final long serialVersionUID = 7058545106715835343L; + + private Long id; + + private Long pid; + + private String name; + + +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java index 0fdbbb0d5..030e93db4 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java @@ -15,10 +15,7 @@ import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; -import com.elink.esua.epdc.dto.CompleteDeptDTO; -import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; -import com.elink.esua.epdc.dto.SysDeptDTO; -import com.elink.esua.epdc.dto.SysSimpleDeptDTO; +import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO; import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO; import com.elink.esua.epdc.service.SysDeptService; @@ -199,4 +196,16 @@ public class SysDeptController { List list = sysDeptService.listUserSysDeptInfoResultDTO(formDTO); return new Result>().ok(list); } + + /*** + * 获取所有部门树 + * @param + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author qushutong + * @date 2019/12/13 15:25 + */ + @GetMapping("getDeptTree") + public Result getDeptTree(){ + return sysDeptService.getDeptTree(); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java index b25078dda..7e3cb8b96 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java @@ -9,6 +9,7 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.dto.CompleteDeptDTO; +import com.elink.esua.epdc.dto.DeptTreeDTO; import com.elink.esua.epdc.dto.SysDeptDTO; import com.elink.esua.epdc.dto.SysSimpleDeptDTO; import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO; @@ -136,4 +137,14 @@ public interface SysDeptDao extends BaseDao { * @Date 2019/12/4 20:22 **/ List selectListUserSysDeptInfo(UserSysDeptInfoFormDTO formDTO); + + + + + /** + * @author: qushutong + * @Date: 2019/12/13 14:17 + * @Description: 查询所有 + */ + List selectListDeptTree(); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java index 33c5b890c..3296f1ae4 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java @@ -170,4 +170,23 @@ public interface SysDeptService extends BaseService { * @Date 2019/12/4 19:43 **/ List listUserSysDeptInfoResultDTO(UserSysDeptInfoFormDTO formDTO); + + + /*** + * 组装所有部门 + * @param + * @return void + * @author qushutong + * @date 2019/12/13 13:54 + */ + void packgeAllDeptOption(); + + /*** + * 获取所有部门树 + * @param + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author qushutong + * @date 2019/12/13 14:48 + */ + Result getDeptTree(); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java index 3f94f6c9e..860c58995 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.constant.Constant; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; +import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant; import com.elink.esua.epdc.commons.tools.enums.SuperAdminEnum; import com.elink.esua.epdc.commons.tools.exception.ErrorCode; @@ -387,6 +388,7 @@ public class SysDeptServiceImpl extends BaseServiceImpl + * @return java.util.Map * @author work@yujt.net.cn * @date 2019/11/29 10:27 */ @@ -503,4 +505,96 @@ public class SysDeptServiceImpl extends BaseServiceImpl deptList = baseDao.selectListDeptTree(); + JSONObject node; + JSONArray headNodes = new JSONArray(); + for (DeptTreeDTO deptItemDto : deptList) { + if (deptItemDto.getPid().longValue() == NumConstant.ZERO_L) { + node = new JSONObject(); + node.put("value", deptItemDto.getId()); + node.put("label", deptItemDto.getName()); + headNodes.add(node); + } + } + // 用于存放所有父级节点 + JSONArray parent; + parent = headNodes; + // 用于存放所有子级节点 + JSONArray allChildren = new JSONArray(); + JSONArray children; + // 用于存放单个子级节点 + JSONObject childNode; + // 存放其余未处理的类别(节点) + List others = this.getOtherDept(deptList, parent); + + while (!others.isEmpty()) { + for (int i = 0; i < parent.size(); i++) { + node = parent.getJSONObject(i); + children = new JSONArray(); + for (DeptTreeDTO categoryTreeDto : others) { + if (categoryTreeDto.getPid().equals(node.get("value"))) { + childNode = new JSONObject(); + childNode.put("value", categoryTreeDto.getId()); + childNode.put("label", categoryTreeDto.getName()); + children.add(childNode); + allChildren.add(childNode); + } + } + if (!children.isEmpty()) { + node.put("children", children); + } + } + parent = allChildren; + + others = this.getOtherDept(others, parent); + + } + //存放到redis中 + List cache = Lists.newArrayList(); + cache.add(headNodes); + DeptOption option = new DeptOption(); + option.setOptions(cache.get(0)); + redisUtils.set(RedisKeys.getAllDeptOptionKey(), option); + } + + + + List getOtherDept(List deptList, JSONArray parent) { + List already = Lists.newArrayList(); + for (int i = 0; i < parent.size(); i++) { + already.add((Long) parent.getJSONObject(i).get("value")); + } + + List others = Lists.newArrayList(); + + for (DeptTreeDTO categoryTreeDto : deptList) { + Long categoryTreeDtoId = categoryTreeDto.getId(); + if (!already.contains(categoryTreeDtoId)) { + others.add(categoryTreeDto); + } + } + return others; + } + + + /*** + * + * @param + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author qushutong + * @date 2019/12/13 14:50 + */ + @Override + public Result getDeptTree() { + String deptKey = RedisKeys.getAllDeptOptionKey(); + Object obj = redisUtils.get(deptKey); + if (null == obj) { + this.packgeAllDeptOption(); + obj = redisUtils.get(deptKey); + } + return new Result().ok((DeptOption) obj); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml index 03fccfdc3..a532ac981 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml @@ -190,4 +190,14 @@ + + + diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/redis/RedisKeys.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/redis/RedisKeys.java index e30fba46a..f3ff7c4f1 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/redis/RedisKeys.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/redis/RedisKeys.java @@ -145,4 +145,15 @@ public class RedisKeys { public static String getEventsCategoryKey() { return rootPrefix.concat("options:category:events"); } + + /*** + * 部门所有层级关系 + * @param + * @return java.lang.String + * @author qushutong + * @date 2019/12/13 15:03 + */ + public static String getAllDeptOptionKey() { + return rootPrefix.concat("options:dept:all:"); + } } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java index 546357a8e..578b86a9d 100755 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java @@ -70,7 +70,7 @@ public class PartyMembersController { // private PartyTask partyTask; @GetMapping("page") - @DataFilter(tableAlias = "pm", deptId = "grid_id", prefix = "AND",userId = FieldConstant.CREATED_BY) +// @DataFilter(tableAlias = "pm", deptId = "grid_id", prefix = "AND") public Result> page(@RequestParam Map params) { String realName = (String) params.get("realName"); String mobile = (String) params.get("mobile"); @@ -144,7 +144,7 @@ public class PartyMembersController { } @GetMapping("export") - @DataFilter(tableAlias = "pm", deptId = "grid_id", prefix = "AND", userId = FieldConstant.CREATED_BY) +// @DataFilter(tableAlias = "pm", deptId = "grid_id", prefix = "AND") public void export(@RequestParam Map params, HttpServletResponse response) throws Exception { List list = partyMembersService.list(params); diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java index 8cdee7afc..e97f984c4 100755 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java @@ -158,7 +158,8 @@ public class PartyMembersServiceImpl extends BaseServiceImpl parentResult = adminFeignClient.getParentAndAllDept(String.valueOf(dto.getGridId())); + String[] allDeptIds = dto.getAllDeptIds(); + Result parentResult = adminFeignClient.getParentAndAllDept(String.valueOf(allDeptIds[allDeptIds.length-1])); if (!parentResult.success() || parentResult.getData() == null) { throw new RenException("获取部门信息失败"); }else {