增加昨日的数据对比

main
liutao 4 days ago
parent ab4d198ee2
commit 3984fbe953

@ -431,6 +431,24 @@ public class DeviceOperationRecordServiceImpl implements DeviceOperationRecordSe
double faultRate = calculatePercent(totalFaultSeconds, onlineSeconds);
double standbyRate = calculatePercent(totalStandbySeconds, onlineSeconds);
DeviceTotalTimeRecordReqVO previousReqVO = buildPreviousPeriodReqVO(pageReqVO);
List<DeviceTotalTimeRecordRespVO> previousRecords = queryDeviceStatsRaw(previousReqVO);
double previousTotalRunningSeconds = previousRecords.stream().mapToDouble(DeviceTotalTimeRecordRespVO::getTotalRunningTime).sum();
double previousTotalStandbySeconds = previousRecords.stream().mapToDouble(DeviceTotalTimeRecordRespVO::getTotalStandbyTime).sum();
double previousTotalFaultSeconds = previousRecords.stream().mapToDouble(DeviceTotalTimeRecordRespVO::getTotalFaultTime).sum();
double previousTotalOfflineSeconds = previousRecords.stream().mapToDouble(DeviceTotalTimeRecordRespVO::getTotalOfflineTime).sum();
double previousOnlineSeconds = previousTotalRunningSeconds + previousTotalStandbySeconds + previousTotalFaultSeconds;
double previousTotalSeconds = previousOnlineSeconds + previousTotalOfflineSeconds;
double previousUtilizationRate = calculatePercent(previousTotalRunningSeconds, previousOnlineSeconds);
double previousPowerOnRate = calculatePercent(previousOnlineSeconds, previousTotalSeconds);
double previousFaultRate = calculatePercent(previousTotalFaultSeconds, previousOnlineSeconds);
double previousStandbyRate = calculatePercent(previousTotalStandbySeconds, previousOnlineSeconds);
double utilizationRateChange = calculateMetricChange(utilizationRate, previousUtilizationRate);
double powerOnRateChange = calculateMetricChange(powerOnRate, previousPowerOnRate);
double faultRateChange = calculateMetricChange(faultRate, previousFaultRate);
double standbyRateChange = calculateMetricChange(standbyRate, previousStandbyRate);
double totalRunningHours = secondsToHours(totalRunningSeconds);
double totalStandbyHours = secondsToHours(totalStandbySeconds);
double totalFaultHours = secondsToHours(totalFaultSeconds);
@ -438,10 +456,10 @@ public class DeviceOperationRecordServiceImpl implements DeviceOperationRecordSe
double totalHours = secondsToHours(totalSeconds);
respVO.setMetrics(Arrays.asList(
DeviceOperationOverviewRespVO.MetricItem.builder().key("utilizationRate").icon("ep:pie-chart").value(round2(utilizationRate)).unit("%").change(0D).build(),
DeviceOperationOverviewRespVO.MetricItem.builder().key("powerOnRate").icon("ep:video-play").value(round2(powerOnRate)).unit("%").change(0D).build(),
DeviceOperationOverviewRespVO.MetricItem.builder().key("faultRate").icon("ep:warning").value(round2(faultRate)).unit("%").change(0D).build(),
DeviceOperationOverviewRespVO.MetricItem.builder().key("standbyRate").icon("ep:timer").value(round2(standbyRate)).unit("%").change(0D).build()
DeviceOperationOverviewRespVO.MetricItem.builder().key("utilizationRate").icon("ep:pie-chart").value(round2(utilizationRate)).unit("%").change(utilizationRateChange).build(),
DeviceOperationOverviewRespVO.MetricItem.builder().key("powerOnRate").icon("ep:video-play").value(round2(powerOnRate)).unit("%").change(powerOnRateChange).build(),
DeviceOperationOverviewRespVO.MetricItem.builder().key("faultRate").icon("ep:warning").value(round2(faultRate)).unit("%").change(faultRateChange).build(),
DeviceOperationOverviewRespVO.MetricItem.builder().key("standbyRate").icon("ep:timer").value(round2(standbyRate)).unit("%").change(standbyRateChange).build()
));
respVO.setSummary(Arrays.asList(
@ -542,6 +560,30 @@ public class DeviceOperationRecordServiceImpl implements DeviceOperationRecordSe
return Math.round(value * 100D) / 100D;
}
private DeviceTotalTimeRecordReqVO buildPreviousPeriodReqVO(DeviceTotalTimeRecordReqVO reqVO) {
DeviceTotalTimeRecordReqVO previousReqVO = new DeviceTotalTimeRecordReqVO();
previousReqVO.setIds(reqVO.getIds());
previousReqVO.setDeviceCode(reqVO.getDeviceCode());
previousReqVO.setDeviceName(reqVO.getDeviceName());
previousReqVO.setTimelinePageNo(reqVO.getTimelinePageNo());
previousReqVO.setTimelinePageSize(reqVO.getTimelinePageSize());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
LocalDateTime start = LocalDateTime.parse(reqVO.getStartTime(), formatter);
LocalDateTime end = LocalDateTime.parse(reqVO.getEndTime(), formatter);
Duration duration = Duration.between(start, end);
LocalDateTime previousStart = start.minusDays(1);
LocalDateTime previousEnd = previousStart.plus(duration);
previousReqVO.setStartTime(previousStart.format(formatter));
previousReqVO.setEndTime(previousEnd.format(formatter));
return previousReqVO;
}
private double calculateMetricChange(double current, double previous) {
return round2(current - previous);
}
private List<DeviceOperationOverviewRespVO.TimelineRowItem> buildTimelineRows(List<DeviceTotalTimeRecordRespVO> records,
List<Long> deviceIds,
String startTime,

Loading…
Cancel
Save