yeg
2026-08-29 d2b53841c31b82df4f71b800ad18a323694c10d7
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"));
        }
    }
}