From 12d094a193e190bedb1fcf35ac024eaec3c77e9f Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期三, 19 二月 2025 12:03:45 +0800
Subject: [PATCH] merge

---
 models/locationAnalysis.go |   86 +++++++++++++++++++++----------------------
 1 files changed, 42 insertions(+), 44 deletions(-)

diff --git a/models/locationAnalysis.go b/models/locationAnalysis.go
index bdb4efa..6a5a4f6 100644
--- a/models/locationAnalysis.go
+++ b/models/locationAnalysis.go
@@ -54,13 +54,22 @@
 	m.AreaIds = areaIds
 	m.Building = task.Building
 	m.AlarmType = task.AlarmType
-	m.PersonIdentity = []string{"stranger", "visitor", "resident"} //task.IdentityType
-	m.KeyTypes = []string{"1", "2", "3", "4", "5"}                 //task.IdentityType
+	m.KeyTypes = []string{"1", "2", "3", "4", "5"} //task.IdentityType
 	m.KeyPersonType = task.PersonType
 	m.PersonLabel = task.PersonLabel
 	if task.IdentityType != "" {
-		m.PersonIdentity = strings.Split(task.IdentityType, ",")
+		for _, t := range strings.Split(task.IdentityType, ",") {
+			if t == "all" {
+				m.PersonIdentity = []string{"stranger", "visitor", "resident"}
+				break
+			} else {
+				m.PersonIdentity = append(m.PersonIdentity, t)
+			}
+		}
+	} else {
+		m.PersonIdentity = []string{"stranger", "visitor", "resident"}
 	}
+
 	if task.PersonType != "" {
 		m.KeyTypes = strings.Split(task.PersonType, ",")
 	}
@@ -112,33 +121,22 @@
 }
 
 type LocationPersonInfo struct {
-	Id             string `json:"id"`
-	DocumentNumber string `json:"document_number"`
-	PersonType     string `json:"person_type"`
-	//CommunityId        string `json:"community_id"`
-	//OrgId              string `json:"org_id"`
-	//PersonName         string `json:"person_name"`
-	//IdCard             string `json:"id_card"`
-	LastAppearanceTime int64 `json:"last_appearance_time"`
-	//LastDirection      string `json:"last_direction"`
-	//LastLocation       string `json:"last_location"`
+	Id                 string `json:"id"`
+	DocumentNumber     string `json:"document_number"`
+	PersonType         string `json:"person_type"`
+	LastAppearanceTime int64  `json:"last_appearance_time"`
 }
