From 1c26cdb81070af7f29df4462d3bfc1ae588ff8f3 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期日, 30 八月 2026 14:11:34 +0800
Subject: [PATCH] 模拟器优化
---
ruoyi-admin/src/main/java/com/ruoyi/config/RedisBtsSimulatorStateStore.java | 22 +++++++++++++++++++++-
1 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/config/RedisBtsSimulatorStateStore.java b/ruoyi-admin/src/main/java/com/ruoyi/config/RedisBtsSimulatorStateStore.java
index 1733bf7..f151ea6 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/config/RedisBtsSimulatorStateStore.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/config/RedisBtsSimulatorStateStore.java
@@ -14,6 +14,7 @@
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.device.simulator.BtsSimulatorStateStore;
+import com.ruoyi.device.simulator.BtsSimulatorStateStore.BtsDeviceProfile;
import com.ruoyi.device.model.DeviceWorkStatus;
/** 将开发模拟器完整状态写入 Redis,主状态不设置普通 TTL。 */
@@ -266,8 +267,20 @@
JSONObject object = jsonObject(value);
List<ChannelState> channels = new ArrayList<>();
requiredArray(object, "channels").forEach(item -> channels.add(channelState(item)));
+ BtsDeviceProfile profile = object.containsKey("profile") ? deviceProfile(object.getJSONObject("profile")) : null;
return new DeviceState(requiredInteger(object, "deviceId"), object.getString("ip"),
- object.getBooleanValue("online"), channels);
+ object.getBooleanValue("online"), channels, profile);
+ }
+
+ private BtsDeviceProfile deviceProfile(JSONObject object)
+ {
+ if (object == null) throw new IllegalStateException("Invalid BTS simulator device profile");
+ return new BtsDeviceProfile(requiredInteger(object, "devtype"), requiredInteger(object, "subDeviceId"),
+ object.getString("name"), object.getString("manufacturer"), object.getString("model"),
+ object.getString("serialNumber"), object.getString("firmwareVersion"),
+ requiredInteger(object, "channelCount"), requiredDecimal(object, "currentMinA"),
+ requiredDecimal(object, "currentMaxA"), requiredDecimal(object, "voltageMinV"),
+ requiredDecimal(object, "voltageMaxV"), requiredInteger(object, "sampleIntervalMs"));
}
private List<CollectorMeasurementRecord> embeddedCollectorHistory(JSONObject object)
@@ -405,6 +418,13 @@
return value;
}
+ private BigDecimal requiredDecimal(JSONObject object, String field)
+ {
+ BigDecimal value = object.getBigDecimal(field);
+ if (value == null) throw new IllegalStateException("Missing BTS simulator state field: " + field);
+ return value;
+ }
+
private Instant requiredInstant(JSONObject object, String field)
{
Instant value = optionalInstant(object, field);
--
Gitblit v1.7.1