Commit 3a4f03dd authored by duwei's avatar duwei

评价指标再次优化时间线,由之前的小时级调整为分钟级,产品定的

parent d3213562
......@@ -389,10 +389,11 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
}
private Map<String, List<CrossDataHistPO>> buildTimePOMap(List<CrossDataHistPO> crossDataHistPOList) {
SimpleDateFormat sdf = new SimpleDateFormat("HH");
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");//HH
Map<String, List<CrossDataHistPO>> timePOMap = crossDataHistPOList.stream()
.collect(Collectors.groupingBy(po -> {
Date date = new Date((long) po.getBatchTime() * 1000); // 将10位时间戳转换为Date对象
// Date date = new Date((long) po.getBatchTime() * 1000); // 将10位时间戳转换为Date对象
Date date = po.getStartTime();
return sdf.format(date); // 将Date对象转换为"HH"格式的字符串
}));
return timePOMap;
......@@ -937,15 +938,20 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
List<RunningEvaluateIndexStatusVO> res = new ArrayList<>();
//根据查询时间,startTime和endTime,生成时间列表,
// 比如,开始时间是2025-04-08 09:10:10 ,结束时间是2025-04-08 09:20:10,则生成时间列表是["09:10", "09:15" ... "09:20"]
String startHour = startTime.substring(11, 13);
String endHour = endTime.substring(11, 13);
// String startHour = startTime.substring(11, 13);
// String endHour = endTime.substring(11, 13);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String startMinute = sdf.format(startDate);
String endMinute = sdf.format(endDate);
//在startHour和endHour之间生成时间列表
List<String> timeArray = TimeArrayUtil.getHourArrayScope(Integer.valueOf(startHour), Integer.valueOf(endHour));
// List<String> timeArray = TimeArrayUtil.getHourArrayScope(Integer.valueOf(startHour), Integer.valueOf(endHour));
List<String> timeArray = TimeArrayUtil.getCustomTimeIntervals(startMinute, endMinute,5);
for (String time : timeArray) {
RunningEvaluateIndexStatusVO vo = new RunningEvaluateIndexStatusVO();
vo.setTime(time);
List<CrossDataHistPO> subList = timePOMap.get(time.substring(0, 2)); // 保留小时字符串
List<CrossDataHistPO> subList = timePOMap.get(time); // time.substring(0, 2)保留小时字符串
if (subList != null) {
//根据状态计算平均值(拥堵、溢出、失衡、空放)
Double avgCongestionIndex = calcAvgIndex(subList, status);
......@@ -977,6 +983,7 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
.orElse(0.0);
}else if (status == CrossStatusEnum.EMPTY_RELEASE.getCode()) {
average = subList.stream()
.filter(crossDataHistPO -> crossDataHistPO.getStatus() == status)
.mapToDouble(CrossDataHistPO::getDuration)
.average()
.orElse(0.0);
......
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