完成查询犯人带出次数
This commit is contained in:
@@ -272,4 +272,44 @@ class SurAlertRecordService:
|
||||
except Exception as e:
|
||||
self.db.rollback()
|
||||
logger.error(f"Failed to delete alert record: {e}")
|
||||
return False
|
||||
return False
|
||||
|
||||
def get_alert_count_by_person_and_time(
|
||||
self,
|
||||
person_id: int,
|
||||
alert_type: int,
|
||||
hours: int
|
||||
) -> int:
|
||||
"""
|
||||
查询指定人员和时间范围内的告警记录数
|
||||
|
||||
Args:
|
||||
person_id: 人员ID
|
||||
alert_type: 告警类型
|
||||
hours: 小时数(从当前时间往前推算)
|
||||
|
||||
Returns:
|
||||
告警记录数
|
||||
"""
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
# 计算时间范围
|
||||
end_time = datetime.now()
|
||||
start_time = end_time - timedelta(hours=hours)
|
||||
|
||||
try:
|
||||
count = (
|
||||
self.db.query(SurAlertRecord)
|
||||
.filter(
|
||||
SurAlertRecord.person_id == person_id,
|
||||
SurAlertRecord.alert_type == alert_type,
|
||||
SurAlertRecord.created_time >= start_time,
|
||||
SurAlertRecord.created_time <= end_time
|
||||
)
|
||||
.count()
|
||||
)
|
||||
logger.debug(f"查询到人员 {person_id} 在最近 {hours} 小时内类型 {alert_type} 的告警记录数: {count}")
|
||||
return count
|
||||
except Exception as e:
|
||||
logger.error(f"查询告警记录数失败: {e}")
|
||||
return 0
|
||||
Reference in New Issue
Block a user