From 38673d3a0fe367b944ff6d9579953bb26b391023 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 28 九月 2026 17:49:42 +0800
Subject: [PATCH] 修 22 所取数程序对 NULL 列的兼容与推式来源离线提示的措辞
---
scripts/j22-collector.ps1 | 33 +++++++++++++++++++++------------
battery-business/src/main/java/com/battery/business/service/impl/PushIngestAdapter.java | 3 ++-
2 files changed, 23 insertions(+), 13 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 167a78f..ac014a2 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
@@ -213,7 +213,8 @@
java.util.Date receivedAt = records.selectHeartbeatAt(config.adapterCode());
if (receivedAt == null)
throw new DeviceAdapterException("SOURCE_OFFLINE",
- "尚未收到取数程序的推送:请确认程序已启动并指向 " + config.host() + ":" + config.port(), null);
+ "尚未收到取数程序的推送:请确认 " + config.host()
+ + " 那台机器上的取数程序已启动,并指向本系统的接收端点", null);
Duration staleAfter = staleAfter();
Duration silent = Duration.between(receivedAt.toInstant(), clock.instant());
if (silent.compareTo(staleAfter) > 0)
diff --git a/scripts/j22-collector.ps1 b/scripts/j22-collector.ps1
index 868cf34..50fc189 100644
--- a/scripts/j22-collector.ps1
+++ b/scripts/j22-collector.ps1
@@ -220,20 +220,29 @@
where record_time > @since
"@ @{ '@since' = $since }
foreach ($row in $read) {
+ # 厂商列可能为 NULL:直接强转 [double]/[int] 会抛异常、让整个通道从此不再推进。
+ # 缺列一律转成 JSON null,后端把测量列的缺失当"设备没给",不写零代替缺失。
+ $recordTime = To-Text $row[0]
+ $dataPoint = To-Int $row[1]
+ if ($null -eq $recordTime -or $null -eq $dataPoint) {
+ # 这两个是记录位置与幂等键:缺了无法归属,只能跳过并留下日志
+ Write-Log " 跳过一个缺少 record_time 或 Data_Point 的行 [$key]"
+ continue
+ }
# record_time 是 Int64,超过 JavaScript 安全整数范围:必须以字符串传输
$rows += [pscustomobject]@{
- record_time = [string]$row[0]
- Data_Point = [int]$row[1]
- Schedule_Index = [string]$row[2]
- Step_Index = [int]$row[3]
- Cycle_Index = [int]$row[4]
- Step_Time = [double]$row[5]
- Voltage = [double]$row[6]
- eCurrent = [double]$row[7]
- ChargeCapacity = [double]$row[8]
- DischargeCapacity = [double]$row[9]
- ChargeEnergy = [double]$row[10]
- DischargeEnergy = [double]$row[11]
+ record_time = $recordTime
+ Data_Point = $dataPoint
+ Schedule_Index = To-Text $row[2]
+ Step_Index = To-Int $row[3]
+ Cycle_Index = To-Int $row[4]
+ Step_Time = To-Num $row[5]
+ Voltage = To-Num $row[6]
+ eCurrent = To-Num $row[7]
+ ChargeCapacity = To-Num $row[8]
+ DischargeCapacity = To-Num $row[9]
+ ChargeEnergy = To-Num $row[10]
+ DischargeEnergy = To-Num $row[11]
}
}
}
--
Gitblit v1.7.1