zhangzengfei
2024-09-29 3737ab3dd0cc753be986638316c96cb3114601e4
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",