Browse Source

Merge remote-tracking branch 'origin/feature/workRcord_ossModify'

feature/dangjian
李鹏飞 6 years ago
parent
commit
c09e75c023
  1. 4
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/AppMenuDTO.java
  2. 61
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptGridDTO.java
  3. 5
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysAnalysisMenuDTO.java
  4. 19
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java
  5. 8
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java
  6. 1
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysAnalysisMenuEntity.java
  7. 4
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java
  8. 146
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
  9. 5
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleDataScopeServiceImpl.java
  10. 2
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java
  11. 26
      esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml
  12. 11
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/redis/RedisKeys.java

4
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/AppMenuDTO.java

@ -132,4 +132,8 @@ public class AppMenuDTO extends TreeNode<SysMenuDTO> implements Serializable {
* 上级菜单名称 * 上级菜单名称
*/ */
private String parentName; private String parentName;
/**
* 绑定菜单id
*/
private Long bindingId;
} }

61
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptGridDTO.java

@ -0,0 +1,61 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
* <p>
* https://www.renren.io
* <p>
* 版权所有侵权必究
*/
package com.elink.esua.epdc.dto;
import com.elink.esua.epdc.commons.tools.utils.TreeNode;
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.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.io.Serializable;
import java.util.Date;
/**
* 部门管理
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@Data
public class DeptGridDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 部门id
*/
private Long id;
/**
* 上级部门id
*/
private Long pid;
/**
* 部门名称
*/
private String name;
/**
* 上级部门名称
*/
private String parentName;
/**
* 部门总名称
*/
private String deptName;
}

5
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysAnalysisMenuDTO.java

@ -137,5 +137,10 @@ public class SysAnalysisMenuDTO implements Serializable {
*/ */
private String modelname; private String modelname;
/**
* 绑定菜单id
*/
private Long bindingId;
} }

19
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java

@ -333,6 +333,25 @@ public class SysUserController {
DeptOption deptOption = sysDeptService.getUserDeptOption(); DeptOption deptOption = sysDeptService.getUserDeptOption();
return new Result().ok(deptOption); return new Result().ok(deptOption);
} }
/**
* 获取用户部门多层结构用户前端显示请求需携带token
* <p>调接口从redis获取{@link SysUserController#packageUserDeptOption(Long)}接口生成的数据</p>
* <p>此接口展示三级机构层级街道-社区-网格不包括区级</p>
*
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.DeptOption>
* @author work@yujt.net.cn
* @date 2019/11/27 14:31
*/
@GetMapping("deptOptions/getDeptAuthByUser")
public Result<DeptOption> getDeptAuthByUser() {
DeptOption deptOption = sysDeptService.getDeptAuthByUser();
return new Result().ok(deptOption);
}
@GetMapping("deptOptions/getGridAuthByUser")
public Result<List<DeptGridDTO>> getGridAuthByUser() {
List<DeptGridDTO> deptOption = sysDeptService.getGridAuthByUser();
return new Result().ok(deptOption);
}
/** /**
* 获取用户部门多层结构完整层级结构包括顶级部门用户前端显示请求需携带token * 获取用户部门多层结构完整层级结构包括顶级部门用户前端显示请求需携带token

8
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java

@ -10,10 +10,7 @@ package com.elink.esua.epdc.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.CompleteDeptDTO; import com.elink.esua.epdc.dto.*;
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; import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO;
import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO;
import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO; import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO;
@ -130,6 +127,9 @@ public interface SysDeptDao extends BaseDao<SysDeptEntity> {
*/ */
List<SysDeptEntity> selectChildrenDeptNode(@Param("dataScopeDeptList") List<Long> dataScopeDeptList, @Param("parentDeptIdList") List<Long> parentDeptIdList); List<SysDeptEntity> selectChildrenDeptNode(@Param("dataScopeDeptList") List<Long> dataScopeDeptList, @Param("parentDeptIdList") List<Long> parentDeptIdList);
List<SysDeptEntity> selectChildrenDeptAuth(@Param("dataScopeDeptList") List<Long> dataScopeDeptList);
List<DeptGridDTO> getGridAuthByUser(@Param("deptList") List<Long> deptList);
/** /**
* @param formDTO * @param formDTO
* @return java.util.List<com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO> * @return java.util.List<com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO>

1
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysAnalysisMenuEntity.java

@ -117,4 +117,5 @@ public class SysAnalysisMenuEntity extends BaseEntity {
*/ */
private String numFlag; private String numFlag;
} }

4
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java

