From 267bc59a8f080043a1258cb8454dfeefce7c8a14 Mon Sep 17 00:00:00 2001 From: my_local_kimi_dev2 Date: Tue, 22 Sep 2026 11:36:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(es):=20=E7=94=B5=E9=87=8F=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=BD=92=E4=B8=80=E5=8C=96=E2=80=94=E2=80=94value=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=BD=A2=E6=80=81=E3=80=81?= =?UTF-8?q?createTime=20ISO=20=E6=96=87=E6=9C=AC=E8=BD=AC=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 生产 _source 实测:value 索引为文本("28"/"100"),原 isNumber 判空 导致 value 恒 null;createTime 为 ISO 文本(2026-09-21T10:00:00.000+08:00), 原样输出与老系统 yyyy-MM-dd HH:mm:ss 口径不一致,统一归一。 --- .../es/ElectricityMessageEsGatewayImpl.java | 39 ++++++++++++++++--- .../ElectricityMessageEsGatewayImplTest.java | 2 +- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/xiaoqu-agent-service/src/main/java/me/iiv/agent/es/ElectricityMessageEsGatewayImpl.java b/xiaoqu-agent-service/src/main/java/me/iiv/agent/es/ElectricityMessageEsGatewayImpl.java index 94280a5..4309b07 100644 --- a/xiaoqu-agent-service/src/main/java/me/iiv/agent/es/ElectricityMessageEsGatewayImpl.java +++ b/xiaoqu-agent-service/src/main/java/me/iiv/agent/es/ElectricityMessageEsGatewayImpl.java @@ -12,8 +12,10 @@ import org.springframework.stereotype.Component; import java.io.IOException; import java.time.Instant; +import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.ArrayList; import java.util.List; @@ -93,23 +95,48 @@ public class ElectricityMessageEsGatewayImpl implements ElectricityMessageEsGate } /** - * createTime 在索引里是 date 类型,_source 里可能是 ISO 文本也可能是 epoch 毫秒数; - * 两种形态都归一为 Asia/Shanghai yyyy-MM-dd HH:mm:ss 文本输出。 + * createTime 在 _source 里是 ISO 文本(如 2026-09-21T10:00:00.000+08:00)或 epoch 毫秒数; + * 两种形态都归一为 Asia/Shanghai yyyy-MM-dd HH:mm:ss 文本输出(对齐老系统 Date 格式化口径)。 */ private static String createTimeText(JsonNode value) { if (value == null || value.isNull()) { return null; } - if (value.isTextual()) { - return value.asText(); - } if (value.isNumber()) { return TIME_FORMATTER.format(Instant.ofEpochMilli(value.longValue())); } + if (value.isTextual()) { + String text = value.asText(); + if (text.indexOf('T') >= 0) { + try { + return TIME_FORMATTER.format(OffsetDateTime.parse(text)); + } catch (DateTimeParseException e) { + return text; + } + } + return text; + } return null; } + /** + * value 在 _source 里可能是数字也可能是字符串(索引实际为 "28"/"100" 文本), + * 统一解析为 Integer;非数值文本返回 null。 + */ private static Integer integerValue(JsonNode value) { - return value != null && value.isNumber() ? value.intValue() : null; + if (value == null || value.isNull()) { + return null; + } + if (value.isNumber()) { + return value.intValue(); + } + if (value.isTextual()) { + try { + return Integer.valueOf(value.asText().trim()); + } catch (NumberFormatException e) { + return null; + } + } + return null; } } diff --git a/xiaoqu-agent-service/src/test/java/me/iiv/agent/es/ElectricityMessageEsGatewayImplTest.java b/xiaoqu-agent-service/src/test/java/me/iiv/agent/es/ElectricityMessageEsGatewayImplTest.java index ec530a0..f0173c7 100644 --- a/xiaoqu-agent-service/src/test/java/me/iiv/agent/es/ElectricityMessageEsGatewayImplTest.java +++ b/xiaoqu-agent-service/src/test/java/me/iiv/agent/es/ElectricityMessageEsGatewayImplTest.java @@ -37,7 +37,7 @@ class ElectricityMessageEsGatewayImplTest { + "\"hits\":{\"total\":{\"value\":2,\"relation\":\"eq\"}," + "\"hits\":[" + "{\"_index\":\"electricitymessage_202609\"," - + "\"_source\":{\"createTime\":\"2026-09-21 10:00:00\",\"messageType\":0,\"value\":88}}," + + "\"_source\":{\"createTime\":\"2026-09-21T10:00:00.000+08:00\",\"messageType\":0,\"value\":\"88\"}}," + "{\"_index\":\"electricitymessage_202609\"," + "\"_source\":{\"createTime\":" + EPOCH_MILLIS + ",\"messageType\":4,\"value\":3700}}" + "]}}";