From 8761644af158c5e7f05e999e9834b6496ce414e7 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 29 八月 2026 16:04:31 +0800
Subject: [PATCH] 优化采集器长时历史的有界读取

---
 ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 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 e417b5a..58a90fe 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
@@ -9,6 +9,7 @@
 public interface BtsSimulatorStateStore
 {
     int CURRENT_VERSION = 1;
+    int MAX_HISTORY_BATCH_SIZE = 1000;
 
     /** 读取已有状态;仅在状态不存在时原子写入并返回默认状态。 */
     SimulatorState loadOrInitialize(SimulatorState defaultState);
@@ -27,10 +28,14 @@
         save(state);
     }
 
-    /** 读取指定采集器的只追加原始历史。 */
-    default List<CollectorMeasurementRecord> loadCollectorHistory(String collectorCode)
+    /** 按原始写入顺序或反向顺序读取有界历史批次。 */
+    default CollectorHistoryBatch loadCollectorHistoryPage(String collectorCode, long offset, int limit,
+            boolean reverse)
     {
-        return List.of();
+        if (offset < 0) throw new IllegalArgumentException("offset must not be negative");
+        if (limit < 1 || limit > MAX_HISTORY_BATCH_SIZE)
+            throw new IllegalArgumentException("limit must be between 1 and " + MAX_HISTORY_BATCH_SIZE);
+        return new CollectorHistoryBatch(offset, 0, false, 0, List.of());
     }
 
     /** 原子保存删除采集器后的主状态,并删除该采集器的独立历史。 */
@@ -110,6 +115,12 @@
         public CollectorHistoryAppend { records = List.copyOf(records); }
     }
 
+    record CollectorHistoryBatch(long offset, long nextOffset, boolean hasMore, long total,
+            List<CollectorMeasurementRecord> records)
+    {
+        public CollectorHistoryBatch { records = List.copyOf(records); }
+    }
+
     record CollectorHistoryFaults(List<Long> missingSequences, Long duplicateSequence,
             Long conflictingSequence, boolean outOfOrder)
     {

--
Gitblit v1.7.1