Пример #1
0
        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);
        }
Пример #2
0
        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);
        }