Commit cb84ffaf authored by hanbing's avatar hanbing

[update] 新信号评价-运行评价-方案问题修改

parent 7314f33f
......@@ -58,6 +58,9 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
private final CrossTurnDataHistMapper crossTurnDataHistMapper;
private final CrossLaneDataHistMapper crossLaneDataHistMapper;
SimpleDateFormat HOUR_SDF = new SimpleDateFormat("HH:mm");
SimpleDateFormat DAY_SDF = new SimpleDateFormat("yyyy-MM-dd");
public RunningEvaluateServiceImpl(CrossDataRealtimeMapper crossDataRealtimeMapper,
CrossDataHistMapper crossDataHistMapper,
@Qualifier("baseCrossSectionMapper") BaseCrossSectionMapper baseCrossSectionMapper,
......@@ -204,12 +207,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.filter(po -> !Objects.equals(po.getStatus(), CrossStatusEnum.NORMAL.getCode()))
.collect(Collectors.toList());
// 按采集时间小时进行聚合
SimpleDateFormat sdf = new SimpleDateFormat("HH");
Map<String, List<CrossDataHistPO>> timePOMap = crossDataHistPOList.stream()
.collect(Collectors.groupingBy(po -> {
Date date = new Date((long) po.getBatchTime() * 1000); // 将10位时间戳转换为Date对象
return sdf.format(date); // 将Date对象转换为"HH"格式的字符串
}));
Map<String, List<CrossDataHistPO>> timePOMap = buildTimePOMap(collect);;
// 找出当前小时的记录
List<CrossDataHistPO> currentHourList = timePOMap.get(time.substring(0, 2)); // 保留小时字符串
if (currentHourList != null) {
......@@ -237,6 +235,16 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
return res;
}
private Map<String, List<CrossDataHistPO>> buildTimePOMap(List<CrossDataHistPO> crossDataHistPOList) {
SimpleDateFormat sdf = new SimpleDateFormat("HH");
Map<String, List<CrossDataHistPO>> timePOMap = crossDataHistPOList.stream()
.collect(Collectors.groupingBy(po -> {
Date date = new Date((long) po.getBatchTime() * 1000); // 将10位时间戳转换为Date对象
return sdf.format(date); // 将Date对象转换为"HH"格式的字符串
}));
return timePOMap;
}
@Override
public RunningEvaluateMetricsDetailVO metricsDetail(MetricsDetailBO bo) {
String crossId = bo.getCrossId();
......@@ -366,16 +374,14 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.values().stream().collect(Collectors.toList()); // 从Map中获取值并收集到新的列表中
for (MetricHistDTO dto : uniqueList) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date abnormalEventStartTime = dto.getStartTime();
Integer duration = dto.getDuration();
Date abnormalEventEndTime = DateUtil.offsetMinute(abnormalEventStartTime, duration);
String eventStartTime = sdf.format(abnormalEventStartTime);
String eventEndTime = sdf.format(abnormalEventEndTime);
String eventStartTime = HOUR_SDF.format(abnormalEventStartTime);
String eventEndTime = HOUR_SDF.format(abnormalEventEndTime);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
Date datetime = new Date();
String dateStr = sdf2.format(datetime);
String dateStr = DAY_SDF.format(datetime);
// 获取当前计划ID
Integer planId = findPlanId(datetime, dateStr, crossId);
List<CrossSectionPO> crossSectionPOList = baseCrossSectionMapper.selectByCrossAndPlan(crossId, planId);
......@@ -385,6 +391,20 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
// 比较两组时间段是否相交
boolean isIntersecting = isTimeIntersecting(
eventStartTime, eventEndTime, sectionStartTime, sectionEndTime);
buildResIfIntersecting(res, crossSectionPO, sectionStartTime, sectionEndTime, isIntersecting,
baseCrossSchemeMapper);
}
}
// 去除相同方案
List<RunningEvaluateMetricsDetailVO.ProblemScheme> uniqueRes = res.stream()
.distinct()
.collect(Collectors.toList());
return uniqueRes;
}
void buildResIfIntersecting(List<RunningEvaluateMetricsDetailVO.ProblemScheme> res, CrossSectionPO crossSectionPO,
String sectionStartTime, String sectionEndTime, boolean isIntersecting,
BaseCrossSchemeMapper baseCrossSchemeMapper) {
if (isIntersecting) {
Integer schemeId = crossSectionPO.getSchemeId();
BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectById(schemeId);
......@@ -398,13 +418,6 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
res.add(problemScheme);
}
}
}
// 去除相同方案
List<RunningEvaluateMetricsDetailVO.ProblemScheme> uniqueRes = res.stream()
.distinct()
.collect(Collectors.toList());
return uniqueRes;
}
List<RunningEvaluateMetricsDetailVO.ProblemStatus> buildProblemStatusList(
List<MetricHistDTO> metricHistDTOList) {
......@@ -667,12 +680,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
@NotNull
private List<RunningEvaluateIndexStatusVO> buildRunningEvaluateIndexStatusVOList(
List<CrossDataHistPO> crossDataHistPOList, int status) {
SimpleDateFormat sdf = new SimpleDateFormat("HH");
Map<String, List<CrossDataHistPO>> timePOMap = crossDataHistPOList.stream()
.collect(Collectors.groupingBy(po -> {
Date date = new Date((long) po.getBatchTime() * 1000); // 将10位时间戳转换为Date对象
return sdf.format(date); // 将Date对象转换为"HH"格式的字符串
}));
Map<String, List<CrossDataHistPO>> timePOMap = buildTimePOMap(crossDataHistPOList);
// 构造结果集
List<RunningEvaluateIndexStatusVO> res = new ArrayList<>();
......@@ -728,16 +736,14 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.collect(Collectors.toList());
for (CrossDataHistPO abnormalEvent : allList) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date abnormalEventStartTime = abnormalEvent.getStartTime();
Integer duration = abnormalEvent.getDuration();
Date abnormalEventEndTime = DateUtil.offsetMinute(abnormalEventStartTime, duration);
String eventStartTime = sdf.format(abnormalEventStartTime);
String eventEndTime = sdf.format(abnormalEventEndTime);
String eventStartTime = HOUR_SDF.format(abnormalEventStartTime);
String eventEndTime = HOUR_SDF.format(abnormalEventEndTime);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
Date datetime = new Date();
String dateStr = sdf2.format(datetime);
String dateStr = DAY_SDF.format(datetime);
// 获取当前计划ID
Integer planId = findPlanId(datetime, dateStr, crossId);
List<CrossSectionPO> crossSectionPOList = baseCrossSectionMapper.selectByCrossAndPlan(crossId, planId);
......
......@@ -339,18 +339,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
// 比较两组时间段是否相交
boolean isIntersecting = runningEvaluateService.isTimeIntersecting(
eventStartTime, eventEndTime, sectionStartTime, sectionEndTime);
if (isIntersecting) {
Integer schemeId = crossSectionPO.getSchemeId();
BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectById(schemeId);
String schemeName = baseCrossSchemePO.getName();
RunningEvaluateMetricsDetailVO.ProblemScheme problemScheme =
new RunningEvaluateMetricsDetailVO.ProblemScheme();
problemScheme.setSchemeName(schemeName);
problemScheme.setStartTime(sectionStartTime);
problemScheme.setEndTime(sectionEndTime);
problemSchemeList.add(problemScheme);
}
runningEvaluateService.buildResIfIntersecting(problemSchemeList, crossSectionPO, sectionStartTime,
sectionEndTime, isIntersecting, baseCrossSchemeMapper);
}
}
// 去除相同方案
......
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