diff --git a/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/service/area/AreaDeviceServiceImpl.java b/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/service/area/AreaDeviceServiceImpl.java index 5794efb..1ddbd80 100644 --- a/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/service/area/AreaDeviceServiceImpl.java +++ b/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/service/area/AreaDeviceServiceImpl.java @@ -189,19 +189,44 @@ public class AreaDeviceServiceImpl implements AreaDeviceService, InitializingBea log.info("[AreaDevice] 开始初始化区域设备索引..."); try { - // 查询所有工牌设备关联 + // 1. 查询所有工牌设备关联,建立区域索引 List 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 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);