zhangzengfei
2025-02-07 a251c983447e24b2f8e1ecab74fcaf8c43902b9b
托管添加事件名称
1个文件已修改
52 ■■■■ 已修改文件
models/disappear.go 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/disappear.go
@@ -24,6 +24,7 @@
    LastDirection string // 最后一次抓拍
    MaxAge        int    // 年龄
    MinAge        int    // 年龄
    StartTime     int64  // 起始时间
    Task          *db.ModelTask
}
@@ -39,6 +40,7 @@
    m.AlarmType = task.AlarmType
    m.KeyPersonType = task.PersonType
    m.PersonLabel = task.PersonLabel
    m.StartTime = task.BeginTime.Unix()
    for _, v := range task.Rules {
        if v.Alias == "disappearTime" {
@@ -102,14 +104,15 @@
            s.org_id,
            p.person_name,
            p.id_card,
            p.last_appearance_time,
            s.last_appearance_time,
            s.last_direction,
            s.last_location 
        FROM
            snapshot_count_summary AS s
            JOIN person AS p ON p.id = s.document_number 
        WHERE
            p.id_card != ""
            s.last_appearance_time > ?
            AND    p.id_card != ""
            AND TIMESTAMPDIFF(
                YEAR,
                STR_TO_DATE( CASE WHEN LENGTH( id_card ) = 18 THEN SUBSTRING( id_card, 7, 8 ) ELSE NULL END, '%Y%m%d' ),
@@ -120,7 +123,7 @@
                STR_TO_DATE( CASE WHEN LENGTH( id_card ) = 18 THEN SUBSTRING( id_card, 7, 8 ) ELSE NULL END, '%Y%m%d' ),
            CURDATE( ) 
            ) <= ?
        `, m.MinAge, m.MaxAge).Scan(&ageFilter).Error
        `, m.StartTime, m.MinAge, m.MaxAge).Scan(&ageFilter).Error
        if err != nil {
            logger.Warnf(err.Error())
        }
@@ -141,7 +144,7 @@
            s.org_id,
            p.person_name,
            p.id_card,
            p.last_appearance_time,
            s.last_appearance_time,
            s.last_direction,
            s.last_location 
        FROM
@@ -149,8 +152,9 @@
            JOIN person AS p ON p.id = s.document_number
            JOIN person_label AS l ON p.id = l.person_id 
        WHERE
            l.label_id IN ?
        `, labels).Scan(&labelFilter).Error
            s.last_appearance_time > ?
            AND    l.label_id IN ?
        `, m.StartTime, labels).Scan(&labelFilter).Error
        if err != nil {
            logger.Warnf(err.Error())
        }
@@ -180,7 +184,7 @@
            s.org_id,
            p.person_name,
            p.id_card,
            p.last_appearance_time,
            s.last_appearance_time,
            s.last_direction,
            s.last_location 
        FROM
@@ -188,10 +192,11 @@
            JOIN person AS p ON p.id = s.document_number
            JOIN key_person AS k ON k.id_card = p.id_card 
        WHERE
            s.key_status = 1
            s.last_appearance_time > ?
            AND s.key_status = 1
            AND p.id_card != "" 
            AND k.person_type IN ?
        `, keyTypes).Scan(&keyFilter).Error
        `, m.StartTime, keyTypes).Scan(&keyFilter).Error
        if err != nil {
            logger.Warnf(err.Error())
        }
@@ -226,7 +231,7 @@
        if isOlderThanGivenHours(p.LastAppearanceTime, m.DisappearTime) {
            result := &db.ModelTaskResults{
                Title:         m.Task.Name,
                Event:         m.Task.Name,
                Event:         eventFormat(p.LastAppearanceTime, p.LastDirection),
                ModelID:       m.Task.ModelID,
                ModelTaskID:   m.Task.ID,
                CommunityId:   p.CommunityId,
@@ -299,3 +304,30 @@
    // 判断时间戳是否早于该时间
    return timestampTime.Before(timeThreshold)
}
func eventFormat(lastAppearTime int64, lastDirection string) string {
    lastTime := time.Unix(lastAppearTime, 0)
    currentTime := time.Now()
    duration := currentTime.Sub(lastTime)
    // 输出时间差的小时数
    var durationStr = "小时"
    hours := duration.Hours()
    if hours > 24 {
        hours = hours / 24
        durationStr = "天"
    }
    var direction string
    var reverse = "未出现"
    if lastDirection == "in" {
        direction = "进"
        reverse = "未出"
    } else if lastDirection == "out" {
        direction = "出"
        reverse = "未归"
    }
    return fmt.Sprintf("%s%s,持续%.1f%s%s", lastTime.Format("2006-01-02 15:04:05"), direction, hours, durationStr, reverse)
}