feat(ops): 添加工单到岗语音播报

1. VoiceBuilder 新增 buildOrderArrived() 方法
2. 到岗时播报"已到达作业区域,请开始清洁作业"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude (MiniMax-M2.1) <noreply@anthropic.com>
This commit is contained in:
lzh
2026-01-29 23:36:56 +08:00
parent d97125fdf6
commit fee974912e
2 changed files with 29 additions and 1 deletions

View File

@@ -278,6 +278,21 @@ public class CleanNotificationConstants {
return String.format(VoiceTemplate.ORDER_CONFIRMED, areaName);
}
/**
* 构建工单到岗播报
*
* @param order 工单信息
* @return 播报内容
*/
public static String buildOrderArrived(OpsOrderDO order) {
if (order == null) {
return VoiceTemplate.ORDER_ARRIVED_SHORT;
}
String areaName = order.getLocation() != null ? order.getLocation() : DEFAULT_AREA_NAME;
return String.format(VoiceTemplate.ORDER_ARRIVED, areaName);
}
/**
* 构建待办增加播报
*

View File

@@ -298,6 +298,12 @@ public class CleanOrderEventListener {
public void handleArrived(OrderStateChangedEvent event) {
Long orderId = event.getOrderId();
// 获取 deviceId优先从 payload 获取,其次使用 operatorId
Long deviceId = event.getPayloadLong("deviceId");
if (deviceId == null) {
deviceId = event.getOperatorId();
}
// 1. 记录到岗时间到扩展表
OpsOrderCleanExtDO updateObj = new OpsOrderCleanExtDO();
updateObj.setOpsOrderId(orderId);
@@ -307,7 +313,14 @@ public class CleanOrderEventListener {
// 2. 计算并更新响应时长(下发→到岗,排除暂停时间)
updateResponseSeconds(orderId);
log.info("[CleanOrderEventListener] 到岗时间已记录: orderId={}", orderId);
// 3. 语音播报提醒开始作业
if (deviceId != null) {
OpsOrderDO order = opsOrderMapper.selectById(orderId);
String arrivedMessage = CleanNotificationConstants.VoiceBuilder.buildOrderArrived(order);
playVoice(deviceId, arrivedMessage);
}
log.info("[CleanOrderEventListener] 到岗时间已记录: orderId={}, deviceId={}", orderId, deviceId);
}
/**