Commit f9da91b8 authored by hanbing's avatar hanbing

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

parent e3bd3a6a
......@@ -3,6 +3,7 @@ package net.wanji.opt.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.enums.StrategyEnum;
import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.CrossSectionPO;
import net.wanji.databus.dao.mapper.BaseCrossSchemeMapper;
......@@ -10,6 +11,12 @@ import net.wanji.databus.dao.mapper.BaseCrossSectionMapper;
import net.wanji.databus.dao.mapper.CrossDataHistMapper;
import net.wanji.databus.po.CrossDataHistPO;
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.vo.RunningEvaluateMetricsDetailVO;
import net.wanji.opt.vo.SchemeEvaluateProblemSchemeVO;
......@@ -32,15 +39,24 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
private final RunningEvaluateServiceImpl runningEvaluateService;
private final BaseCrossSectionMapper baseCrossSectionMapper;
private final BaseCrossSchemeMapper baseCrossSchemeMapper;
private final SceneMapper sceneMapper;
private final SceneStrategyMapper sceneStrategyMapper;
private final StrategyMapper strategyMapper;
public SchemeEvaluateServiceImpl(CrossDataHistMapper crossDataHistMapper,
RunningEvaluateServiceImpl runningEvaluateService,
@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.runningEvaluateService = runningEvaluateService;
this.baseCrossSectionMapper = baseCrossSectionMapper;
this.baseCrossSchemeMapper = baseCrossSchemeMapper;
this.sceneMapper = sceneMapper;
this.sceneStrategyMapper = sceneStrategyMapper;
this.strategyMapper = strategyMapper;
}
@Override
......@@ -60,24 +76,22 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
Map<String, List<CrossDataHistPO>> timeProblemMap = getTimeProblemMap(
crossDataHistPOList, endTime, startTime);
// 构造结果
// 问题次数
int problemCounts = 0;
int problemCounts = 0; // 问题次数
if (CollectionUtil.isNotEmpty(timeProblemMap)) {
for (List<CrossDataHistPO> list : timeProblemMap.values()) {
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 =
buildDateSchemesMap(dateProblemsMap, crossId);
buildDateSchemesMap(dateProblemsMap, crossId); // 构造日期-问题方案结果集
List<SchemeEvaluateProblemSchemeVO.ByDateVO> byDateVOList = buildProblemSchemeListByDate(
dateProblemsMap, dateSchemesMap);
res.setProblemSchemeListByDate(byDateVOList);
// res.setProblemSchemeListByDate();
// res.setSchemeCounts();
// res.setEfficiencyProblemCounts();
// res.setBalanceProblemCounts();
......@@ -87,6 +101,51 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
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(
Map<Date, List<CrossDataHistPO>> dateProblemsMap, String crossId) {
......
......@@ -56,16 +56,7 @@ public class SchemeEvaluateProblemSchemeVO {
private Integer securityProblemCounts;
@ApiModelProperty(value = "时段方案列表")
private List<SectionSechemeVO> sectionSechemeList;
}
@NoArgsConstructor
@Data
public static class SectionSechemeVO {
@ApiModelProperty(value = "时段")
private String timeSection;
@ApiModelProperty(value = "方案名称")
private String schemeName;
private List<RunningEvaluateMetricsDetailVO.ProblemScheme> sectionSechemeList;
}
@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