From 691f882740b46c5354fb33404fef6efb370e05dc Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期五, 09 十月 2026 15:52:05 +0800
Subject: [PATCH] 实时行也带上判定出的方向,实时页的工步名称才有值

---
 battery-business/src/main/java/com/battery/business/service/impl/PushIngestAdapter.java |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/battery-business/src/main/java/com/battery/business/service/impl/PushIngestAdapter.java b/battery-business/src/main/java/com/battery/business/service/impl/PushIngestAdapter.java
index 0e3a42e..3feeb40 100644
--- a/battery-business/src/main/java/com/battery/business/service/impl/PushIngestAdapter.java
+++ b/battery-business/src/main/java/com/battery/business/service/impl/PushIngestAdapter.java
@@ -389,16 +389,33 @@
         boolean charging = current.signum() >= 0;
         BigDecimal capacity = charging ? row.getChargeCapacityAh() : row.getDischargeCapacityAh();
         BigDecimal energy = charging ? row.getChargeEnergyWh() : row.getDischargeEnergyWh();
+        // 实时行同样带上方向(类型与名称):甲方那一列「状态」显示的就是它,实时页的"工步名称"要用。
+        StepDirection direction = directionOf(row);
         return new CabinetRealtime(row.getRecordSequence() == null ? 0L : row.getRecordSequence(),
                 row.getDeviceTimeUtc() == null ? null : row.getDeviceTimeUtc().toInstant(),
                 current.doubleValue(), decimal(row.getVoltageV()), decimal(capacity), decimal(energy),
                 row.getCycleNo() == null ? 0 : row.getCycleNo(), row.getStepNo() == null ? 0 : row.getStepNo(),
-                null, null, row.getReceivedAtUtc() == null ? null : row.getReceivedAtUtc().toInstant(),
+                // 注意参数次序:CabinetRealtime 是 stepName 在前、stepType 在后。
+                direction.displayName(), direction.label(),
+                row.getReceivedAtUtc() == null ? null : row.getReceivedAtUtc().toInstant(),
                 row.getDeviceTimeRaw(), row.getTimezoneId(),
                 row.getRelativeTimeSeconds() == null ? null : row.getRelativeTimeSeconds().longValue(),
                 "push:" + row.getRecordKey());
     }
 
+    /**
+     * 单行的方向:这一类来源没有设备侧工步类型,方向只能由电流符号判定(ADR-0067),
+     * 恒正充电、恒负放电、恒为零搁置,电流缺失保持未知。
+     */
+    private static StepDirection directionOf(TDeviceIngestRecord row)
+    {
+        BigDecimal current = row.getCurrentA();
+        if (current == null) return StepDirection.UNKNOWN;
+        if (current.signum() > 0) return StepDirection.CHARGE;
+        if (current.signum() < 0) return StepDirection.DISCHARGE;
+        return StepDirection.REST;
+    }
+
     // ------------------------------------------------------------------ 工步与循环的推导(ADR-0067)
 
     /** 分段推导的结果:来源库、已结束的各段,以及仍在进行的那一段所属的循环号。 */

--
Gitblit v1.7.1