yeg
2026-09-06 091c09f4ef03d458209bce878451e0a7e667529b
拒绝与已有扩展测量不同的导入批次

比较工步扩展字段的完整键集合,已有额外非空测量不能误判为同内容重复。补充整批拒绝及修订不写入的回归,受影响测试通过。
2个文件已修改
15 ■■■■■ 已修改文件
battery-business/src/main/java/com/battery/business/service/impl/TestConsoleDataServiceImpl.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/test/java/com/battery/business/web/ConsoleSingleSheetImportDatabaseTest.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
        }
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());