public OrderTool getHalfYearOrderNum() { DateTime startTime = DateTime.Now.AddMonths(-5).AddDays(1 - DateTime.Now.Day).Date; List <DateTime> MonthDate = new List <DateTime>(); MonthDate = BaseDataHelper.getSixMnthDate(DateTime.Now); LayerDbContext context = new LayerDbContext(); //异常订单数 var exceptOrderTemp = context.orderInfo.Where(x => x.status == "excepted" && x.receivedDate > startTime).GroupBy(x => x.createdDate.Month).Select(x => new { createdDate = x.Max(item => item.createdDate), count = x.Count() }).ToList(); //所有订单 var orderTemp = context.orderInfo.Where(x => x.createdDate > startTime).GroupBy(x => x.createdDate.Month).Select(x => new { createdDate = x.Max(item => item.createdDate), count = x.Count() }).ToList(); //完成订单 var completedOrderTemp = context.orderInfo.Where(x => x.status == "completed" && x.receivedDate > startTime).GroupBy(x => x.createdDate.Month).Select(x => new { createdDate = x.Max(item => item.createdDate), count = x.Count() }).ToList(); List <LineDataTool> orderData = new List <LineDataTool>(); List <LineDataTool> exceptedOrderData = new List <LineDataTool>(); List <LineDataTool> completedOrderData = new List <LineDataTool>(); LineDataTool model = null; foreach (var item in orderTemp) { model = new LineDataTool(); model.intData = item.count; model.date = item.createdDate.AddDays(1 - item.createdDate.Day).Date; orderData.Add(model); } foreach (var item in exceptOrderTemp) { model = new LineDataTool(); model.intData = item.count; model.date = item.createdDate.AddDays(1 - item.createdDate.Day).Date; exceptedOrderData.Add(model); } foreach (var item in completedOrderTemp) { model = new LineDataTool(); model.intData = item.count; model.date = item.createdDate.AddDays(1 - item.createdDate.Day).Date; completedOrderData.Add(model); } var normalData = (from x in MonthDate.OrderBy(x => x) join y in orderData on x equals y.date into Temp from t in Temp.DefaultIfEmpty() select t == null ? 0 : t.intData).ToArray(); var exceptData = (from x in MonthDate.OrderBy(x => x) join y in exceptedOrderData on x equals y.date into Temp from t in Temp.DefaultIfEmpty() select t == null ? 0 : t.intData).ToArray(); var copmpletedData = (from x in MonthDate.OrderBy(x => x) join y in completedOrderData on x equals y.date into Temp from t in Temp.DefaultIfEmpty() select t == null ? 0 : t.intData).ToArray(); OrderTool result = new OrderTool(); result.exceptedOrderNum = exceptData; result.produceOrderNum = normalData; result.completedOrderNum = copmpletedData; return(result); }
public float[] searchLastMonthProfit() { DateTime startDate = DateTime.Now.AddDays(-30).Date; DateTime endDate = DateTime.Now.Date; List <DateTime> dateList = BaseDataHelper.getLastMonthDate(DateTime.Now); LayerDbContext context = new LayerDbContext(); var profitData = context.profitRecord.Where(x => x.createdDate >= startDate && x.createdDate < endDate).GroupBy(x => x.createdDate.Day).Select(x => new { createdDate = x.Max(item => item.createdDate), profit = x.Sum(item => item.profit) }).ToList(); List <LineDataTool> profitData1 = new List <LineDataTool>(); LineDataTool model = null; foreach (var item in profitData) { model = new LineDataTool(); model.date = item.createdDate.Date; model.floatData = item.profit; profitData1.Add(model); } var result = (from x in dateList.OrderBy(x => x) join y in profitData1 on x equals y.date into Temp from temp in Temp.DefaultIfEmpty() select(temp == null ? 0 : temp.floatData)).ToArray(); return(result); }