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