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

---
 rule/service.go |   90 +++++++++++++++++++++++++++-----------------
 1 files changed, 55 insertions(+), 35 deletions(-)

diff --git a/rule/service.go b/rule/service.go
index c77e096..2a476d2 100644
--- a/rule/service.go
+++ b/rule/service.go
@@ -32,7 +32,7 @@
 // 鎵ц绋嬪簭鍏ュ彛
 func ExecuteTask() {
 	//杩涘嚭寮傚父甯冩帶浠诲姟锛屾殏鏃跺綊绫诲埌鏍囩璁$畻閮ㄥ垎
-	fmt.Println("杩涘嚭寮傚父寮�濮嬪叆鍙o紒锛侊紒锛侊紒锛�")
+	//fmt.Println("杩涘嚭寮傚父寮�濮嬪叆鍙o紒锛侊紒锛侊紒锛�")
 	tasks, err := db.GetAllTaskData()
 	if err != nil {
 		logger.Error("GetAllTaskData Error", err)
@@ -44,20 +44,21 @@
 			tkInfo.Name = taskInfo.Name
 		}
 	}
-	fmt.Println("tkInfo: ", tkInfo)
+	//fmt.Println("tkInfo: ", tkInfo)
 	days := config.Api.AInterval
 	docNumIdMap, err := db.QueryLastIdByDayRange(days, days-1)
 	if err != nil {
 		logger.Error("QueryByDayRange err: ", err)
 	}
