fix(ops): 启动时初始化BEACON类型配置缓存,解决SignalLoss定时任务获取配置失败问题
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

This commit is contained in:
lzh
2026-01-30 01:25:14 +08:00
parent 27704bf227
commit 1bdcfa1cc0

View File

@@ -189,19 +189,44 @@ public class AreaDeviceServiceImpl implements AreaDeviceService, InitializingBea
log.info("[AreaDevice] 开始初始化区域设备索引...");
try {
// 查询所有工牌设备关联
// 1. 查询所有工牌设备关联,建立区域索引
List<OpsAreaDeviceRelationDO> badgeRelations = relationMapper
.selectListByAreaIdAndRelationType(null, "BADGE");
int count = 0;
int badgeCount = 0;
for (OpsAreaDeviceRelationDO relation : badgeRelations) {
if (relation.getAreaId() != null && relation.getDeviceId() != null) {
addToAreaIndex(relation.getDeviceId(), relation.getAreaId());
count++;
badgeCount++;
}
}
log.info("[AreaDevice] 区域设备索引初始化完成:共加载 {} 个工牌设备关联", count);
log.info("[AreaDevice] 工牌设备索引初始化完成:共加载 {} 个工牌设备关联", badgeCount);
// 2. 查询所有信标设备关联,预热区域+类型配置缓存
List<OpsAreaDeviceRelationDO> beaconRelations = relationMapper
.selectListByAreaIdAndRelationType(null, "BEACON");
int beaconCount = 0;
for (OpsAreaDeviceRelationDO relation : beaconRelations) {
if (relation.getAreaId() != null && relation.getEnabled()) {
// 写入区域+类型配置缓存
String cacheKey = String.format(AREA_TYPE_CACHE_KEY_PREFIX, relation.getAreaId(), "BEACON");
try {
AreaDeviceDTO dto = toAreaDeviceDTO(relation);
stringRedisTemplate.opsForValue().set(
cacheKey,
JsonUtils.toJsonString(dto),
CACHE_TTL_HOURS,
TimeUnit.HOURS);
beaconCount++;
} catch (Exception e) {
log.warn("[AreaDevice] 写入信标配置缓存失败areaId={}", relation.getAreaId(), e);
}
}
}
log.info("[AreaDevice] 信标配置缓存初始化完成:共加载 {} 个信标配置", beaconCount);
} catch (Exception e) {
log.error("[AreaDevice] 区域设备索引初始化失败", e);