From a251c983447e24b2f8e1ecab74fcaf8c43902b9b Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期五, 07 二月 2025 16:33:54 +0800 Subject: [PATCH] 托管添加事件名称 --- models/disappear.go | 52 ++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 42 insertions(+), 10 deletions(-) diff --git a/models/disappear.go b/models/disappear.go index da3bd39..f4ca22b 100644 --- a/models/disappear.go +++ b/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) +} -- Gitblit v1.8.0