fix: 太阳能网控,离线报警问题修复。

This commit is contained in:
tianyongbao
2026-04-26 23:01:16 +08:00
parent 7587c10326
commit 3243d8f73c
2 changed files with 39 additions and 7 deletions

View File

@@ -891,8 +891,9 @@ public class DeviceDataHandler {
// 查询设备类型太阳能网控type=3使用独立的延迟时长
int offlineDelayMinutes = aliyunIotProperties.getOfflineWarnDelayMinutes();
Device deviceForType = null;
try {
Device deviceForType = deviceMapper.selectOne(
deviceForType = deviceMapper.selectOne(
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<Device>()
.eq(Device::getSerialNum, deviceName)
.select(Device::getDeviceType)
@@ -908,7 +909,11 @@ public class DeviceDataHandler {
String offlineTime = LocalDateTime.now().format(DATETIME_FORMATTER);
int ttlMinutes = offlineDelayMinutes * OFFLINE_WAIT_TTL_MULTIPLIER;
RedisUtils.setCacheObject(redisKey, offlineTime, Duration.ofMinutes(ttlMinutes));
// value 格式:{offlineTime}|{deviceType},定时任务根据设备类型使用对应延迟阈值
int deviceTypeForRedis = (deviceForType != null && deviceForType.getDeviceType() != null)
? deviceForType.getDeviceType() : 0;
String redisValue = offlineTime + "|" + deviceTypeForRedis;
RedisUtils.setCacheObject(redisKey, redisValue, Duration.ofMinutes(ttlMinutes));
log.info("[离线告警] 设备离线,已记录等待标记,将在 {} 分钟后触发告警: {}", offlineDelayMinutes, deviceName);
// 同步更新 Device.warnCode写入离线标志位