diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/constants/CleanNotificationConstants.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/constants/CleanNotificationConstants.java index e59ffad..8d87c9d 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/constants/CleanNotificationConstants.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/constants/CleanNotificationConstants.java @@ -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); + } + /** * 构建待办增加播报 * 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 137584d..b0f5d67 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 @@ -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); } /**