Browse Source

工作日志

feature/yujt_vim
songyunpeng 5 years ago
parent
commit
3a4f7d5e02
  1. 11
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysUserController.java
  2. 8
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java
  3. 68
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
  4. 13
      epdc-cloud-admin/src/main/resources/mapper/SysDeptDao.xml

11
epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysUserController.java

@ -523,5 +523,16 @@ public class SysUserController {
public Result<List<SysRoleMembersDTO>> getRoleMembers(SysRoleMembersFormDTO formDTO) {
return sysUserService.getRoleMembers(formDTO);
}
/**
* 获取用户部门多层结构用户前端显示请求需携带token - 工作日志使用
*
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.DeptOption>
* @author songyunpeng
* @date 2020/1/27 14:31
*/
@PostMapping("deptOptions/getUserDeptOptionByUserId")
public Result<DeptOption> getUserDeptOptionByUserId() {
return sysDeptService.getUserDeptOptionByUserId(String.valueOf(SecurityUser.getUserId()));
}
}

8
epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java

@ -290,4 +290,12 @@ public interface SysDeptService extends BaseService<SysDeptEntity> {
* @date 2021/1/11 18:01
*/
List getEpmetAreaCode(UserSysDeptAreaCodeFormDTO dto);
/**
* @Description 获取用户部门多层结构用户前端显示请求需携带token - 工作日志使用
* @Author songyunpeng
* @Date 2021/1/27
* @Param [userId]
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.DeptOption>
**/
Result<DeptOption> getUserDeptOptionByUserId(String userId);
}

68
epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java

@ -598,7 +598,63 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
public void packageAllUserDeptOption(Long userId) {
packageDeptOptionByUser(userId, true);
}
private void packageWorkLogsUserDeptOption(Long userId) {
packageWorkLogDeptOptionByUser(userId);
}
private void packageWorkLogDeptOptionByUser(Long userId) {
UserDetail userDetail = userDetailRedis.get(userId);
// 用户拥有的所有部门权限
List<Long> dataScopeDeptList = userDetail.getDeptIdList();
if (CollUtil.isEmpty(dataScopeDeptList)) {
return;
}
// 通过用户部门权限 获取第一级部门节点
List<SysDeptEntity> headDepts = baseDao.selectListHeadDeptNode(dataScopeDeptList);
// 某个部门id 声明变量,方便操作数据
Long deptId;
// 存放上级节点的主键,查询下级节点用
List<Long> parentDeptIdList = Lists.newArrayList();
// 所有父级节点 此处为第一次获取,为顶级节点,相当于市区
JSONArray parentNodeArray = new JSONArray();
JSONObject node;
for (int i = 0; i < headDepts.size(); i++) {
// 父节点主键
deptId = headDepts.get(i).getId();
parentDeptIdList.add(deptId);
node = new JSONObject();
node.put("label", headDepts.get(i).getName());
node.put("typeKey", headDepts.get(i).getTypeKey());
node.put("value", String.valueOf(deptId));
parentNodeArray.add(node);
}
// 用于存放 每次组装好的 某一级节点。页面只需展示三级,所以没有存放顶级节点(市区)
List<JSONArray> cache = Lists.newArrayList();
//判断用户所属部门是否属于一级部门 属于则添加头
SysDeptEntity sysDeptEntity = baseDao.selectById(SecurityUser.getDeptId());
if(0L == sysDeptEntity.getPid()){
cache.add(parentNodeArray);
}
Map<String, Object> object;
while (CollUtil.isNotEmpty(dataScopeDeptList) && CollUtil.isNotEmpty(parentDeptIdList)) {
// 通过上级节点组装所有下级节点
object = this.packageChildrenNodeArray(parentNodeArray, dataScopeDeptList, parentDeptIdList);
dataScopeDeptList = (List<Long>) object.get("scope");
parentDeptIdList = (List<Long>) object.get("pids");
parentNodeArray = (JSONArray) object.get("node");
cache.add(parentNodeArray);
}
DeptOption option = new DeptOption();
option.setOptions(cache.get(0));
redisUtils.set(RedisKeys.getWorkLogUserDeptOptionKey(userId), option);
}
/**
* 组装部门层级结构
*
@ -877,6 +933,7 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
childNode = new JSONObject();
childNode.put("value", categoryTreeDto.getId());
childNode.put("label", categoryTreeDto.getName());
childNode.put("typeKey", categoryTreeDto.getTypeKey());
children.add(childNode);
allChildren.add(childNode);
}
@ -1182,4 +1239,15 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
dto.getId().toString(), JSONObject.toJSONString(body));
}
}
@Override
public Result<DeptOption> getUserDeptOptionByUserId(String userId) {
Long realUserId = Long.parseLong(userId);
String deptOptionKey = RedisKeys.getWorkLogUserDeptOptionKey(realUserId);
Object obj = redisUtils.get(deptOptionKey);
if (null == obj) {
this.packageWorkLogsUserDeptOption(realUserId);
obj = redisUtils.get(deptOptionKey);
}
return new Result<DeptOption>().ok((DeptOption) obj);
}
}

13
epdc-cloud-admin/src/main/resources/mapper/SysDeptDao.xml

@ -136,13 +136,13 @@
<select id="selectListHeadDeptNode" resultType="com.elink.esua.epdc.entity.SysDeptEntity">
SELECT
d1.id, d1.`name`
d1.id, d1.`name`,d1.type_key
FROM
sys_dept d
LEFT JOIN sys_dept d1 ON d.pids LIKE CONCAT( '%', d1.id, '%' )
LEFT JOIN sys_dept d1 ON d.pids LIKE CONCAT( '%', d1.id, '%' ) and d1.DEL_FLAG = '0'
WHERE
d.id IN <foreach collection="dataScopeDeptList" item="deptId" open="(" separator="," close=")">#{deptId}</foreach>
AND d1.pid = 0
AND d1.pid = 0 and d.DEL_FLAG = '0'
GROUP BY d1.id
ORDER BY d1.create_date ASC
</select>
@ -150,8 +150,8 @@
SELECT
tem2.*
FROM
( SELECT * FROM sys_dept d1 WHERE d1.id IN <foreach collection="dataScopeDeptList" item="item" open="(" separator="," close=")">#{item}</foreach> ) tem1,
( SELECT * FROM sys_dept d2 WHERE d2.pid IN <foreach collection="parentDeptIdList" item="deptId" open="(" separator="," close=")">#{deptId}</foreach>) tem2
( SELECT * FROM sys_dept d1 WHERE DEL_FLAG = '0' and d1.id IN <foreach collection="dataScopeDeptList" item="item" open="(" separator="," close=")" > #{item} </foreach> ) tem1,
( SELECT * FROM sys_dept d2 WHERE DEL_FLAG = '0' and d2.pid IN <foreach collection="parentDeptIdList" item="deptId" open="(" separator="," close=")" > #{deptId} </foreach>) tem2
WHERE
( tem1.PIDS LIKE CONCAT( '%', tem2.id, '%' ) OR tem1.PID = tem2.ID )
OR ( tem2.ID = tem1.ID AND NOT EXISTS ( SELECT 1 FROM sys_dept d WHERE d.PID = tem2.ID ) )
@ -256,7 +256,8 @@
SELECT
sd.id,
sd.pid,
sd.`name`
sd.`name`,
sd.type_key
FROM
sys_dept sd
where sd.del_flag='0'

Loading…
Cancel
Save