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); - } - } - /** * 发布设备属性消息 *