refactor(ops): 更新 EventHandler 使用新的服务入口

更新各事件处理器以使用重构后的服务:
- CleanOrderEventListener: 使用 VoiceBroadcastService
- CleanOrderAuditEventHandler: 使用 VoiceBroadcastService
- CleanOrderConfirmEventHandler: 使用 VoiceBroadcastService
- BadgeDeviceStatusEventHandler: 更新 import 路径至 environment 模块

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
lzh
2026-01-20 16:30:44 +08:00
parent 0c91cbf75c
commit 50452bec00
4 changed files with 16 additions and 62 deletions

View File

@@ -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<String> {
private BusinessLogPublisher businessLogPublisher;
@Resource
private IotDeviceControlApi iotDeviceControlApi;
private VoiceBroadcastService voiceBroadcastService;
@Resource
private OpsOrderMapper opsOrderMapper;
@@ -231,28 +230,8 @@ public class CleanOrderAuditEventHandler implements RocketMQListener<String> {
*/
private void sendTts(Long deviceId, String text) {
try {
// 1. 构建参数
Map<String, Object> 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);
}

View File

@@ -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<String> {
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<String> {
return;
}
try {
Map<String, Object> 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);
}

View File

@@ -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;

View File

@@ -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 设备操作<EFBFBD><EFBFBD><EFBFBD>法 ====================
/**
* 语音播报
@@ -501,15 +502,7 @@ public class CleanOrderEventListener {
return;
}
IotDeviceServiceInvokeReqDTO reqDTO = new IotDeviceServiceInvokeReqDTO();
reqDTO.setDeviceId(deviceId);
reqDTO.setIdentifier("playVoice");
reqDTO.setParams(MapUtil.<String, Object>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) {