| | |
| | | import com.battery.business.mapper.TTestMapper; |
| | | import com.battery.business.service.ITestConsoleDataService; |
| | | import com.battery.business.service.impl.TestConsoleDataServiceImpl; |
| | | import com.battery.business.service.impl.TTestServiceImpl; |
| | | import com.battery.business.service.impl.TestDataQueryServiceImpl; |
| | | import org.apache.ibatis.datasource.unpooled.UnpooledDataSource; |
| | | import org.flywaydb.core.Flyway; |
| | | import org.junit.jupiter.api.Test; |
| | |
| | | @Override public String getUsername() { return "验收操作员"; } |
| | | }; |
| | | ReflectionTestUtils.setField(controller, "consoleDataService", service); |
| | | var tests = new TTestServiceImpl(); |
| | | ReflectionTestUtils.setField(tests, "testMapper", mapper); |
| | | ReflectionTestUtils.setField(controller, "testDataQueryService", new TestDataQueryServiceImpl(mapper, tests)); |
| | | var sample = JSON.parseObject(Files.readString(Path.of(System.getenv("TICKET03_SAMPLE_JSON")))); |
| | | Map<String, List<Map<String, Object>>> sheets = new LinkedHashMap<>(); |
| | | for (String type : List.of("REALTIME", "STEP", "CYCLE")) sheets.put(type, (List) sample.getJSONArray(type).toJavaList(Map.class)); |
| | |
| | | assertEquals(7605, mapper.selectPersistedFinalRealtimeRecords(1L).size()); |
| | | assertEquals(129, mapper.selectPersistedFinalStepRecords(1L).size()); |
| | | assertEquals(33, mapper.selectPersistedFinalCycleRecords(1L).size()); |
| | | // 通过正式查询入口验证真实 JDBC 时间类型,避免内存库时间类型掩盖接口偏差。 |
| | | var json = tools.jackson.databind.json.JsonMapper.builder().findAndAddModules().build(); |
| | | for (var result : List.of(controller.persistedRecords(1L), controller.persistedSteps(1L), controller.persistedCycles(1L))) |
| | | { |
| | | var rows = json.readTree(json.writeValueAsString(result)).get("data"); |
| | | for (var row : rows) for (String field : List.of("deviceTime", "recordedAt", "absoluteTime", "serverReceivedAt")) |
| | | { |
| | | var value = row.get(field); |
| | | if (value != null && !value.isNull()) assertTrue(value.isIntegralNumber(), field + ": " + value); |
| | | } |
| | | } |
| | | var firstRecord = json.readTree(json.writeValueAsString(controller.persistedRecords(1L))).get("data").get(7604); |
| | | assertEquals(1683517331000L, firstRecord.get("deviceTime").longValue()); |
| | | var actions = service.selectActions(new TTestDataRevisionAction()); |
| | | assertEquals(1, actions.size()); |
| | | var revision = service.selectActionById(actions.get(0).getActionId()); |
| | | assertEquals(imported.get("actionId"), revision.getActionId()); |
| | | assertEquals("三 Sheet 共用原因", revision.getReason()); |
| | | var changes = JSON.parseArray(revision.getChangesSummary()); |
| | | assertEquals(7767, changes.size()); |
| | | assertEquals("REALTIME", changes.getJSONObject(0).getString("dataType")); |
| | | assertEquals("STEP", changes.getJSONObject(7605).getString("dataType")); |
| | | assertEquals("CYCLE", changes.getJSONObject(7734).getString("dataType")); |
| | | assertEquals(3, actions.size()); |
| | | assertEquals(3, ((List<?>) imported.get("actionIds")).size()); |
| | | for (var item : actions) { |
| | | var revision = service.selectActionById(item.getActionId()); |
| | | assertEquals("三 Sheet 共用原因", revision.getReason()); |
| | | int expected = switch (revision.getDataType()) { case "REALTIME" -> 7605; case "STEP" -> 129; default -> 33; }; |
| | | assertEquals((long) expected, revision.getAffectedRecordCount()); |
| | | assertNull(revision.getIdentitySummary()); |
| | | assertNull(revision.getChangesSummary()); |
| | | assertNull(revision.getBeforeContentJson()); |
| | | // 页面只返回各类摘要,数据库仍保留该类全部导入明细。 |
| | | var changes = JSON.parseArray(jdbc.queryForObject("select cast(changes_summary as char) from t_test_data_revision_action where action_id=?", String.class, revision.getActionId())); |
| | | assertEquals(expected, changes.size()); |
| | | } |
| | | for (String type : sheets.keySet()) { |
| | | var query = new TTestDataRevisionAction(); query.setTestId(1L); query.setDataType(type); |
| | | assertEquals(1, service.selectActions(query).size()); |
| | |
| | | assertEquals(0, retry.get("importedCount")); assertEquals(7767, retry.get("skippedCount")); assertNull(retry.get("actionId")); |
| | | sheets.get("CYCLE").get(32).put("dischargeCapacity", 99); |
| | | assertThrows(RuntimeException.class, () -> submit(controller, sheets)); |
| | | assertEquals(1, service.selectActions(new TTestDataRevisionAction()).size()); |
| | | assertEquals(3, service.selectActions(new TTestDataRevisionAction()).size()); |
| | | assertTrue(mapper.selectWarningExceptions(1L, null).isEmpty()); |
| | | assertEquals("COMPLETED", mapper.selectTestById(1L).getTestStatus()); |
| | | assertEquals("ENDED", mapper.selectTestById(1L).getReceptionStatus()); |