zhaoqingang
2025-02-10 7eaa093e6a3e27c5886800a3561c440b0e6bdc07
测试 场景分析 bug
1个文件已修改
154 ■■■■ 已修改文件
models/locationAnalysis.go 154 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/locationAnalysis.go
@@ -419,14 +419,14 @@
        "size": 0,
    }
    query = map[string]interface{}{
        "query": map[string]interface{}{
            "bool": map[string]interface{}{
                "filter": filters,
            },
        },
        "size": 10000,
    }
    //query = map[string]interface{}{
    //    "query": map[string]interface{}{
    //        "bool": map[string]interface{}{
    //            "filter": filters,
    //        },
    //    },
    //    "size": 10000,
    //}
    if err := json.NewEncoder(&buf).Encode(query); err != nil {
        return nil, fmt.Errorf("error encoding query: %s", err)
    }
@@ -458,79 +458,79 @@
    var records []*LocationRecord
    //dat, ok := result["hits"].(map[string]interface{})
    dat := result["hits"].(map[string]interface{})
    var data = make(map[string]interface{}, 2)
    tmp, b := dat["total"].(map[string]interface{})
    if b != true {
        data["total"] = dat["total"].(float64)
    } else {
        data["total"] = tmp["value"].(float64)
    }
    sources := []interface{}{}
    for _, value := range dat["hits"].([]interface{}) {
        sourceData := value.(map[string]interface{})
        source := sourceData["_source"].(map[string]interface{})
        source["_id"] = sourceData["_id"]
        /*sdkType := source["sdkType"]
        if sdkType != nil {
            sdk, _ := strconv.Atoi(sdkType.(string))
            source["sdkType"] = sdkTypeToValue(sdk)
        }*/
        sources = append(sources, source)
    }
    data["datalist"] = sources
    logger.Debugf("ressss--------------data------------------------- %s", data)
    //if aggs, ok := result["aggregations"].(map[string]interface{}); ok {
    //    if orgBuckets, ok := aggs["orgs"].(map[string]interface{})["buckets"].([]interface{}); ok {
    //        for _, orgBucket := range orgBuckets {
    //            orgId := orgBucket.(map[string]interface{})["key"].(string)
    //            logger.Debugf("orgId--------------------------------------- %s", orgId)
    //            // 解析按communityId的聚合结果
    //            if communityBuckets, ok := orgBucket.(map[string]interface{})["community"].(map[string]interface{})["buckets"].([]interface{}); ok {
    //                for _, communityBucket := range communityBuckets {
    //                    communityId := communityBucket.(map[string]interface{})["key"].(string)
    //                    logger.Debugf("communityId--------------------------------------- %s", communityId)
    //                    // 解析按building的聚合结果
    //                    if locationBuckets, ok := communityBucket.(map[string]interface{})["location"].(map[string]interface{})["buckets"].([]interface{}); ok {
    //                        for _, locationBucket := range locationBuckets {
    //                            building := locationBucket.(map[string]interface{})["key"].(string)
    //                            logger.Debugf("building--------------------------------------- %s", building)
    //                            // 解析按floor的聚合结果
    //                            if floorBuckets, ok := locationBucket.(map[string]interface{})["floor"].(map[string]interface{})["buckets"].([]interface{}); ok {
    //                                for _, floorBucket := range floorBuckets {
    //                                    floor := floorBucket.(map[string]interface{})["key"].(string)
    //                                    appearCount := floorBucket.(map[string]interface{})["filter_floor"].(int)
    //                                    // 构建 LocationRecord 结构体
    //                                    var persons []string
    //                                    if docNumBuckets, ok := floorBucket.(map[string]interface{})["document_numbers"].(map[string]interface{})["buckets"].([]interface{}); ok {
    //                                        for _, docNumBucket := range docNumBuckets {
    //                                            persons = append(persons, docNumBucket.(map[string]interface{})["key"].(string))
    //                                        }
    //                                    }
    //dat := result["hits"].(map[string]interface{})
    //
    //                                    logger.Debugf("floor--------------------------------------- %s-- %s --", floor, appearCount)
    //                                    record := &LocationRecord{
    //                                        //PicDate:        timestamp,
    //                                        DocumentNumbers: persons,
    //                                        CommunityId:     communityId,
    //                                        Building:        building,
    //                                        Floor:           floor,
    //                                        OrgId:           orgId,
    //                                        AppearCount:     appearCount,
    //                                    }
    //var data = make(map[string]interface{}, 2)
    //
    //                                    records = append(records, record)
    //tmp, b := dat["total"].(map[string]interface{})
    //if b != true {
    //    data["total"] = dat["total"].(float64)
    //} else {
    //    data["total"] = tmp["value"].(float64)
    //                                }
    //sources := []interface{}{}
    //for _, value := range dat["hits"].([]interface{}) {
    //    sourceData := value.(map[string]interface{})
    //    source := sourceData["_source"].(map[string]interface{})
    //    source["_id"] = sourceData["_id"]
    //    /*sdkType := source["sdkType"]
    //    if sdkType != nil {
    //        sdk, _ := strconv.Atoi(sdkType.(string))
    //        source["sdkType"] = sdkTypeToValue(sdk)
    //    }*/
    //    sources = append(sources, source)
    //                            }
    //                        }
    //                    }
    //                }
    //            }
    //        }
    //    }
    //}
    //data["datalist"] = sources
    //logger.Debugf("ressss--------------data------------------------- %s", data)
    if aggs, ok := result["aggregations"].(map[string]interface{}); ok {
        if orgBuckets, ok := aggs["orgs"].(map[string]interface{})["buckets"].([]interface{}); ok {
            for _, orgBucket := range orgBuckets {
                orgId := orgBucket.(map[string]interface{})["key"].(string)
                logger.Debugf("orgId--------------------------------------- %s", orgId)
                // 解析按communityId的聚合结果
                if communityBuckets, ok := orgBucket.(map[string]interface{})["community"].(map[string]interface{})["buckets"].([]interface{}); ok {
                    for _, communityBucket := range communityBuckets {
                        communityId := communityBucket.(map[string]interface{})["key"].(string)
                        logger.Debugf("communityId--------------------------------------- %s", communityId)
                        // 解析按building的聚合结果
                        if locationBuckets, ok := communityBucket.(map[string]interface{})["location"].(map[string]interface{})["buckets"].([]interface{}); ok {
                            for _, locationBucket := range locationBuckets {
                                building := locationBucket.(map[string]interface{})["key"].(string)
                                logger.Debugf("building--------------------------------------- %s", building)
                                // 解析按floor的聚合结果
                                if floorBuckets, ok := locationBucket.(map[string]interface{})["floor"].(map[string]interface{})["buckets"].([]interface{}); ok {
                                    for _, floorBucket := range floorBuckets {
                                        floor := floorBucket.(map[string]interface{})["key"].(string)
                                        appearCount := floorBucket.(map[string]interface{})["filter_floor"].(int)
                                        // 构建 LocationRecord 结构体
                                        var persons []string
                                        if docNumBuckets, ok := floorBucket.(map[string]interface{})["document_numbers"].(map[string]interface{})["buckets"].([]interface{}); ok {
                                            for _, docNumBucket := range docNumBuckets {
                                                persons = append(persons, docNumBucket.(map[string]interface{})["key"].(string))
                                            }
                                        }
                                        logger.Debugf("floor--------------------------------------- %s-- %s --", floor, appearCount)
                                        record := &LocationRecord{
                                            //PicDate:        timestamp,
                                            DocumentNumbers: persons,
                                            CommunityId:     communityId,
                                            Building:        building,
                                            Floor:           floor,
                                            OrgId:           orgId,
                                            AppearCount:     appearCount,
                                        }
                                        records = append(records, record)
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return records, nil
}