yeg
2026-09-29 b78295e8da96c3e5e76befeef9582ce5273dbb74
battery-business/src/main/java/com/battery/business/service/impl/TestDataQueryServiceImpl.java
@@ -25,7 +25,14 @@
    @Override public List<Map<String, Object>> records(Long testId)
    {
        tests.selectTestById(testId);
        return normalizeApiTimes(mapper.selectPersistedFinalRealtimeRecords(testId));
        List<Map<String, Object>> rows = normalizeApiTimes(mapper.selectPersistedFinalRealtimeRecords(testId));
        for (Map<String, Object> row : rows)
        {
            Object extension = row.get("extensionMeasurementsJson");
            if (extension != null) row.put("relativeTimeSeconds",
                    com.alibaba.fastjson2.JSON.parseObject(extension.toString()).get("relativeTimeSeconds"));
        }
        return rows;
    }
    /** 查询尚存工步记录,包含设备统计与授权历史导入。 */
@@ -38,13 +45,16 @@
            Object extension = row.get("extensionMeasurementsJson");
            if (extension == null) continue;
            Map<String, Object> values = com.alibaba.fastjson2.JSON.parseObject(extension.toString());
            for (String field : List.of("stepDuration", "startVoltage", "chargePeakVoltage", "dischargeValleyVoltage"))
            // 中值与历史峰谷值是不同测量,不将旧扩展字段回退映射为中值。
            // 四组容量能量是设备工步层事实:单项列无法表达未确认方向时,调用方读这四组核对。
            for (String field : List.of("stepDuration", "startVoltage", "chargeMedianVoltage", "dischargeMedianVoltage",
                    "chargeCapacity", "dischargeCapacity", "chargeEnergy", "dischargeEnergy"))
                if (values.containsKey(field)) row.put(field, values.get(field));
        }
        return rows;
    }
    /** 查询尚存循环记录,包含设备统计与授权历史导入。 */
    /** 查询尚存循环记录,包含设备统计、工步层聚合与授权历史导入;携带来源类别供界面标注聚合来源。 */
    @Override public List<Map<String, Object>> cycles(Long testId)
    {
        tests.selectTestById(testId);