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