From 1bdcfa1cc0e88c9cab41b0136e0629aba5a8f2ce Mon Sep 17 00:00:00 2001 From: lzh Date: Fri, 30 Jan 2026 01:25:14 +0800 Subject: [PATCH] =?UTF-8?q?fix(ops):=20=E5=90=AF=E5=8A=A8=E6=97=B6?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96BEACON=E7=B1=BB=E5=9E=8B=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=BC=93=E5=AD=98=EF=BC=8C=E8=A7=A3=E5=86=B3SignalLos?= =?UTF-8?q?s=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/area/AreaDeviceServiceImpl.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) 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);