Browse Source

Merge remote-tracking branch 'origin/dev_1118' into dev_1118

dev
李鹏飞 6 years ago
parent
commit
3c3dd6c346
  1. 20
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNode.java
  2. 17
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNodeLast.java
  3. 52
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptOption.java
  4. 158
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
  5. 9
      esua-epdc/epdc-admin/epdc-admin-server/src/test/java/com/elink/esua/epdc/service/DynamicDataSourceTest.java

20
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNode.java

@ -1,20 +0,0 @@
package com.elink.esua.epdc.dto;
import lombok.Data;
import java.util.List;
/**
* @author work@yujt.net.cn
* @date 1 1
*/
@Data
public class DeptNode<T> {
private String value;
private String label;
private List<T> children;
}

17
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNodeLast.java

@ -1,17 +0,0 @@
package com.elink.esua.epdc.dto;
import lombok.Data;
/**
* @author work@yujt.net.cn
* @date 1 1
*/
@Data
public class DeptNodeLast {
private String value;
private String label;
}

52
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptOption.java

@ -1,7 +1,5 @@
package com.elink.esua.epdc.dto; package com.elink.esua.epdc.dto;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@ -17,54 +15,4 @@ public class DeptOption<T> {
private List<T> options; private List<T> options;
public static void main(String[] args) {
// 第一层
List<DeptNode> nodeList1 = Lists.newArrayList();
DeptNode node1 = new DeptNode();
node1.setLabel("第一层 → 1");
node1.setValue("1::::1");
nodeList1.add(node1);
DeptOption<DeptNode> option = new DeptOption();
option.setOptions(nodeList1);
for (int i = 0; i < nodeList1.size(); i++) {
// 第二层
List<DeptNode> nodeList2 = Lists.newArrayList();
DeptNode<DeptNodeLast> node2 = new DeptNode();
node2.setLabel("第二层 → 1");
node2.setValue("2::::1");
nodeList2.add(node2);
node2 = new DeptNode();
node2.setLabel("第二层2");
node2.setValue("2::::2");
nodeList2.add(node2);
nodeList1.get(i).setChildren(nodeList2);
for (int j = 0; j < nodeList2.size(); j++) {
// 第三层
List<DeptNodeLast> nodeList3 = Lists.newArrayList();
DeptNodeLast nodeLast = new DeptNodeLast();
nodeLast.setLabel("第三层 → 1");
nodeLast.setValue("3::::1");
nodeList3.add(nodeLast);
nodeLast = new DeptNodeLast();
nodeLast.setLabel("第三层 → 2");
nodeLast.setValue("3::::2");
nodeList3.add(nodeLast);
nodeList2.get(j).setChildren(nodeList3);
}
}
System.out.println(JSONObject.toJSONString(option));
}
} }

158
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java

