From 0e9e73f922509c4ccd5be6dac50bc74df35364eb Mon Sep 17 00:00:00 2001 From: tianyongbao Date: Wed, 24 Jun 2026 19:24:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=9B=90=E5=BA=A6=E8=A1=A5=E5=81=BF?= =?UTF-8?q?=E8=AE=BE=E5=AE=9A=E5=80=BC=E5=90=8C=E6=AD=A5=E5=88=B0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E8=A1=A8=E4=B8=AD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../intc/iot/handler/DeviceDataHandler.java | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/intc-modules/intc-iot/src/main/java/com/intc/iot/handler/DeviceDataHandler.java b/intc-modules/intc-iot/src/main/java/com/intc/iot/handler/DeviceDataHandler.java index 98d4280..85035d4 100644 --- a/intc-modules/intc-iot/src/main/java/com/intc/iot/handler/DeviceDataHandler.java +++ b/intc-modules/intc-iot/src/main/java/com/intc/iot/handler/DeviceDataHandler.java @@ -295,7 +295,12 @@ public class DeviceDataHandler { log.error("保存数据失败[{}]: {}", deviceName, e.getMessage()); } } -// + + // 处理 salinitySet(盐度补偿设定值):同步到设备表,不入 TDengine + if (params != null) { + handleSalinitySet(deviceName, params); + } + // 检查是否触发报警 if (params != null && sensorData != null) { checkAndTriggerAlarm(productKey, deviceName, sensorData); @@ -2601,6 +2606,44 @@ public class DeviceDataHandler { } } + /** + * 处理 salinitySet(盐度补偿设定值) + * 设备上报的盐度补偿设定值同步更新到设备表(Device.salinityCompensation),不入 TDengine。 + * 通过遍历 keySet 做精确字符串比较,避免 Hutool ignoreCase 下 salinitySet 误匹配为 salinity。 + * + * @param deviceName 设备名称(serialNum) + * @param params 上报参数 + */ + private void handleSalinitySet(String deviceName, JSONObject params) { + for (String k : params.keySet()) { + if ("salinitySet".equals(k)) { + Double salinitySet = params.getDouble(k); + if (salinitySet != null) { + try { + Device device = deviceMapper.selectOne( + new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() + .eq(Device::getSerialNum, deviceName) + .select(Device::getId) + .last("LIMIT 1") + ); + if (device == null) { + log.debug("设备不存在,无法更新盐度补偿设定值: {}", deviceName); + return; + } + Device updateDevice = new Device(); + updateDevice.setId(device.getId()); + updateDevice.setSalinityCompensation(salinitySet); + deviceMapper.updateById(updateDevice); + log.debug("盐度补偿设定值已同步到设备表: {} = {}", deviceName, salinitySet); + } catch (Exception e) { + log.error("更新盐度补偿设定值失败[{}]: {}", deviceName, e.getMessage()); + } + } + return; + } + } + } + /** * 更新设备表的实时数据 *