fix: 电话通知逻辑,功能修改,完善机制。

This commit is contained in:
tianyongbao
2026-04-14 22:02:13 +08:00
parent 45c55944a5
commit 9eb2ec90c6
3 changed files with 87 additions and 15 deletions

View File

@@ -104,6 +104,38 @@ public interface AquWarnCallNoticeMapper extends BaseMapper<AquWarnCallNotice> {
@Select("SELECT * FROM aqu_call_notice WHERE call_status = 0 AND call_time <= #{now} ORDER BY call_time ASC")
List<AquWarnCallNotice> selectDuePendingNotices(@Param("now") LocalDateTime now);
/**
* 查询指定设备在指定时间之后是否已有「等待回执中callStatus=1」或「回执成功callStatus=3」的通知记录
* 用于定时任务发出待发通知前的拦截判断:
* - callStatus=1前一条已发出但回执未到不应重复拨打等其超时后再发
* - callStatus=3已成功直接取消后续记录
*
* @param deviceId 设备ID
* @param afterTime 批次窗口起始时间
* @return 满足条件的通知数量
*/
@Select("SELECT COUNT(1) FROM aqu_call_notice " +
"WHERE device_id = #{deviceId} " +
"AND call_status IN (1, 3) " +
"AND call_time >= #{afterTime}")
long countWaitingOrSuccessByDeviceAfter(@Param("deviceId") Long deviceId,
@Param("afterTime") LocalDateTime afterTime);
/**
* 查询指定设备在指定时间之后是否已有「回执成功」的通知记录(不区分 title
* 用于定时任务发出待发通知前,判断同批次是否已有成功回执,避免重复拨打
*
* @param deviceId 设备ID
* @param afterTime 起始时间(通常取批次第一条记录的 callTime
* @return 满足条件的通知数量
*/
@Select("SELECT COUNT(1) FROM aqu_call_notice " +
"WHERE device_id = #{deviceId} " +
"AND call_status = 3 " +
"AND call_time >= #{afterTime}")
long countSuccessByDeviceAfter(@Param("deviceId") Long deviceId,
@Param("afterTime") LocalDateTime afterTime);
/**
* 通过 callNoticeId 查询关联的第一条告警消息内容
* 用于定时任务重发时构建 TTS 参数