@ -9,6 +9,8 @@
package com.elink.esua.epdc.service.impl; package com.elink.esua.epdc.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; 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.Constant;
@ -313,8 +315,21 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
return new Result().ok(list); return new Result().ok(list);
} }
@Override
public Result<DeptOption> getUserDeptOption() {
Long userId = SecurityUser.getUserId();
String deptOptionKey = RedisKeys.getAdminUserDeptOptionKey(userId);
Object obj = redisUtils.get(deptOptionKey);
if (null == obj) {
this.packageUserDeptOption(userId);
obj = redisUtils.get(deptOptionKey);
}
return new Result<DeptOption>().ok((DeptOption) obj);
}
@Override @Override
public void packageUserDeptOption(Long userId) { public void packageUserDeptOption(Long userId) {
UserDetail userDetail = userDetailRedis.get(userId); UserDetail userDetail = userDetailRedis.get(userId);
// 用户拥有的所有部门权限 // 用户拥有的所有部门权限
List<Long> dataScopeDeptList = userDetail.getDeptIdList(); List<Long> dataScopeDeptList = userDetail.getDeptIdList();
@ -326,140 +341,119 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
if (CollUtil.isEmpty(headDepts)) { if (CollUtil.isEmpty(headDepts)) {
return; return;
} }
String label = "label";
String value = "value";
String children = "children";
// 某个部门id 声明变量,方便操作数据
Long deptId;
// 存放上级节点的主键,查询下级节点用 // 存放上级节点的主键,查询下级节点用
List<Long> parentDeptIdList = Lists.newArrayList(); List<Long> parentDeptIdList = Lists.newArrayList();
Long deptId; // 一级节点 相当于市区,此处虽然组装,但并没有应用第一级节点
// 一级节点 JSONArray NodeListLevel_1 = new JSONArray();
List<DeptNode> headNodeList = Lists.newArrayList(); JSONObject node;
DeptNode<DeptNode> node;
for (int i = 0; i < headDepts.size(); i++) { for (int i = 0; i < headDepts.size(); i++) {
// 父节点主键
deptId = headDepts.get(i).getId(); deptId = headDepts.get(i).getId();
parentDeptIdList.add(deptId); parentDeptIdList.add(deptId);
node = new DeptNode(); node = new JSONObject();
node.setLabel(headDepts.get(i).getName()); node.put(label, headDepts.get(i).getName());
node.setValue(String.valueOf(deptId)); node.put(value, String.valueOf(deptId));
headNodeList.add(node); NodeListLevel_1.add(node);
} }
// 查询所有一级节点的下级部门,用于组装 二级节点 // 查询所有一级节点的下级部门,用于组装 二级节点
List<SysDeptEntity> childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList); List<SysDeptEntity> childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList);
if (CollUtil.isEmpty(childDepts)) {
return;
}
parentDeptIdList = Lists.newArrayList(); parentDeptIdList = Lists.newArrayList();
// 所有上级节点下 所有下级节点 // 所有二级节点 相当于街道
List<DeptNode> allChildrenNodeList = Lists.newArrayList(); JSONArray NodeListLevel_2 = new JSONArray();
// 单个上级节点下 所有下级节点 // 某个一级节点下所有的二级节点
List<DeptNode> childrenNodeList; JSONArray childrenNodeList;
// 单个 下级节点 // 单个 二级节点
DeptNode<DeptNode> childrenNode; JSONObject nodeChild;
// 单个 上级节点 // 单个 一级节点
DeptNode parentNode; JSONObject nodeParent;
for (int i = 0; i < headNodeList.size(); i++) { for (int i = 0; i < NodeListLevel_1.size(); i++) {
// 父节点 // 一个父节点
parentNode = headNodeList.get(i); nodeParent = NodeListLevel_1.getJSONObject(i);
childrenNodeList = Lists.newArrayList(); // 一个父节点的所有下级节点
childrenNodeList = new JSONArray();
for (int j = 0; j < childDepts.size(); j++) { for (int j = 0; j < childDepts.size(); j++) {
deptId = childDepts.get(j).getId(); deptId = childDepts.get(j).getId();
if (parentNode.getValue().equals(String.valueOf(childDepts.get(j).getPid()))) { if (nodeParent.get(value).equals(String.valueOf(childDepts.get(j).getPid()))) {
childrenNode = new DeptNode<>(); nodeChild = new JSONObject();
childrenNode.setLabel(childDepts.get(j).getName()); nodeChild.put(label, childDepts.get(j).getName());
childrenNode.setValue(String.valueOf(deptId)); nodeChild.put(value, String.valueOf(deptId));
childrenNodeList.add(childrenNode); childrenNodeList.add(nodeChild);
allChildrenNodeList.add(childrenNode); NodeListLevel_2.add(nodeChild);
parentDeptIdList.add(deptId); parentDeptIdList.add(deptId);
} }
} }
parentNode.setChildren(childrenNodeList);
} }
// 查询所有二级节点的下级部门,用于组装 三级节点 // 查询所有二级节点的下级部门,用于组装 三级节点
childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList); childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList);
parentDeptIdList = Lists.newArrayList(); parentDeptIdList = Lists.newArrayList();
// 所有上级节点下 所有下级节点 // 所有三级节点 相当于社区
List<DeptNode<DeptNodeLast>> allChildrenBeforeLast = Lists.newArrayList(); JSONArray NodeListLevel_3 = new JSONArray();
// 单个上级节点下 所有下级节点 for (int i = 0; i < NodeListLevel_2.size(); i++) {
List<DeptNode> childrenBeforeLastList; // 一个父节点
nodeParent = NodeListLevel_2.getJSONObject(i);
DeptNode<DeptNodeLast> childrenBeforeLast; // 一个父节点的所有下级节点
childrenNodeList = new JSONArray();
for (int i = 0; i < allChildrenNodeList.size(); i++) {
// 父节点
parentNode = allChildrenNodeList.get(i);
childrenBeforeLastList = Lists.newArrayList();
for (int j = 0; j < childDepts.size(); j++) { for (int j = 0; j < childDepts.size(); j++) {
deptId = childDepts.get(j).getId(); deptId = childDepts.get(j).getId();
if (parentNode.getValue().equals(String.valueOf(childDepts.get(j).getPid()))) { if (nodeParent.get(value).equals(String.valueOf(childDepts.get(j).getPid()))) {
childrenBeforeLast = new DeptNode<>(); nodeChild = new JSONObject();
childrenBeforeLast.setLabel(childDepts.get(j).getName()); nodeChild.put(label, childDepts.get(j).getName());
childrenBeforeLast.setValue(String.valueOf(deptId)); nodeChild.put(value, String.valueOf(deptId));
childrenBeforeLastList.add(childrenBeforeLast); childrenNodeList.add(nodeChild);
allChildrenBeforeLast.add(childrenBeforeLast); NodeListLevel_3.add(nodeChild);
parentDeptIdList.add(deptId); parentDeptIdList.add(deptId);
} }
} }
parentNode.setChildren(childrenBeforeLastList); if(childrenNodeList.size() > 0){
nodeParent.put(children, childrenNodeList);
}
} }
// 查询所有三级节点的下级部门,用于组装 四级节点 // 查询所有三级节点的下级部门,用于组装 四级节点
childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList); childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList);
if (CollUtil.isEmpty(childDepts)) {
return;
}
// 单个上级节点下 所有下级节点
List<DeptNodeLast> childrenLastList;
DeptNodeLast childrenLast; for (int i = 0; i < NodeListLevel_3.size(); i++) {
for (int i = 0; i < allChildrenBeforeLast.size(); i++) {
// 父节点 // 父节点
parentNode = allChildrenBeforeLast.get(i); nodeParent = NodeListLevel_3.getJSONObject(i);
childrenLastList = Lists.newArrayList(); childrenNodeList = new JSONArray();
for (int j = 0; j < childDepts.size(); j++) { for (int j = 0; j < childDepts.size(); j++) {
deptId = childDepts.get(j).getId(); deptId = childDepts.get(j).getId();
if (parentNode.getValue().equals(String.valueOf(childDepts.get(j).getPid()))) { if (nodeParent.get(value).equals(String.valueOf(childDepts.get(j).getPid()))) {
childrenLast = new DeptNodeLast(); nodeChild = new JSONObject();
childrenLast.setLabel(childDepts.get(j).getName()); nodeChild.put(label, childDepts.get(j).getName());
childrenLast.setValue(String.valueOf(deptId)); nodeChild.put(value, String.valueOf(deptId));
childrenLastList.add(childrenLast); childrenNodeList.add(nodeChild);
} }
} }
parentNode.setChildren(childrenLastList); if(childrenNodeList.size() > 0){
nodeParent.put(children, childrenNodeList);
}
} }
DeptOption option = new DeptOption(); DeptOption option = new DeptOption();
option.setOptions(allChildrenNodeList); option.setOptions(NodeListLevel_2);
redisUtils.set(RedisKeys.getAdminUserDeptOptionKey(userId), option); redisUtils.set(RedisKeys.getAdminUserDeptOptionKey(userId), option);
} }
@Override
public Result<DeptOption> getUserDeptOption() {
Long userId = SecurityUser.getUserId();
String deptOptionKey = RedisKeys.getAdminUserDeptOptionKey(userId);
Object obj = redisUtils.get(deptOptionKey);
if (null == obj) {
this.packageUserDeptOption(userId);
obj = redisUtils.get(deptOptionKey);
}
return new Result<DeptOption>().ok((DeptOption) obj);
}
} }

9
esua-epdc/epdc-admin/epdc-admin-server/src/test/java/com/elink/esua/epdc/service/DynamicDataSourceTest.java

@ -44,4 +44,13 @@ public class DynamicDataSourceTest {
dynamicDataSourceTestService.updateUserBySlave2(id); dynamicDataSourceTestService.updateUserBySlave2(id);
} }
@Autowired
private SysDeptService deptService;
@Test
public void test1(){
Long id = 1199891988837203969L;
deptService.packageUserDeptOption(id);
}
} }

Loading…
Cancel
Save