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 b63cc3c..6a3a423 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 @@ -44,6 +44,10 @@ public class CleanOrderConfirmEventHandler implements RocketMQListener { private static final String DEDUP_KEY_PATTERN = "ops:clean:dedup:confirm:%s"; private static final int DEDUP_TTL_SECONDS = 300; + private static final String TTS_ORDER_IN_PROGRESS = "工单已在进行中"; + private static final String TTS_CANNOT_CONFIRM = "当前状态无法确认工单"; + private static final String TTS_CONFIRM_SUCCESS = "工单已确认,请前往作业区域开始作业"; + @Resource private ObjectMapper objectMapper; @@ -94,14 +98,14 @@ public class CleanOrderConfirmEventHandler implements RocketMQListener { // 4. 状态检查 // 如果已在进行中 (CONFIRMED or ARRIVED),提示"工单已在进行中" if (currentStatus == WorkOrderStatusEnum.CONFIRMED || currentStatus == WorkOrderStatusEnum.ARRIVED) { - sendTTS(event.getDeviceId(), "工单已在进行中"); + sendTts(event.getDeviceId(), TTS_ORDER_IN_PROGRESS); return; } // 检查是否可以确认 if (!currentStatus.canConfirm()) { log.warn("[CleanOrderConfirmEventHandler] 当前状态无法确认工单: orderId={}, status={}", orderId, currentStatus); - sendTTS(event.getDeviceId(), "当前状态无法确认工单"); + sendTts(event.getDeviceId(), TTS_CANNOT_CONFIRM); return; } @@ -111,7 +115,7 @@ public class CleanOrderConfirmEventHandler implements RocketMQListener { .targetStatus(WorkOrderStatusEnum.CONFIRMED) .reason("工牌按键确认") .operatorType(OperatorTypeEnum.CLEANER) - .operatorId(order.getAssigneeId()) + .operatorId(order.getAssigneeId() != null ? order.getAssigneeId() : 0L) .build(); orderLifecycleManager.transition(request); @@ -126,8 +130,7 @@ public class CleanOrderConfirmEventHandler implements RocketMQListener { // 7. 发送 TTS 通知 // "工单已确认,请前往{AreaName}开始作业" - String ttsText = "工单已确认,请前往作业区域开始作业"; - sendTTS(event.getDeviceId(), ttsText); + sendTts(event.getDeviceId(), TTS_CONFIRM_SUCCESS); } catch (Exception e) { log.error("[CleanOrderConfirmEventHandler] 消息处理失败: message={}", message, e); @@ -138,22 +141,30 @@ public class CleanOrderConfirmEventHandler implements RocketMQListener { /** * 发送 TTS 语音播报 */ - private void sendTTS(Long deviceId, String text) { + private void sendTts(Long deviceId, String text) { if (deviceId == null) { return; } try { Map params = new HashMap<>(); params.put("text", text); + params.put("volume", 80); IotDeviceServiceInvokeReqDTO req = IotDeviceServiceInvokeReqDTO.builder() .deviceId(deviceId) - .identifier("TTS") + .identifier("playVoice") .params(params) - .timeoutSeconds(10) + .timeoutSeconds(30) .build(); - iotDeviceControlApi.invokeService(req); + 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"); + } } catch (Exception e) { log.error("[CleanOrderConfirmEventHandler] TTS 发送失败: deviceId={}", deviceId, e); }