예제 #1
0
        public IResponseResult GetBuyStatisticsChart(BuyChartRequest request)
        {
            request.UserId = UserModel.UserId;
            var result = new BuyStatisticsBiz().GetBuyStatisticsChart(request);

            return(ReturnResult(result));
        }
예제 #2
0
        public IResponseResult GetBuyStatisticsChart(BuyChartRequest request)
        {
            var result = Biz.GetBuyStatisticsChart(request);

            return(ReturnResult(result));
        }
예제 #3
0
        /// <summary>
        /// 收款图表统计
        /// </summary>
        /// <returns></returns>
        public BuyChartResult GetBuyStatisticsChart(BuyChartRequest request)
        {
            if (!new[] { 1, 2, 3 }.Contains(request.Type))
            {
                return(null);
            }

            var title = string.Empty;

            switch (request.Type)
            {
            case 1:
            {
                title = "按月统计";
                break;
            }

            case 2:
            {
                title = "按周统计";
                break;
            }

            case 3:
            {
                title = "按天统计";
                break;
            }
            }

            var date = CommonMethods.GetDateType(request.Type);

            var list = Da.GetBuyStatisticsResults(new BuyStatisticsRequest()
            {
                UserId        = request.UserId,
                BeginDatetime = date.First().Begin,
                EndDatetime   = date.Last().End,
            });

            //按结算时间标记序号
            foreach (var item in list)
            {
                foreach (var d in date)
                {
                    var b = item.DateTime.HasValue && item.DateTime.Value >= d.Begin &&
                            item.DateTime.Value < d.EndNextDay;
                    if (!b)
                    {
                        continue;
                    }

                    item.I = d.Index;
                    break;
                }
            }

            //按人和序号汇总
            var items = list.GroupBy(p => new { p.UserId, p.I }, (p, q) => new { p.UserId, Index = p.I, Total = q.Sum(g => g.PayTotal) }).OrderBy(p => p.UserId).ThenBy(p => p.Index).ToList();

            var users = list.ToDict(p => p.UserId, p => p.UserName, true);
            var rows  = new List <BuySeriesItem>();

            foreach (var item in users)
            {
                var totals = date.Select(d => items.Find(p => p.UserId == item.Key && p.Index == d.Index)?.Total ?? 0).ToList();
                var m      = new BuySeriesItem()
                {
                    name  = item.Value,
                    type  = "line",
                    stack = "采购额",
                    data  = totals,
                };
                rows.Add(m);
            }

            var result = new BuyChartResult()
            {
                LegendData  = users.Select(p => p.Value).ToList(),
                XaxisData   = date.Select(p => p.Name).ToList(),
                SeriesItems = rows,
                Title       = title,
            };

            return(result);
        }