From cc1f07604727a966181334ef76b8445750ddadd2 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期日, 30 八月 2026 18:55:35 +0800
Subject: [PATCH] 修正模拟器开机后的异常状态同步
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/device/BtsDevelopmentSimulatorController.java | 21 ++++++++++++++++++++-
1 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/device/BtsDevelopmentSimulatorController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/device/BtsDevelopmentSimulatorController.java
index 3938123..5c4d084 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/device/BtsDevelopmentSimulatorController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/device/BtsDevelopmentSimulatorController.java
@@ -15,6 +15,7 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ResponseStatusException;
+import org.springframework.beans.factory.annotation.Autowired;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.device.bts.BtsDevelopmentSimulator;
import com.ruoyi.device.bts.BtsDevelopmentSimulator.StateSnapshot;
@@ -32,12 +33,23 @@
{
private final BtsDevelopmentSimulator simulator;
private final DeviceDiscoveryCandidateStore candidateStore;
+ private final com.ruoyi.config.DevelopmentCollectorStatusSynchronizer statusSynchronizer;
+ @Autowired
public BtsDevelopmentSimulatorController(BtsDevelopmentSimulator simulator,
- DeviceDiscoveryCandidateStore candidateStore)
+ DeviceDiscoveryCandidateStore candidateStore,
+ com.ruoyi.config.DevelopmentCollectorStatusSynchronizer statusSynchronizer)
{
this.simulator = simulator;
this.candidateStore = candidateStore;
+ this.statusSynchronizer = statusSynchronizer;
+ }
+
+ /** 保留独立模拟器测试和工具调用的构造入口,不触发数据库同步。 */
+ public BtsDevelopmentSimulatorController(BtsDevelopmentSimulator simulator,
+ DeviceDiscoveryCandidateStore candidateStore)
+ {
+ this(simulator, candidateStore, null);
}
/** 返回临时控制页;匿名放行后仍由本机拦截器限制来源。 */
@@ -70,6 +82,7 @@
if (command == null || command.poweredOn() == null)
throw badRequest(new IllegalArgumentException("poweredOn must be true or false"));
simulator.setAllDevicesPoweredOn(command.poweredOn());
+ synchronizeOnlineStatusIfConfigured();
return simulator.snapshot();
}
@@ -146,6 +159,7 @@
try
{
simulator.updateCollector(collectorId, command.ip(), command.channelCount(), command.online());
+ synchronizeOnlineStatusIfConfigured();
return simulator.snapshot();
}
catch (IllegalArgumentException exception)
@@ -256,6 +270,11 @@
return new ResponseStatusException(HttpStatus.BAD_REQUEST, exception.getMessage(), exception);
}
+ private void synchronizeOnlineStatusIfConfigured()
+ {
+ if (statusSynchronizer != null) statusSynchronizer.synchronizeOnlineStatus();
+ }
+
public record CreateDeviceCommand(String ip, int channelCount, String model)
{
public CreateDeviceCommand(String ip, int channelCount)
--
Gitblit v1.7.1