Commit 3a4f03dd authored by duwei's avatar duwei

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

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