public List <RawReportViewModel> GetDailyRawReport(DateTime date) { List <Norm> globalNorm = new List <Norm>(); var dayPlan = _context.DayPlans.Where(d => d.Date.Equals(date)).FirstOrDefault(); if (dayPlan == null) { _context.DayPlans.Add(new DayPlan { Date = date }); _context.SaveChanges(); dayPlan = _context.DayPlans.Where(d => d.Date.Equals(date)).FirstOrDefault(); } var productsPlans = _context.ProductsPlans.Where(d => d.DayPlanId == dayPlan.DayPlanId).ToList(); foreach (ProductsPlan pp in productsPlans) { var norms = _context.Norms.Where(n => n.ProductId == pp.ProductId); foreach (Norm n in norms) { n.Quantity *= pp.Count; if (globalNorm.Contains(n)) { globalNorm.Where(g => g.RowId == n.RowId).FirstOrDefault().Quantity += n.Quantity; } else { globalNorm.Add(n); } } } var newGlobalNorm = globalNorm.GroupBy(n => n.RowId).Select(n => new { Id = n.Key, Sum = n.Sum(q => q.Quantity) }).ToDictionary(n => n.Id, n => n.Sum); List <RawReportViewModel> dailyRawPlanViewModels = new List <RawReportViewModel>(newGlobalNorm.Count); foreach (KeyValuePair <int?, double?> keyValue in newGlobalNorm) { RawReportViewModel d = new RawReportViewModel { RawName = _context.Raws.Where(m => m.RawId == keyValue.Key).FirstOrDefault().RawName, RawQuantity = (double)keyValue.Value }; dailyRawPlanViewModels.Add(d); } return(dailyRawPlanViewModels); }
public List <RawReportViewModel> GetPeriodRawReport(DateTime beginDate = default, DateTime endTime = default) { List <Norm> globalNorm = new List <Norm>(); List <RawReportViewModel> periodRawPlanViewModels = new List <RawReportViewModel>(); IEnumerable <DayPlan> dayPlans; if (beginDate != default && endTime != default) { dayPlans = _context.DayPlans.Where(d => d.Date >= beginDate && d.Date <= endTime); } else { dayPlans = _context.DayPlans; } foreach (DayPlan dayPlan in dayPlans) { var productsPlans = _context.ProductsPlans.Where(d => d.DayPlanId == dayPlan.DayPlanId).ToList(); foreach (ProductsPlan pp in productsPlans) { var norms = _context.Norms.Where(n => n.ProductId == pp.ProductId); foreach (Norm n in norms) { double quantity = (double)n.Quantity; quantity *= (double)pp.Count; if (globalNorm.Contains(n)) { globalNorm.Where(g => g.RowId == n.RowId).FirstOrDefault().Quantity += quantity; } else { Norm norm = new Norm { RowId = n.RowId, Quantity = quantity }; globalNorm.Add(norm); } } } } var newGlobalNorm = globalNorm.GroupBy(n => n.RowId).Select(n => new { Id = n.Key, Sum = n.Sum(q => q.Quantity) }).ToDictionary(n => n.Id, n => n.Sum); foreach (KeyValuePair <int?, double?> keyValue in newGlobalNorm) { RawReportViewModel d = new RawReportViewModel { RawName = _context.Raws.Where(m => m.RawId == keyValue.Key).FirstOrDefault().RawName, RawQuantity = (double)keyValue.Value }; bool flag = true; foreach (RawReportViewModel rr in periodRawPlanViewModels) { if (rr.RawName.Equals(d.RawName)) { rr.RawQuantity += d.RawQuantity; flag = false; } } if (flag) { periodRawPlanViewModels.Add(d); } } return(periodRawPlanViewModels); }