From 0a5fe13e68573eeaa3f654cd968ab728d56ad964 Mon Sep 17 00:00:00 2001 From: lzh Date: Sun, 25 Jan 2026 09:38:28 +0800 Subject: [PATCH] =?UTF-8?q?refactor(iot):=20=E7=A7=BB=E9=99=A4=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E4=BF=9D=E5=AD=98=E4=B8=AD=E7=9A=84=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E8=A7=84=E5=88=99=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 规则处理已迁移到独立消息订阅者 IotCleanRuleMessageHandler 通过订阅同一消息总线的 Topic 异步处理,不再阻塞属性保存主流程 Co-Authored-By: Claude Opus 4.5 --- .../IotDevicePropertyServiceImpl.java | 47 ++----------------- 1 file changed, 5 insertions(+), 42 deletions(-) diff --git a/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/service/device/property/IotDevicePropertyServiceImpl.java b/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/service/device/property/IotDevicePropertyServiceImpl.java index 9dce672..7775fbf 100644 --- a/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/service/device/property/IotDevicePropertyServiceImpl.java +++ b/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/service/device/property/IotDevicePropertyServiceImpl.java @@ -85,14 +85,8 @@ public class IotDevicePropertyServiceImpl implements IotDevicePropertyService { @Resource private IntegrationEventPublisher integrationEventPublisher; - @Resource - private com.viewsh.module.iot.service.rule.clean.processor.TrafficThresholdRuleProcessor trafficThresholdRuleProcessor; - - @Resource - private com.viewsh.module.iot.service.rule.clean.processor.BeaconDetectionRuleProcessor beaconDetectionRuleProcessor; - - @Resource - private com.viewsh.module.iot.service.rule.clean.processor.ButtonEventRuleProcessor buttonEventRuleProcessor; + // 注意:保洁规则处理器已迁移到独立的消息订阅者 IotCleanRuleMessageHandler + // 不再在此同步调用,避免阻塞属性保存主流程 // ========== 设备属性相关操作 ========== @@ -180,45 +174,14 @@ public class IotDevicePropertyServiceImpl implements IotDevicePropertyService { IotDevicePropertyDO.builder().value(entry.getValue()).updateTime(message.getReportTime()).build()); deviceDataRedisDAO.putAll(device.getId(), properties2); - // 2.3 调用规则处理器(保洁工单集成) - processRuleProcessors(device, properties); + // 注意:保洁规则处理已迁移到独立消息订阅者 IotCleanRuleMessageHandler + // 通过订阅同一消息总线的 Topic 异步处理,不再阻塞属性保存主流程 - // 2.4 发布属性消息到 Redis Stream(供其他模块如 Ops 订阅) + // 2.3 发布属性消息到 Redis Stream(供其他模块如 Ops 订阅) // TODO: 暂停发布,后续根据需要开启 // publishPropertyMessage(device, properties, message.getReportTime()); } - /** - * 处理规则处理器(保洁工单集成) - *

- * 在设备属性上报处理流程中调用,检测是否满足工单创建/到岗/完成条件 - * - * @param device 设备信息 - * @param properties 属性数据 - */ - private void processRuleProcessors(IotDeviceDO device, Map properties) { - try { - // 遍历所有属性,调用规则处理器 - for (Map.Entry entry : properties.entrySet()) { - String identifier = entry.getKey(); - Object value = entry.getValue(); - - // 调用客流阈值规则处理器 - trafficThresholdRuleProcessor.processPropertyChange(device.getId(), identifier, value); - - // 调用蓝牙信标检测规则处理器 - beaconDetectionRuleProcessor.processPropertyChange(device.getId(), identifier, value); - - // 调用按键事件规则处理器 - buttonEventRuleProcessor.processPropertyChange(device.getId(), identifier, value); - } - } catch (Exception e) { - // 规则处理器异常不应阻塞属性上报主流程 - log.error("[processRuleProcessors] 规则处理器调用失败: deviceId={}, properties={}", - device.getId(), properties.keySet(), e); - } - } - /** * 发布设备属性消息 *