| | |
| | | return tmpinfos |
| | | } |
| | | |
| | | |
| | | func FaceSourceAggregations(buf []byte, thresholdTime int,thresholdStayTime int) (sources []map[string]interface{}, err error) { |
| | | func FaceSourceAggregations(buf []byte, thresholdTime int, thresholdStayTime int) (sources []map[string]interface{}, err error) { |
| | | loc, err := time.LoadLocation("Asia/Shanghai") |
| | | if err != nil { |
| | | return nil, errors.New("时区设置错误") |
| | |
| | | indexLength := len(finalHits) |
| | | point := 0 |
| | | for _, in := range finalHits { |
| | | point = point+1 |
| | | point = point + 1 |
| | | tmpHitSource := make(map[string]interface{}) |
| | | tmpBuf, ok := in.(map[string]interface{}) |
| | | if !ok { |
| | |
| | | } |
| | | |
| | | sTime := tmpTime |
| | | eTime := mTime.Add(time.Second*1).Format("2006-01-02 15:04:05") |
| | | eTime := mTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") |
| | | stayTime := 1.0 |
| | | if startTime != "" && point < indexLength{ |
| | | if startTime != "" && point <= indexLength { |
| | | sinTime, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, loc) |
| | | passTime := math.Abs(mTime.Sub(sinTime).Seconds()) |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | //fmt.Println("passTime: ", passTime) |
| | | if int(passTime) <= thresholdTime || point == indexLength{ |
| | | startTime = tmpTime |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | if point == indexLength{ |
| | | if int(passTime) <= thresholdTime { |
| | | if point == indexLength { |
| | | hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) |
| | | realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) |
| | | stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | startTime = "" |
| | | } else { |
| | | startTime = tmpTime |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | continue |
| | | } |
| | | continue |
| | | |
| | | } else { |
| | | hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) |
| | | hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) |
| | |
| | | sinTime.Add(time.Second * 1) |
| | | sinTime.Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | stayTime = 1 |
| | | stayTime = 1 |
| | | } |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | if point == indexLength { |
| | | stayTime = 1 |
| | | } |
| | | startTime = "" |
| | | continue |
| | | //fmt.Println(hitsSources[len(hitsSources)-1]) |
| | | } |
| | | } |
| | | //fmt.Println("========================================================") |
| | |
| | | return allSource, nil |
| | | } |
| | | |
| | | func SourceDeduplication(buf [] byte) ([]map[string]interface{},error) { |
| | | func SourceDeduplication(buf [] byte) ([]map[string]interface{}, error) { |
| | | var info interface{} |
| | | json.Unmarshal(buf, &info) |
| | | out, ok := info.(map[string]interface{}) |
| | |
| | | if len(buckets) == 0 { |
| | | return nil, nil |
| | | } |
| | | faceId := make([]map[string]interface{},0) |
| | | faceId := make([]map[string]interface{}, 0) |
| | | for _, in := range buckets { |
| | | tmpInfo := make(map[string]interface{}) |
| | | topAttentionHits := in.(map[string]interface{})["top_attention_hits"].(map[string]interface{}) |
| | |
| | | tmpInfo["lastTime"] = finalHits[0].(map[string]interface{})["_source"].(map[string]interface{})["picDate"].(string) |
| | | faceId = append(faceId, tmpInfo) |
| | | } |
| | | return faceId,nil |
| | | return faceId, nil |
| | | } |
| | | |
| | | //解析聚合计数结构 |
| | | func SourceStatistics(buf [] byte) ([]map[string]interface{},error) { |
| | | func SourceStatistics(buf [] byte) ([]map[string]interface{}, error) { |
| | | var info interface{} |
| | | json.Unmarshal(buf, &info) |
| | | out, ok := info.(map[string]interface{}) |
| | |
| | | if len(buckets) == 0 { |
| | | return nil, nil |
| | | } |
| | | resultData := make([]map[string]interface{},0) |
| | | resultData := make([]map[string]interface{}, 0) |
| | | for _, pick := range buckets { |
| | | data := make(map[string]interface{},0) |
| | | data := make(map[string]interface{}, 0) |
| | | data["areaId"] = pick.(map[string]interface{})["key"].(map[string]interface{})["areaId"].(string) |
| | | data["peopleNum"] = int(pick.(map[string]interface{})["doc_count"].(float64)) |
| | | resultData = append(resultData, data) |
| | | } |
| | | return resultData,nil |
| | | return resultData, nil |
| | | } |
| | | |
| | | func SourceAggregations(buf [] byte, thresholdTime float64, queryUseTime float64) (sources map[string]interface{}, err error) { |
| | |
| | | indexLength := len(finalHits) |
| | | point := 0 |
| | | for _, in := range finalHits { |
| | | point = point+1 |
| | | point = point + 1 |
| | | tmpHitSource := make(map[string]interface{}) |
| | | tmpbuf, ok := in.(map[string]interface{}) |
| | | if !ok { |
| | |
| | | } |
| | | |
| | | sTime := tmpTime |
| | | eTime := mTime.Add(time.Second*1).Format("2006-01-02 15:04:05") |
| | | eTime := mTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") |
| | | stayTime := 1.0 |
| | | if startTime != "" && point < indexLength{ |
| | | if startTime != "" && point <= indexLength { |
| | | sinTime, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, loc) |
| | | passTime := math.Abs(mTime.Sub(sinTime).Seconds()) |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | //fmt.Println("passTime: ", passTime) |
| | | if passTime <= thresholdTime || point == indexLength{ |
| | | startTime = tmpTime |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | if point == indexLength{ |
| | | if passTime <= thresholdTime { |
| | | if point == indexLength { |
| | | hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) |
| | | realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) |
| | | stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | startTime = "" |
| | | } else { |
| | | startTime = tmpTime |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | continue |
| | | } |
| | | continue |
| | | |
| | | } else { |
| | | hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) |
| | | hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) |
| | |
| | | sinTime.Add(time.Second * 1) |
| | | sinTime.Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | stayTime = 1 |
| | | stayTime = 1 |
| | | } |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | if point == indexLength { |
| | | stayTime = 1 |
| | | } |
| | | startTime = "" |
| | | continue |
| | | //fmt.Println(hitsSources[len(hitsSources)-1]) |
| | | } |
| | | } |
| | | //fmt.Println("========================================================") |
| | |
| | | startTime := "" |
| | | //fmt.Println("finalHits: ",finalHits) |
| | | for _, in := range finalHits { |
| | | point = point+1 |
| | | point = point + 1 |
| | | tmpHitSource := make(map[string]interface{}) |
| | | tmpbuf, ok := in.(map[string]interface{}) |
| | | if !ok { |
| | |
| | | } |
| | | |
| | | sTime := tmpTime |
| | | eTime := mTime.Add(time.Second*1).Format("2006-01-02 15:04:05") |
| | | eTime := mTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") |
| | | stayTime := 1.0 |
| | | if startTime != "" && point < indexLength{ |
| | | if startTime != "" && point <= indexLength { |
| | | sinTime, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, loc) |
| | | passTime := math.Abs(mTime.Sub(sinTime).Seconds()) |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | //fmt.Println("passTime: ", passTime) |
| | | if passTime <= thresholdTime || point == indexLength{ |
| | | startTime = tmpTime |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | if point == indexLength{ |
| | | if passTime <= thresholdTime { |
| | | if point == indexLength { |
| | | hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) |
| | | realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) |
| | | stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | startTime = "" |
| | | } else { |
| | | startTime = tmpTime |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | continue |
| | | } |
| | | continue |
| | | |
| | | } else { |
| | | hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) |
| | | hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) |
| | |
| | | sinTime.Add(time.Second * 1) |
| | | sinTime.Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | stayTime = 1 |
| | | stayTime = 1 |
| | | } |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | if point == indexLength { |
| | | stayTime = 1 |
| | | } |
| | | startTime = "" |
| | | continue |
| | | //fmt.Println(hitsSources[len(hitsSources)-1]) |
| | | } |
| | | } |
| | | startTime = tmpTime |