Browse Source

新增获取上级机构id的接口

hotfix/yujt_opt
yujt 5 years ago
parent
commit
cd42c2ec6c
  1. 13
      epdc-cloud-optimize-yushan/epdc-optimize-department/src/main/java/com/elink/esua/epdc/optimize/constant/OptimizeRedisKeys.java
  2. 15
      epdc-cloud-optimize-yushan/epdc-optimize-department/src/main/java/com/elink/esua/epdc/optimize/modules/deptlevel/controller/OptDeptLevelController.java
  3. 11
      epdc-cloud-optimize-yushan/epdc-optimize-department/src/main/java/com/elink/esua/epdc/optimize/modules/deptlevel/service/OptSysDeptService.java
  4. 37
      epdc-cloud-optimize-yushan/epdc-optimize-department/src/main/java/com/elink/esua/epdc/optimize/modules/deptlevel/service/impl/OptSysDeptServiceImpl.java

13
epdc-cloud-optimize-yushan/epdc-optimize-department/src/main/java/com/elink/esua/epdc/optimize/constant/OptimizeRedisKeys.java

@ -41,4 +41,17 @@ public class OptimizeRedisKeys {
.concat(keyStr); .concat(keyStr);
} }
/**
* 用于存放上级部门的id
*
* @param deptId 部门
* @param keyStr 关键字
* @return java.lang.String
* @author work@yujt.net.cn
* @date 2020/7/6 10:40
*/
public static String getParentDeptIdsKey(Long deptId, String keyStr) {
return "epdc:resident:dept:parent:".concat(String.valueOf(deptId)).concat(keyStr);
}
} }

15
epdc-cloud-optimize-yushan/epdc-optimize-department/src/main/java/com/elink/esua/epdc/optimize/modules/deptlevel/controller/OptDeptLevelController.java

@ -38,6 +38,21 @@ public class OptDeptLevelController {
return new Result().ok(childDeptLevelList); return new Result().ok(childDeptLevelList);
} }
/**
* 根据部门id获取某部门指定类型的上级机构
*
* @param typeKeys 上级机构类型
* @param deptId 某部门id
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < java.lang.Long>>
* @author work@yujt.net.cn
* @date 2020/7/7 09:22
*/
@GetMapping("deptlevel/listParentId/{deptId}")
public Result<List<Long>> listChildDeptLevelById(@PathVariable("deptId") Long deptId, @RequestBody String[] typeKeys) {
List<Long> parentDeptIds = optSysDeptService.listParentDeptIds(typeKeys, deptId);
return new Result().ok(parentDeptIds);
}
/** /**
* 根据部门类别过滤部门权限 * 根据部门类别过滤部门权限
* *

11
epdc-cloud-optimize-yushan/epdc-optimize-department/src/main/java/com/elink/esua/epdc/optimize/modules/deptlevel/service/OptSysDeptService.java

@ -59,4 +59,15 @@ public interface OptSysDeptService extends BaseService<OptSysDeptEntity> {
* @date 2020/5/29 15:16 * @date 2020/5/29 15:16
*/ */
List<Long> getUserDeptScope(Long userId, String... typeKeys); List<Long> getUserDeptScope(Long userId, String... typeKeys);
/**
* 根据部门id获取某部门指定类型的上级机构
*
* @param typeKeys 上级机构类型
* @param deptId 某部门id
* @return java.util.List<java.lang.Long>
* @author work@yujt.net.cn
* @date 2020/7/7 09:21
*/
List<Long> listParentDeptIds(String[] typeKeys, Long deptId);
} }

37
epdc-cloud-optimize-yushan/epdc-optimize-department/src/main/java/com/elink/esua/epdc/optimize/modules/deptlevel/service/impl/OptSysDeptServiceImpl.java

@ -26,6 +26,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -147,6 +148,42 @@ public class OptSysDeptServiceImpl extends BaseServiceImpl<OptSysDeptDao, OptSys
return deptScope; return deptScope;
} }
@Override
public List<Long> listParentDeptIds(String[] typeKeys, Long deptId) {
List<Long> result = Lists.newArrayList();
if (ArrayUtil.isNotEmpty(typeKeys)) {
String deptIdsKey = OptimizeRedisKeys.getParentDeptIdsKey(deptId, StringUtils.join(escapeDeptTypeKey(typeKeys), StrConstant.HYPHEN));
Object obj = redisUtils.get(deptIdsKey);
if (null != obj) {
return (List<Long>) obj;
}
// 查询部门信息
OptSysDeptEntity optSysDeptEntity = baseDao.selectById(deptId);
if (!optSysDeptEntity.getPid().equals(NumConstant.ONE_L)) {
// 获取所有上级部门id
String[] pids = optSysDeptEntity.getPids().split(StrConstant.COMMA);
List<OptSysDeptEntity> sysDeptEntityList = baseDao.selectBatchIds(Arrays.asList(pids));
if (CollUtil.isNotEmpty(sysDeptEntityList)) {
// 按顺序循环查询条件中所有部门类别,确保结果按顺序返回
for (int i = 0; i < typeKeys.length; i++) {
String typeKey = typeKeys[i];
// 声明上级机构id为 -1,如果未匹配到,以-1站位
Long parentId = NumConstant.ZERO_L - NumConstant.ONE_L;
for (OptSysDeptEntity sysDeptEntity : sysDeptEntityList) {
if (typeKey.equals(sysDeptEntity.getTypeKey())) {
parentId = sysDeptEntity.getId();
// 只取关系最近的上级机构
break;
}
}
result.add(parentId);
}
}
redisUtils.set(deptIdsKey, result, RedisUtils.MINUTE_TEN_EXPIRE);
}
}
return result;
}
/** /**
* 根据部门数据权限组装部门层级结构 * 根据部门数据权限组装部门层级结构

Loading…
Cancel
Save