From 16b34c939d6790fe6ebe61f8f0e85fe80ee52224 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期三, 29 五月 2024 14:44:16 +0800
Subject: [PATCH] 修改准备数据流程,适应较大数据量的操作

---
 data/prepare.go |   37 ++++++++++++++++---------------------
 1 files changed, 16 insertions(+), 21 deletions(-)

diff --git a/data/prepare.go b/data/prepare.go
index 8b0f675..1d38dd2 100644
--- a/data/prepare.go
+++ b/data/prepare.go
@@ -65,11 +65,11 @@
 }
 
 // SetFrequentAddress 鏂规硶璁$畻鍑虹幇鏈�棰戠箒鐨勫嚭琛屽湴鍧�骞惰缃负甯哥敤鍦板潃
-func SetFrequentAddress(c *db.CaptureInfo) {
+func GetFrequentAddress(captureDetail []db.CaptureDetail) string {
 	outAddressCounts := make(map[string]int)
 	inAddressCounts := make(map[string]int)
 	// 缁熻姣忎釜鍑鸿鍦板潃鐨勫嚭鐜版鏁�
-	for _, detail := range c.CaptureDetail {
+	for _, detail := range captureDetail {
 		if detail.Direction == "out" {
 			outAddressCounts[detail.CaptureAddress]++
 		}
@@ -96,12 +96,11 @@
 			}
 		}
 	}
-	// 灏嗗嚭鐜版鏁版渶澶氱殑鍑鸿鍦板潃璁剧疆涓哄父鐢ㄥ湴鍧�
-	c.FrequentAddress = frequentAddress
+	return frequentAddress
 }
 
 // processData 鍑芥暟澶勭悊鏁版嵁锛屾牴鎹姹傝繃婊ゆ帀鏁版嵁骞舵牴鎹鍒欐洿鏂扮姸鎬�
-func ProcessData(captureInfos []db.CaptureInfo, personStatus []db.PersonStatus, ruleInfos []db.PersonnelStatusRule, communityID string) []db.PersonStatus {
+func ProcessData(captureInfos []db.CaptureInfo, personStatus []*db.PersonStatus, ruleInfos []db.PersonnelStatusRule, communityID string) []db.PersonStatus {
 	filteredInfos := make([]db.PersonStatus, 0)
 
 	// 鏋勫缓蹇�熸煡鎵剧储寮曪紝鏂逛究鏌ユ壘瀵瑰簲鐨勪汉鍛樼姸鎬佸拰瑙勫垯
@@ -109,35 +108,31 @@
 	ruleIndex := make(map[string]db.PersonnelStatusRule)
 
 	for _, person := range personStatus {
-		statusIndex[person.DocumentNumber] = person
+		statusIndex[person.DocumentNumber] = *person
 	}
 
 	for _, rule := range ruleInfos {
 		ruleIndex[rule.Name] = rule
 	}
-
+	//fmt.Println("statusIndex: ", statusIndex)
+	//fmt.Println("ruleIndex: ", ruleIndex)
 	// 澶勭悊姣忎釜鎶撴媿淇℃伅
 	for _, info := range captureInfos {
 		//fmt.Println("info", info.DocumentNumber, info.Status, info.FrequentAddress)
 		//fmt.Println("person", statusIndex[info.DocumentNumber].DocumentNumber, statusIndex[info.DocumentNumber].Status, statusIndex[info.DocumentNumber].FrequentAddress)
 		// 妫�鏌ユ槸鍚﹀瓨鍦ㄥ搴旂殑浜哄憳鐘舵��
-		person, ok := statusIndex[info.DocumentNumber]
-		if !ok {
-			// 涓嶅瓨鍦ㄥ搴旂殑浜哄憳鐘舵�佷负鏂版暟鎹�
-			filteredInfos = append(filteredInfos, db.PersonStatus{OrgId: info.OrgId, CommunityID: communityID, DocumentNumber: info.DocumentNumber, Status: info.Status, FrequentAddress: info.FrequentAddress})
-			continue
-		}
-
+		person := statusIndex[info.DocumentNumber]
+		//fmt.Println("person: ", person.DocumentNumber, person.Status, person.FrequentAddress, person.LastAppearanceTime, person.LastAppearanceStatusTime)
 		// 鍒ゆ柇鐘舵�佸拰甯哥敤鍦板潃鏄惁鐩哥瓑锛屽鏋滅浉绛夊垯蹇界暐
-		if (info.Status == person.Status || info.CaptureDays <= ruleIndex[person.DocumentNumber].DetectionDaysEnd) &&
-			info.FrequentAddress == person.FrequentAddress {
-			continue
-		}
-
+		//if (info.Status == person.Status || info.CaptureDays <= ruleIndex[person.DocumentNumber].DetectionDaysEnd) &&
+		//	info.FrequentAddress == person.FrequentAddress {
+		//	continue
+		//}
 		// 鏇存柊杩囨护鍚庣殑淇℃伅鍒楄〃
-		filteredInfos = append(filteredInfos, db.PersonStatus{OrgId: info.OrgId, CommunityID: communityID, DocumentNumber: info.DocumentNumber, Status: info.Status, FrequentAddress: info.FrequentAddress})
+		//fmt.Println("LastAppearanceTime: ", person.LastAppearanceTime)
+		filteredInfos = append(filteredInfos, db.PersonStatus{CommunityID: communityID, DocumentNumber: info.DocumentNumber, Status: info.Status, FrequentAddress: info.FrequentAddress, LastAppearanceStatusTime: person.LastAppearanceTime})
 
 	}
-
+	//fmt.Println("filteredInfos: ", filteredInfos)
 	return filteredInfos
 }

--
Gitblit v1.8.0