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;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import lombok.Data;
import java.util.List;
@ -17,54 +15,4 @@ public class DeptOption<T> {
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;
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.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
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);
}
@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
public void packageUserDeptOption(Long userId) {
UserDetail userDetail = userDetailRedis.get(userId);
// 用户拥有的所有部门权限
List<Long> dataScopeDeptList = userDetail.getDeptIdList();
@ -326,140 +341,119 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
if (CollUtil.isEmpty(headDepts)) {
return;
}
String label = "label";
String value = "value";
String children = "children";
// 某个部门id 声明变量,方便操作数据
Long deptId;
// 存放上级节点的主键,查询下级节点用
List<Long> parentDeptIdList = Lists.newArrayList();
Long deptId;
// 一级节点
List<DeptNode> headNodeList = Lists.newArrayList();
DeptNode<DeptNode> node;
// 一级节点 相当于市区,此处虽然组装,但并没有应用第一级节点
JSONArray NodeListLevel_1 = new JSONArray();
JSONObject node;
for (int i = 0; i < headDepts.size(); i++) {
// 父节点主键
deptId = headDepts.get(i).getId();
parentDeptIdList.add(deptId);
node = new DeptNode();
node.setLabel(headDepts.get(i).getName());
node.setValue(String.valueOf(deptId));
headNodeList.add(node);
node = new JSONObject();
node.put(label, headDepts.get(i).getName());
node.put(value, String.valueOf(deptId));
NodeListLevel_1.add(node);
}
// 查询所有一级节点的下级部门,用于组装 二级节点
List<SysDeptEntity> childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList);
if (CollUtil.isEmpty(childDepts)) {
return;
}
parentDeptIdList = Lists.newArrayList();
// 所有上级节点下 所有下级节点
List<DeptNode> allChildrenNodeList = Lists.newArrayList();
// 单个上级节点下 所有下级节点
List<DeptNode> childrenNodeList;
// 单个 下级节点
DeptNode<DeptNode> childrenNode;
// 单个 上级节点
DeptNode parentNode;
for (int i = 0; i < headNodeList.size(); i++) {
// 父节点
parentNode = headNodeList.get(i);
childrenNodeList = Lists.newArrayList();
// 所有二级节点 相当于街道
JSONArray NodeListLevel_2 = new JSONArray();
// 某个一级节点下所有的二级节点
JSONArray childrenNodeList;
// 单个 二级节点
JSONObject nodeChild;
// 单个 一级节点
JSONObject nodeParent;
for (int i = 0; i < NodeListLevel_1.size(); i++) {
// 一个父节点
nodeParent = NodeListLevel_1.getJSONObject(i);
// 一个父节点的所有下级节点
childrenNodeList = new JSONArray();
for (int j = 0; j < childDepts.size(); j++) {
deptId = childDepts.get(j).getId();
if (parentNode.getValue().equals(String.valueOf(childDepts.get(j).getPid()))) {
childrenNode = new DeptNode<>();
childrenNode.setLabel(childDepts.get(j).getName());
childrenNode.setValue(String.valueOf(deptId));
childrenNodeList.add(childrenNode);
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);
allChildrenNodeList.add(childrenNode);
NodeListLevel_2.add(nodeChild);
parentDeptIdList.add(deptId);
}
}
parentNode.setChildren(childrenNodeList);
}
// 查询所有二级节点的下级部门,用于组装 三级节点
childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList);
parentDeptIdList = Lists.newArrayList();
// 所有上级节点下 所有下级节点
List<DeptNode<DeptNodeLast>> allChildrenBeforeLast = Lists.newArrayList();
// 单个上级节点下 所有下级节点
List<DeptNode> childrenBeforeLastList;
DeptNode<DeptNodeLast> childrenBeforeLast;
for (int i = 0; i < allChildrenNodeList.size(); i++) {
// 父节点
parentNode = allChildrenNodeList.get(i);
childrenBeforeLastList = Lists.newArrayList();
// 所有三级节点 相当于社区
JSONArray NodeListLevel_3 = new JSONArray();
for (int i = 0; i < NodeListLevel_2.size(); i++) {
// 一个父节点
nodeParent = NodeListLevel_2.getJSONObject(i);
// 一个父节点的所有下级节点
childrenNodeList = new JSONArray();
for (int j = 0; j < childDepts.size(); j++) {
deptId = childDepts.get(j).getId();
if (parentNode.getValue().equals(String.valueOf(childDepts.get(j).getPid()))) {
childrenBeforeLast = new DeptNode<>();
childrenBeforeLast.setLabel(childDepts.get(j).getName());
childrenBeforeLast.setValue(String.valueOf(deptId));
childrenBeforeLastList.add(childrenBeforeLast);
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);
allChildrenBeforeLast.add(childrenBeforeLast);
NodeListLevel_3.add(nodeChild);
parentDeptIdList.add(deptId);
}
}
parentNode.setChildren(childrenBeforeLastList);
if(childrenNodeList.size() > 0){
nodeParent.put(children, childrenNodeList);
}
}
// 查询所有三级节点的下级部门,用于组装 四级节点
childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList);
if (CollUtil.isEmpty(childDepts)) {
return;
}
// 单个上级节点下 所有下级节点
List<DeptNodeLast> childrenLastList;
DeptNodeLast childrenLast;
for (int i = 0; i < allChildrenBeforeLast.size(); i++) {
for (int i = 0; i < NodeListLevel_3.size(); i++) {
// 父节点
parentNode = allChildrenBeforeLast.get(i);
childrenLastList = Lists.newArrayList();
nodeParent = NodeListLevel_3.getJSONObject(i);
childrenNodeList = new JSONArray();
for (int j = 0; j < childDepts.size(); j++) {
deptId = childDepts.get(j).getId();
if (parentNode.getValue().equals(String.valueOf(childDepts.get(j).getPid()))) {
childrenLast = new DeptNodeLast();
childrenLast.setLabel(childDepts.get(j).getName());
childrenLast.setValue(String.valueOf(deptId));
childrenLastList.add(childrenLast);
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);
}
}
parentNode.setChildren(childrenLastList);
if(childrenNodeList.size() > 0){
nodeParent.put(children, childrenNodeList);
}
}
DeptOption option = new DeptOption();
option.setOptions(allChildrenNodeList);
option.setOptions(NodeListLevel_2);
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);
}
@Autowired
private SysDeptService deptService;
@Test
public void test1(){
Long id = 1199891988837203969L;
deptService.packageUserDeptOption(id);
}
}

Loading…
Cancel
Save