Pārlūkot izejas kodu

日报表数据处理修改

wangli 4 gadi atpakaļ
vecāks
revīzija
087eeb0405

+ 22 - 16
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataServiceImpl.java

@@ -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);
+                    }
+                }
             }
         }