-	fmt.Println("docNumIdMap: ", len(docNumIdMap))
+	//fmt.Println("docNumIdMap: ", len(docNumIdMap))
 	for docNumber, id := range docNumIdMap {
 		//fmt.Println(docNumber, id)
 		alarmRules := make([]db.AlarmRule, 0)
-		flag := task.EnteringButNotLeaving(docNumber, id, days)
+		flag := task.EnteringButNotLeaving(docNumber, days)
 		if flag == true {
 			alarmRules = append(alarmRules, db.AlarmRule{RuleId: strconv.Itoa(tkInfo.Id), RuleText: tkInfo.Name, AlarmLevel: "0"})
 		}
+		//fmt.Println("alarmRules: ", id, alarmRules)
 		addFlag, err := db.AddAlarmRules(alarmRules, id)
 		if err != nil {
 			logger.Error("AddAlarmRules err: ", err)
@@ -88,53 +89,68 @@
 		//if communityID != "50010101010000001001" {
 		//	continue
 		//}
+		fmt.Println("communityID: ", communityID)
 		//鏌ヨ绀惧尯鍐呬汉鍛樻。妗堬紝鏂逛究鏁版嵁鏇存柊
-		personStatus, err := db.GetDBPersonStatusData(communityID)
+		personStatusList, err := db.QueryPersonStatusWithPagination(communityID, 30)
 		if err != nil {
-			logger.Error("GetDBPersonStatusData Error", err)
+			logger.Error("QueryPersonStatusWithPagination err: ", err)
 		}
-		//fmt.Println(labeManage)
-		//fmt.Println("personStatus: ", personStatus)
-		//fmt.Println("CcmmunityIDs: ", cmmunityID)
-		//鎸夌ぞ鍖篿d鏌ヨ杩戜竴涓湀es鏁版嵁
-		captureInfos, err := db.Query1MDataByCommunityId(communityID)
-		//fmt.Println("captureInfos: ", captureInfos)
-		//residentCount := 0
+		//
+
+		documentNumberIDS := make([]string, 0)
+		for _, personStatus := range personStatusList {
+			//fmt.Println("personStatus.LastAppearanceTime: ", personStatus.LastAppearanceTime)
+			documentNumberIDS = append(documentNumberIDS, personStatus.DocumentNumber)
+			//涓氬姟閫昏緫
+		}
+		//fmt.Println("len(documentNumberIDS)", len(documentNumberIDS))
+		captureInfos := make([]db.CaptureInfo, 0)
+		batchSize := config.Elastic.BatchSize
+		//fmt.Println(batchSize)
+		for i := 0; i < len(documentNumberIDS); i += batchSize {
+			end := i + batchSize
+			if end > len(documentNumberIDS) {
+				end = len(documentNumberIDS)
+			}
+			batch := documentNumberIDS[i:end]
+			//fmt.Println("batch: ", batch)
+			batchCaptureInfos, err := db.Query1MDataByCommunityId(communityID, batch, 30)
+			if err != nil {
+				logger.Error("Query1MDataByCommunityId Error", err)
+			}
+			if len(batchCaptureInfos) == 0 {
+				continue
+			}
+			//fmt.Println("batchCaptureInfos: ", batchCaptureInfos)
+			captureInfos = append(captureInfos, batchCaptureInfos...)
+		}
+		if len(captureInfos) == 0 {
+			continue
+		}
+		fmt.Println("鍏辫鏈夋。妗堟暟鎹潯鏁颁负锛�", len(captureInfos))
+		//琛ュ叏鍒嗘瀽鎵�闇�鏁版嵁
 		for i := range captureInfos {
-			//fmt.Println(captureInfos[i].DocumentNumber)
+
 			captureDays, overnightCount := data.CalculateCaptureDays(captureInfos[i].CaptureDetail)
 			captureInfos[i].CaptureDays = captureDays
 			captureInfos[i].OvernightStays = overnightCount
-
-			//if captureInfos[i].CaptureDays <= 10 && captureInfos[i].OvernightStays >= 1 {
-			//	fmt.Println(captureInfos[i].DocumentNumber)
-			//	fmt.Println("璇ヤ汉鍛樺嚭鐜板ぉ鏁颁负", captureInfos[i].CaptureDays)
-			//	fmt.Println("璇ヤ汉鍛樿繃澶滃ぉ鏁颁负", captureInfos[i].OvernightStays)
-			//}
 
 			captureInfos[i].Status = data.SetStatus(captureDays, ruleInfo)
 			if captureInfos[i].OvernightStays >= 5 && (captureInfos[i].CaptureDays <= 14 && captureInfos[i].CaptureDays >= 5) {
 				captureInfos[i].Status = "resident"
 			}
-			//if captureInfos[i].Status == "resident" {
-			//	residentCount++
-			//}
+			//fmt.Println("SetStatus: ", captureInfos[i].Status)
 			age, err := db.QueryAgeById(captureInfos[i].DocumentNumber)
 			if err != nil {
 				logger.Error("QueryAgeById ERROR", err)
 			}
 			captureInfos[i].Age = age
-			data.SetFrequentAddress(&captureInfos[i])
-			//fmt.Println("captureInfos[i].Age: ", captureInfos[i].Age)
+			captureInfos[i].FrequentAddress = data.GetFrequentAddress(captureInfos[i].CaptureDetail)
+			//fmt.Println("CaptureDetail: ", captureInfos[i].DocumentNumber, captureInfos[i].CaptureDays, captureInfos[i].CaptureDetail)
 		}
 		//fmt.Println("residentCount: ", residentCount)
-		if err != nil {
-			logger.Error("MatchAllTargets Error", err)
-		}
-		if len(captureInfos) == 0 {
-			continue
-		}
 		//fmt.Println("captureInfosQ: ", captureInfos)
+
 		for _, identity := range labeManage {
 			switch identity.Name {
 			case "鏈嶅姟浜哄憳":
@@ -153,10 +169,14 @@
 			logger.Error("UpdateDBPersonLabel Error", errIdentity)
 		}
 		//continue
-		//fmt.Println("captureInfos: ", captureInfos)
-		postCaptureInfos := data.ProcessData(captureInfos, personStatus, ruleInfo, communityID)
-		//fmt.Println("postCaptureInfos: ", postCaptureInfos)
-		//fmt.Println("鍏辫繃婊ゆ潯鏁帮細", len(captureInfos)-len(postCaptureInfos))
+
+		postCaptureInfos := data.ProcessData(captureInfos, personStatusList, ruleInfo, communityID)
+		/*for _, inf := range postCaptureInfos {
+			fmt.Println("inf: ", inf.DocumentNumber, inf.Status, inf.FrequentAddress, inf.LastAppearanceStatusTime)
+		}*/
+		//fmt.Println("鍏辨洿鏂版。妗堟暟锛�", len(postCaptureInfos))
+		//fmt.Println("----->captureInfos: ", len(captureInfos))
+		//continue
 		UpdatePersonInfoErr := db.UpdatePersonInfo(postCaptureInfos, communityID)
 		if UpdatePersonInfoErr != nil {
 			logger.Error("MatchPermanentResidentTargets Error: ", UpdatePersonInfoErr)

--
Gitblit v1.8.0