Пример #1
0
 public static string CompanyTrade_UniversalSearch() => Compose(Req_Trade_UniversalSearch.Default().ToJson());
Пример #2
0
        public static Resp_Company_List TradeSearch2CompanyList(ISearchResponse <Instrument.Client.ES_Company> sr, Req_Trade_UniversalSearch com)
        {
            var company_list = new Resp_Company_List()
            {
                oc_list = new List <Resp_Oc_Abs>(), count = sr.Total, cost = (sr.Took / 1000.0).ToString()
            };
            var trade_dict = new Dictionary <string, long>();
            var hits       = sr.Hits;
            var weights    = new double[com.pg_size];
            var scores     = new double[com.pg_size];
            int i          = 0;

            foreach (var hit in hits)
            {
                var r = new Resp_Oc_Abs();
                var c = hit.Source;
                if (c != null)
                {
                    r.flag           = c.od_createtime.Year != 1900;
                    r.oc_addr        = c.oc_address ?? "";
                    r.oc_area        = c.oc_area;
                    r.oc_code        = c.oc_code;
                    r.oc_art_person  = c.od_faren ?? string.Empty;
                    r.oc_issue_time  = c.oc_issuetime.ToString("yyyy-MM-dd") ?? "";
                    r.oc_name        = c.oc_name;
                    r.oc_name_hl     = c.oc_name;
                    r.oc_reg_capital = c.od_regmoney ?? "";
                    r.oc_reg_capital = Util.InvestMoneyHandle(r.oc_reg_capital);
                    r.oe_status      = c.oc_issuetime < DateTime.Now;
                    r.oc_type        = c.oc_companytype ?? "";
                    r.oc_status      = Datas.CompanyStatus.ContainsKey(c.oc_status) ? Datas.CompanyStatus[c.oc_status] : "未知";
                    scores[i]        = hit.Score;
                    weights[i++]     = c.oc_weight;
                }

                r.gb_trades = new List <string>(10);
                foreach (var code in c.gb_codes)
                {
                    var name = GBName_Get(c.gb_cat, code);
                    if (name != "")
                    {
                        r.gb_trades.Add(name);
                    }
                }

                var hl = hit.Highlights;
                foreach (var pair in hl)
                {
                    r.hits.Add(pair.Key, pair.Value.Highlights.FirstOrDefault());
                }
                company_list.oc_list.Add(r);
            }

            //if (com.pg_index == 1)
            //    ExpUtil.Observation_Insert(ESClient.FunctionScript, Es_Consts.Company_Index + "." + Es_Consts.Company_Type, com.oc_name, scores, weights);

            #region aggregation
            if (sr.Aggregations.Count > 0)
            {
                company_list.aggs = new Company_Agg();
                foreach (var agg in sr.Aggregations)
                {
                    var items = ((BucketAggregate)agg.Value).Items;
                    switch (agg.Key)
                    {
                    case "area":
                        foreach (var item in items)
                        {
                            var pair = (KeyedBucket)item;
                            if (Constants.AreaMap.ContainsKey(pair.Key))
                            {
                                company_list.aggs.areas.Add(new Agg_Monad($"{Constants.AreaMap[pair.Key]}({pair.DocCount ?? 0})", pair.Key, pair.DocCount ?? 0));
                            }
                        }
                        break;

                    case "date":
                        foreach (var item in items)
                        {
                            var pair = (DateHistogramBucket)item;
                            company_list.aggs.dates.Add(new Agg_Monad($"{pair.Date.Year}({pair.DocCount})", pair.Date.ToString(), pair.DocCount));
                        }
                        break;

                    case "regm":
                        foreach (var item in items)
                        {
                            var pair = (RangeBucket)item;
                            company_list.aggs.regms.Add(RangeBucket2AggMonad(pair));
                        }
                        break;

                    case "status":
                        foreach (var item in items)
                        {
                            var pair = (KeyedBucket)item;
                            company_list.aggs.statuses.Add(new Agg_Monad($"{Constants.CompanyStatusMap[pair.Key]}({pair.DocCount ?? 0})", pair.Key, pair.DocCount ?? 0));
                        }
                        break;

                    case "cat":      // 行业分类
                        foreach (var item in items)
                        {
                            var pair = (KeyedBucket)item;
                            if (!string.IsNullOrEmpty(pair.Key))
                            {
                                company_list.aggs.trades.Add(new Agg_Monad($"{Instrument.Model.Constants.Primary_Trades[pair.Key]}({pair.DocCount ?? 0})", pair.Key, pair.DocCount ?? 0));
                            }
                        }
                        break;

                    case "type":
                        foreach (var item in items)
                        {
                            var pair = (KeyedBucket)item;
                            company_list.aggs.types.Add(new Agg_Monad($"{pair.Key}({pair.DocCount ?? 0})", pair.Key, pair.DocCount ?? 0));
                        }
                        break;
                    }
                }
            }
            #endregion
            //if (sr.Aggregations.ContainsKey("1"))
            //{
            //    var agg = (BucketAggregate)sr.Aggregations["fst"];

            //    foreach (var i in agg.Items)
            //    {
            //        var pair = (KeyedBucket)i;
            //        type_dict.Add(pair.Key, pair.DocCount ?? 0);
            //    }
            //    //count = type_dict.Sum(di => di.Value);
            //}
            //DataAccess.ErrorLog_Insert(Constructor.Create_TestLog(company_list.aggs.areas.FirstOrDefault().ToJson(), com.ToJson(), com.u_id + com.u_name));
            return(company_list);
        }