|
|
@@ -108,11 +108,10 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
|
|
/**
|
|
|
* 查询部门树结构信息
|
|
|
*
|
|
|
- * @param orgTypes 机构类型
|
|
|
* @return 部门树信息集合
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<SysOrgVO> selectDeptTreeList(List<Integer> orgTypes) {
|
|
|
+ public List<SysOrgVO> selectDeptTreeList() {
|
|
|
Long s = System.currentTimeMillis();
|
|
|
Long userId = SecurityUtils.getUserId();
|
|
|
SysOrg sysOrg = orgMapper.selectSysOrgByUserId(userId);
|
|
|
@@ -129,36 +128,72 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
|
|
List<SysOrgVO> orgs = new ArrayList<>();
|
|
|
for (SysOrgVO org : cacheList) {
|
|
|
String path = org.getPath();
|
|
|
- if(StringUtils.isEmpty(path) || !path.startsWith(sysOrg.getPath())){
|
|
|
+ if (StringUtils.isEmpty(path) || !path.startsWith(sysOrg.getPath())) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- if(CollectionUtils.isNotEmpty(orgTypes) && !orgTypes.contains(org.getType())){
|
|
|
- continue;
|
|
|
- }
|
|
|
- if(StringUtils.isEmpty(org.getShortName()))
|
|
|
- {
|
|
|
+ if (StringUtils.isEmpty(org.getShortName())) {
|
|
|
org.setShortName(org.getName());
|
|
|
}
|
|
|
orgs.add(org);
|
|
|
}
|
|
|
+
|
|
|
+ return generateTree(orgs, sysOrg);
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<SysOrgVO> selectHangsheTreeList() {
|
|
|
+ Long userId = SecurityUtils.getUserId();
|
|
|
+ SysOrg sysOrg = orgMapper.selectSysOrgByUserId(userId);
|
|
|
+ if (ObjectUtil.isNull(sysOrg)) {
|
|
|
+ throw new ServiceException("当前用户没有部门信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<SysOrgVO> cacheList = null;
|
|
|
+ Boolean isOk = RedisUtils.hasKey(CacheConstants.ORG_CACHE_LIST_KEY);
|
|
|
+ if (!isOk) {
|
|
|
+ cacheList = orgService.loadingOrgCache();
|
|
|
+ } else {
|
|
|
+ cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<SysOrgVO> hangshelist = cacheList.stream().filter(c -> ObjectUtil.equal(c.getType(), 3)
|
|
|
+ && ObjectUtil.isNotEmpty(c.getPath()) && c.getPath().startsWith(sysOrg.getPath()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Set<Long> hangsheSet=hangshelist.stream().map(o->o.getId()).collect(Collectors.toSet());
|
|
|
+ Set<Long> parentIds = new HashSet<>();
|
|
|
+ hangshelist.forEach(o -> {
|
|
|
+ Arrays.stream(o.getPath().split("-")).map(p -> Long.parseLong(p))
|
|
|
+ .collect(Collectors.toList())
|
|
|
+ .forEach(id ->{
|
|
|
+ if(!hangsheSet.contains(id)){
|
|
|
+ parentIds.add(id);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ hangshelist.addAll(cacheList.stream().filter(o -> parentIds.contains(o.getId())).collect(Collectors.toList()));
|
|
|
+
|
|
|
+ return generateTree(hangshelist, sysOrg);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private List<SysOrgVO> generateTree(List<SysOrgVO> orgs, SysOrg sysOrg) {
|
|
|
Long parentId = Constants.TOP_ORG_PARENT_ID;
|
|
|
if (ObjectUtil.notEqual(Constants.TOP_ORG_PARENT_ID, sysOrg.getParentId())) {
|
|
|
parentId = sysOrg.getParentId();
|
|
|
}
|
|
|
|
|
|
final List<Long> parentIds = orgs.stream().filter(x -> !orgs.stream().anyMatch(y -> x.getTreeShowParentId().equals(y.getParentId()))).map(SysOrgVO::getTreeShowParentId).collect(Collectors.toList());
|
|
|
- if(parentIds.size()==0)
|
|
|
- {
|
|
|
+ if (parentIds.size() == 0) {
|
|
|
parentIds.add(parentId);
|
|
|
}
|
|
|
final Map<Long, List<SysOrgVO>> collect = orgs.stream().collect(Collectors.groupingBy(SysOrgVO::getTreeShowParentId));
|
|
|
- List<SysOrgVO> result=new ArrayList<>();
|
|
|
- parentIds.forEach(pId->{
|
|
|
+ List<SysOrgVO> result = new ArrayList<>();
|
|
|
+ parentIds.forEach(pId -> {
|
|
|
result.addAll(handleTree(collect, pId));
|
|
|
});
|
|
|
|
|
|
- return result;
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/**
|