private void dgvKeyword1_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     try
     {
         if (this.dgvKeyword1.SelectedCells.Count < 1)
         {
             return;
         }
         var item = this.dgvKeyword1.SelectedCells[0].Item as TaobaoKeywordDetail;
         if (string.IsNullOrWhiteSpace(item.Keywords))
         {
             return;
         }
         string[] keys = item.Keywords.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
         this.dgvKeyword.ItemsSource = this.allKeywords.Where(obj => TaobaoKeywordDetailService.Match(keys, obj.Keywords)).ToArray();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Example #2
0
        private void btnQuery_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var se = this.cbbKeyWords.SelectedItem as TaobaoKeyword;
                if (se == null)
                {
                    throw new Exception("没有选择数据");
                }
                string   number = se.Number.Trim();
                DateTime start  = this.dpStart.Value == null ? DateTime.MinValue : this.dpStart.Value.Value;
                DateTime end    = this.dpEnd.Value == null ? DateTime.MinValue : this.dpEnd.Value.Value;

                var s = ServiceContainer.GetService <SystemConfigService>();
                if (string.IsNullOrWhiteSpace(number) || (s.IsDBMinTime(start) && s.IsDBMinTime(end)))
                {
                    throw new Exception("查询货号不能空,必须有起始时间");
                }
                this.dicKeywords = new SortedDictionary <DateTime, List <TaobaoKeywordDetail> >();
                var allItems = ServiceContainer.GetService <TaobaoKeywordDetailService>().GetByAll(number, start, end, 0, 0).Datas;
                foreach (var v in allItems)
                {
                    if (this.dicKeywords.ContainsKey(v.CreateTime) == false)
                    {
                        this.dicKeywords[v.CreateTime] = new List <TaobaoKeywordDetail>();
                    }
                    this.dicKeywords[v.CreateTime].Add(v);
                }

                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn {
                    ColumnName = "关键词", Caption = "关键词", DataType = typeof(string), ReadOnly = true, DefaultValue = ""
                });
                dt.Columns.AddRange(this.dicKeywords.Keys.Select(obj => new DataColumn {
                    Caption = obj.ToString("yyyy-MM-dd HH:mm:ss"), ColumnName = obj.ToString("MM-dd"), DataType = typeof(string), DefaultValue = "", ReadOnly = true
                }).ToArray());

                var sum = new List <string>();
                sum.Add("总数");
                foreach (var key in this.dicKeywords.Keys)
                {
                    sum.Add(this.dicKeywords[key].Sum(obj => obj.Total).ToString());
                }
                var row = dt.NewRow();
                row.ItemArray = sum.ToArray();
                dt.Rows.Add(row);

                foreach (var word in se.WordsArray)
                {
                    string[] words = word.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    var      datas = new string[dt.Columns.Count];
                    datas[0] = word;

                    for (int i = 1; i < datas.Length; i++)
                    {
                        var time  = DateTime.Parse(dt.Columns[i].Caption);
                        var total = this.dicKeywords[time].Where(obj => TaobaoKeywordDetailService.Match(words, obj.Keywords)).Sum(obj => obj.Total);
                        datas[i] = total.ToString();
                    }
                    row           = dt.NewRow();
                    row.ItemArray = datas;
                    dt.Rows.Add(row);
                }
                this.dgvItems.ItemsSource = dt.DefaultView;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void btnQuery_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var se = this.cbbKeyWords.SelectedItem as TaobaoKeyword;
                if (se == null)
                {
                    throw new Exception("没有选择数据");
                }
                string   number = se.Number.Trim();
                DateTime start  = this.dpStart.Value == null ? DateTime.MinValue : this.dpStart.Value.Value;
                DateTime end    = this.dpEnd.Value == null ? DateTime.MinValue : this.dpEnd.Value.Value;

                var s = ServiceContainer.GetService <SystemConfigService>();
                if (string.IsNullOrWhiteSpace(number) || (s.IsDBMinTime(start) && s.IsDBMinTime(end)))
                {
                    throw new Exception("查询货号不能空,必须有起始时间");
                }
                this.allKeywords = new List <TaobaoKeywordDetail>();
                var allItems = ServiceContainer.GetService <TaobaoKeywordDetailService>().GetByAll(number, start, end, 0, 0).Datas;

                if (allItems.Count < 1)
                {
                    throw new Exception("未查询任何数据");
                }

                var min = allItems.Min(obj => obj.CreateTime).Date;
                var max = allItems.Max(obj => obj.CreateTime).Date;

                int countDay = max.Subtract(min).Days + 1;

                //合并所有关键词
                foreach (var v in allItems)
                {
                    var first = this.allKeywords.FirstOrDefault(obj => obj.Keywords == v.Keywords);
                    if (first != null)
                    {
                        first.AddCat  += v.AddCat;
                        first.Collect += v.Collect;
                        first.Sale    += v.Sale;
                        first.Total   += v.Total;
                        first.Rela     = (first.Sale + first.Collect + first.AddCat) * 1.0F / (first.Total == 0 ? 1 : first.Total);
                    }
                    else
                    {
                        this.allKeywords.Add(v);
                    }
                }
                //分析关键词
                var anlKeywords = se.WordsArray.Select(obj => new TaobaoKeywordDetail {
                    Number = se.Number, Keywords = obj
                }).ToArray();
                foreach (var item in anlKeywords)
                {
                    string[] keys  = item.Keywords.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    var      match = this.allKeywords.Where(obj => TaobaoKeywordDetailService.Match(keys, obj.Keywords)).ToArray();
                    item.Total   = match.Sum(obj => obj.Total);
                    item.AddCat  = match.Sum(obj => obj.AddCat);
                    item.Sale    = match.Sum(obj => obj.Sale);
                    item.Collect = match.Sum(obj => obj.Collect);
                    item.Rela    = (item.Sale + item.Collect + item.AddCat) * 1.0F / (item.Total == 0 ? 1 : item.Total);
                    item.DayEvg  = 1.0F * item.Total / countDay;
                }
                this.dgvKeyword.ItemsSource  = allKeywords;
                this.dgvKeyword1.ItemsSource = anlKeywords;
                int total   = allKeywords.Select(obj => obj.Total).Sum();
                int collect = allKeywords.Select(obj => obj.Collect).Sum();
                int addCat  = allKeywords.Select(obj => obj.AddCat).Sum();
                int sale    = allKeywords.Select(obj => obj.Sale).Sum();
                this.tbSum.Text = string.Format("关键词数:{0},访客数:{1},收藏人数:{2},加购人数:{3},支付件数:{4},相关性:{5:F4},数据起始:{6}  {7}", allKeywords.Count, total, collect, addCat, sale, 1.0F * (collect + addCat + sale) / total, min.ToString("yyyy-MM-dd"), max.ToString("yyyy-MM-dd"));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }