|
@@ -257,32 +257,26 @@ public class IotDeviceStatusServiceImpl extends ServiceImpl<IotDeviceStatusMappe
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void otherLogic(AlarmDataReq dataReq, Long deviceId) {
|
|
private void otherLogic(AlarmDataReq dataReq, Long deviceId) {
|
|
|
- //如果历史没有产生告警 那么这次不管上报什么都不做操作
|
|
|
|
|
|
|
+ //存在正在告警数据,且与上报的id不一致
|
|
|
LambdaQueryWrapper<IotAlarmData> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<IotAlarmData> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(IotAlarmData::getDeviceId, deviceId);
|
|
queryWrapper.eq(IotAlarmData::getDeviceId, deviceId);
|
|
|
queryWrapper.eq(IotAlarmData::getFieldCode, dataReq.getProductProperty());
|
|
queryWrapper.eq(IotAlarmData::getFieldCode, dataReq.getProductProperty());
|
|
|
- queryWrapper.orderByDesc(IotAlarmData::getTime);
|
|
|
|
|
- queryWrapper.last(Constants.LIMIT1);
|
|
|
|
|
- final IotAlarmData alarmData = iotAlarmDataService.getOne(queryWrapper);
|
|
|
|
|
- if (alarmData == null) {
|
|
|
|
|
|
|
+ queryWrapper.isNull(IotAlarmData::getEndTime);
|
|
|
|
|
+ queryWrapper.ne(IotAlarmData::getId, dataReq.getId());
|
|
|
|
|
+ List<IotAlarmData> alarmingList = iotAlarmDataService.list(queryWrapper);
|
|
|
|
|
+ if (alarmingList == null || alarmingList.isEmpty()) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //处理平台设备正在告警中,又上报了同设备的告警开始数据的情况(丢失了中间的告警结束数据)
|
|
|
|
|
- if (ObjectUtil.isNull(dataReq.getEndTime())) {
|
|
|
|
|
- LambdaUpdateWrapper<IotAlarmData> wrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
- wrapper.eq(IotAlarmData::getDeviceId, deviceId);
|
|
|
|
|
- wrapper.eq(IotAlarmData::getFieldCode, dataReq.getProductProperty());
|
|
|
|
|
- wrapper.isNull(IotAlarmData::getTime);
|
|
|
|
|
- wrapper.ne(IotAlarmData::getId, dataReq.getId());
|
|
|
|
|
- wrapper.set(IotAlarmData::getEndTime, LocalDateTime.now());
|
|
|
|
|
- iotAlarmDataService.update(wrapper);
|
|
|
|
|
- }
|
|
|
|
|
- //当前设备正在告警,却收到设备恢复的数据,说明丢失了设备的告警恢复与告警开始数据,那么将当前设备历史告警的结束时间设置为当前时间
|
|
|
|
|
- if (alarmData.getEndTime() == null && !alarmData.getId().equals(dataReq.getId())){
|
|
|
|
|
- alarmData.setEndTime(LocalDateTime.now());
|
|
|
|
|
- LogUtils.SOCKET_DEVICE_ALARM_DATA.warn("收到设备告警恢复数据,但存在历史告警未能正常结束告警,修改历史告警的恢复时间为当前时间,设备id:{},告警数据id:{},告警数据:{}", deviceId, dataReq.getId(), JSON.toJSONString(alarmData));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //更新异常丢失数据为结束
|
|
|
|
|
+ LambdaUpdateWrapper<IotAlarmData> wrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ wrapper.eq(IotAlarmData::getDeviceId, String.valueOf(deviceId));
|
|
|
|
|
+ wrapper.eq(IotAlarmData::getFieldCode, dataReq.getProductProperty());
|
|
|
|
|
+ wrapper.isNull(IotAlarmData::getEndTime);
|
|
|
|
|
+ wrapper.ne(IotAlarmData::getId, dataReq.getId());
|
|
|
|
|
+ wrapper.set(IotAlarmData::getEndTime, LocalDateTime.now());
|
|
|
|
|
+ iotAlarmDataService.update(wrapper);
|
|
|
|
|
+ LogUtils.SOCKET_DEVICE_ALARM_DATA.info("收到设备告警数据,但存在历史告警未能正常结束告警,修改历史告警的恢复时间为当前时间,设备id:{}", deviceId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|