Просмотр исходного кода

修复 病害设备因为离线重连导致数据重复添加的问题

zhaiyifei 8 месяцев назад
Родитель
Сommit
871cd6e897

+ 2 - 2
src/main/java/com/yunfeiyun/agmp/iots/service/impl/IotYbqPredictDataServiceImpl.java

@@ -61,8 +61,8 @@ public class IotYbqPredictDataServiceImpl implements IotYbqPredictDataService {
         String start = DateUtils.getDate();
         Map<String, Object> param = new HashMap<>();
         param.put("newList_devBid", devBidList);
-        param.put("timeStr_ybqdataCreatedDate", start + " 00:00" + "," + start + " 23:59:59");
-        List<IotYbqPredictData> iotYbqPredictDataList = mongoService.findAll(IotYbqPredictData.class, param, "ybqdataCreatedDate desc");
+        param.put("computeDate", start);
+        List<IotYbqPredictData> iotYbqPredictDataList = mongoService.findAll(IotYbqPredictData.class, param, "computeDate desc");
         if (iotYbqPredictDataList == null || iotYbqPredictDataList.isEmpty()) {
             iotYbqPredictDataList = new ArrayList<>();
         }

+ 25 - 4
src/main/java/com/yunfeiyun/agmp/iots/task/YbqScheduler.java

@@ -472,10 +472,31 @@ public class YbqScheduler {
                 log.warn("设备ID [{}] 的设备类型未知,无法识别处理", devId);
             }
             if(ybqTypeConst != null){
-                // 更新监测环境数据
-                createEnvData(iotDevice, ybqTypeConst, startDate, endDate);
-                // 插入预测数据
-                createDelaYbqPredictedData(iotDevice, ybqTypeConst, startDate, endDate);
+                String devCreateddate = iotDevice.getDevCreateddate();
+                long createTime = DateUtils.parseDate(devCreateddate).getTime();
+                long nowTime = DateUtils.getNowDate().getTime();
+                // 如果设备创建时间在30分钟内,走创建流程,否则走更新流程
+                if (nowTime - createTime < 30 * 60 * 1000) {
+                    log.info("[YBQ]开始首次激活 设备ID [{}] ", devId);
+                    // 更新监测环境数据
+                    createEnvData(iotDevice, ybqTypeConst, startDate, endDate);
+                    // 插入预测数据
+                    createDelaYbqPredictedData(iotDevice, ybqTypeConst, startDate, endDate);
+
+                }else{
+                    log.info("[YBQ]开始更新 设备ID [{}] ", devId);
+                    startDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.addMinutes(new Date(), -20));
+                    endDate = DateUtils.dateTimeNow();
+
+                    List<IotDevice> iotDevices = new ArrayList<>();
+                    iotDevices.add(iotDevice);
+
+                    syncEnvDataByDevice(iotDevices, ybqTypeConst, startDate, endDate);
+                    String predictedDate = DateUtils.dateTime();
+                    syncDelaYbqPredictedData(iotDevices, ybqTypeConst, predictedDate, predictedDate, false);
+
+                }
+
             }
         } catch (Exception e) {
             log.error("处理设备ID [{}] 上报数据时发生异常", devId, e);