-
-//var (
-//	processed        sync.Map                           // 瀛樺偍宸插鐞嗚褰�
-//	cleanupThreshold = time.Now().Add(-100 * time.Hour) // 瀹氫箟涓�涓椂闂寸獥鍙o紝鍋囪鍙繚瀛樻渶杩�100灏忔椂鐨勮褰�
-//)
 
 func (m *LocationModel) Run() error {
 	// 鏍规嵁閰嶇疆鐨勬椂闂存澶╂暟, 姣忓ぉ鐨勬椂闂磋寖鍥村唴锛� 閲嶇偣浜哄憳绫诲瀷鎴栬�呯壒瀹氭爣绛句汉鍛樺嚭鐜扮殑妤煎眰娆℃暟瓒呰繃闃堝��
 
 	results := make([]*db.ModelTaskResults, 0)
 	var baseFilter, labelFilter, keyFilter []LocationPersonInfo
-	var document_number_map = make(map[string]LocationPersonInfo)
-	var document_number_list []string
-	community_ids := m.AreaIds
-	if len(community_ids) == 0 {
-		community_ids = m.OrgIds
+	var documentNumberMap = make(map[string]LocationPersonInfo)
+	var documentNumberList []string
+	communityIds := m.AreaIds
+	if len(communityIds) == 0 {
+		communityIds = m.OrgIds
 	}
 	err := db.GetDB().Raw(`
 		SELECT
@@ -149,24 +147,23 @@
 			snapshot_count_summary AS s
 			JOIN person AS p ON p.id = s.document_number
 		WHERE
-			p.id_card != "" 
-			AND (s.community_id IN ? OR s.org_id IN ?)
+			(s.community_id IN ? OR s.org_id IN ?)
 			AND s.status IN ?
-		`, community_ids, m.OrgIds, m.PersonIdentity).Scan(&baseFilter).Error
+		`, communityIds, m.OrgIds, m.PersonIdentity).Scan(&baseFilter).Error
 	if err != nil {
 		logger.Warnf(err.Error())
 	}
 
 	if len(baseFilter) == 0 {
-		return fmt.Errorf("no results found that match the age condition %s - %s - %s ", m.AreaIds, m.OrgIds, m.PersonIdentity)
+		return fmt.Errorf("no results found that match the identity condition %+v", m.Task.Rules)
 	}
 
-	logger.Debugf("task %s match age result %d", m.Task.Name, len(baseFilter))
+	logger.Debugf("task %s match identity result %d", m.Task.Name, len(baseFilter))
 	for _, i := range baseFilter {
-		if _, ok := document_number_map[i.DocumentNumber]; !ok {
-			document_number_list = append(document_number_list, i.DocumentNumber)
+		if _, ok := documentNumberMap[i.DocumentNumber]; !ok {
+			documentNumberList = append(documentNumberList, i.DocumentNumber)
 			tmp := i
-			document_number_map[i.DocumentNumber] = tmp
+			documentNumberMap[i.DocumentNumber] = tmp
 		}
 	}
 	if m.PersonLabel != "" {
@@ -180,7 +177,7 @@
 		WHERE
 			p.id IN ?
 			AND	l.label_id IN ?
-		`, document_number_list, labels).Scan(&labelFilter).Error
+		`, documentNumberList, labels).Scan(&labelFilter).Error
 		if err != nil {
 			logger.Warnf(err.Error())
 		}
@@ -190,11 +187,12 @@
 		}
 
 		logger.Debugf("task %s match label result %d", m.Task.Name, len(labelFilter))
-		document_number_list = []string{}
+		documentNumberList = []string{}
 		for _, i := range labelFilter {
-			document_number_list = append(document_number_list, i.Id)
+			documentNumberList = append(documentNumberList, i.Id)
 		}
 	}
+
 	if len(m.KeyTypes) > 0 {
 		//keyTypes := strings.Split(m.KeyPersonType, ",")
 		err := db.GetDB().Raw(`
@@ -207,30 +205,30 @@
 		WHERE
 			p.id IN ?
 			AND k.person_type IN ?
-		`, document_number_list, m.KeyTypes).Scan(&keyFilter).Error
+		`, documentNumberList, m.KeyTypes).Scan(&keyFilter).Error
 		if err != nil {
 			logger.Warnf(err.Error())
 		}
 		if len(keyFilter) == 0 {
-			return fmt.Errorf("no results found that match the key condition%s------ %s", document_number_list, m.KeyTypes)
+			return fmt.Errorf("no results found that match the key condition %v------ %s", documentNumberList, m.KeyTypes)
 		}
 		logger.Debugf("task %s match key person result %d", m.Task.Name, len(keyFilter))
 	}
 	//logger.Debugf("task %s last result %d", m.Task.Name, len(lastFilter))
-	document_number_list = []string{}
+	documentNumberList = []string{}
 	for _, i := range keyFilter {
 		//logger.Debugf("keyFilter %s ------------- %s", i.Id, i.PersonType)
-		document_number_list = append(document_number_list, i.Id)
-		person := document_number_map[i.Id]
+		documentNumberList = append(documentNumberList, i.Id)
+		person := documentNumberMap[i.Id]
 		person.PersonType = i.PersonType
-		document_number_map[i.Id] = person
+		documentNumberMap[i.Id] = person
 	}
 	//logger.Debugf("document_number_map %s last result %s", m.Task.Name, document_number_map)
-	records, err := queryEsLocation(db.GetEsClient(), m, document_number_list)
+	records, err := queryEsLocation(db.GetEsClient(), m, documentNumberList)
 	if err != nil {
 		return err
 	}
-	logger.Debugf("records %s last result %+v", m.Task.Name, records)
+	logger.Debugf("records %s last result %d", m.Task.Name, len(records))
 	domains, err := domainToLocation(records)
 	if err != nil {
 		return err
@@ -240,8 +238,8 @@
 	for _, record := range records {
 		tagTypes = []string{}
 		for _, personId := range record.DocumentNumbers {
-			logger.Debugf("document_number_map[personId] %s", document_number_map[personId])
-			tagTypes = append(tagTypes, document_number_map[personId].PersonType)
+			logger.Debugf("document_number_map[personId] %+v", documentNumberMap[personId])
+			tagTypes = append(tagTypes, documentNumberMap[personId].PersonType)
 			//lastAppearanceTime = document_number_map[personId].LastAppearanceTime
 		}
 		//logger.Debugf("tagTypes %s ---------------%s--------", record.PicDate, record.DocumentNumbers)

--
Gitblit v1.8.0