fix: 电话通知报警,逻辑完善,改为报警电话列表获取电话号码,通知成功后24小时不再打电话等等。
This commit is contained in:
@@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 告警电话通知记录 Mapper
|
||||
@@ -17,7 +18,8 @@ import java.time.LocalDateTime;
|
||||
public interface AquWarnCallNoticeMapper extends BaseMapper<AquWarnCallNotice> {
|
||||
|
||||
/**
|
||||
* 查询指定设备、告警标题、时间范围内的通知数量(通过关联表反查 title)
|
||||
* 查询指定设备、告警标题、时间范围内「回执成功」的通知数量
|
||||
* 只有 callStatus=3(回执成功)的记录才算真正通知到人,才会触发抑制
|
||||
*
|
||||
* @param deviceId 设备ID
|
||||
* @param title 告警标题(如"溶解氧"、"设备离线"等)
|
||||
@@ -29,14 +31,16 @@ public interface AquWarnCallNoticeMapper extends BaseMapper<AquWarnCallNotice> {
|
||||
"INNER JOIN aqu_message_warn w ON w.id = m.message_warn_id " +
|
||||
"WHERE n.device_id = #{deviceId} " +
|
||||
"AND w.title = #{title} " +
|
||||
"AND n.call_status = 3 " +
|
||||
"AND n.call_time >= #{afterTime}")
|
||||
long countByDeviceAndTitleAfter(@Param("deviceId") Long deviceId,
|
||||
@Param("title") String title,
|
||||
@Param("afterTime") LocalDateTime afterTime);
|
||||
|
||||
/**
|
||||
* 查询指定设备、告警标题、时段范围内的通知数量(免打扰模式:每个时段只通知一次)
|
||||
* 查询指定设备、告警标题、时段范围内「回执成功」的通知数量(免打扰模式:每个时段只通知一次)
|
||||
* 时段划分:08:00-14:00、14:00-20:00、20:00-08:00
|
||||
* 只有 callStatus=3(回执成功)的记录才算真正通知到人,才会触发抑制
|
||||
*
|
||||
* @param deviceId 设备ID
|
||||
* @param title 告警标题
|
||||
@@ -48,8 +52,31 @@ public interface AquWarnCallNoticeMapper extends BaseMapper<AquWarnCallNotice> {
|
||||
"INNER JOIN aqu_message_warn w ON w.id = m.message_warn_id " +
|
||||
"WHERE n.device_id = #{deviceId} " +
|
||||
"AND w.title = #{title} " +
|
||||
"AND n.call_status = 3 " +
|
||||
"AND n.call_time >= #{periodStart}")
|
||||
long countByDeviceAndTitleInPeriod(@Param("deviceId") Long deviceId,
|
||||
@Param("title") String title,
|
||||
@Param("periodStart") LocalDateTime periodStart);
|
||||
|
||||
/**
|
||||
* 查询 callStatus=0 且 callTime <= now 的到期待发记录
|
||||
* 用于定时任务扫描并触发语音通知
|
||||
*
|
||||
* @param now 当前时间
|
||||
* @return 到期待发的通知记录列表
|
||||
*/
|
||||
@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);
|
||||
|
||||
/**
|
||||
* 通过 callNoticeId 查询关联的第一条告警消息内容
|
||||
* 用于定时任务重发时构建 TTS 参数
|
||||
*
|
||||
* @param callNoticeId 通知记录ID
|
||||
* @return 告警消息内容,不存在时返回 null
|
||||
*/
|
||||
@Select("SELECT w.message FROM aqu_message_warn w " +
|
||||
"INNER JOIN aqu_map_message_warn_call_notice m ON m.message_warn_id = w.id " +
|
||||
"WHERE m.call_notice_id = #{callNoticeId} LIMIT 1")
|
||||
String selectWarnMessageByCallNoticeId(@Param("callNoticeId") Long callNoticeId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user