| | |
| | | "errors" |
| | | "fmt" |
| | | "github.com/elastic/go-elasticsearch/v6" |
| | | "model-engine/pkg/set" |
| | | |
| | | //"log" |
| | | "model-engine/config" |
| | | "model-engine/pkg/set" |
| | | //"model-engine/pkg/set" |
| | | "strconv" |
| | | "strings" |
| | | "time" |
| | |
| | | person.PersonType = i.PersonType |
| | | document_number_map[i.DocumentNumber] = person |
| | | } |
| | | records, err := queryEsLocation(db.GetEsClient(), m, document_number_list) |
| | | records, err := queryEsNight(db.GetEsClient(), m, document_number_list) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | domains, err := domainToLocation(records) |
| | | domains, err := domainToNight(records) |
| | | if err != nil { |
| | | return err |
| | | } |
| | |
| | | return fmt.Sprintf("%s人员进出%d次", event, AppearCount) |
| | | } |
| | | |
| | | func queryEsNight(esClient *elasticsearch.Client, locationModel *LocationModel, documentNumbers []string) ([]*LocationRecord, error) { |
| | | func queryEsNight(esClient *elasticsearch.Client, locationModel *nightModel, documentNumbers []string) ([]*nightRecord, error) { |
| | | var buf bytes.Buffer |
| | | nowTime := time.Now() |
| | | startTime := nowTime.Add(-time.Duration(locationModel.Duration) * 24 * time.Hour) |
| | |
| | | } |
| | | |
| | | // 解析聚合结果 |
| | | var records []*LocationRecord |
| | | var records []*nightRecord |
| | | if aggs, ok := result["aggregations"].(map[string]interface{}); ok { |
| | | if orgBuckets, ok := aggs["orgs"].(map[string]interface{})["buckets"].([]interface{}); ok { |
| | | for _, orgBucket := range orgBuckets { |
| | |
| | | persons = append(persons, docNumBucket.(map[string]interface{})["key"].(string)) |
| | | } |
| | | } |
| | | record := &LocationRecord{ |
| | | record := &nightRecord{ |
| | | //PicDate: timestamp, |
| | | DocumentNumbers: persons, |
| | | CommunityId: communityId, |
| | |
| | | return records, nil |
| | | } |
| | | |
| | | //func domainToLocation(records []*LocationRecord) (map[string]*db.DomainUnit, error) { |
| | | // if len(records) == 0 { |
| | | // return nil, nil |
| | | // } |
| | | // domainIds := set.NewStringSet() |
| | | // for _, record := range records { |
| | | // domainIds.Add(record.CommunityId) |
| | | // } |
| | | // domains, err := service.GetUnitsMapByIds(domainIds.Elements()) |
| | | // if err != nil { |
| | | // return nil, err |
| | | // } |
| | | // return domains, nil |
| | | //} |
| | | func domainToNight(records []*nightRecord) (map[string]*db.DomainUnit, error) { |
| | | if len(records) == 0 { |
| | | return nil, nil |
| | | } |
| | | domainIds := set.NewStringSet() |
| | | for _, record := range records { |
| | | domainIds.Add(record.CommunityId) |
| | | } |
| | | domains, err := service.GetUnitsMapByIds(domainIds.Elements()) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | return domains, nil |
| | | } |