fix: 优化权限查询
This commit is contained in:
parent
820eb37548
commit
1db7cc5075
@ -172,6 +172,7 @@ public class SysUserDataScopeServiceImpl extends ServiceImpl<SysUserDataScopeMap
|
||||
|
||||
// 3. 批量查询各类资源的名称
|
||||
Map<String, String> orgNameMap = new HashMap<>();
|
||||
Map<String, String> rvcdOrderMap = new HashMap<>();
|
||||
|
||||
// 3.1 查询流域名称 (BASIN)
|
||||
if (groupedByType.containsKey("RVCD")) {
|
||||
@ -181,8 +182,30 @@ public class SysUserDataScopeServiceImpl extends ServiceImpl<SysUserDataScopeMap
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (CollUtil.isNotEmpty(rvcds)) {
|
||||
List<SdRvcdDic> basins = rvcdDicMapper.selectBatchIds(rvcds);
|
||||
basins.forEach(basin -> orgNameMap.put(basin.getRvcd(), basin.getRvnm()));
|
||||
List<SdRvcdDic> dropdownBasins = rvcdDicMapper.selectRegDropdown(null, null);
|
||||
Set<String> handledRvcds = new HashSet<>();
|
||||
int dropdownOrder = 0;
|
||||
|
||||
for (SdRvcdDic basin : dropdownBasins) {
|
||||
dropdownOrder++;
|
||||
if (rvcds.contains(basin.getRvcd())) {
|
||||
orgNameMap.put(basin.getRvcd(), basin.getRvnm());
|
||||
rvcdOrderMap.put(basin.getRvcd(), String.format("%010d", dropdownOrder));
|
||||
handledRvcds.add(basin.getRvcd());
|
||||
}
|
||||
}
|
||||
|
||||
Set<String> missingRvcds = rvcds.stream()
|
||||
.filter(rvcd -> !handledRvcds.contains(rvcd))
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (CollUtil.isNotEmpty(missingRvcds)) {
|
||||
List<SdRvcdDic> basins = rvcdDicMapper.selectBatchIds(missingRvcds);
|
||||
basins.forEach(basin -> {
|
||||
orgNameMap.put(basin.getRvcd(), basin.getRvnm());
|
||||
rvcdOrderMap.put(basin.getRvcd(), String.format("ROOT-%010d", basin.getOrderIndex() == null ? Integer.MAX_VALUE : basin.getOrderIndex()));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -251,6 +274,21 @@ public class SysUserDataScopeServiceImpl extends ServiceImpl<SysUserDataScopeMap
|
||||
voList.add(vo);
|
||||
}
|
||||
|
||||
voList.sort((left, right) -> {
|
||||
boolean leftRvcd = "RVCD".equals(left.getOrgType());
|
||||
boolean rightRvcd = "RVCD".equals(right.getOrgType());
|
||||
if (leftRvcd && rightRvcd) {
|
||||
String leftKey = rvcdOrderMap.getOrDefault(left.getOrgId(), "9999999999");
|
||||
String rightKey = rvcdOrderMap.getOrDefault(right.getOrgId(), "9999999999");
|
||||
int compare = leftKey.compareTo(rightKey);
|
||||
if (compare != 0) {
|
||||
return compare;
|
||||
}
|
||||
return StrUtil.nullToDefault(left.getOrgId(), "").compareTo(StrUtil.nullToDefault(right.getOrgId(), ""));
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
return voList;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user