package com.ruoyi.config; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import com.ruoyi.device.bts.BtsDevelopmentSimulator; import com.ruoyi.device.registry.DeviceAdapterRegistry; import com.ruoyi.system.service.impl.DeviceDiscoveryPersistenceService; import com.ruoyi.system.service.impl.DeviceDiscoveryPersistenceService.DiscoverySource; import com.ruoyi.system.service.ITestDataReceptionService; /** 轮询代码固定装配的 dev-sim;该运行时不依赖数据库适配器记录。 */ @Component public class DevelopmentSimulatorDiscoveryScheduler { private final DeviceAdapterRegistry registry; private final DeviceDiscoveryPersistenceService persistence; private final ITestDataReceptionService reception; public DevelopmentSimulatorDiscoveryScheduler(DeviceAdapterRegistry registry, DeviceDiscoveryPersistenceService persistence, ITestDataReceptionService reception) { this.registry = registry; this.persistence = persistence; this.reception = reception; } /** 注册表已包含固定开发适配器时,将一轮检测柜观测写入 Redis 候选。 */ @Scheduled(fixedDelay = BtsDevelopmentSimulator.POLL_INTERVAL_MS) public void discover() { if (!registry.contains(BtsDevelopmentSimulator.ADAPTER_CODE)) return; persistence.discoverForReception(registry, new DiscoverySource(BtsDevelopmentSimulator.ADAPTER_CODE, null, BtsDevelopmentSimulator.ADAPTER_NAME, BtsDevelopmentSimulator.POLL_INTERVAL_MS)); // 发现轮询成功后立即把接收窗口内的模拟 record 写入测试事实;页面不再读取模拟器历史。 reception.captureDevelopmentCabinetRecords(); // 采集器拥有独立采样频率;只接收本轮实时快照,不读取历史下载接口。 reception.captureDevelopmentCollectorMeasurements(); } }