fix(ops): 启动时初始化BEACON类型配置缓存,解决SignalLoss定时任务获取配置失败问题
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user