fix(ops): align TTS service identifier and logic with audit handler

This commit is contained in:
lzh
2026-01-19 15:03:17 +08:00
parent 1d8680c336
commit 1bbbc55096

View File

@@ -44,6 +44,10 @@ public class CleanOrderConfirmEventHandler implements RocketMQListener<String> {
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<String> {
// 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<String> {
.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<String> {
// 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<String> {
/**
* 发送 TTS 语音播报
*/
private void sendTTS(Long deviceId, String text) {
private void sendTts(Long deviceId, String text) {
if (deviceId == null) {
return;
}
try {
Map<String, Object> 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);
}