|
@@ -167,24 +167,30 @@ public class MonitorDataServiceImpl implements MonitorDataService , Initializing
|
|
|
//保存日报表数据
|
|
|
saveReportDataByHour(hourDatas, lastHourDataMap);
|
|
|
|
|
|
- //设备id
|
|
|
- List<Integer> deviceIds = lastHourDataMap.values().stream().map(d -> d.getDeviceId().intValue()).distinct().collect(Collectors.toList());
|
|
|
//补数据,前24小时没有统计数据的
|
|
|
- if(deviceIds.size()>0){
|
|
|
+ List<Integer> deviceIds ;
|
|
|
+ if(lastHourDataMap.values().size()>0){
|
|
|
for(int i=1;i<24;i++){
|
|
|
- dateTime = LocalDateTime.now().plusHours(-i);
|
|
|
- //前几小时有统计数据的设备id
|
|
|
- List<Integer> deviceIdsIsExit = monitorDataMapper.checkReportDataExit(dateTime.getYear(),dateTime.getMonthValue(),dateTime.getDayOfMonth(),dateTime.getHour(),deviceIds);
|
|
|
- //需要补充数据的设备
|
|
|
- deviceIds = deviceIds.stream().filter(deviceId -> !deviceIdsIsExit.contains(deviceId)).collect(Collectors.toList());
|
|
|
-
|
|
|
- //查询需要补充数据的设备数据信息
|
|
|
- hourDatas = new ArrayList<>(lastHourDataMap.values());
|
|
|
-
|
|
|
- lastHourDatas = getMonitorDataGroupByHour(dateTime.plusHours(-i),deviceIds);
|
|
|
- lastHourDataMap = lastHourDatas.stream().collect(Collectors.toMap(DayReportEntity::getMapkey, a -> a,(k1, k2)->k1));
|
|
|
- //保存日报表数据
|
|
|
- saveReportDataByHour(hourDatas, lastHourDataMap);
|
|
|
+ dateTime = dateTime.plusHours(-1);
|
|
|
+ //设备id
|
|
|
+ deviceIds = lastHourDataMap.values().stream().map(d -> d.getDeviceId().intValue()).distinct().collect(Collectors.toList());
|
|
|
+ if(deviceIds.size()>0){
|
|
|
+
|
|
|
+ //前几小时有统计数据的设备id
|
|
|
+ List<Integer> deviceIdsIsExit = monitorDataMapper.checkReportDataExit(dateTime.getYear(),dateTime.getMonthValue(),dateTime.getDayOfMonth(),dateTime.getHour(),deviceIds);
|
|
|
+ //需要补充数据的设备
|
|
|
+ deviceIds = deviceIds.stream().filter(deviceId -> !deviceIdsIsExit.contains(deviceId)).collect(Collectors.toList());
|
|
|
+ if(deviceIds.size()>0) {
|
|
|
+
|
|
|
+ //查询需要补充数据的设备数据信息
|
|
|
+ hourDatas = new ArrayList<>(lastHourDataMap.values());
|
|
|
+
|
|
|
+ lastHourDatas = getMonitorDataGroupByHour(dateTime.plusHours(-1), deviceIds);
|
|
|
+ lastHourDataMap = lastHourDatas.stream().collect(Collectors.toMap(DayReportEntity::getMapkey, a -> a, (k1, k2) -> k1));
|
|
|
+ //保存日报表数据
|
|
|
+ saveReportDataByHour(hourDatas, lastHourDataMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|