From cf2300a3bf596f57ab2ca1a8e134eea1beb24bf6 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期四, 06 二月 2025 15:22:00 +0800
Subject: [PATCH] 完善托管

---
 models/disappear.go |   28 +++++++++++++++++++---------
 1 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/models/disappear.go b/models/disappear.go
index c82bfcf..da3bd39 100644
--- a/models/disappear.go
+++ b/models/disappear.go
@@ -69,10 +69,10 @@
 
 	}
 
-	logger.Debugf("DisappearModel init finish ...task id:%s, name:%s, rule:%+v\n", task.ID, task.Name, m)
+	logger.Debugf("DisappearModel init finish ...task id:%s, name:%s, rule:%+v", task.ID, task.Name, m)
 
 	if m.DisappearTime == 0 {
-		logger.Warnf("invalid parameters. task id:%s, name:%s\n", task.ID, task.Name)
+		logger.Warnf("invalid parameters. task id:%s, name:%s", task.ID, task.Name)
 		return errors.New("invalid parameters")
 	}
 
@@ -102,7 +102,7 @@
 			s.org_id,
 			p.person_name,
 			p.id_card,
-			s.last_appearance_time,
+			p.last_appearance_time,
 			s.last_direction,
 			s.last_location 
 		FROM
@@ -129,7 +129,7 @@
 			return fmt.Errorf("no results found that match the age condition %s - %s", m.MinAge, m.MaxAge)
 		}
 
-		logger.Debugf("match age result %d", len(ageFilter))
+		logger.Debugf("task %s match age result %d", m.Task.Name, len(ageFilter))
 	}
 
 	if m.PersonLabel != "" {
@@ -141,7 +141,7 @@
 			s.org_id,
 			p.person_name,
 			p.id_card,
-			s.last_appearance_time,
+			p.last_appearance_time,
 			s.last_direction,
 			s.last_location 
 		FROM
@@ -159,7 +159,7 @@
 			return fmt.Errorf("no results found that match the label condition %s", m.PersonLabel)
 		}
 
-		logger.Debugf("match label result %d", len(labelFilter))
+		logger.Debugf("task %s match label result %d", m.Task.Name, len(labelFilter))
 	}
 
 	// 鍚堝苟涓�涓嬫潯浠�
@@ -180,7 +180,7 @@
 			s.org_id,
 			p.person_name,
 			p.id_card,
-			s.last_appearance_time,
+			p.last_appearance_time,
 			s.last_direction,
 			s.last_location 
 		FROM
@@ -196,7 +196,7 @@
 			logger.Warnf(err.Error())
 		}
 
-		logger.Debugf("match key person result %d", len(keyFilter))
+		logger.Debugf("task %s match key person result %d", m.Task.Name, len(keyFilter))
 
 		if len(lastFilter) > 0 {
 			lastFilter = intersectPersonInfo(lastFilter, keyFilter)
@@ -205,7 +205,9 @@
 		}
 	}
 
-	logger.Debugf("last result %d", len(lastFilter))
+	logger.Debugf("task %s last result %d", m.Task.Name, len(lastFilter))
+
+	var personIds = make(map[string]struct{}, 0)
 	for _, p := range lastFilter {
 		if len(m.AreaIds) > 0 {
 			_, o1 := m.AreaIds[p.CommunityId]
@@ -235,10 +237,18 @@
 				FirstPersonID: p.DocumentNumber,
 			}
 
+			// 鍚屼竴涓汉鎶ヨ涓�娆�
+			if _, ok := personIds[p.DocumentNumber]; ok {
+				continue
+			} else {
+				personIds[p.DocumentNumber] = struct{}{}
+			}
+
 			results = append(results, result)
 		}
 	}
 
+	logger.Debugf("task %s last filter result %d", m.Task.Name, len(results))
 	return service.SaveTaskResults(results)
 }
 

--
Gitblit v1.8.0