| | |
| | | |
| | | } |
| | | |
| | | //根据时间范围,摄像机列表,分组聚合人脸列表 |
| | | func GetfaceDataBucketsBycameraIdAndTime(cameraId []string, startTime string, endTime string, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{},err error){ |
| | | esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1) |
| | | //根据摄像机列表和时间查询人员浏览轨迹 |
| | | func GetPersonDataByCameraIdAndTime(cameraId []string, startTime string, endTime string, serverIp string, ServerPort string, indexName string) (map[string]interface{}, error) { |
| | | |
| | | var filterArr []string |
| | | if cameraId != nil && len(cameraId) > 0{ |
| | | esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1) |
| | | filterArr = append(filterArr, `{ |
| | | { |
| | | "terms": { |
| | | "cameraId": ["`+esCameraId+`"] |
| | | } |
| | | }`) |
| | | } |
| | | filterArr = append(filterArr, `{ |
| | | "range": { |
| | | "picDate": { |
| | | "gte": "`+startTime+`", |
| | | "lte": "`+endTime+`" |
| | | } |
| | | } |
| | | }`) |
| | | filterArr = append(filterArr, ` { |
| | | "term": { |
| | | "targetInfo.targetType.raw": "Yolo" |
| | | } |
| | | }`) |
| | | queryStr := strings.Join(filterArr, ",") |
| | | |
| | | personUrl := "http://" + serverIp + ":" + ServerPort + "/" + indexName + "/_search" |
| | | personBody := `{ |
| | | "query": { |
| | | "bool": { |
| | | "filter": [ |
| | | ` + queryStr + ` |
| | | ] |
| | | } |
| | | }, |
| | | "size": 2147483647, |
| | | "_source": { |
| | | "includes": [ |
| | | "cameraId", |
| | | "cameraName", |
| | | "cameraAddr", |
| | | "targetInfo.targetScore", |
| | | "picDate", |
| | | "updateTime", |
| | | "picMaxUrl", |
| | | "targetInfo.belongsTargetId", |
| | | "targetInfo.targetLocation", |
| | | "picWH.picW" |
| | | ] |
| | | } |
| | | }` |
| | | //fmt.Println(personUrl) |
| | | //fmt.Println(personBody) |
| | | source := make(map[string]interface{}) |
| | | queryStartTime := time.Now() |
| | | buf, err := EsReq("POST", personUrl, []byte(personBody)) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | queryUseTime := time.Now().Sub(queryStartTime).Seconds() * 1000 |
| | | sources, err := Sourcelist(buf) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | resData, err := PerSonAnalysis(sources) |
| | | source["result"] = resData |
| | | source["total"] = len(resData) |
| | | source["queryUseTime"] = queryUseTime |
| | | //println(sources) |
| | | return source, nil |
| | | |
| | | } |
| | | |
| | | //根据时间范围,摄像机列表,分组聚合人脸列表,返回分组数据 |
| | | func GetFaceDataBucketsByCameraIdAndTimeReturnByGrouped(cameraId []string, personId []string, startTime string, endTime string, thresholdTime float64, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{}, err error) { |
| | | var filterArr []string |
| | | if cameraId != nil && len(cameraId) > 0{ |
| | | esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1) |
| | | filterArr = append(filterArr, `{ |
| | | "terms": { |
| | | "cameraId": ["`+esCameraId+`"] |
| | | } |
| | | }`) |
| | | } |
| | | if personId != nil &&len(personId) > 0{ |
| | | esPersonId := strings.Replace(strings.Trim(fmt.Sprint(personId), "[]"), " ", "\",\"", -1) |
| | | filterArr = append(filterArr, `{ |
| | | "terms": { |
| | | "baseInfo.targetId": ["`+esPersonId+`"] |
| | | } |
| | | }`) |
| | | } |
| | | filterArr = append(filterArr, `{ |
| | | "range": { |
| | | "picDate": { |
| | | "gte": "`+startTime+`", |
| | | "lte": "`+endTime+`" |
| | | } |
| | | } |
| | | }`) |
| | | filterArr = append(filterArr, ` { |
| | | "term": { |
| | | "targetInfo.targetType.raw": "FaceDetect" |
| | | } |
| | | }`) |
| | | queryStr := strings.Join(filterArr, ",") |
| | | |
| | | var buckersUrl = "http://" + serverIp + ":" + ServerPort + "/" + indexName + "/_search" |
| | | var buckersBody = `{ |
| | | "query": { |
| | | "bool": { |
| | | "filter": [ |
| | | { |
| | | "range": { |
| | | "picDate": { |
| | | "gte": "` + startTime + `", |
| | | "lte": "` + endTime + `" |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | "term": { |
| | | "targetInfo.targetType.raw": "FaceDetect" |
| | | } |
| | | }, |
| | | { |
| | | "terms": { |
| | | "cameraId": ["` + esCameraId + `"] |
| | | } |
| | | } |
| | | ` + queryStr + ` |
| | | ] |
| | | } |
| | | }, |
| | |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | ], |
| | | "size": 100000000 |
| | | }, |
| | | "aggs":{ |
| | | "top_attention_hits":{ |
| | | "top_hits":{ |
| | | "size": 100, |
| | | "size": 1000000, |
| | | "sort": [ |
| | | { |
| | | "picDate": { |
| | |
| | | } |
| | | ], |
| | | "_source":{ |
| | | "includes":["baseInfo.targetId","cameraId","cameraName","cameraAddr","targetInfo.targetScore","targetInfo.picSmUrl","showLabels","baseInfo.tableId","baseInfo.tableName","baseInfo.bwType","baseInfo.targetName","baseInfo.compareScore","picDate","picMaxUrl"] |
| | | "includes":["baseInfo.targetId","cameraId","cameraName","cameraAddr","targetInfo.targetScore","targetInfo.picSmUrl","showLabels","baseInfo.tableId","baseInfo.tableName","baseInfo.bwType","baseInfo.targetName","baseInfo.compareScore","picDate","picMaxUrl","picWH"] |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | }` |
| | | //fmt.Println(buckersUrl) |
| | | //fmt.Println(buckersBody) |
| | | sources := make(map[string]interface{}) |
| | | queryStartTime := time.Now() |
| | | buf, err := EsReq("POST", buckersUrl, []byte(buckersBody)) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | |
| | | sources, err := SourceAggregations(buf) |
| | | queryUseTime := time.Now().Sub(queryStartTime).Seconds() * 1000 |
| | | //fmt.Println(queryUseTime) |
| | | tmpSources, err := SourceAggregationsReturnByGrouped(buf, thresholdTime) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | sources["result"] = tmpSources |
| | | sources["total"] = len(tmpSources) |
| | | sources["queryUseTime"] = queryUseTime |
| | | //println(sources) |
| | | return sources,nil |
| | | return sources, nil |
| | | } |
| | | |
| | | //根据抓拍人员id更新(picurl)图片地址---预开发 |
| | | func UpdatePicUrlById(id string, picurl string, indexName string, serverIp string, serverPort string) (statu int, err error) { |
| | | //根据时间范围,摄像机列表,分组聚合人脸列表 |
| | | func GetFaceDataBucketsByCameraIdAndTime(cameraId []string, personId []string, startTime string, endTime string, thresholdTime float64, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{}, err error) { |
| | | var filterArr []string |
| | | if cameraId != nil && len(cameraId) > 0{ |
| | | esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1) |
| | | filterArr = append(filterArr, `{ |
| | | "terms": { |
| | | "cameraId": ["`+esCameraId+`"] |
| | | } |
| | | }`) |
| | | } |
| | | if personId != nil &&len(personId) > 0{ |
| | | esPersonId := strings.Replace(strings.Trim(fmt.Sprint(personId), "[]"), " ", "\",\"", -1) |
| | | filterArr = append(filterArr, `{ |
| | | "terms": { |
| | | "baseInfo.targetId": ["`+esPersonId+`"] |
| | | } |
| | | }`) |
| | | } |
| | | filterArr = append(filterArr, `{ |
| | | "range": { |
| | | "picDate": { |
| | | "gte": "`+startTime+`", |
| | | "lte": "`+endTime+`" |
| | | } |
| | | } |
| | | }`) |
| | | filterArr = append(filterArr, ` { |
| | | "term": { |
| | | "targetInfo.targetType.raw": "FaceDetect" |
| | | } |
| | | }`) |
| | | queryStr := strings.Join(filterArr, ",") |
| | | |
| | | var buckersUrl = "http://" + serverIp + ":" + ServerPort + "/" + indexName + "/_search" |
| | | var buckersBody = `{ |
| | | "query": { |
| | | "bool": { |
| | | "filter": [ |
| | | ` + queryStr + ` |
| | | ] |
| | | } |
| | | }, |
| | | "size": 0, |
| | | "aggs": { |
| | | "buckets_aggs": { |
| | | "composite": { |
| | | "sources": [ |
| | | { |
| | | "baseInfo.targetId": { |
| | | "terms": { |
| | | "field": "baseInfo.targetId" |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | "cameraId": { |
| | | "terms": { |
| | | "field": "cameraId" |
| | | } |
| | | } |
| | | } |
| | | ], |
| | | "size": 100000000 |
| | | }, |
| | | "aggs":{ |
| | | "top_attention_hits":{ |
| | | "top_hits":{ |
| | | "size": 1000000, |
| | | "sort": [ |
| | | { |
| | | "picDate": { |
| | | "order": "asc" |
| | | } |
| | | } |
| | | ], |
| | | "_source":{ |
| | | "includes":["baseInfo.targetId","cameraId","cameraName","cameraAddr","targetInfo.targetScore","targetInfo.picSmUrl","showLabels","baseInfo.tableId","baseInfo.tableName","baseInfo.bwType","baseInfo.targetName","baseInfo.compareScore","picDate","picMaxUrl","picWH"] |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }` |
| | | //fmt.Println(buckersUrl) |
| | | //fmt.Println(buckersBody) |
| | | queryStartTime := time.Now() |
| | | buf, err := EsReq("POST", buckersUrl, []byte(buckersBody)) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | queryUseTime := time.Now().Sub(queryStartTime).Seconds() * 1000 |
| | | |
| | | sources, err := SourceAggregations(buf, thresholdTime, queryUseTime) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | return sources, nil |
| | | } |
| | | |
| | | //根据抓拍人员id更新(picurl)图片地址 |
| | | func UpdatePicUrlById(id string, picUrl string, indexName string, serverIp string, serverPort string) (err error) { |
| | | updateTime := time.Now().Format("2006-01-02 15:04:05") |
| | | tRes, err := AIOceaninfosbyid([]string{id}, indexName, serverIp, serverPort) |
| | | if err != nil || len(tRes) == 0 { |
| | | return err |
| | | } |
| | | picMaxUrls := tRes[0].PicMaxUrl |
| | | sourceStr := ` |
| | | "lang":"painless", |
| | | "inline": "ctx._source.picMaxUrl.add('` + picUrl + `');ctx._source.updateTime='` + updateTime + `'" |
| | | ` |
| | | if len(picMaxUrls) >= 2 { |
| | | sourceStr = `"source": "ctx._source.picMaxUrl[1]='` + picUrl + `';ctx._source.updateTime='` + updateTime + `'"` |
| | | } |
| | | var info interface{} |
| | | url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_update_by_query?refresh=true" |
| | | sourceStr := "ctx._source.videoUrl='" + picurl + "'" |
| | | var videoUrlInfo = ` |
| | | |
| | | var picUrlInfo = ` |
| | | { |
| | | "script": { |
| | | "source": "` + sourceStr + `" |
| | | ` + sourceStr + ` |
| | | }, |
| | | "query": { |
| | | "term": { |
| | | "id": "` + id + `" |
| | | } |
| | | } |
| | | "query": { |
| | | "bool": { |
| | | "filter": [ |
| | | { |
| | | "term": { |
| | | "id": "` + id + `" |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | } |
| | | ` |
| | | //logPrint("url: ", url, videoUrlInfo) |
| | | buf, err := EsReq("POST", url, []byte(videoUrlInfo)) |
| | | fmt.Println(url, picUrlInfo) |
| | | buf, err := EsReq("POST", url, []byte(picUrlInfo)) |
| | | if err != nil { |
| | | logPrint("http request videoUrlInfo info is err!") |
| | | statu = 500 |
| | | return statu, err |
| | | return err |
| | | } |
| | | json.Unmarshal(buf, &info) |
| | | //logPrint(info) |
| | | out, ok := info.(map[string]interface{}) |
| | | if !ok { |
| | | logPrint("http response interface can not change map[string]interface{}") |
| | | statu = 500 |
| | | return statu, errors.New("http response interface can not change map[string]interface{}") |
| | | return errors.New("http response interface can not change map[string]interface{}") |
| | | } |
| | | middle, ok := out["updated"].(float64) |
| | | if !ok { |
| | | logPrint("first updated change error!") |
| | | statu = 500 |
| | | return statu, errors.New("first updated change error!") |
| | | return errors.New("first updated change error!") |
| | | } |
| | | if middle == 1 { |
| | | statu = 200 |
| | | return statu, nil |
| | | return nil |
| | | } |
| | | if middle == 0 { |
| | | statu = 201 |
| | | return statu, errors.New("已经修改") |
| | | return errors.New("已经修改") |
| | | } |
| | | return statu, nil |
| | | return nil |
| | | } |
| | | |
| | | //根据抓拍人员id更新(videourl)摄像机地址 |