From 50452bec004efa46cb261fb92949558bf0cd88e4 Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 20 Jan 2026 16:30:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor(ops):=20=E6=9B=B4=E6=96=B0=20EventHand?= =?UTF-8?q?ler=20=E4=BD=BF=E7=94=A8=E6=96=B0=E7=9A=84=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新各事件处理器以使用重构后的服务: - CleanOrderEventListener: 使用 VoiceBroadcastService - CleanOrderAuditEventHandler: 使用 VoiceBroadcastService - CleanOrderConfirmEventHandler: 使用 VoiceBroadcastService - BadgeDeviceStatusEventHandler: 更新 import 路径至 environment 模块 Co-Authored-By: Claude Opus 4.5 --- .../consumer/CleanOrderAuditEventHandler.java | 29 +++---------------- .../CleanOrderConfirmEventHandler.java | 26 +++-------------- .../BadgeDeviceStatusEventHandler.java | 2 +- .../listener/CleanOrderEventListener.java | 21 +++++--------- 4 files changed, 16 insertions(+), 62 deletions(-) diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/consumer/CleanOrderAuditEventHandler.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/consumer/CleanOrderAuditEventHandler.java index 4e1e415..2b42e5c 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/consumer/CleanOrderAuditEventHandler.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/consumer/CleanOrderAuditEventHandler.java @@ -6,8 +6,7 @@ import com.viewsh.module.ops.infrastructure.log.context.BusinessLogContext; import com.viewsh.module.ops.infrastructure.log.enumeration.LogScope; import com.viewsh.module.ops.infrastructure.log.enumeration.LogType; import com.viewsh.module.ops.infrastructure.log.publisher.BusinessLogPublisher; -import com.viewsh.module.iot.api.device.IotDeviceControlApi; -import com.viewsh.module.iot.api.device.dto.IotDeviceServiceInvokeReqDTO; +import com.viewsh.module.ops.environment.service.voice.VoiceBroadcastService; import com.viewsh.module.ops.dal.dataobject.workorder.OpsOrderDO; import com.viewsh.module.ops.dal.mysql.workorder.OpsOrderMapper; import com.viewsh.module.ops.enums.WorkOrderStatusEnum; @@ -80,7 +79,7 @@ public class CleanOrderAuditEventHandler implements RocketMQListener { private BusinessLogPublisher businessLogPublisher; @Resource - private IotDeviceControlApi iotDeviceControlApi; + private VoiceBroadcastService voiceBroadcastService; @Resource private OpsOrderMapper opsOrderMapper; @@ -231,28 +230,8 @@ public class CleanOrderAuditEventHandler implements RocketMQListener { */ private void sendTts(Long deviceId, String text) { try { - // 1. 构建参数 - Map params = new HashMap<>(); - params.put("text", text); - params.put("volume", 80); // 默认音量 80% - - IotDeviceServiceInvokeReqDTO reqDTO = IotDeviceServiceInvokeReqDTO.builder() - .deviceId(deviceId) - .identifier("playVoice") // 语音播报服务标识符 - .params(params) - .timeoutSeconds(30) - .build(); - - // 2. 调用 IoT 模块 RPC 接口 - var result = iotDeviceControlApi.invokeService(reqDTO); - - if (result.getData() != null && result.getData().getSuccess()) { - log.info("[CleanOrderAuditEventHandler] TTS 下发成功: deviceId={}, text={}", deviceId, text); - } else { - log.warn("[CleanOrderAuditEventHandler] TTS 下发失败: deviceId={}, error={}", - deviceId, result.getData() != null ? result.getData().getErrorMsg() : "Unknown error"); - } - + voiceBroadcastService.broadcast(deviceId, text, 80); + log.info("[CleanOrderAuditEventHandler] TTS 下发成功: deviceId={}, text={}", deviceId, text); } catch (Exception e) { log.error("[CleanOrderAuditEventHandler] TTS 下发异常: deviceId={}", deviceId, e); } diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/consumer/CleanOrderConfirmEventHandler.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/consumer/CleanOrderConfirmEventHandler.java index 6a3a423..4d64f5b 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/consumer/CleanOrderConfirmEventHandler.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/consumer/CleanOrderConfirmEventHandler.java @@ -1,9 +1,8 @@ package com.viewsh.module.ops.environment.integration.consumer; import com.fasterxml.jackson.databind.ObjectMapper; -import com.viewsh.module.iot.api.device.IotDeviceControlApi; -import com.viewsh.module.iot.api.device.dto.IotDeviceServiceInvokeReqDTO; import com.viewsh.module.ops.core.lifecycle.OrderLifecycleManager; +import com.viewsh.module.ops.environment.service.voice.VoiceBroadcastService; import com.viewsh.module.ops.core.lifecycle.model.OrderTransitionRequest; import com.viewsh.module.ops.dal.dataobject.workorder.OpsOrderDO; import com.viewsh.module.ops.dal.mysql.workorder.OpsOrderMapper; @@ -64,7 +63,7 @@ public class CleanOrderConfirmEventHandler implements RocketMQListener { private BusinessLogPublisher businessLogPublisher; @Resource - private IotDeviceControlApi iotDeviceControlApi; + private VoiceBroadcastService voiceBroadcastService; @Override public void onMessage(String message) { @@ -146,25 +145,8 @@ public class CleanOrderConfirmEventHandler implements RocketMQListener { return; } try { - Map params = new HashMap<>(); - params.put("text", text); - params.put("volume", 80); - - IotDeviceServiceInvokeReqDTO req = IotDeviceServiceInvokeReqDTO.builder() - .deviceId(deviceId) - .identifier("playVoice") - .params(params) - .timeoutSeconds(30) - .build(); - - var result = iotDeviceControlApi.invokeService(req); - - if (result.getData() != null && result.getData().getSuccess()) { - log.info("[CleanOrderConfirmEventHandler] TTS 下发成功: deviceId={}, text={}", deviceId, text); - } else { - log.warn("[CleanOrderConfirmEventHandler] TTS 下发失败: deviceId={}, error={}", - deviceId, result.getData() != null ? result.getData().getErrorMsg() : "Unknown error"); - } + voiceBroadcastService.broadcast(deviceId, text, 80); + log.info("[CleanOrderConfirmEventHandler] TTS 下发成功: deviceId={}, text={}", deviceId, text); } catch (Exception e) { log.error("[CleanOrderConfirmEventHandler] TTS 发送失败: deviceId={}", deviceId, e); } diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/BadgeDeviceStatusEventHandler.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/BadgeDeviceStatusEventHandler.java index c593654..d81e50f 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/BadgeDeviceStatusEventHandler.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/BadgeDeviceStatusEventHandler.java @@ -1,6 +1,6 @@ package com.viewsh.module.ops.environment.integration.handler; -import com.viewsh.module.ops.core.badge.BadgeDeviceStatusService; +import com.viewsh.module.ops.environment.service.badge.BadgeDeviceStatusService; import com.viewsh.module.ops.core.event.OrderStateChangedEvent; import com.viewsh.module.ops.enums.BadgeDeviceStatusEnum; import com.viewsh.module.ops.enums.WorkOrderStatusEnum; diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/CleanOrderEventListener.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/CleanOrderEventListener.java index c891f5c..2efdbb4 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/CleanOrderEventListener.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/CleanOrderEventListener.java @@ -17,7 +17,7 @@ import com.viewsh.module.ops.environment.dal.dataobject.workorder.OpsOrderCleanE import com.viewsh.module.ops.environment.dal.mysql.workorder.OpsOrderCleanExtMapper; import com.viewsh.module.ops.environment.service.cleaner.CleanerStatusService; import com.viewsh.module.ops.environment.service.cleanorder.CleanOrderService; -import com.viewsh.module.ops.environment.service.voice.VoiceBroadcastDeduplicationService; +import com.viewsh.module.ops.environment.service.voice.VoiceBroadcastService; import com.viewsh.module.system.api.notify.NotifyMessageSendApi; import com.viewsh.module.system.api.notify.dto.NotifySendSingleToUserReqDTO; import jakarta.annotation.Resource; @@ -67,7 +67,7 @@ public class CleanOrderEventListener { private CleanOrderService cleanOrderService; @Resource - private VoiceBroadcastDeduplicationService voiceBroadcastDeduplicationService; + private VoiceBroadcastService voiceBroadcastService; @Resource private NotifyMessageSendApi notifyMessageSendApi; @@ -366,8 +366,9 @@ public class CleanOrderEventListener { try { log.info("[待办增加通知] cleanerId={}, queueCount={}", cleanerId, queueCount); - // 1. 使用去重服务合并播报 - voiceBroadcastDeduplicationService.recordAndBroadcast(cleanerId, 1, false); + // 1. 语音播报 + String voiceMessage = CleanNotificationConstants.VoiceHelper.formatQueuedOrder(queueCount, 1); + playVoice(cleanerId, voiceMessage); // 2. 震动提醒 vibrate(cleanerId, CleanNotificationConstants.VibrationDuration.LIGHT); @@ -488,7 +489,7 @@ public class CleanOrderEventListener { playVoice(cleanerId, CleanNotificationConstants.VoiceMessage.NEW_ORDER); } - // ==================== IoT 设备操作方法 ==================== + // ==================== IoT 设备操作���法 ==================== /** * 语音播报 @@ -501,15 +502,7 @@ public class CleanOrderEventListener { return; } - IotDeviceServiceInvokeReqDTO reqDTO = new IotDeviceServiceInvokeReqDTO(); - reqDTO.setDeviceId(deviceId); - reqDTO.setIdentifier("playVoice"); - reqDTO.setParams(MapUtil.builder() - .put("text", message) - .put("volume", 80) - .build()); - - iotDeviceControlApi.invokeService(reqDTO); + voiceBroadcastService.broadcast(deviceId, message); log.debug("[语音播报] 调用成功: cleanerId={}, deviceId={}, message={}", cleanerId, deviceId, message); } catch (Exception e) {