@ -163,6 +163,10 @@ public interface SysDeptService extends BaseService<SysDeptEntity> {
*/ */
DeptOption getUserDeptOption(); DeptOption getUserDeptOption();
DeptOption getDeptAuthByUser();
List<DeptGridDTO> getGridAuthByUser();
/** /**
* @param formDTO * @param formDTO
* @return java.util.List<com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO> * @return java.util.List<com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO>

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

@ -349,8 +349,41 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
public DeptOption getUserDeptOption() { public DeptOption getUserDeptOption() {
return getUserDeptOption(SecurityUser.getUserId()); return getUserDeptOption(SecurityUser.getUserId());
} }
@Override
public DeptOption getDeptAuthByUser() {
return getDeptAuthByUser(SecurityUser.getUserId());
}
@Override
public List<DeptGridDTO> getGridAuthByUser() {
// 用户拥有的所有部门权限
List<Long> deptList = SecurityUser.getUser().getDeptIdList();
List<DeptGridDTO> list;
if (deptList != null && deptList.size() > 0) {
list = baseDao.getGridAuthByUser(deptList);
} else {
return null;
}
return list;
}
/**
* 根据userId从redis取出用户部门层级关系街道-社区-网格
*
* @param userId
* @return com.elink.esua.epdc.dto.DeptOption
* @author work@yujt.net.cn
* @date 2020/2/11 11:18
*/
private DeptOption getDeptAuthByUser(Long userId) {
String deptOptionKey = RedisKeys.getAdminUserDeptAuthOptionKey(userId);
Object obj = redisUtils.get(deptOptionKey);
if (null == obj) {
this.packageDeptAuthByUser(userId);
obj = redisUtils.get(deptOptionKey);
}
return (DeptOption) obj;
}
/** /**
* 根据userId从redis取出用户部门层级关系街道-社区-网格 * 根据userId从redis取出用户部门层级关系街道-社区-网格
* *
@ -506,6 +539,10 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
packageDeptOptionByUser(userId, false); packageDeptOptionByUser(userId, false);
} }
public void packageDeptAuthByUser(Long userId) {
packageDeptOptionAuthByUser(userId);
}
public void packageAllUserDeptOption(Long userId) { public void packageAllUserDeptOption(Long userId) {
packageDeptOptionByUser(userId, true); packageDeptOptionByUser(userId, true);
} }
@ -576,6 +613,43 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
} }
} }
/**
* 组装部门层级结构
*
* @param userId 用户id
* @return void
* @author work@yujt.net.cn
* @date 2020/1/28 10:49
*/
private void packageDeptOptionAuthByUser(long userId) {
UserDetail userDetail = userDetailRedis.get(userId);
// 用户拥有的所有部门权限
List<Long> dataScopeDeptList = userDetail.getDeptIdList();
if (CollUtil.isEmpty(dataScopeDeptList)) {
return;
}
// 某个部门id 声明变量,方便操作数据
Long deptId;
// 所有父级节点 此处为第一次获取,为顶级节点,相当于市区
JSONArray parentNodeArray = new JSONArray();
// 用于存放 每次组装好的 某一级节点。页面只需展示三级,所以没有存放顶级节点(市区)
List<JSONArray> cache = Lists.newArrayList();
Map<String, Object> object;
while (CollUtil.isNotEmpty(dataScopeDeptList)) {
// 通过上级节点组装所有下级节点
object = this.packageChildrenNodeAuth(parentNodeArray, dataScopeDeptList);
dataScopeDeptList = (List<Long>) 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 +716,79 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
result.put("pids", parentDeptIdList); result.put("pids", parentDeptIdList);
return result; return result;
} }
/**
* 组装下级结构节点
*
* @param allParentNode 所有的上级机构节点
* @param dataScopeDeptList 拥有数据权限的部门
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author work@yujt.net.cn
* @date 2019/11/29 10:27
*/
private Map<String, Object> packageChildrenNodeAuth(JSONArray allParentNode, List<Long> dataScopeDeptList) {
List<SysDeptEntity> childDepts = baseDao.selectChildrenDeptAuth(dataScopeDeptList);
List<Long> 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<Long> 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<String, Object> result = Maps.newHashMap();
result.put("node", allChildrenNode);
result.put("scope", dataScopeDeptList);
return result;
}
@Override @Override
public void packgeAllDeptOption() { public void packgeAllDeptOption() {
List<DeptTreeDTO> deptList = baseDao.selectListDeptTree(); List<DeptTreeDTO> deptList = baseDao.selectListDeptTree();

5
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleDataScopeServiceImpl.java

@ -10,10 +10,12 @@ package com.elink.esua.epdc.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
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.redis.RedisUtils;
import com.elink.esua.epdc.dao.SysRoleDataScopeDao; import com.elink.esua.epdc.dao.SysRoleDataScopeDao;
import com.elink.esua.epdc.dto.DataScopeDeptList; import com.elink.esua.epdc.dto.DataScopeDeptList;
import com.elink.esua.epdc.entity.SysRoleDataScopeEntity; import com.elink.esua.epdc.entity.SysRoleDataScopeEntity;
import com.elink.esua.epdc.service.SysRoleDataScopeService; import com.elink.esua.epdc.service.SysRoleDataScopeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -28,6 +30,8 @@ import java.util.List;
@Service @Service
public class SysRoleDataScopeServiceImpl extends BaseServiceImpl<SysRoleDataScopeDao, SysRoleDataScopeEntity> public class SysRoleDataScopeServiceImpl extends BaseServiceImpl<SysRoleDataScopeDao, SysRoleDataScopeEntity>
implements SysRoleDataScopeService { implements SysRoleDataScopeService {
@Autowired
private RedisUtils redisUtils;
@Override @Override
public List<Long> getDeptIdList(Long roleId) { public List<Long> getDeptIdList(Long roleId) {
@ -64,6 +68,7 @@ public class SysRoleDataScopeServiceImpl extends BaseServiceImpl<SysRoleDataScop
//保存 //保存
insert(sysRoleDataScopeEntity); insert(sysRoleDataScopeEntity);
} }
redisUtils.deleteByPattern("epdc:options:dept:user*");
} }
@Override @Override

2
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java

@ -124,7 +124,7 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit
appRoleMenuService.saveOrUpdate(entity.getId(), dto.getAppMenuIdList()); appRoleMenuService.saveOrUpdate(entity.getId(), dto.getAppMenuIdList());
// //更新角色与数据端菜单关系 // //更新角色与数据端菜单关系
// sysAnalysisRoleMenuService.saveOrUpdate(entity.getId(), dto.getAnalysisMenuIdList()); sysAnalysisRoleMenuService.saveOrUpdate(entity.getId(), dto.getAnalysisMenuIdList());
} }

26
esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml

@ -156,6 +156,32 @@
GROUP BY tem2.ID GROUP BY tem2.ID
ORDER BY tem2.create_date ASC ORDER BY tem2.create_date ASC
</select> </select>
<select id="selectChildrenDeptAuth" resultType="com.elink.esua.epdc.entity.SysDeptEntity">
SELECT
tem1.*
FROM
( SELECT * FROM sys_dept d1 WHERE d1.id IN <foreach collection="dataScopeDeptList" item="item" open="(" separator="," close=")">#{item}</foreach> ) tem1
LEFT JOIN ( SELECT * FROM sys_dept d2 WHERE d2.id IN <foreach collection="dataScopeDeptList" item="item" open="(" separator="," close=")">#{item}</foreach> ) tem2
on tem2.id = tem1.pid
WHERE tem2.id is null
GROUP BY tem1.ID
ORDER BY tem1.create_date ASC
</select>
<select id="getGridAuthByUser" resultType="com.elink.esua.epdc.dto.DeptGridDTO">
SELECT
d1.id,
d1.name,
d1.pid,
d2.name as parentName,
concat(d2.name,'/',d1.name) as deptName
FROM sys_dept d1
left join sys_dept d2 on d1.pid = d2.id
WHERE
d1.id IN <foreach collection="deptList" item="item" open="(" separator="," close=")">#{item}</foreach>
and d1.type_key = 'grid_party'
order by d1.pid
</select>
<select id="selectListUserSysDeptInfo" parameterType="com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO" <select id="selectListUserSysDeptInfo" parameterType="com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO"
resultType="com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO"> resultType="com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO">

11
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/redis/RedisKeys.java

@ -151,6 +151,17 @@ public class RedisKeys {
public static String getAdminUserDeptOptionKey(Long userId) { public static String getAdminUserDeptOptionKey(Long userId) {
return rootPrefix.concat("options:dept:user:").concat(String.valueOf(userId)); return rootPrefix.concat("options:dept:user:").concat(String.valueOf(userId));
} }
/**
* 管理员有数据权限的部门层级关系
*
* @param userId 用户id
* @return java.lang.String
* @author work@yujt.net.cn
* @date 2019/11/28 09:56
*/
public static String getAdminUserDeptAuthOptionKey(Long userId) {
return rootPrefix.concat("options:dept:userAuth:").concat(String.valueOf(userId));
}
/** /**
* 管理员完整部门层级关系 * 管理员完整部门层级关系

Loading…
Cancel
Save