public IResponseResult GetBuyStatisticsChart(BuyChartRequest request) { request.UserId = UserModel.UserId; var result = new BuyStatisticsBiz().GetBuyStatisticsChart(request); return(ReturnResult(result)); }
public IResponseResult GetBuyStatisticsChart(BuyChartRequest request) { var result = Biz.GetBuyStatisticsChart(request); return(ReturnResult(result)); }
/// <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); }