From 7ab0e426264707fb85ee38d0a9a73caf41899635 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 29 八月 2026 13:11:40 +0800
Subject: [PATCH] 实现采集器独立实时与历史采样模拟
---
ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java | 48 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 47 insertions(+), 1 deletions(-)
diff --git a/ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java b/ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java
index c1525db..1902705 100644
--- a/ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java
+++ b/ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java
@@ -1,5 +1,6 @@
package com.ruoyi.device.simulator;
+import java.math.BigDecimal;
import java.time.Instant;
import java.util.List;
import com.ruoyi.device.model.DeviceWorkStatus;
@@ -43,7 +44,52 @@
}
record CollectorState(int collectorId, String deviceCode, String ip, String mac, String name,
- String manufacturer, String model, int channelCount, boolean online) { }
+ String manufacturer, String model, int channelCount, boolean online, int sampleIntervalMs,
+ long nextSequence, Instant lastSampledAt, List<CollectorChannelState> channels,
+ List<CollectorMeasurementRecord> history, CollectorHistoryFaults historyFaults)
+ {
+ public CollectorState
+ {
+ channels = List.copyOf(channels);
+ history = List.copyOf(history);
+ historyFaults = historyFaults == null ? CollectorHistoryFaults.none() : historyFaults;
+ }
+
+ /** 兼容只包含发现配置的旧模拟状态;Redis 读取边界会补齐采样合同。 */
+ public CollectorState(int collectorId, String deviceCode, String ip, String mac, String name,
+ String manufacturer, String model, int channelCount, boolean online)
+ {
+ this(collectorId, deviceCode, ip, mac, name, manufacturer, model, channelCount, online,
+ DevelopmentCollectorSimulation.DEFAULT_SAMPLE_INTERVAL_MS, 1L, null,
+ DevelopmentCollectorSimulation.defaultChannels(channelCount), List.of(),
+ CollectorHistoryFaults.none());
+ }
+ }
+
+ record CollectorChannelState(String channelCode, List<CollectorMetricState> metrics)
+ {
+ public CollectorChannelState { metrics = List.copyOf(metrics); }
+ }
+
+ record CollectorMetricState(String metricCode, BigDecimal value, String unit) { }
+
+ record CollectorMeasurementRecord(String adapterCode, String collectorCode, String channelCode,
+ long sequenceId, Instant deviceTime, String deviceTimeRaw, Instant serverReceivedAt,
+ String metricCode, BigDecimal value, String unit) { }
+
+ record CollectorHistoryFaults(List<Long> missingSequences, Long duplicateSequence,
+ Long conflictingSequence, boolean outOfOrder)
+ {
+ public CollectorHistoryFaults
+ {
+ missingSequences = missingSequences == null ? List.of() : List.copyOf(missingSequences);
+ }
+
+ public static CollectorHistoryFaults none()
+ {
+ return new CollectorHistoryFaults(List.of(), null, null, false);
+ }
+ }
record ChannelState(int channelId, boolean online, DeviceWorkStatus workStatus) { }
--
Gitblit v1.7.1