From d2b53841c31b82df4f71b800ad18a323694c10d7 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 29 八月 2026 23:13:40 +0800
Subject: [PATCH] 修复设备发现状态同步与开始接收边界

---
 ruoyi-admin/src/main/java/com/ruoyi/config/DevelopmentCollectorStatusSynchronizer.java |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/config/DevelopmentCollectorStatusSynchronizer.java b/ruoyi-admin/src/main/java/com/ruoyi/config/DevelopmentCollectorStatusSynchronizer.java
index 395f1fc..22af3a1 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/config/DevelopmentCollectorStatusSynchronizer.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/config/DevelopmentCollectorStatusSynchronizer.java
@@ -8,6 +8,7 @@
 import com.ruoyi.device.bts.BtsDevelopmentSimulator;
 import com.ruoyi.device.discovery.DeviceDiscoveryCandidateStore;
 import com.ruoyi.device.discovery.DeviceDiscoveryCandidateStore.CollectorCandidate;
+import com.ruoyi.system.mapper.TCollectorMapper;
 
 /** 将模拟采集器的发现和实时状态写入 Redis,不回写正式 MySQL 记录。 */
 @Component
@@ -15,12 +16,20 @@
 {
     private final BtsDevelopmentSimulator simulator;
     private final DeviceDiscoveryCandidateStore candidateStore;
+    private final TCollectorMapper collectorMapper;
 
     public DevelopmentCollectorStatusSynchronizer(BtsDevelopmentSimulator simulator,
             DeviceDiscoveryCandidateStore candidateStore)
     {
+        this(simulator, candidateStore, null);
+    }
+
+    public DevelopmentCollectorStatusSynchronizer(BtsDevelopmentSimulator simulator,
+            DeviceDiscoveryCandidateStore candidateStore, TCollectorMapper collectorMapper)
+    {
         this.simulator = simulator;
         this.candidateStore = candidateStore;
+        this.collectorMapper = collectorMapper;
     }
 
     /** 完整替换 dev-sim 采集器快照,删除配置后候选立即消失。 */
@@ -35,5 +44,10 @@
                         observedAt.plus(Duration.ofSeconds(30))))
                 .toList();
         candidateStore.replaceCollectors(BtsDevelopmentSimulator.ADAPTER_CODE, candidates);
+        if (collectorMapper != null)
+        {
+            candidates.forEach(candidate -> collectorMapper.updateRegisteredObservation(candidate.deviceCode(),
+                    candidate.online() ? "ONLINE" : "OFFLINE"));
+        }
     }
 }

--
Gitblit v1.7.1