From 3a0ef9ba6836a68783bd9b55f9557c2ba957bf00 Mon Sep 17 00:00:00 2001 From: songyunpeng Date: Tue, 15 Sep 2020 10:57:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=BE=E4=BA=BA=E8=8E=B7=E5=8F=96=E6=89=80?= =?UTF-8?q?=E6=9C=89=E7=BB=84=E7=BB=87=E6=9C=BA=E6=9E=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/dto/epdc/DeptTreeWithTypeKeyDTO.java | 25 ++++++ .../epdc/controller/SysDeptController.java | 11 +++ .../com/elink/esua/epdc/dao/SysDeptDao.java | 7 ++ .../esua/epdc/service/SysDeptService.java | 17 ++++ .../epdc/service/impl/SysDeptServiceImpl.java | 84 +++++++++++++++++++ .../src/main/resources/mapper/SysDeptDao.xml | 11 +++ .../epdc/commons/tools/redis/RedisKeys.java | 10 +++ .../ApiScreenPopulationController.java | 23 ++++- .../esua/epdc/feign/AdminFeignClient.java | 11 ++- .../fallback/AdminFeignClientFallback.java | 5 ++ .../esua/epdc/service/AppUserService.java | 9 ++ .../epdc/service/impl/AppUserServiceImpl.java | 5 ++ 12 files changed, 213 insertions(+), 5 deletions(-) create mode 100644 esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/DeptTreeWithTypeKeyDTO.java diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/DeptTreeWithTypeKeyDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/DeptTreeWithTypeKeyDTO.java new file mode 100644 index 00000000..5671ac17 --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/DeptTreeWithTypeKeyDTO.java @@ -0,0 +1,25 @@ +package com.elink.esua.epdc.dto.epdc; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: songyunpeng + * @Date: 2019/12/13 14:02 + * @Description: 部门表树结构 + */ +@Data +public class DeptTreeWithTypeKeyDTO implements Serializable { + private static final long serialVersionUID = 7058545106715835343L; + + private Long id; + + private Long pid; + + private String name; + + private String typeKey; + + +} 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 2a0f03e9..1fee39a9 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 @@ -209,6 +209,17 @@ public class SysDeptController { public Result getDeptTree() { return sysDeptService.getDeptTree(); } + /*** + * 获取所有部门树 - 带typekey + * @param + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author qushutong + * @date 2019/12/13 15:25 + */ + @GetMapping("party/getDeptTreeWithTypeKey") + public Result getDeptTreeWithTypeKey() { + return sysDeptService.getDeptTreeWithTypeKey(); + } /** * @param 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 ceacc36f..90688ad8 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 @@ -13,6 +13,7 @@ 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.DeptTreeWithTypeKeyDTO; import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO; import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO; @@ -145,6 +146,12 @@ public interface SysDeptDao extends BaseDao { * @Description: 查询所有 */ List selectListDeptTree(); + /** + * @author: qushutong + * @Date: 2019/12/13 14:17 + * @Description: 查询所有带typekey + */ + List selectListDeptTreeWithTypeKey(); /** * @param params 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 a28be70f..ae5168f9 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 @@ -182,6 +182,15 @@ public interface SysDeptService extends BaseService { */ void packgeAllDeptOption(); + /*** + * 组装所有部门带typekey + * @param + * @return void + * @author qushutong + * @date 2019/12/13 13:54 + */ + void packgeAllDeptOptionWithTypeKey(); + /*** * 获取所有部门树 * @param @@ -190,6 +199,14 @@ public interface SysDeptService extends BaseService { * @date 2019/12/13 14:48 */ Result getDeptTree(); + /*** + * 获取所有部门树 - 携带type-key + * @param + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author songyunpeng + * @date 2019/12/13 14:48 + */ + Result getDeptTreeWithTypeKey(); /** * @param 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 cabde539..2fd53574 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 @@ -29,6 +29,7 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.TreeUtils; import com.elink.esua.epdc.dao.SysDeptDao; import com.elink.esua.epdc.dto.*; +import com.elink.esua.epdc.dto.epdc.DeptTreeWithTypeKeyDTO; import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO; import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO; @@ -606,6 +607,62 @@ public class SysDeptServiceImpl extends BaseServiceImpl deptList = baseDao.selectListDeptTreeWithTypeKey(); + JSONObject node; + JSONArray headNodes = new JSONArray(); + for (DeptTreeWithTypeKeyDTO deptItemDto : deptList) { + if (deptItemDto.getPid().longValue() == NumConstant.ZERO_L) { + node = new JSONObject(); + node.put("value", deptItemDto.getId()); + node.put("label", deptItemDto.getName()); + node.put("typeKey", deptItemDto.getTypeKey()); + headNodes.add(node); + } + } + // 用于存放所有父级节点 + JSONArray parent; + parent = headNodes; + // 用于存放所有子级节点 + JSONArray allChildren = new JSONArray(); + JSONArray children; + // 用于存放单个子级节点 + JSONObject childNode; + // 存放其余未处理的类别(节点) + List others = this.getOtherDeptWithTypeKey(deptList, parent); + + while (!others.isEmpty()) { + for (int i = 0; i < parent.size(); i++) { + node = parent.getJSONObject(i); + children = new JSONArray(); + for (DeptTreeWithTypeKeyDTO categoryTreeDto : others) { + if (categoryTreeDto.getPid().equals(node.get("value"))) { + childNode = new JSONObject(); + childNode.put("value", categoryTreeDto.getId()); + childNode.put("label", categoryTreeDto.getName()); + childNode.put("typeKey", categoryTreeDto.getTypeKey()); + children.add(childNode); + allChildren.add(childNode); + } + } + if (!children.isEmpty()) { + node.put("children", children); + } + } + parent = allChildren; + + others = this.getOtherDeptWithTypeKey(others, parent); + + } + //存放到redis中 + List cache = Lists.newArrayList(); + cache.add(headNodes); + DeptOption option = new DeptOption(); + option.setOptions(cache.get(0)); + redisUtils.set(RedisKeys.getAllDeptOptionKeyWithTypeKey(), option); + } + List getOtherDept(List deptList, JSONArray parent) { List already = Lists.newArrayList(); @@ -623,6 +680,22 @@ public class SysDeptServiceImpl extends BaseServiceImpl getOtherDeptWithTypeKey(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 (DeptTreeWithTypeKeyDTO categoryTreeDto : deptList) { + Long categoryTreeDtoId = categoryTreeDto.getId(); + if (!already.contains(categoryTreeDtoId)) { + others.add(categoryTreeDto); + } + } + return others; + } /*** @@ -643,6 +716,17 @@ public class SysDeptServiceImpl extends BaseServiceImpl().ok((DeptOption) obj); } + @Override + public Result getDeptTreeWithTypeKey() { + String deptKey = RedisKeys.getAllDeptOptionKeyWithTypeKey(); + Object obj = redisUtils.get(deptKey); + if (null == obj) { + this.packgeAllDeptOptionWithTypeKey(); + obj = redisUtils.get(deptKey); + } + return new Result().ok((DeptOption) obj); + } + /** * @param * @return com.elink.esua.epdc.commons.tools.utils.Result 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 8601118f..4fbbf1c6 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 @@ -252,4 +252,15 @@ where sd.del_flag='0' and sd.type_key in ('district_party','street_party','street_dept') + 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 5ba297fe..1246d62a 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 @@ -168,6 +168,16 @@ public class RedisKeys { public static String getAllDeptOptionKey() { return rootPrefix.concat("options:dept:all:"); } + /*** + * 部门所有层级关系 - 带type key + * @param + * @return java.lang.String + * @author songyunpeng + * @date 2019/12/13 15:03 + */ + public static String getAllDeptOptionKeyWithTypeKey() { + return rootPrefix.concat("options:dept:allWithTypeKey:"); + } /** * @param diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiScreenPopulationController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiScreenPopulationController.java index 206629b7..99266398 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiScreenPopulationController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiScreenPopulationController.java @@ -2,16 +2,15 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.dto.DeptOption; import com.elink.esua.epdc.dto.epdc.form.EpdcScreenSelectPeopleDetailFormDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcScreenSelectPeopleFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcScreenSelectPeopleDetailResultDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcScreenSelectPeopleResultDTO; import com.elink.esua.epdc.service.AppUserService; +import com.elink.esua.epdc.service.CustomService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -29,6 +28,9 @@ public class ApiScreenPopulationController { @Autowired private AppUserService appUserService; + @Autowired + private CustomService customService; + /** * @Description 大屏找人接口 * @Author songyunpeng @@ -53,4 +55,17 @@ public class ApiScreenPopulationController { ValidatorUtils.validateEntity(dto); return appUserService.selectPeopleDetail(dto); } + + + /** + * @param + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author yinzuomei + * @Description 获取所有组织机构信息 + * @Date 2020/1/28 11:50 + **/ + @GetMapping("getDeptTreeWithTypeKey") + public Result getDeptTreeWithTypeKey() { + return appUserService.getDeptTreeWithTypeKey(); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 418ef534..b144a12c 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -86,11 +86,20 @@ public interface AdminFeignClient { * @param * @return com.elink.esua.epdc.commons.tools.utils.Result * @Author yinzuomei - * @Description 获取所有组织机构信息 + * @Description 获取所有组织机构信息 - 二级只带街道 * @Date 2020/1/28 12:15 **/ @GetMapping("sys/dept/party/getDeptTreeForEpiDemic") Result getDeptTreeForEpiDemic(); + /** + * @Description 所有组织机构 + * @Author songyunpeng + * @Date 2020/9/15 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("sys/dept/party/getDeptTreeWithTypeKey") + Result getDeptTreeWithTypeKey(); /** * 根据数据字典类型获取简版数据字典列表,用于页面下拉菜单 diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index 1c7f98b6..d796aeca 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -50,6 +50,11 @@ public class AdminFeignClientFallback implements AdminFeignClient { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDeptTreeForEpiDemic"); } + @Override + public Result getDeptTreeWithTypeKey() { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDeptTreeWithTypeKey"); + } + @Override public Result> getListSimpleDictInfo(String dictType) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getListSimpleDictInfo", dictType); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java index 07f9d85b..879d65b4 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java @@ -2,6 +2,7 @@ package com.elink.esua.epdc.service; import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.DeptOption; import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.form.v2.EpdcCompleteVolunteerInfoV2FormDTO; import com.elink.esua.epdc.dto.epdc.result.*; @@ -334,4 +335,12 @@ public interface AppUserService { * @return com.elink.esua.epdc.commons.tools.utils.Result **/ Result selectPeopleDetail(EpdcScreenSelectPeopleDetailFormDTO dto); + /** + * @Description 大屏找人组织机构获取 + * @Author songyunpeng + * @Date 2020/9/15 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result getDeptTreeWithTypeKey(); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java index a94e7da8..835c2d7d 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java @@ -1596,4 +1596,9 @@ public class AppUserServiceImpl implements AppUserService { return userFeignClient.selectPeopleDetail(dto); } + @Override + public Result getDeptTreeWithTypeKey() { + return adminFeignClient.getDeptTreeWithTypeKey(); + } + }