package com.ruoyi.config; import java.io.IOException; import java.util.List; import org.springframework.boot.ApplicationRunner; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import com.ruoyi.device.bts.BtsDeviceAdapterFactory; import com.ruoyi.device.bts.BtsDevelopmentSimulator; import com.ruoyi.device.model.AdapterCapabilities; import com.ruoyi.device.registry.AdapterInstanceConfig; import com.ruoyi.device.registry.DeviceAdapterRegistry; import com.ruoyi.device.simulator.BtsSimulatorStateStore; /** 装配单进程设备适配器运行时。 */ @Configuration @EnableScheduling public class DeviceAdapterRuntimeConfig { @Bean(destroyMethod = "close") public DeviceAdapterRegistry deviceAdapterRegistry() { return new DeviceAdapterRegistry(List.of(new BtsDeviceAdapterFactory())); } @Bean(destroyMethod = "close") public BtsDevelopmentSimulator btsDevelopmentSimulator(BtsSimulatorStateStore stateStore, @Value("${battery.dev-simulator.port:15020}") int simulatorPort) throws IOException { return new BtsDevelopmentSimulator(simulatorPort, stateStore); } @Bean public ApplicationRunner registerDevelopmentSimulatorAdapter(DeviceAdapterRegistry registry, @Value("${battery.dev-simulator.port:15020}") int simulatorPort) { // 固定开发装配不进入 t_device_adapter,直接注册运行时实例。 return arguments -> registry.synchronize(developmentSimulatorRuntimeConfig(simulatorPort)); } private AdapterInstanceConfig developmentSimulatorRuntimeConfig(int simulatorPort) { return new AdapterInstanceConfig(BtsDevelopmentSimulator.ADAPTER_CODE, "BTS", BtsDevelopmentSimulator.HOST, simulatorPort, BtsDevelopmentSimulator.POLL_INTERVAL_MS, "Asia/Hong_Kong", true, new AdapterCapabilities(true, true, false, false)); } }