From 091c09f4ef03d458209bce878451e0a7e667529b Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期日, 06 九月 2026 00:26:28 +0800
Subject: [PATCH] 拒绝与已有扩展测量不同的导入批次

---
 battery-business/src/main/java/com/battery/business/service/impl/TestConsoleDataServiceImpl.java |    4 +++-
 ruoyi-admin/src/test/java/com/battery/business/web/ConsoleSingleSheetImportDatabaseTest.java     |   11 +++++++++++
 2 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/battery-business/src/main/java/com/battery/business/service/impl/TestConsoleDataServiceImpl.java b/battery-business/src/main/java/com/battery/business/service/impl/TestConsoleDataServiceImpl.java
index f57eb5f..07c13c3 100644
--- a/battery-business/src/main/java/com/battery/business/service/impl/TestConsoleDataServiceImpl.java
+++ b/battery-business/src/main/java/com/battery/business/service/impl/TestConsoleDataServiceImpl.java
@@ -370,7 +370,9 @@
             {
                 Map<String, Object> expected = JSON.parseObject(String.valueOf(left));
                 Map<String, Object> actual = right == null ? Map.of() : JSON.parseObject(right.toString());
-                for (String field : expected.keySet()) if (!sameValue(expected.get(field), actual.get(field))) return false;
+                // 已有额外非空测量也属于内容差异;缺失与空值仍等价。
+                Set<String> fields = new HashSet<>(expected.keySet()); fields.addAll(actual.keySet());
+                for (String field : fields) if (!sameValue(expected.get(field), actual.get(field))) return false;
             }
             else if (!sameValue(left, right)) return false;
         }
diff --git a/ruoyi-admin/src/test/java/com/battery/business/web/ConsoleSingleSheetImportDatabaseTest.java b/ruoyi-admin/src/test/java/com/battery/business/web/ConsoleSingleSheetImportDatabaseTest.java
index d2b0686..a82596b 100644
--- a/ruoyi-admin/src/test/java/com/battery/business/web/ConsoleSingleSheetImportDatabaseTest.java
+++ b/ruoyi-admin/src/test/java/com/battery/business/web/ConsoleSingleSheetImportDatabaseTest.java
@@ -196,6 +196,17 @@
         assertWorkbookEmpty();
     }
 
+    @Test void workbookRejectsExistingExtraStepMeasurementInsteadOfSkippingIt()
+    {
+        submit("STEP", List.of(row()));
+        jdbc.update("update t_test_step_record set extension_measurements_json=?", "{\"stepDuration\":3752,\"auxTemperature\":99}");
+        var sheets = Map.of("REALTIME", List.of(row()), "STEP", List.of(row()), "CYCLE", List.of(row()));
+        assertTrue(assertThrows(RuntimeException.class, () -> submitWorkbook(sheets)).getMessage().contains("冲突拒绝"));
+        assertTrue(mapper.selectImportDataRecords(1L, "REALTIME").isEmpty());
+        assertTrue(mapper.selectImportDataRecords(1L, "CYCLE").isEmpty());
+        assertEquals(1, service.selectActions(new TTestDataRevisionAction()).size());
+    }
+
     private void assertWorkbookEmpty()
     {
         for (String type : List.of("REALTIME", "STEP", "CYCLE")) assertTrue(mapper.selectImportDataRecords(1L, type).isEmpty());

--
Gitblit v1.7.1