fix: 离线报警逻辑问题修复。
This commit is contained in:
@@ -1825,10 +1825,19 @@ public class DeviceDataHandler {
|
||||
|
||||
/**
|
||||
* 清除设备离线标志(收到属性上报时调用)
|
||||
* 同时清除数据库 warnCode 位和 Redis 离线等待标记
|
||||
*
|
||||
* @param deviceName 设备名称(serialNum)
|
||||
*/
|
||||
private void clearDeviceOfflineFlag(String deviceName) {
|
||||
// 1. 清除 Redis 离线等待标记(防止定时任务误触发告警)
|
||||
String redisKey = DEVICE_OFFLINE_WAIT_KEY_PREFIX + deviceName;
|
||||
boolean redisRemoved = RedisUtils.deleteObject(redisKey);
|
||||
if (redisRemoved) {
|
||||
log.info("[在线] 收到属性上报,已清除 Redis 离线等待标记: {}", deviceName);
|
||||
}
|
||||
|
||||
// 2. 清除数据库 warnCode 离线标志位
|
||||
try {
|
||||
Device device = deviceMapper.selectOne(
|
||||
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<Device>()
|
||||
@@ -1845,7 +1854,7 @@ public class DeviceDataHandler {
|
||||
update.setId(device.getId());
|
||||
update.setWarnCode(device.getWarnCode() & ~DefineDeviceWarnCode.DeviceOffline);
|
||||
deviceMapper.updateById(update);
|
||||
log.debug("[在线] 收到属性上报,已清除设备离线标志: {}", deviceName);
|
||||
log.debug("[在线] 已清除设备数据库离线标志: {}", deviceName);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("[在线] 清除设备离线标志失败[{}]: {}", deviceName, e.getMessage());
|
||||
|
||||
Reference in New Issue
Block a user