Commit d0979227 authored by wujiang's avatar wujiang

修复权限树不正确

parent 5175a6c3
...@@ -6,4 +6,5 @@ import java.util.List; ...@@ -6,4 +6,5 @@ import java.util.List;
public interface IPermissionService { public interface IPermissionService {
List<String> getCurrentUserPermissions(); List<String> getCurrentUserPermissions();
List<String> getCurrentUserProjectOrgCodes(); List<String> getCurrentUserProjectOrgCodes();
List<String> getCurrentUserAmosOrgCodes();
} }
...@@ -16,6 +16,7 @@ import org.springframework.util.ObjectUtils; ...@@ -16,6 +16,7 @@ import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import java.util.ArrayList; import java.util.ArrayList;
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;
...@@ -23,74 +24,103 @@ import java.util.stream.Collectors; ...@@ -23,74 +24,103 @@ import java.util.stream.Collectors;
@Service @Service
public class IPermissionServiceImpl implements IPermissionService { public class IPermissionServiceImpl implements IPermissionService {
@Autowired @Autowired
private RedisUtils redisUtils; private RedisUtils redisUtils;
@Autowired @Autowired
private UserEmpowerMapper userEmpowerMapper; private UserEmpowerMapper userEmpowerMapper;
@Autowired @Autowired
private StationBasicMapper stationBasicMapper; private StationBasicMapper stationBasicMapper;
@Override @Override
public List<String> getCurrentUserPermissions() { public List<String> getCurrentUserPermissions() {
List<String> result = new ArrayList<>(); List<String> result = new ArrayList<>();
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class); ReginParams reginParams = JSONObject.parseObject(redisUtils
String userId = reginParams.getUserModel().getUserId(); .get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(),
StdUserEmpower stdUserEmpower = userEmpowerMapper.selectOne(new QueryWrapper<StdUserEmpower>().eq("amos_user_id", userId).eq("permission_type", "YTH")); ReginParams.class);
if (ObjectUtils.isEmpty(stdUserEmpower)) { String userId = reginParams.getUserModel().getUserId();
return null; StdUserEmpower stdUserEmpower = userEmpowerMapper
} else { .selectOne(new QueryWrapper<StdUserEmpower>().eq("amos_user_id", userId).eq("permission_type", "YTH"));
String permissionOrgCode = stdUserEmpower.getAmosOrgCode().get(0); if (ObjectUtils.isEmpty(stdUserEmpower)) {
Map<String, String> companyInfo = userEmpowerMapper.getCompanyInfoByOrgCode(permissionOrgCode); return null;
String companyLevel = companyInfo.get("level"); } else {
if (companyLevel.equals("categroy_leve2")) { String permissionOrgCode = stdUserEmpower.getAmosOrgCode().get(0);
List<StationBasic> stationBasics = stationBasicMapper.selectList(new QueryWrapper<StationBasic>().like("project_org_code", permissionOrgCode)); Map<String, String> companyInfo = userEmpowerMapper.getCompanyInfoByOrgCode(permissionOrgCode);
result = stationBasics.stream().map(StationBasic::getFanGatewayId).collect(Collectors.toList()); String companyLevel = companyInfo.get("level");
return result; if (companyLevel.equals("categroy_leve2")) {
} List<StationBasic> stationBasics = stationBasicMapper
if (companyLevel.equals("area")) { .selectList(new QueryWrapper<StationBasic>().like("project_org_code", permissionOrgCode));
List<StationBasic> stationBasics = stationBasicMapper.selectList(new QueryWrapper<StationBasic>().like("project_org_code", permissionOrgCode)); result = stationBasics.stream().map(StationBasic::getFanGatewayId).collect(Collectors.toList());
result = stationBasics.stream().map(StationBasic::getFanGatewayId).collect(Collectors.toList()); return result;
return result; }
} if (companyLevel.equals("area")) {
if (companyLevel.equals("station")) { List<StationBasic> stationBasics = stationBasicMapper
StationBasic stationBasic = stationBasicMapper.selectOne(new QueryWrapper<StationBasic>().eq("project_org_code", permissionOrgCode)); .selectList(new QueryWrapper<StationBasic>().like("project_org_code", permissionOrgCode));
result.add(stationBasic.getFanGatewayId()); result = stationBasics.stream().map(StationBasic::getFanGatewayId).collect(Collectors.toList());
return result; return result;
} }
} if (companyLevel.equals("station")) {
return result; StationBasic stationBasic = stationBasicMapper
} .selectOne(new QueryWrapper<StationBasic>().eq("project_org_code", permissionOrgCode));
result.add(stationBasic.getFanGatewayId());
return result;
}
}
return result;
}
@Override @Override
public List<String> getCurrentUserProjectOrgCodes() { public List<String> getCurrentUserProjectOrgCodes() {
List<String> result = new ArrayList<>(); List<String> result = new ArrayList<>();
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class); ReginParams reginParams = JSONObject.parseObject(redisUtils
String userId = reginParams.getUserModel().getUserId(); .get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(),
StdUserEmpower stdUserEmpower = userEmpowerMapper.selectOne(new QueryWrapper<StdUserEmpower>().eq("amos_user_id", userId).eq("permission_type", "YTH")); ReginParams.class);
if (ObjectUtils.isEmpty(stdUserEmpower)) { String userId = reginParams.getUserModel().getUserId();
return null; StdUserEmpower stdUserEmpower = userEmpowerMapper
} else { .selectOne(new QueryWrapper<StdUserEmpower>().eq("amos_user_id", userId).eq("permission_type", "YTH"));
String permissionOrgCode = stdUserEmpower.getAmosOrgCode().get(0); if (ObjectUtils.isEmpty(stdUserEmpower)) {
Map<String, String> companyInfo = userEmpowerMapper.getCompanyInfoByOrgCode(permissionOrgCode); return null;
String companyLevel = companyInfo.get("level"); } else {
if (companyLevel.equals("categroy_leve2")) { String permissionOrgCode = stdUserEmpower.getAmosOrgCode().get(0);
List<StationBasic> stationBasics = stationBasicMapper.selectList(new QueryWrapper<StationBasic>().like("project_org_code", permissionOrgCode)); Map<String, String> companyInfo = userEmpowerMapper.getCompanyInfoByOrgCode(permissionOrgCode);
result = stationBasics.stream().map(StationBasic::getProjectOrgCode).collect(Collectors.toList()); String companyLevel = companyInfo.get("level");
return result; if (companyLevel.equals("categroy_leve2")) {
} List<StationBasic> stationBasics = stationBasicMapper
if (companyLevel.equals("area")) { .selectList(new QueryWrapper<StationBasic>().like("project_org_code", permissionOrgCode));
List<StationBasic> stationBasics = stationBasicMapper.selectList(new QueryWrapper<StationBasic>().like("project_org_code", permissionOrgCode)); result = stationBasics.stream().map(StationBasic::getProjectOrgCode).collect(Collectors.toList());
result = stationBasics.stream().map(StationBasic::getProjectOrgCode).collect(Collectors.toList()); return result;
return result; }
} if (companyLevel.equals("area")) {
if (companyLevel.equals("station")) { List<StationBasic> stationBasics = stationBasicMapper
StationBasic stationBasic = stationBasicMapper.selectOne(new QueryWrapper<StationBasic>().eq("project_org_code", permissionOrgCode)); .selectList(new QueryWrapper<StationBasic>().like("project_org_code", permissionOrgCode));
result.add(stationBasic.getProjectOrgCode()); result = stationBasics.stream().map(StationBasic::getProjectOrgCode).collect(Collectors.toList());
return result; return result;
} }
} if (companyLevel.equals("station")) {
return result; StationBasic stationBasic = stationBasicMapper
} .selectOne(new QueryWrapper<StationBasic>().eq("project_org_code", permissionOrgCode));
result.add(stationBasic.getProjectOrgCode());
return result;
}
}
return result;
}
@Override
public List<String> getCurrentUserAmosOrgCodes() {
List<String> result = new ArrayList<>();
ReginParams reginParams = JSONObject.parseObject(redisUtils
.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(),
ReginParams.class);
String userId = reginParams.getUserModel().getUserId();
StdUserEmpower stdUserEmpower = userEmpowerMapper
.selectOne(new QueryWrapper<StdUserEmpower>().eq("amos_user_id", userId).eq("permission_type", "YTH"));
if (ObjectUtils.isEmpty(stdUserEmpower)) {
return new ArrayList<>();
} else {
return stdUserEmpower.getAmosOrgCode() != null ? Arrays.asList(stdUserEmpower.getAmosOrgCode().get(0))
: new ArrayList<>();
}
}
} }
...@@ -22,231 +22,247 @@ import java.util.stream.Collectors; ...@@ -22,231 +22,247 @@ import java.util.stream.Collectors;
@Service @Service
public class McbWarningServiceImpl implements IMcbWarningService { public class McbWarningServiceImpl implements IMcbWarningService {
private final static org.slf4j.Logger log = LoggerFactory.getLogger(McbWarningServiceImpl.class); private final static org.slf4j.Logger log = LoggerFactory.getLogger(McbWarningServiceImpl.class);
@Autowired @Autowired
private McbWarningMapper mcbWarningMapper; private McbWarningMapper mcbWarningMapper;
@Autowired @Autowired
private IPermissionService permissionService; private IPermissionService permissionService;
@Autowired @Autowired
private McbWarningFeign mcbWarningFeign; private McbWarningFeign mcbWarningFeign;
/** /**
* 今日预警-预警总数 * 今日预警-预警总数
* *
* @param processingStatus 处理状态 * @param processingStatus 处理状态
* @return 总数信息 * @return 总数信息
*/ */
@Override @Override
public Map<String, Object> queryTodayCount(Integer processingStatus) { public Map<String, Object> queryTodayCount(Integer processingStatus) {
List<String> projectOrgCodes = this.getProjectOrgCodes(); List<String> projectOrgCodes = this.getProjectOrgCodes();
return mcbWarningMapper.queryTodayCount(projectOrgCodes, processingStatus); return mcbWarningMapper.queryTodayCount(projectOrgCodes, processingStatus);
} }
/** /**
* 近七日预警统计 * 近七日预警统计
* *
* @return 预警统计 * @return 预警统计
*/ */
@Override @Override
public List<Map<String, Object>> queryWeekCount() { public List<Map<String, Object>> queryWeekCount() {
List<String> projectOrgCodes = this.getProjectOrgCodes(); List<String> projectOrgCodes = this.getProjectOrgCodes();
return mcbWarningMapper.queryWeekCount(projectOrgCodes); return mcbWarningMapper.queryWeekCount(projectOrgCodes);
} }
/** /**
* 预警信息列表 * 预警信息列表
* *
* @param page 分页 * @param page 分页
* @param processingStatus 处理状态 * @param processingStatus 处理状态
* @return 预警信息列表 * @return 预警信息列表
*/ */
@Override @Override
public Page<Map<String, Object>> queryWarningPage(Page<Map<String, Object>> page, Integer processingStatus, String eventLevel, String createDate, String warningSourceType) { public Page<Map<String, Object>> queryWarningPage(Page<Map<String, Object>> page, Integer processingStatus,
List<String> projectOrgCodes = this.getProjectOrgCodes(); String eventLevel, String createDate, String warningSourceType) {
long start = page.getCurrent() - 1; List<String> projectOrgCodes = this.getProjectOrgCodes();
long offset = page.getSize() * page.getCurrent(); long start = page.getCurrent() - 1;
List<Map<String, Object>> records = mcbWarningMapper.queryWarningList(start, offset, projectOrgCodes, processingStatus, eventLevel, createDate, warningSourceType); long offset = page.getSize() * page.getCurrent();
Long total = mcbWarningMapper.queryWarningCount(projectOrgCodes, processingStatus, eventLevel, createDate, warningSourceType); List<Map<String, Object>> records = mcbWarningMapper.queryWarningList(start, offset, projectOrgCodes,
page.setRecords(records); processingStatus, eventLevel, createDate, warningSourceType);
page.setTotal(total); Long total = mcbWarningMapper.queryWarningCount(projectOrgCodes, processingStatus, eventLevel, createDate,
return page; warningSourceType);
} page.setRecords(records);
page.setTotal(total);
/** return page;
* 预警信息总数 }
*
* @param processingStatus 处理状态 /**
* @return 预警信息总数 * 预警信息总数
*/ *
@Override * @param processingStatus 处理状态
public Long queryWarningCount(Integer processingStatus, String eventLevel, String createDate, String warningSourceType) { * @return 预警信息总数
List<String> projectOrgCodes = this.getProjectOrgCodes(); */
return mcbWarningMapper.queryWarningCount(projectOrgCodes, processingStatus, eventLevel, createDate, warningSourceType); @Override
} public Long queryWarningCount(Integer processingStatus, String eventLevel, String createDate,
String warningSourceType) {
/** List<String> projectOrgCodes = this.getProjectOrgCodes();
* 问题信息列表 return mcbWarningMapper.queryWarningCount(projectOrgCodes, processingStatus, eventLevel, createDate,
* warningSourceType);
* @param page 分页 }
* @param completionStatus 完成状态
* @return 问题信息列表 /**
*/ * 问题信息列表
@Override *
public Page<Map<String, Object>> queryQuestionPage(Page<Map<String, Object>> page, Integer completionStatus) { * @param page 分页
List<String> projectOrgCodes = this.getProjectOrgCodes(); * @param completionStatus 完成状态
long start = page.getCurrent() - 1; * @return 问题信息列表
long offset = page.getSize() * page.getCurrent(); */
List<Map<String, Object>> records = mcbWarningMapper.queryQuestionList(start, offset, projectOrgCodes, completionStatus); @Override
Long total = mcbWarningMapper.queryQuestionCount(projectOrgCodes, completionStatus); public Page<Map<String, Object>> queryQuestionPage(Page<Map<String, Object>> page, Integer completionStatus) {
page.setRecords(records); List<String> projectOrgCodes = this.getProjectOrgCodes();
page.setTotal(total); long start = page.getCurrent() - 1;
return page; long offset = page.getSize() * page.getCurrent();
} List<Map<String, Object>> records = mcbWarningMapper.queryQuestionList(start, offset, projectOrgCodes,
completionStatus);
/** Long total = mcbWarningMapper.queryQuestionCount(projectOrgCodes, completionStatus);
* 问题信息列表 page.setRecords(records);
* page.setTotal(total);
* @param completionStatus 完成状态 return page;
* @return 问题信息列表 }
*/
@Override /**
public Long queryQuestionCount(Integer completionStatus) { * 问题信息列表
List<String> projectOrgCodes = this.getProjectOrgCodes(); *
return mcbWarningMapper.queryQuestionCount(projectOrgCodes, completionStatus); * @param completionStatus 完成状态
} * @return 问题信息列表
*/
/** @Override
* 获取地图点位/路线 public Long queryQuestionCount(Integer completionStatus) {
* List<String> projectOrgCodes = this.getProjectOrgCodes();
* @param province 省份 return mcbWarningMapper.queryQuestionCount(projectOrgCodes, completionStatus);
* @return 地图点位/路线 }
*/
@Override /**
public Object queryMapRoutes(String province) { * 获取地图点位/路线
List<String> projectOrgCodes = this.getProjectOrgCodes(); *
// TODO: 远程调用warning服务 * @param province 省份
return null; * @return 地图点位/路线
} */
@Override
/** public Object queryMapRoutes(String province) {
* 任务详情分页列表 List<String> projectOrgCodes = this.getProjectOrgCodes();
*/ // TODO: 远程调用warning服务
@Override return null;
public Page<Map<String, Object>> getTaskDetailPage(Map<String, Object> map) { }
map.put("projectOrgCodes", this.getProjectOrgCodes());
FeignClientResult<Page<Map<String, Object>>> page = mcbWarningFeign.getTaskDetailPage(map); /**
return page.getResult(); * 任务详情分页列表
} */
@Override
/** public Page<Map<String, Object>> getTaskDetailPage(Map<String, Object> map) {
* 问题记录分页列表 map.put("projectOrgCodes", this.getProjectOrgCodes());
*/ FeignClientResult<Page<Map<String, Object>>> page = mcbWarningFeign.getTaskDetailPage(map);
@Override return page.getResult();
public Page<Map<String, Object>> getQuestionRecordPage(Map<String, Object> map) { }
map.put("projectOrgCodes", this.getProjectOrgCodes());
FeignClientResult<Page<Map<String, Object>>> page = mcbWarningFeign.getQuestionRecordPage(map); /**
return page.getResult(); * 问题记录分页列表
} */
@Override
public List<RectificationUnitClassifyTreeDto> treeToList (List<RectificationUnitClassifyTreeDto> source, List<RectificationUnitClassifyTreeDto> object){ public Page<Map<String, Object>> getQuestionRecordPage(Map<String, Object> map) {
source.stream().forEach(v ->{ map.put("projectOrgCodes", this.getProjectOrgCodes());
RectificationUnitClassifyTreeDto t = new RectificationUnitClassifyTreeDto(); FeignClientResult<Page<Map<String, Object>>> page = mcbWarningFeign.getQuestionRecordPage(map);
BeanUtils.copyProperties(v, t); return page.getResult();
t.setChildren(new ArrayList()); }
object.add(t);
//判断该对象的getChildren()是否为空 public List<RectificationUnitClassifyTreeDto> treeToList(List<RectificationUnitClassifyTreeDto> source,
if(!CollectionUtils.isEmpty(v.getChildren())){ List<RectificationUnitClassifyTreeDto> object) {
treeToList(v.getChildren(), object); source.stream().forEach(v -> {
} RectificationUnitClassifyTreeDto t = new RectificationUnitClassifyTreeDto();
}); BeanUtils.copyProperties(v, t);
return object; t.setChildren(new ArrayList());
} object.add(t);
// 判断该对象的getChildren()是否为空
if (!CollectionUtils.isEmpty(v.getChildren())) {
/** treeToList(v.getChildren(), object);
* 任务详情、问题记录左侧树 }
* });
*/ return object;
@Override }
public Object getWarnTree() {
FeignClientResult<List<RectificationUnitClassifyTreeDto>> allUnitList = mcbWarningFeign.getWarnTree(); /**
List<RectificationUnitClassifyTreeDto> res = allUnitList.getResult(); * 任务详情、问题记录左侧树
if (CollectionUtils.isEmpty(res)) { *
return new ArrayList<>(); */
} @Override
List<RectificationUnitClassifyTreeDto> targetList = new ArrayList<>(); public Object getWarnTree() {
List<RectificationUnitClassifyTreeDto> tempList = treeToList(res, targetList); FeignClientResult<List<RectificationUnitClassifyTreeDto>> allUnitList = mcbWarningFeign.getWarnTree();
List<String> codes = getProjectOrgCodes(); List<RectificationUnitClassifyTreeDto> res = allUnitList.getResult();
targetList = tempList.stream().filter(x -> { if (CollectionUtils.isEmpty(res)) {
if (CollectionUtil.isNotEmpty(codes)) { return new ArrayList<>();
for (String str : codes) { }
if (str.startsWith(x.getCode())){ List<RectificationUnitClassifyTreeDto> targetList = new ArrayList<>();
return true; List<RectificationUnitClassifyTreeDto> tempList = treeToList(res, targetList);
} List<String> codes = permissionService.getCurrentUserAmosOrgCodes();
} targetList = tempList.stream().filter(x -> {
} if (CollectionUtil.isNotEmpty(codes)) {
return false; for (String str : codes) {
}).collect(Collectors.toList()); if (x.getCode().startsWith(str)) {
List<RectificationUnitClassifyTreeDto> listDate = new ArrayList<>(); return true;
for (RectificationUnitClassifyTreeDto t : targetList) { }
if (StringUtils.isBlank(t.getParentId()) || "0".equals(t.getParentId())) { }
t.setChildren(getChild(t, targetList)); }
} return false;
listDate.add(t); }).collect(Collectors.toList());
} List<RectificationUnitClassifyTreeDto> listDate = new ArrayList<>();
return listDate; if(!targetList.isEmpty())
} {
for (RectificationUnitClassifyTreeDto t : targetList) {
private List<RectificationUnitClassifyTreeDto> getChild(RectificationUnitClassifyTreeDto dto, List<RectificationUnitClassifyTreeDto> listDto) { if (StringUtils.isBlank(t.getParentId()) || "0".equals(t.getParentId())
return (List<RectificationUnitClassifyTreeDto>)listDto.stream().filter(t -> t.getParentId().equals(dto.getSequenceNbr().toString())).peek(m -> m.setChildren(getChild(m, listDto))).collect(Collectors.toList()); || codes.get(0).equals(t.getCode())) {
} t.setChildren(getChild(t, targetList));
listDate.add(t);
/** break;
* 任务详情列表统计 }
* }
*/ }
@Override return listDate;
public Object getTaskDetailStatistic(Map<String, Object> map) { }
map.put("projectOrgCodes", this.getProjectOrgCodes());
FeignClientResult result = mcbWarningFeign.getTaskDetailStatistic(map); private List<RectificationUnitClassifyTreeDto> getChild(RectificationUnitClassifyTreeDto dto,
return result.getResult(); List<RectificationUnitClassifyTreeDto> listDto) {
} return (List<RectificationUnitClassifyTreeDto>) listDto.stream()
.filter(t -> t.getParentId().equals(dto.getSequenceNbr().toString()))
/** .peek(m -> m.setChildren(getChild(m, listDto))).collect(Collectors.toList());
* 问题记录列表统计 }
*
*/ /**
@Override * 任务详情列表统计
public Object getQuestionRecordStatistic(Map<String, Object> map) { *
map.put("projectOrgCodes", this.getProjectOrgCodes()); */
FeignClientResult result = mcbWarningFeign.getQuestionRecordStatistic(map); @Override
return result.getResult(); public Object getTaskDetailStatistic(Map<String, Object> map) {
} map.put("projectOrgCodes", this.getProjectOrgCodes());
FeignClientResult result = mcbWarningFeign.getTaskDetailStatistic(map);
/** return result.getResult();
* 问题记录列表统计 }
*
*/ /**
@Override * 问题记录列表统计
public Object getMapRouteInfoByCodes(String province, List<String> codes, String operator) { *
FeignClientResult result = mcbWarningFeign.getMapRouteInfoByCodes(province, this.getProjectOrgCodes(), operator); */
return result.getResult(); @Override
} public Object getQuestionRecordStatistic(Map<String, Object> map) {
map.put("projectOrgCodes", this.getProjectOrgCodes());
/** FeignClientResult result = mcbWarningFeign.getQuestionRecordStatistic(map);
* 获取用户权限(此处使用projectOrgCode) return result.getResult();
* @return gatewayIds }
*/
private List<String> getProjectOrgCodes() { /**
List<String> projectOrgCodes = permissionService.getCurrentUserProjectOrgCodes(); * 问题记录列表统计
if (Objects.isNull(projectOrgCodes)) { *
projectOrgCodes = Collections.emptyList(); */
} @Override
log.info(JSON.toJSONString("当前用户转换获取的orgcode列表是 " + projectOrgCodes)); public Object getMapRouteInfoByCodes(String province, List<String> codes, String operator) {
return projectOrgCodes; FeignClientResult result = mcbWarningFeign.getMapRouteInfoByCodes(province, this.getProjectOrgCodes(),
} operator);
return result.getResult();
}
/**
* 获取用户权限(此处使用projectOrgCode)
*
* @return gatewayIds
*/
private List<String> getProjectOrgCodes() {
List<String> projectOrgCodes = permissionService.getCurrentUserProjectOrgCodes();
if (Objects.isNull(projectOrgCodes)) {
projectOrgCodes = Collections.emptyList();
}
log.info(JSON.toJSONString("当前用户转换获取的orgcode列表是 " + projectOrgCodes));
return projectOrgCodes;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment