diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/job/BadgeDeviceStatusSyncJob.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/job/BadgeDeviceStatusSyncJob.java index 2005e13..fdb052e 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/job/BadgeDeviceStatusSyncJob.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/job/BadgeDeviceStatusSyncJob.java @@ -12,6 +12,7 @@ import com.viewsh.module.ops.dal.mysql.area.OpsAreaDeviceRelationMapper; import com.viewsh.module.ops.enums.BadgeDeviceStatusEnum; import com.viewsh.module.ops.environment.integration.dto.IotDeviceStatusChangedEventDTO; import com.viewsh.module.ops.environment.service.badge.BadgeDeviceStatusService; +import com.viewsh.module.ops.environment.service.voice.TtsQueueConsumer; import com.xxl.job.core.handler.annotation.XxlJob; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -52,6 +53,9 @@ public class BadgeDeviceStatusSyncJob { @Resource private BadgeDeviceStatusService badgeDeviceStatusService; + @Resource + private TtsQueueConsumer ttsQueueConsumer; + /** * 执行全量对账 *

@@ -122,6 +126,12 @@ public class BadgeDeviceStatusSyncJob { boolean orderRepaired = badgeDeviceStatusService.repairDeviceOrderConsistency(iotStatus.getDeviceId()); if (orderRepaired) { orderRepairedCount++; + // 工单已清除,同时清理可能残留的 TTS 循环播报标记 + try { + ttsQueueConsumer.stopLoop(iotStatus.getDeviceId()); + } catch (Exception e) { + log.warn("[SyncJob] 清理TTS循环播报失败: deviceId={}", iotStatus.getDeviceId(), e); + } } // 4b. IoT 在线/离线状态对账