fix: 离线报警逻辑问题修复。

This commit is contained in:
tianyongbao
2026-04-09 09:17:41 +08:00
parent 3f27fc7541
commit 70ac046e3e

View File

@@ -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());