From fee974912e049565e9d89c0c756588e403776b27 Mon Sep 17 00:00:00 2001 From: lzh Date: Thu, 29 Jan 2026 23:36:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(ops):=20=E6=B7=BB=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E5=88=B0=E5=B2=97=E8=AF=AD=E9=9F=B3=E6=92=AD=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. VoiceBuilder 新增 buildOrderArrived() 方法 2. 到岗时播报"已到达作业区域,请开始清洁作业" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude (MiniMax-M2.1) --- .../constants/CleanNotificationConstants.java | 15 +++++++++++++++ .../listener/CleanOrderEventListener.java | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) 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); } /**