Commit f9da91b8 authored by hanbing's avatar hanbing

[add] 新信号评价-方案评价,构造问题方案列表(根据日期)

parent e3bd3a6a
...@@ -3,6 +3,7 @@ package net.wanji.opt.service.impl; ...@@ -3,6 +3,7 @@ package net.wanji.opt.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.enums.StrategyEnum;
import net.wanji.databus.dao.entity.BaseCrossSchemePO; import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.CrossSectionPO; import net.wanji.databus.dao.entity.CrossSectionPO;
import net.wanji.databus.dao.mapper.BaseCrossSchemeMapper; import net.wanji.databus.dao.mapper.BaseCrossSchemeMapper;
...@@ -10,6 +11,12 @@ import net.wanji.databus.dao.mapper.BaseCrossSectionMapper; ...@@ -10,6 +11,12 @@ import net.wanji.databus.dao.mapper.BaseCrossSectionMapper;
import net.wanji.databus.dao.mapper.CrossDataHistMapper; import net.wanji.databus.dao.mapper.CrossDataHistMapper;
import net.wanji.databus.po.CrossDataHistPO; import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.opt.bo.ProblemSchemeBO; import net.wanji.opt.bo.ProblemSchemeBO;
import net.wanji.opt.dao.mapper.strategy.SceneMapper;
import net.wanji.opt.dao.mapper.strategy.SceneStrategyMapper;
import net.wanji.opt.dao.mapper.strategy.StrategyMapper;
import net.wanji.opt.po.strategy.ScenePO;
import net.wanji.opt.po.strategy.SceneStrategyPO;
import net.wanji.opt.po.strategy.StrategyPO;
import net.wanji.opt.service.SchemeEvaluateService; import net.wanji.opt.service.SchemeEvaluateService;
import net.wanji.opt.vo.RunningEvaluateMetricsDetailVO; import net.wanji.opt.vo.RunningEvaluateMetricsDetailVO;
import net.wanji.opt.vo.SchemeEvaluateProblemSchemeVO; import net.wanji.opt.vo.SchemeEvaluateProblemSchemeVO;
...@@ -32,15 +39,24 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -32,15 +39,24 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
private final RunningEvaluateServiceImpl runningEvaluateService; private final RunningEvaluateServiceImpl runningEvaluateService;
private final BaseCrossSectionMapper baseCrossSectionMapper; private final BaseCrossSectionMapper baseCrossSectionMapper;
private final BaseCrossSchemeMapper baseCrossSchemeMapper; private final BaseCrossSchemeMapper baseCrossSchemeMapper;
private final SceneMapper sceneMapper;
private final SceneStrategyMapper sceneStrategyMapper;
private final StrategyMapper strategyMapper;
public SchemeEvaluateServiceImpl(CrossDataHistMapper crossDataHistMapper, public SchemeEvaluateServiceImpl(CrossDataHistMapper crossDataHistMapper,
RunningEvaluateServiceImpl runningEvaluateService, RunningEvaluateServiceImpl runningEvaluateService,
@Qualifier("baseCrossSectionMapper") BaseCrossSectionMapper baseCrossSectionMapper, @Qualifier("baseCrossSectionMapper") BaseCrossSectionMapper baseCrossSectionMapper,
@Qualifier("baseCrossSchemeMapper") BaseCrossSchemeMapper baseCrossSchemeMapper) { @Qualifier("baseCrossSchemeMapper") BaseCrossSchemeMapper baseCrossSchemeMapper,
@Qualifier("sceneMapper") SceneMapper sceneMapper,
@Qualifier("sceneStrategyMapper") SceneStrategyMapper sceneStrategyMapper,
@Qualifier("strategyMapper") StrategyMapper strategyMapper) {
this.crossDataHistMapper = crossDataHistMapper; this.crossDataHistMapper = crossDataHistMapper;
this.runningEvaluateService = runningEvaluateService; this.runningEvaluateService = runningEvaluateService;
this.baseCrossSectionMapper = baseCrossSectionMapper; this.baseCrossSectionMapper = baseCrossSectionMapper;
this.baseCrossSchemeMapper = baseCrossSchemeMapper; this.baseCrossSchemeMapper = baseCrossSchemeMapper;
this.sceneMapper = sceneMapper;
this.sceneStrategyMapper = sceneStrategyMapper;
this.strategyMapper = strategyMapper;
} }
@Override @Override
...@@ -60,24 +76,22 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -60,24 +76,22 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
Map<String, List<CrossDataHistPO>> timeProblemMap = getTimeProblemMap( Map<String, List<CrossDataHistPO>> timeProblemMap = getTimeProblemMap(
crossDataHistPOList, endTime, startTime); crossDataHistPOList, endTime, startTime);
// 构造结果 // 构造结果
// 问题次数 int problemCounts = 0; // 问题次数
int problemCounts = 0;
if (CollectionUtil.isNotEmpty(timeProblemMap)) { if (CollectionUtil.isNotEmpty(timeProblemMap)) {
for (List<CrossDataHistPO> list : timeProblemMap.values()) { for (List<CrossDataHistPO> list : timeProblemMap.values()) {
problemCounts += list.size(); problemCounts += list.size();
} }
} }
// 问题方案数量 res.setProblemCounts(problemCounts); // 问题方案数量
res.setProblemCounts(problemCounts);
// 构造问题方案列表(根据日期) // 构造问题方案列表(根据日期)
// 构造日期-问题结果集 Map<Date, List<CrossDataHistPO>> dateProblemsMap = buildDateProblemsMap(timeProblemMap); // 构造日期-问题结果集
Map<Date, List<CrossDataHistPO>> dateProblemsMap = buildDateProblemsMap(timeProblemMap);
// 构造日期-问题方案结果集
Map<Date, List<RunningEvaluateMetricsDetailVO.ProblemScheme>> dateSchemesMap = Map<Date, List<RunningEvaluateMetricsDetailVO.ProblemScheme>> dateSchemesMap =
buildDateSchemesMap(dateProblemsMap, crossId); buildDateSchemesMap(dateProblemsMap, crossId); // 构造日期-问题方案结果集
List<SchemeEvaluateProblemSchemeVO.ByDateVO> byDateVOList = buildProblemSchemeListByDate(
dateProblemsMap, dateSchemesMap);
res.setProblemSchemeListByDate(byDateVOList);
// res.setProblemSchemeListByDate();
// res.setSchemeCounts(); // res.setSchemeCounts();
// res.setEfficiencyProblemCounts(); // res.setEfficiencyProblemCounts();
// res.setBalanceProblemCounts(); // res.setBalanceProblemCounts();
...@@ -87,6 +101,51 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -87,6 +101,51 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
return res; return res;
} }
@NotNull
private List<SchemeEvaluateProblemSchemeVO.ByDateVO> buildProblemSchemeListByDate(
Map<Date, List<CrossDataHistPO>> dateProblemsMap,
Map<Date, List<RunningEvaluateMetricsDetailVO.ProblemScheme>> dateSchemesMap) {
List<SchemeEvaluateProblemSchemeVO.ByDateVO> byDateVOList = new ArrayList<>();
for (Map.Entry<Date, List<CrossDataHistPO>> entry : dateProblemsMap.entrySet()) {
Date key = entry.getKey();
SchemeEvaluateProblemSchemeVO.ByDateVO byDateVO = new SchemeEvaluateProblemSchemeVO.ByDateVO();
byDateVO.setProblemDate(key);
List<RunningEvaluateMetricsDetailVO.ProblemScheme> problemSchemeList = dateSchemesMap.get(key);
byDateVO.setSectionSechemeList(problemSchemeList);
List<CrossDataHistPO> value = entry.getValue();
int efficiencyProblemCounts = 0;
int balanceProblemCounts = 0;
int securityProblemCounts = 0;
for (CrossDataHistPO crossDataHistPO : value) {
Integer status = crossDataHistPO.getStatus();
// 根据场景查询策略
ScenePO scenePO = sceneMapper.selectBySceneNum(status);
Integer sceneId = scenePO.getId();
List<SceneStrategyPO> sceneStrategyList = sceneStrategyMapper.selectBySceneId(sceneId);
for (SceneStrategyPO sceneStrategyPO : sceneStrategyList) {
Integer strategyId = sceneStrategyPO.getStrategyId();
StrategyPO strategyPO = strategyMapper.selectById(strategyId);
String strategyCode = strategyPO.getStrategyCode();
if (strategyCode.equals(StrategyEnum.EFFICIENCY.getCode())) {
efficiencyProblemCounts += 1;
} else if (strategyCode.equals(StrategyEnum.BALANCE.getCode())) {
balanceProblemCounts += 1;
} else if (strategyCode.equals(StrategyEnum.SECURITY.getCode())) {
securityProblemCounts += 1;
}
}
}
byDateVO.setEfficiencyProblemCounts(efficiencyProblemCounts);
byDateVO.setBalanceProblemCounts(balanceProblemCounts);
byDateVO.setSecurityProblemCounts(securityProblemCounts);
byDateVOList.add(byDateVO);
}
return byDateVOList;
}
private Map<Date, List<RunningEvaluateMetricsDetailVO.ProblemScheme>> buildDateSchemesMap( private Map<Date, List<RunningEvaluateMetricsDetailVO.ProblemScheme>> buildDateSchemesMap(
Map<Date, List<CrossDataHistPO>> dateProblemsMap, String crossId) { Map<Date, List<CrossDataHistPO>> dateProblemsMap, String crossId) {
......
...@@ -56,16 +56,7 @@ public class SchemeEvaluateProblemSchemeVO { ...@@ -56,16 +56,7 @@ public class SchemeEvaluateProblemSchemeVO {
private Integer securityProblemCounts; private Integer securityProblemCounts;
@ApiModelProperty(value = "时段方案列表") @ApiModelProperty(value = "时段方案列表")
private List<SectionSechemeVO> sectionSechemeList; private List<RunningEvaluateMetricsDetailVO.ProblemScheme> sectionSechemeList;
}
@NoArgsConstructor
@Data
public static class SectionSechemeVO {
@ApiModelProperty(value = "时段")
private String timeSection;
@ApiModelProperty(value = "方案名称")
private String schemeName;
} }
@NoArgsConstructor @NoArgsConstructor
......
package net.wanji.common.enums;
/**
* @author Kent HAN
* @date 2022/11/8 17:20
*/
public enum StrategyEnum {
BALANCE("100030", "均衡调控"),
EFFICIENCY("100152", "效率提升"),
SECURITY("100010", "安全保障");
private final String code;
private final String msg;
StrategyEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
public static String getMsgByCode(String code) {
for (StrategyEnum value : StrategyEnum.values()) {
if (value.code.equals(code)) {
return value.msg;
}
}
return null;
}
public String getMsg() {
return msg;
}
public String getCode() {
return code;
}
}
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