diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java
index 8d3cfb4f1..5bc562fc3 100644
--- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java
+++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java
@@ -333,6 +333,20 @@ public class SysUserController {
DeptOption deptOption = sysDeptService.getUserDeptOption();
return new Result().ok(deptOption);
}
+ /**
+ * 获取用户部门多层结构,用户前端显示,请求需携带token
+ *
调接口,从redis获取{@link SysUserController#packageUserDeptOption(Long)}接口生成的数据。
+ * 此接口展示三级机构层级(街道-社区-网格),不包括区级
+ *
+ * @return com.elink.esua.epdc.commons.tools.utils.Result
+ * @author work@yujt.net.cn
+ * @date 2019/11/27 14:31
+ */
+ @GetMapping("deptOptions/getDeptAuthByUser")
+ public Result getDeptAuthByUser() {
+ DeptOption deptOption = sysDeptService.getDeptAuthByUser();
+ return new Result().ok(deptOption);
+ }
/**
* 获取用户部门多层结构(完整层级结构,包括顶级部门),用户前端显示,请求需携带token
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 8193bca28..2c3e9516a 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
@@ -130,6 +130,8 @@ public interface SysDeptDao extends BaseDao {
*/
List selectChildrenDeptNode(@Param("dataScopeDeptList") List dataScopeDeptList, @Param("parentDeptIdList") List parentDeptIdList);
+ List selectChildrenDeptAuth(@Param("dataScopeDeptList") List dataScopeDeptList);
+
/**
* @param formDTO
* @return java.util.List
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 dd0b5b198..38bedcbe8 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
@@ -163,6 +163,8 @@ public interface SysDeptService extends BaseService {
*/
DeptOption getUserDeptOption();
+ DeptOption getDeptAuthByUser();
+
/**
* @param formDTO
* @return java.util.List
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 a7e54abf8..f83e6657a 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
@@ -349,8 +349,29 @@ public class SysDeptServiceImpl extends BaseServiceImpl dataScopeDeptList = userDetail.getDeptIdList();
+ if (CollUtil.isEmpty(dataScopeDeptList)) {
+ return;
+ }
+ // 某个部门id 声明变量,方便操作数据
+ Long deptId;
+
+ // 所有父级节点 此处为第一次获取,为顶级节点,相当于市区
+ JSONArray parentNodeArray = new JSONArray();
+ // 用于存放 每次组装好的 某一级节点。页面只需展示三级,所以没有存放顶级节点(市区)
+ List cache = Lists.newArrayList();
+ Map object;
+ while (CollUtil.isNotEmpty(dataScopeDeptList)) {
+ // 通过上级节点组装所有下级节点
+ object = this.packageChildrenNodeAuth(parentNodeArray, dataScopeDeptList);
+
+ dataScopeDeptList = (List) object.get("scope");
+
+ parentNodeArray = (JSONArray) object.get("node");
+ cache.add(parentNodeArray);
+ }
+
+ DeptOption option = new DeptOption();
+ option.setOptions(cache.get(0));
+ redisUtils.set(RedisKeys.getAdminUserDeptAuthOptionKey(userId), option);
+ }
/**
* 组装下级结构节点
@@ -642,7 +704,79 @@ public class SysDeptServiceImpl extends BaseServiceImpl
+ * @author work@yujt.net.cn
+ * @date 2019/11/29 10:27
+ */
+ private Map packageChildrenNodeAuth(JSONArray allParentNode, List dataScopeDeptList) {
+
+ List childDepts = baseDao.selectChildrenDeptAuth(dataScopeDeptList);
+
+ List parentDeptIdList = Lists.newArrayList();
+
+ // 用于存储所有子节点
+ JSONArray allChildrenNode = new JSONArray();
+ // 某个父节点下所有的子节点
+ JSONArray childrenNodeList;
+ // 单个 子节点
+ JSONObject nodeChild;
+
+ // 单个 父节点
+ JSONObject nodeParent;
+ Long deptId;
+
+ for (int i = 0; i < allParentNode.size(); i++) {
+
+ nodeParent = allParentNode.getJSONObject(i);
+ // 用于存储 一个父节点的所有下级节点
+ childrenNodeList = new JSONArray();
+
+ for (int j = 0; j < childDepts.size(); j++) {
+ deptId = childDepts.get(j).getId();
+
+ if (nodeParent.get("value").equals(String.valueOf(childDepts.get(j).getPid()))) {
+ nodeChild = new JSONObject();
+ nodeChild.put("label", childDepts.get(j).getName());
+ nodeChild.put("value", String.valueOf(deptId));
+ childrenNodeList.add(nodeChild);
+
+ allChildrenNode.add(nodeChild);
+ parentDeptIdList.add(deptId);
+ }
+ }
+ if (childrenNodeList.size() > 0) {
+ nodeParent.put("children", childrenNodeList);
+ }
+ }
+ if(allParentNode.size() == 0){
+ for (int index = 0; index < childDepts.size(); index++) {
+ JSONObject node = new JSONObject();
+ node.put("label", childDepts.get(index).getName());
+ node.put("value", String.valueOf(childDepts.get(index).getId()));
+ allParentNode.add(node);
+ parentDeptIdList.add(childDepts.get(index).getId());
+ allChildrenNode.add(node);
+ }
+ }
+ List newDataScopeList = Lists.newArrayList();
+ for (int i = 0; i < dataScopeDeptList.size(); i++) {
+ deptId = dataScopeDeptList.get(i);
+ if (!parentDeptIdList.contains(deptId)) {
+ newDataScopeList.add(deptId);
+ }
+ }
+ dataScopeDeptList = newDataScopeList;
+ Map result = Maps.newHashMap();
+ result.put("node", allChildrenNode);
+ result.put("scope", dataScopeDeptList);
+ return result;
+ }
@Override
public void packgeAllDeptOption() {
List deptList = baseDao.selectListDeptTree();
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 d316d0c1f..6b75d0f15 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
@@ -156,6 +156,17 @@
GROUP BY tem2.ID
ORDER BY tem2.create_date ASC
+