From 3737ab3dd0cc753be986638316c96cb3114601e4 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期日, 29 九月 2024 16:20:46 +0800 Subject: [PATCH] fix db column --- db/elastic.go | 79 +++++++++++++++++++++++++++------------ 1 files changed, 54 insertions(+), 25 deletions(-) diff --git a/db/elastic.go b/db/elastic.go index 5e638c9..2ecaa2a 100644 --- a/db/elastic.go +++ b/db/elastic.go @@ -4,9 +4,11 @@ "basic.com/pubsub/esutil.git" "basic.com/valib/logger.git" "encoding/json" + "fmt" "ruleModelEngine/config" "ruleModelEngine/util" "strconv" + "strings" ) func decodeDocumentInfos(docInfo []map[string]interface{}) ([]CaptureInfo, error) { @@ -15,8 +17,6 @@ var captureInfo = CaptureInfo{} captureInfo.DocumentNumber = info["key"].(string) buckets := info["top_hits"].(map[string]interface{})["hits"].(map[string]interface{})["hits"].([]interface{}) - orgId := buckets[0].(map[string]interface{})["_source"].(map[string]interface{})["orgId"].(string) - captureInfo.OrgId = orgId for _, sourceInfo := range buckets { rSourceInfo := sourceInfo.(map[string]interface{}) source := rSourceInfo["_source"].(map[string]interface{}) @@ -34,7 +34,8 @@ return captureInfos, nil } -func QueryTimesByDocNumberDays(days int, docNumber string) (int, error) { +func QueryTimesByDocNumberDays(docNumber string, communityId string, cameraIds []string, days int) (int, error) { + cameraIdsStr := strings.Replace(strings.Trim(fmt.Sprint(cameraIds), "[]"), " ", "\",\"", -1) esURL := "http://" + config.Elastic.Host + ":" + config.Elastic.Port + "/" + config.Elastic.Index + "/_search" queryDSL := `{ "query": { @@ -50,6 +51,16 @@ { "term": { "documentNumber": "` + docNumber + `" + } + }, + { + "term": { + "communityId": "` + communityId + `" + } + }, + { + "terms": { + "cameraId": ["` + cameraIdsStr + `"] } } ] @@ -68,7 +79,8 @@ return total, nil } -func QueryLastIdByDayRange(dayGte, dayLt int) (map[string]string, error) { +func QueryLastIdByDayRange(communityId string, cameraIds []string, dayGte, dayLt int) (map[string]string, error) { + cameraIdsStr := strings.Replace(strings.Trim(fmt.Sprint(cameraIds), "[]"), " ", "\",\"", -1) esURL := "http://" + config.Elastic.Host + ":" + config.Elastic.Port + "/" + config.Elastic.Index + "/_search" queryDSL := `{ "query": { @@ -81,12 +93,15 @@ "lt": "now-` + strconv.Itoa(dayLt) + `d/d" } } - } - ], - "must_not": [ + }, { "term": { - "alarmRules.ruleId": 4 + "communityId": "` + communityId + `" + } + }, + { + "terms": { + "cameraId": ["` + cameraIdsStr + `"] } } ] @@ -104,7 +119,8 @@ "top_hits": { "_source": [ "documentNumber", - "id" + "id", + "alarmRules.ruleId" ], "size": 1, "sort": [ @@ -120,8 +136,8 @@ } } }` - //fmt.Println(queryDSL) //fmt.Println(esURL) + //fmt.Println(queryDSL) docNumberMap := make(map[string]string) buf, err := esutil.EsReq("POST", esURL, []byte(queryDSL)) if err != nil { @@ -136,9 +152,25 @@ buckets := info["top_hits"].(map[string]interface{})["hits"].(map[string]interface{})["hits"].([]interface{}) for _, sourceInfo := range buckets { rSourceInfo := sourceInfo.(map[string]interface{}) - source := rSourceInfo["_source"].(map[string]interface{}) - documentNumber := source["documentNumber"].(string) - id := source["id"].(string) + rSource := rSourceInfo["_source"].(map[string]interface{}) + //濡傛灉璇ュぉ鏈�鍚庝竴鏉″凡缁忛璀﹁繃杩涘嚭寮傚父锛屽皢杩囨护鎺変笉鍐嶉璀� + alarmFlag := false + if rSource["alarmRules"] != nil { + alarmRules := rSource["alarmRules"].([]interface{}) + for _, alarmRule := range alarmRules { + ruleId := alarmRule.(map[string]interface{})["ruleId"].(string) + //fmt.Println("ruleId", ruleId,rSource["documentNumber"].(string),rSource["id"].(string)) + if ruleId == "4" { + alarmFlag = true + break + } + } + } + if alarmFlag == true { + continue + } + documentNumber := rSource["documentNumber"].(string) + id := rSource["id"].(string) docNumberMap[documentNumber] = id } } @@ -306,9 +338,10 @@ return false, nil } -func Query1MDataByCommunityId(communityId string) ([]CaptureInfo, error) { +func QueryByTimeThresholdDataByCommunityId(communityId string, documentNumber []string, days int) ([]CaptureInfo, error) { //fmt.Println(config.Elastic.DocumentSize) //fmt.Println(config.Elastic.TopHitsSize) + documentNumberStr := strings.Replace(strings.Trim(fmt.Sprint(documentNumber), "[]"), " ", "\",\"", -1) esURL := "http://" + config.Elastic.Host + ":" + config.Elastic.Port + "/" + config.Elastic.Index + "/_search" queryDSL := ` { @@ -318,7 +351,7 @@ { "range": { "picDate": { - "gte": "now-30d/d", + "gte": "now-` + strconv.Itoa(days) + `d/d", "lt": "now/d" } } @@ -327,16 +360,13 @@ "term":{ "communityId":"` + communityId + `" } + }, + { + "terms":{ + "documentNumber":["` + documentNumberStr + `"] + } } - ], - "must_not": [ - { - "term": { - "documentNumber": "" - } - } - ], - "should": [] + ] } }, "size": 0, @@ -352,7 +382,6 @@ "_source": [ "documentNumber", "picDate", - "orgId", "cameraLocation.building", "cameraLocation.unit", "cameraLocation.floor", -- Gitblit v1.8.0