From fcd5bcd0325f4975316be4161bb6ea99c92b94df Mon Sep 17 00:00:00 2001 From: tianyongbao Date: Thu, 4 Jun 2026 14:57:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=BE=E5=A4=87=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=8A=E6=95=B0=E6=97=B6=E9=97=B4=EF=BC=8C=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../intc/iot/controller/IotController.java | 24 +++++++++++++++++++ .../service/impl/DeviceSensorDataService.java | 11 +++++---- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/intc-modules/intc-iot/src/main/java/com/intc/iot/controller/IotController.java b/intc-modules/intc-iot/src/main/java/com/intc/iot/controller/IotController.java index b99ea3b..2e1dd2a 100644 --- a/intc-modules/intc-iot/src/main/java/com/intc/iot/controller/IotController.java +++ b/intc-modules/intc-iot/src/main/java/com/intc/iot/controller/IotController.java @@ -223,6 +223,10 @@ public class IotController extends BaseController { int updated = 0; int skipped = 0; int failed = 0; + int noReportTime = 0; + int updateNoRows = 0; + List> skippedSamples = new java.util.ArrayList<>(); + List> failedSamples = new java.util.ArrayList<>(); List devices = deviceMapper.selectList( new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() @@ -236,7 +240,9 @@ public class IotController extends BaseController { try { String latestTime = deviceSensorDataService.getLatestReportTime(device.getSerialNum()); if (latestTime == null || latestTime.isBlank()) { + noReportTime++; skipped++; + addBackfillSample(skippedSamples, device, "TDengine未查到最新上数时间"); continue; } @@ -246,10 +252,13 @@ public class IotController extends BaseController { if (deviceMapper.updateById(updateDevice) > 0) { updated++; } else { + updateNoRows++; skipped++; + addBackfillSample(skippedSamples, device, "业务库更新影响行数为0"); } } catch (Exception e) { failed++; + addBackfillSample(failedSamples, device, e.getMessage()); log.warn("回填设备最后上数时间失败: deviceId={}, serialNum={}, error={}", device.getId(), device.getSerialNum(), e.getMessage()); } @@ -260,9 +269,24 @@ public class IotController extends BaseController { result.put("updated", updated); result.put("skipped", skipped); result.put("failed", failed); + result.put("noReportTime", noReportTime); + result.put("updateNoRows", updateNoRows); + result.put("skippedSamples", skippedSamples); + result.put("failedSamples", failedSamples); return result; } + private void addBackfillSample(List> samples, Device device, String reason) { + if (samples.size() >= 10) { + return; + } + Map sample = new java.util.HashMap<>(); + sample.put("deviceId", device.getId()); + sample.put("serialNum", device.getSerialNum()); + sample.put("reason", reason); + samples.add(sample); + } + private Date parseReportTime(String time) { String normalized = normalizeReportTime(time); return Date.from(LocalDateTime.parse(normalized, DATETIME_FORMATTER) diff --git a/intc-modules/intc-tdengine/src/main/java/com/intc/tdengine/service/impl/DeviceSensorDataService.java b/intc-modules/intc-tdengine/src/main/java/com/intc/tdengine/service/impl/DeviceSensorDataService.java index fb7cdb8..698400a 100644 --- a/intc-modules/intc-tdengine/src/main/java/com/intc/tdengine/service/impl/DeviceSensorDataService.java +++ b/intc-modules/intc-tdengine/src/main/java/com/intc/tdengine/service/impl/DeviceSensorDataService.java @@ -266,17 +266,18 @@ public class DeviceSensorDataService implements IDeviceSensorDataService { return null; } try { - Integer exists = deviceSensorDataMapper.checkTableExists(serialNum); - if (exists == null || exists == 0) { - return null; - } DeviceSensorData latest = deviceSensorDataMapper.getLatestReportTime(serialNum); if (latest == null) { return null; } return latest.getCreateTime() != null ? latest.getCreateTime() : latest.getTime(); } catch (Exception e) { - log.warn("查询设备最新上数时间失败: serialNum={}, error={}", serialNum, e.getMessage()); + String errorMsg = e.getMessage(); + if (errorMsg != null && errorMsg.toLowerCase().contains("not exist")) { + log.debug("设备TDengine子表不存在或无数据: serialNum={}", serialNum); + } else { + log.warn("查询设备最新上数时间失败: serialNum={}, error={}", serialNum, errorMsg); + } return null; } }