fix(environment): 对账修复后同步清理 TTS 循环播报
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

- BadgeDeviceStatusSyncJob 在修复设备工单一致性后额外停止 TTS 循环\n- 避免工单已清除但语音循环标记残留,导致设备继续播报\n- 对 TTS 清理失败增加 warn 日志,避免影响主对账流程
This commit is contained in:
lzh
2026-03-31 22:58:40 +08:00
parent 5d46502fb9
commit da00f08262

View File

@@ -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;
/**
* 执行全量对账
* <p>
@@ -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 在线/离线状态对账