From c2dd019c1fddaeae412e2b6f44fb86ff0dc635d4 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期三, 02 九月 2026 22:08:16 +0800
Subject: [PATCH] 实现主动轮询完整实时快照

---
 ruoyi-system/src/main/resources/mapper/system/TTestMapper.xml |   41 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/ruoyi-system/src/main/resources/mapper/system/TTestMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TTestMapper.xml
index 56b7312..ebd26ac 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TTestMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TTestMapper.xml
@@ -318,6 +318,47 @@
     <select id="selectReceivingTestIds" resultType="long">
         select test_id from t_test where del_flag = 0 and reception_status = 'RECEIVING' order by test_id
     </select>
+    <insert id="insertRealtimeSnapshot">
+        insert ignore into t_test_realtime_snapshot
+        (test_id, binding_id, channel_id, collector_id, capture_slot_utc,
+         cabinet_sequence_id, cabinet_device_time_utc, cabinet_device_time_raw,
+         collector_sequence_id, collector_device_time_utc, collector_device_time_raw,
+         server_received_at_utc, cycle_no, step_no, step_type, step_name,
+         voltage_v, current_a, capacity_ah, energy_wh, temperature, positive_potential,
+         negative_potential, extension_measurements_json, content_sha256)
+        values (#{testId}, #{bindingId}, #{channelId}, #{collectorId}, #{captureSlotUtc},
+                #{cabinetSequenceId}, #{cabinetDeviceTimeUtc}, #{cabinetDeviceTimeRaw},
+                #{collectorSequenceId}, #{collectorDeviceTimeUtc}, #{collectorDeviceTimeRaw},
+                #{serverReceivedAtUtc}, #{cycleNo}, #{stepNo}, #{stepType}, #{stepName},
+                #{voltageV}, #{currentA}, #{capacityAh}, #{energyWh}, #{temperature}, #{positivePotential},
+                #{negativePotential}, #{extensionMeasurementsJson}, #{contentSha256})
+    </insert>
+    <select id="selectPersistedRealtimeSnapshots" resultType="map">
+        select concat('snapshot:', snapshot.snapshot_id) id,
+               concat('snapshot:', snapshot.snapshot_id) stableIdentity,
+               concat('RS-', snapshot.snapshot_id) recordNo,
+               'SNAPSHOT' sourceType, battery.battery_no batteryNo,
+               snapshot.cycle_no cycleNo, snapshot.step_no stepNo, snapshot.step_name stepName,
+               snapshot.cabinet_sequence_id sequenceId,
+               snapshot.cabinet_device_time_utc recordedAt, snapshot.cabinet_device_time_utc absoluteTime,
+               snapshot.cabinet_device_time_utc deviceTime, snapshot.server_received_at_utc serverReceivedAt,
+               snapshot.snapshot_id snapshotId,
+               snapshot.temperature temperature, snapshot.positive_potential positivePotential,
+               snapshot.negative_potential negativePotential,
+               snapshot.voltage_v voltage, snapshot.current_a current,
+               snapshot.capacity_ah capacity, snapshot.energy_wh energy,
+               channel.adapter_id adapterId, channel.adapter_code adapterCode,
+               channel.devtype devtype, channel.devid deviceId, channel.subdevid subdevid, channel.chlid channelId,
+               collector.collector_id collectorId, collector.collector_code collectorCode,
+               snapshot.extension_measurements_json extensionMeasurementsJson
+        from t_test_realtime_snapshot snapshot
+        join t_test_channel_binding binding on binding.binding_id = snapshot.binding_id
+        join t_test_battery battery on battery.relation_id = binding.battery_relation_id and battery.del_flag = 0
+        join t_detection_channel channel on channel.channel_id = snapshot.channel_id and channel.del_flag = 0
+        join t_collector collector on collector.collector_id = snapshot.collector_id
+        where snapshot.test_id = #{testId}
+        order by snapshot.capture_slot_utc desc, snapshot.snapshot_id desc
+    </select>
     <select id="selectPersistedRecords" resultType="map">
         select sample.sample_id id,
                concat('RD-', channel.devid, '-', channel.chlid, '-', lpad(sample.seq_id, 6, '0')) recordNo,

--
Gitblit v1.7.1