|
|
|
@ -431,6 +431,24 @@ public class DeviceOperationRecordServiceImpl implements DeviceOperationRecordSe
|
|
|
|
double faultRate = calculatePercent(totalFaultSeconds, onlineSeconds);
|
|
|
|
double faultRate = calculatePercent(totalFaultSeconds, onlineSeconds);
|
|
|
|
double standbyRate = calculatePercent(totalStandbySeconds, 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 totalRunningHours = secondsToHours(totalRunningSeconds);
|
|
|
|
double totalStandbyHours = secondsToHours(totalStandbySeconds);
|
|
|
|
double totalStandbyHours = secondsToHours(totalStandbySeconds);
|
|
|
|
double totalFaultHours = secondsToHours(totalFaultSeconds);
|
|
|
|
double totalFaultHours = secondsToHours(totalFaultSeconds);
|
|
|
|
@ -438,10 +456,10 @@ public class DeviceOperationRecordServiceImpl implements DeviceOperationRecordSe
|
|
|
|
double totalHours = secondsToHours(totalSeconds);
|
|
|
|
double totalHours = secondsToHours(totalSeconds);
|
|
|
|
|
|
|
|
|
|
|
|
respVO.setMetrics(Arrays.asList(
|
|
|
|
respVO.setMetrics(Arrays.asList(
|
|
|
|
DeviceOperationOverviewRespVO.MetricItem.builder().key("utilizationRate").icon("ep:pie-chart").value(round2(utilizationRate)).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(0D).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(0D).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(0D).build()
|
|
|
|
DeviceOperationOverviewRespVO.MetricItem.builder().key("standbyRate").icon("ep:timer").value(round2(standbyRate)).unit("%").change(standbyRateChange).build()
|
|
|
|
));
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
|
|
respVO.setSummary(Arrays.asList(
|
|
|
|
respVO.setSummary(Arrays.asList(
|
|
|
|
@ -542,6 +560,30 @@ public class DeviceOperationRecordServiceImpl implements DeviceOperationRecordSe
|
|
|
|
return Math.round(value * 100D) / 100D;
|
|
|
|
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,
|
|
|
|
private List<DeviceOperationOverviewRespVO.TimelineRowItem> buildTimelineRows(List<DeviceTotalTimeRecordRespVO> records,
|
|
|
|
List<Long> deviceIds,
|
|
|
|
List<Long> deviceIds,
|
|
|
|
String startTime,
|
|
|
|
String startTime,
|
|
|
|
|