From 1de35281a699b8d2ca90777f63c7e032c3c9dc3d Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 12 十月 2026 13:34:34 +0800
Subject: [PATCH] 对接第 6 台新威上位机(7.6 客户端,走库路线),并修两处对接中暴露的问题

---
 ruoyi-admin/src/test/java/com/battery/business/service/impl/TestConsoleDataRevisionQueryServiceTest.java |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/test/java/com/battery/business/service/impl/TestConsoleDataRevisionQueryServiceTest.java b/ruoyi-admin/src/test/java/com/battery/business/service/impl/TestConsoleDataRevisionQueryServiceTest.java
index 49098e6..8791830 100644
--- a/ruoyi-admin/src/test/java/com/battery/business/service/impl/TestConsoleDataRevisionQueryServiceTest.java
+++ b/ruoyi-admin/src/test/java/com/battery/business/service/impl/TestConsoleDataRevisionQueryServiceTest.java
@@ -18,6 +18,13 @@
     private final TTestMapper mapper = mock(TTestMapper.class);
     private final TestConsoleDataServiceImpl service = new TestConsoleDataServiceImpl(mapper);
 
+    @org.junit.jupiter.api.BeforeEach void generatedRevisionId()
+    {
+        when(mapper.insertDataRevisionAction(any())).thenAnswer(call -> {
+            ((TTestDataRevisionAction) call.getArgument(0)).setActionId(1L); return 1;
+        });
+    }
+
     @Test void savesDatabaseBeforeContentInsteadOfClientClaims()
     {
         var action = action("EDIT", "realtime:7");
@@ -65,6 +72,26 @@
         verify(mapper, never()).insertDataRevisionAction(any());
     }
 
+    @Test void medianEditAuditsPreviousValuesAndPreservesLegacyFacts()
+    {
+        var action = action("EDIT", "step:7"); action.setDataType("STEP");
+        String previous = "{\"chargeMedianVoltage\":0,\"dischargeMedianVoltage\":1.1709,\"chargePeakVoltage\":1.8,\"dischargeValleyVoltage\":0.8}";
+        when(mapper.selectDataRecord(1L, "STEP", 7L)).thenReturn(Map.of("extension_measurements_json", previous));
+        var item = new DataRevisionItem(); item.setStableIdentity("step:7");
+        item.setFieldValues("{\"chargeMedianVoltage\":1.6431,\"dischargeMedianVoltage\":null}");
+        service.submitAction(action, List.of(item));
+        assertEquals(previous, JSON.parseArray(action.getBeforeContentJson()).getJSONObject(0).getString("extension_measurements_json"));
+        var before = JSON.parseArray(action.getChangesSummary()).getJSONObject(0).getJSONObject("before");
+        assertEquals(new BigDecimal("1.1709"), before.getBigDecimal("dischargeMedianVoltage"));
+        var values = org.mockito.ArgumentCaptor.forClass(Map.class);
+        verify(mapper).updateDataRecord(eq(1L), eq("STEP"), eq(7L), values.capture());
+        var extension = JSON.parseObject(values.getValue().get("extension_measurements_json").toString());
+        assertEquals(new BigDecimal("1.6431"), extension.getBigDecimal("chargeMedianVoltage"));
+        assertNull(extension.get("dischargeMedianVoltage"));
+        assertEquals(new BigDecimal("1.8"), extension.getBigDecimal("chargePeakVoltage"));
+        assertEquals(new BigDecimal("0.8"), extension.getBigDecimal("dischargeValleyVoltage"));
+    }
+
     @Test void rejectsIdentityEditsAndNonNumericMeasurements()
     {
         when(mapper.selectDataRecord(1L, "REALTIME", 7L)).thenReturn(Map.of("voltage_v", 3.7));

--
Gitblit v1.7.1