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