public BarChartDto GetCanhBaoBarChart(int nam, long thang)
        {
            List <string> labels = new List <string>();
            List <double> values = new List <double>();

            var lsCanhBao = _repository.GetAll();


            BarChartDto kq = new BarChartDto();

            kq.LABELS = labels;
            kq.VALUES = values;
            return(kq);
        }
        public JsonResult BarChart()
        {
            List <BarChartDto> list = new List <BarChartDto>();
            var date      = DateTime.Now;
            var startDate = date.AddMonths(-11);

            for (int i = 0; i < 12; i++)
            {
                BarChartDto dto   = new BarChartDto();
                string      month = ((Months)startDate.Month).ToString();

                var saleDetails = rpsaledetails
                                  .GetListWithQuery(x => x.AddDate.Month == startDate.Month && x.AddDate.Year == startDate.Year).Select(x => new SaleDetailsVM
                {
                    UnitSalePrice = x.Price,
                    KdvPrice      = x.KdvPrice,
                    ID            = x.ID
                }).ToList();
                saleDetails.ForEach(d => d.InfoList = rpsaledetailinfo.GetListWithQuery(inf => inf.SaleDetailID == d.ID).Select(inf => new SaleDetailsInfoDto
                {
                    Quantity     = inf.Quantity,
                    UnitBuyPrice = rppaymentinfo.Find(inf.PaymentInfoID).UnitPrice
                }).ToList());

                saleDetails.ForEach(d => d.UnitBuyPrice = d.InfoList.Sum(x => x.UnitBuyPrice * x.Quantity));

                var serviceSales = rpservicesale.GetListWithQuery(s => s.AddDate.Month == startDate.Month && s.AddDate.Year == startDate.Year).Select(s => new ServiceSaleVM
                {
                    Price = s.Price
                });

                var technicalCosts = rptechservicecost.GetListWithQuery(s => s.AddDate.Month == startDate.Month && s.AddDate.Year == startDate.Year);

                decimal serviceSalePrice = serviceSales.Sum(x => x.Price);
                decimal technicalCost    = technicalCosts.Sum(x => x.Cost);

                dto.month = month;
                dto.ciro  = saleDetails.Sum(x => x.UnitSalePrice + x.KdvPrice);
                decimal detailPrice = saleDetails.Sum(x => x.UnitSalePrice - x.UnitBuyPrice);

                dto.kar   = (detailPrice + serviceSalePrice) - technicalCost;
                dto.ciro += serviceSalePrice;
                list.Add(dto);
                startDate = startDate.AddMonths(1);
            }

            return(Json(list, JsonRequestBehavior.AllowGet));
        }
Exemple #3
0
        public List <BarChartDto> GetAssVendorAnalysisChart(QueryAssCusandVenAnalysisInputDto inputDto)
        {
            var types = (from type1 in SMOWMSDbContext.AssetsTypes
                         where type1.TLEVEL == 1
                         select new
            {
                Level1 = type1.TYPEID,
                Level2 = "",
                Level3 = ""
            }).Union(from type1 in SMOWMSDbContext.AssetsTypes
                     where type1.TLEVEL == 2
                     select new
            {
                Level1 = type1.PARENTTYPEID,
                Level2 = type1.TYPEID,
                Level3 = ""
            }).Union(from type1 in SMOWMSDbContext.AssetsTypes
                     join type2 in SMOWMSDbContext.AssetsTypes on type1.PARENTTYPEID equals type2.TYPEID
                     where type1.TLEVEL == 3
                     select new
            {
                Level1 = type2.PARENTTYPEID,
                Level2 = type1.PARENTTYPEID,
                Level3 = type1.TYPEID
            });
            var vendorlist = _vendorReposity.GetAll();

            if (inputDto.ID != null)
            {
                vendorlist = vendorlist.Where(a => a.VID == inputDto.ID);
            }



            var poRowResult =
                from assTemplate in SMOWMSDbContext.AssTemplates
                from type in types
                from type2 in SMOWMSDbContext.AssetsTypes
                join porow in SMOWMSDbContext.AssPurchaseOrderRows on assTemplate.TEMPLATEID equals porow.TEMPLATEID
                from vendor in vendorlist
                from po in SMOWMSDbContext.AssPurchaseOrders
                where
                ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") ||
                 assTemplate.TYPEID == type.Level3) && porow.CREATEDATE >= inputDto.StarTime && porow.CREATEDATE <= inputDto.EndTime && po.STATUS > 0 && po.VID == vendor.VID && po.POID == porow.POID && type.Level1 == type2.TYPEID
                select new BarChartDto()
            {
                XValue = type2.NAME,
                Series = vendor.NAME,

                YValue = porow.QUANTPURCHASED
            };
            var poRowfresult = from assQuantDto in poRowResult
                               group assQuantDto by new
            {
                assQuantDto.XValue,
                assQuantDto.Series
            }
            into quant
                select new BarChartDto()
            {
                XValue = quant.Key.XValue,
                Series = quant.Key.Series,
                YValue = quant.Sum(a => a.YValue)
            };
            var t3 = poRowfresult.ToList();
            var t4 = new List <BarChartDto>();

            if (inputDto.ID == null)
            {
                //如果是全部,则需要补全数量为0的项
                //得到所有需要显示的一级资产类型
                var allLevel1 =
                    from assTemplate in SMOWMSDbContext.AssTemplates
                    from type in types
                    from type2 in SMOWMSDbContext.AssetsTypes
                    join porow in SMOWMSDbContext.AssPurchaseOrderRows on assTemplate.TEMPLATEID equals porow.TEMPLATEID
                    from vendor in vendorlist
                    from po in SMOWMSDbContext.AssPurchaseOrders
                    where
                    ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") ||
                     assTemplate.TYPEID == type.Level3) && porow.CREATEDATE >= inputDto.StarTime && porow.CREATEDATE <= inputDto.EndTime && porow.STATUS > 0 && po.VID == vendor.VID && po.POID == porow.POID && type.Level1 == type2.TYPEID
                    select type2.NAME;
                List <string> typeList = allLevel1.ToList();
                //得到符合条件的供应商列表
                var allVendor =
                    from assTemplate in SMOWMSDbContext.AssTemplates
                    from type in types
                    from type2 in SMOWMSDbContext.AssetsTypes
                    join porow in SMOWMSDbContext.AssPurchaseOrderRows on assTemplate.TEMPLATEID equals porow.TEMPLATEID
                    from vendor in vendorlist
                    from po in SMOWMSDbContext.AssPurchaseOrders
                    where
                    ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") ||
                     assTemplate.TYPEID == type.Level3) && porow.CREATEDATE >= inputDto.StarTime && porow.CREATEDATE <= inputDto.EndTime && porow.STATUS > 0 && po.VID == vendor.VID && po.POID == porow.POID && type.Level1 == type2.TYPEID
                    select vendor.NAME;
                List <string> vendorLists = allVendor.ToList();
                foreach (var vendor in vendorLists)
                {
                    foreach (var tp in typeList)
                    {
                        var row = t3.Find(a => a.XValue == tp && a.Series == vendor);
                        if (row == null)
                        {
                            BarChartDto dto = new BarChartDto();
                            dto.XValue = tp;
                            dto.Series = vendor;
                            dto.YValue = 0;
                            t4.Add(dto);
                        }
                        else
                        {
                            t4.Add(row);
                        }
                    }
                }
            }
            else
            {
                t4 = t3;
            }
            return(t4);
        }