Commit 295236e4 authored by hanbing's avatar hanbing

[add] 新信号评价-方案评价完成

parent f9da91b8
...@@ -26,6 +26,7 @@ import org.springframework.stereotype.Service; ...@@ -26,6 +26,7 @@ import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -91,16 +92,66 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -91,16 +92,66 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
List<SchemeEvaluateProblemSchemeVO.ByDateVO> byDateVOList = buildProblemSchemeListByDate( List<SchemeEvaluateProblemSchemeVO.ByDateVO> byDateVOList = buildProblemSchemeListByDate(
dateProblemsMap, dateSchemesMap); dateProblemsMap, dateSchemesMap);
res.setProblemSchemeListByDate(byDateVOList); res.setProblemSchemeListByDate(byDateVOList);
// 构造计数
// res.setSchemeCounts(); int schemeCounts = calcSchemeCounts(dateSchemesMap);
// res.setEfficiencyProblemCounts(); res.setSchemeCounts(schemeCounts);
// res.setBalanceProblemCounts(); res.setEfficiencyProblemCounts(calcProblemCounts(
// res.setSecurityProblemCounts(); byDateVOList, SchemeEvaluateProblemSchemeVO.ByDateVO::getEfficiencyProblemCounts));
// res.setProblemSchemeListByScheme(); res.setBalanceProblemCounts(calcProblemCounts(
byDateVOList, SchemeEvaluateProblemSchemeVO.ByDateVO::getBalanceProblemCounts));
res.setSecurityProblemCounts(calcProblemCounts(
byDateVOList, SchemeEvaluateProblemSchemeVO.ByDateVO::getSecurityProblemCounts));
// 构造问题方案列表(根据方案)
res.setProblemSchemeListByScheme(buildProblemSchemeListByScheme(dateSchemesMap));
return res; return res;
} }
private List<SchemeEvaluateProblemSchemeVO.BySchemeVO> buildProblemSchemeListByScheme(
Map<Date, List<RunningEvaluateMetricsDetailVO.ProblemScheme>> dateSchemesMap) {
// 使用一个Map来临时存储按方案名称分组的数据
Map<String, List<SchemeEvaluateProblemSchemeVO.SchemeDatetime>> tempMap = new HashMap<>();
for (Map.Entry<Date, List<RunningEvaluateMetricsDetailVO.ProblemScheme>> entry : dateSchemesMap.entrySet()) {
Date date = entry.getKey();
List<RunningEvaluateMetricsDetailVO.ProblemScheme> problemSchemes = entry.getValue();
for (RunningEvaluateMetricsDetailVO.ProblemScheme problemScheme : problemSchemes) {
String schemeName = problemScheme.getSchemeName();
SchemeEvaluateProblemSchemeVO.SchemeDatetime schemeDatetime =
new SchemeEvaluateProblemSchemeVO.SchemeDatetime();
schemeDatetime.setProblemDate(date);
schemeDatetime.setStartTime(problemScheme.getStartTime());
schemeDatetime.setEndTime(problemScheme.getEndTime());
tempMap.computeIfAbsent(schemeName, k -> new ArrayList<>()).add(schemeDatetime);
}
}
// 构建最终的 List<BySchemeVO>
List<SchemeEvaluateProblemSchemeVO.BySchemeVO> bySchemeVOList = tempMap.entrySet().stream()
.map(entry -> {
SchemeEvaluateProblemSchemeVO.BySchemeVO bySchemeVO = new SchemeEvaluateProblemSchemeVO.BySchemeVO();
bySchemeVO.setSchemeName(entry.getKey());
bySchemeVO.setSchemeDatetimeList(entry.getValue());
return bySchemeVO;
})
.collect(Collectors.toList());
return bySchemeVOList;
}
private int calcProblemCounts(List<SchemeEvaluateProblemSchemeVO.ByDateVO> byDateVOList,
Function<SchemeEvaluateProblemSchemeVO.ByDateVO, Integer> getCount) {
return byDateVOList.stream().mapToInt(getCount::apply).sum();
}
private int calcSchemeCounts(Map<Date, List<RunningEvaluateMetricsDetailVO.ProblemScheme>> dateSchemesMap) {
int schemeCounts = 0;
for (List<RunningEvaluateMetricsDetailVO.ProblemScheme> list : dateSchemesMap.values()) {
schemeCounts += list.size();
}
return schemeCounts;
}
@NotNull @NotNull
private List<SchemeEvaluateProblemSchemeVO.ByDateVO> buildProblemSchemeListByDate( private List<SchemeEvaluateProblemSchemeVO.ByDateVO> buildProblemSchemeListByDate(
Map<Date, List<CrossDataHistPO>> dateProblemsMap, Map<Date, List<CrossDataHistPO>> dateProblemsMap,
......
...@@ -64,17 +64,21 @@ public class SchemeEvaluateProblemSchemeVO { ...@@ -64,17 +64,21 @@ public class SchemeEvaluateProblemSchemeVO {
public static class BySchemeVO { public static class BySchemeVO {
@ApiModelProperty(value = "方案名称") @ApiModelProperty(value = "方案名称")
private String schemeName; private String schemeName;
@ApiModelProperty(value = "方案日期时间列表")
private List<SchemeDatetime> SchemeDatetimeList;
}
@NoArgsConstructor
@Data
public static class SchemeDatetime {
@ApiModelProperty(value = "日期") @ApiModelProperty(value = "日期")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "M/d", timezone = "GMT+8") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "M/d", timezone = "GMT+8")
private Date problemDate; private Date problemDate;
@ApiModelProperty(value = "开始时间") @ApiModelProperty(value = "开始时间 HH:mm")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm", timezone = "GMT+8") String startTime;
Date startTime;
@ApiModelProperty(value = "结束时间") @ApiModelProperty(value = "结束时间 HH:mm")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm", timezone = "GMT+8") String endTime;
Date endTime;
} }
} }
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