예제 #1
0
 public ChartDataViewModel(LineChartDataModel <float> chart) : this()
 {
     SeriesData = new List <SeriesViewModel>();
     string[] xAxisData = chart.XAxisData;
     for (int i = 0; i < xAxisData.Length; i++)
     {
         string             str = xAxisData[i];
         ChartDataViewModel chartDataViewModel = this;
         chartDataViewModel.xAxis = string.Concat(chartDataViewModel.xAxis, "'", str, "',");
     }
     foreach (ChartSeries <float> seriesDatum in chart.SeriesData)
     {
         SeriesViewModel seriesViewModel = new SeriesViewModel()
         {
             Name       = seriesDatum.Name,
             SeriesData = ""
         };
         SeriesViewModel seriesViewModel1 = seriesViewModel;
         float[]         data             = seriesDatum.Data;
         for (int j = 0; j < data.Length; j++)
         {
             float           single           = data[j];
             SeriesViewModel seriesViewModel2 = seriesViewModel1;
             seriesViewModel2.SeriesData = string.Concat(seriesViewModel2.SeriesData, single.ToString(), ",");
         }
         SeriesData.Add(seriesViewModel1);
     }
 }
예제 #2
0
        public JsonResult GetShopRankingChart(string day = "", int year = 0, int month = 0, int weekIndex = 0, SaleDimension dimension = SaleDimension.Count, DateTime?begin = null, DateTime?end = null)
        {
            LineChartDataModel <int> model = new LineChartDataModel <int>();
            var rank = 15;

            if (begin.HasValue && end.HasValue)
            {
                model = StatisticApplication.GetShopRankingChart(begin.Value, end.Value, dimension, rank);
            }
            else if (!string.IsNullOrWhiteSpace(day))
            {
                var date = DateTime.Parse(day);
                model = StatisticApplication.GetShopRankingChart(date, date, dimension, rank);
            }
            else
            {
                if (year == 0)
                {
                    year = DateTime.Now.Year;
                }
                if (month == 0)
                {
                    month = DateTime.Now.Month;
                }
                model = StatisticApplication.GetShopRankingChart(year, month, weekIndex, dimension, rank);
            }
            return(Json(new { success = true, chart = model }));
        }
예제 #3
0
        public JsonResult GetSaleRankingChart(string day = "", int year = 0, int month = 0, int weekIndex = 0, SaleDimension dimension = SaleDimension.Count, DateTime?begin = null, DateTime?end = null)
        {
            var shop = CurrentSellerManager.ShopId;
            LineChartDataModel <int> model = new LineChartDataModel <int>();

            if (begin.HasValue && end.HasValue)
            {
                model = StatisticApplication.GetProductSaleRankingChart(shop, begin.Value, end.Value, dimension, 15);
            }
            else if (!string.IsNullOrWhiteSpace(day))
            {
                var date = DateTime.Parse(day);//单日
                model = StatisticApplication.GetProductSaleRankingChart(shop, date, date, dimension, 15);
            }
            else
            {
                if (year == 0)
                {
                    year = DateTime.Now.Year;
                }
                if (month == 0)
                {
                    month = DateTime.Now.Month;
                }
                model = StatisticApplication.GetProductSaleRankingChart(shop, year, month, weekIndex, dimension, 15);
            }
            return(Json(new { success = true, chart = model }, JsonRequestBehavior.AllowGet));
        }
예제 #4
0
        public ActionResult ProductRecentMonthSaleRank()
        {
            long shopId = base.CurrentSellerManager.ShopId;
            LineChartDataModel <int> recentMonthSaleRankChart = ServiceHelper.Create <IStatisticsService>().GetRecentMonthSaleRankChart(shopId);

            return(Json(new { successful = true, chart = recentMonthSaleRankChart }, JsonRequestBehavior.AllowGet));
        }
예제 #5
0
        public JsonResult GetSaleRankingChart(string day = "", int year = 0, int month = 0, int weekIndex = 0, int dimension = 1)
        {
            DateTime now;
            LineChartDataModel <int> lineChartDataModel = new LineChartDataModel <int>();

            if (string.IsNullOrWhiteSpace(day))
            {
                if (year == 0)
                {
                    year = DateTime.Now.Year;
                }
                if (month == 0)
                {
                    month = DateTime.Now.Month;
                }
                lineChartDataModel = (weekIndex != 0 ? ServiceHelper.Create <IStatisticsService>().GetProductSaleRankingChart(base.CurrentSellerManager.ShopId, year, month, weekIndex, (SaleDimension)dimension, 15) : ServiceHelper.Create <IStatisticsService>().GetProductSaleRankingChart(base.CurrentSellerManager.ShopId, year, month, (SaleDimension)dimension, 15));
            }
            else
            {
                if (!DateTime.TryParse(day, out now))
                {
                    now = DateTime.Now;
                }
                lineChartDataModel = ServiceHelper.Create <IStatisticsService>().GetProductSaleRankingChart(base.CurrentSellerManager.ShopId, now, (SaleDimension)dimension, 15);
            }
            return(Json(new { successful = true, chart = lineChartDataModel }, JsonRequestBehavior.AllowGet));
        }
예제 #6
0
        public ActionResult GetPieGroupChart(PieGroupModel model)
        {
            db = new ChartsDatabaseManager();
            var response = new LineChartDataModel();
            var dates    = new List <string>();

            return(Json(response, JsonRequestBehavior.AllowGet));
        }
예제 #7
0
        /// <summary>
        /// 图表对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="name"></param>
        /// <param name="dt1"></param>
        /// <param name="dt2"></param>
        /// <param name="dataSource"></param>
        /// <param name="selector"></param>
        /// <returns></returns>
        static LineChartDataModel <T> GetChartDataModel <T>(DateTime dt1, DateTime dt2, IEnumerable <TradeStatisticModel> dataSource, Func <TradeStatisticModel, T> selector) where T : struct
        {
            LineChartDataModel <T> chartData = new LineChartDataModel <T>();

            chartData.XAxisData  = GetDateXAxisData(dt1, dt2);//X轴数据(日期)
            chartData.SeriesData = GetSeriesData <T>(dt1, dt2, dataSource, selector);
            return(chartData);
        }
예제 #8
0
        public ActionResult NewShop()
        {
            ViewBag.YearDrop  = GetYearDrop(2014, 2024);
            ViewBag.MonthDrop = GetMonthDrop();
            LineChartDataModel <int> newsShopChart = ServiceHelper.Create <IStatisticsService>().GetNewsShopChart(DateTime.Now.Year, DateTime.Now.Month);

            return(View(new ChartDataViewModel(newsShopChart)));
        }
예제 #9
0
        public ActionResult ExportSaleRanking(string day = "", int year = 0, int month = 0, int weekIndex = 0)
        {
            #region 获取查询结果
            var result         = new List <SalesExportModel>();
            var SaleCountmodel = new LineChartDataModel <int>();
            var Salesmodel     = new LineChartDataModel <int>();
            var Title          = string.Empty;
            if (!string.IsNullOrWhiteSpace(day))
            {
                DateTime date = DateTime.Parse(day);
                SaleCountmodel = StatisticApplication.GetProductSaleRankingChart(0, date, date, SaleDimension.Count, 15);
                Salesmodel     = StatisticApplication.GetProductSaleRankingChart(0, date, date, SaleDimension.Amount, 15);
                Title          = "按天统计:" + day;
            }
            else
            {
                if (year == 0)
                {
                    year = DateTime.Now.Year;
                }
                if (month == 0)
                {
                    month = DateTime.Now.Month;
                }
                if (weekIndex == 0)
                {
                    Title = "按月统计:" + year + "年" + month + "月";
                }
                else
                {
                    Title = "按周统计:" + year + "年" + month + "月 第" + weekIndex + "周";
                }
                SaleCountmodel = StatisticApplication.GetProductSaleRankingChart(0, year, month, weekIndex, SaleDimension.Count, 15);
                Salesmodel     = StatisticApplication.GetProductSaleRankingChart(0, year, month, weekIndex, SaleDimension.Amount, 15);
            }

            for (int i = 0; i < SaleCountmodel.ExpandProp.Length; i++)
            {
                SalesExportModel model = new SalesExportModel();
                if (!string.IsNullOrEmpty(SaleCountmodel.ExpandProp[i]))
                {
                    model.ProductName = SaleCountmodel.ExpandProp[i];
                    model.SaleCount   = SaleCountmodel.SeriesData[0].Data[i];
                    model.SaleAmount  = Salesmodel.SeriesData[0].Data[i];
                    result.Add(model);
                }
            }
            #endregion

            #region 构建EXCEL
            ViewData.Model = result;
            ViewData.Add("Title", Title);
            string viewHtml = RenderPartialViewToString(this, "ExportSaleRanking");

            return(File(System.Text.Encoding.UTF8.GetBytes(viewHtml), "application/ms-excel", string.Format("销量分析_{0}.xls", DateTime.Now.ToString("yyyy-MM-dd"))));

            #endregion
        }
예제 #10
0
        public ActionResult DealConversionRate()
        {
            ViewBag.YearDrop  = GetYearDrop(2014, 2024);
            ViewBag.MonthDrop = GetMonthDrop();
            IStatisticsService statisticsService = ServiceHelper.Create <IStatisticsService>();
            long     shopId = base.CurrentSellerManager.ShopId;
            int      year   = DateTime.Now.Year;
            DateTime now    = DateTime.Now;
            LineChartDataModel <float> dealConversionRateChart = statisticsService.GetDealConversionRateChart(shopId, year, now.Month);

            return(View(new ChartDataViewModel(dealConversionRateChart)));
        }
예제 #11
0
        public LineChartDataModel <decimal> GetTradeChart(DateTime start, DateTime end, long?shopId)
        {
            LineChartDataModel <decimal> chart = new LineChartDataModel <decimal>()
            {
                SeriesData = new List <ChartSeries <decimal> >()
            };

            var data = DbFactory.Default.Get <OrderInfo>().Where(a => a.PayDate >= start && a.PayDate <= end);

            if (shopId.HasValue && shopId.Value > 0)
            {
                data.Where(a => a.ShopId == shopId);
            }
            var list = data.Select(a => new { Amount = (a.ProductTotalAmount + a.Freight + a.Tax - a.DiscountAmount), PayDate = a.PayDate }).ToList <dynamic>();

            var days = (end - start).Days; //相差的天数

            string[] arr = new string[days + 1];
            for (int i = 0; i <= days; i++)
            {
                arr[i] = start.Date.AddDays(i).ToString("MM/dd");
            }

            chart.XAxisData = arr;

            var arrEx = new string[days + 1];

            var chartItem = new ChartSeries <decimal> {
                Name = "交易额走势图", Data = new decimal[days + 1]
            };

            for (int i = 0; i <= days; i++)
            {
                var date = start.Date.AddDays(i).Date;

                var m = list.Where(a => DateTime.Parse(a.PayDate.ToString("yyyy/MM/dd")) == date).ToList();
                if (m.Count > 0)
                {
                    chartItem.Data[i] = m.Sum(a => (decimal)a.Amount);
                    arrEx[i]          = date + "的销售额为:" + chartItem.Data[i];
                }
                else
                {
                    chartItem.Data[i] = 0;
                    arrEx[i]          = date + "的销售额为:" + chartItem.Data[i];
                }
            }
            chart.ExpandProp = arrEx;
            chart.SeriesData.Add(chartItem);

            return(chart);
        }
예제 #12
0
        public JsonResult GetNewShopChartByMonth(int year = 0, int month = 0)
        {
            if (year == 0)
            {
                year = DateTime.Now.Year;
            }
            if (month == 0)
            {
                month = DateTime.Now.Month;
            }
            LineChartDataModel <int> newsShopChart = ServiceHelper.Create <IStatisticsService>().GetNewsShopChart(year, month);

            return(Json(new { successful = true, chart = newsShopChart }, JsonRequestBehavior.AllowGet));
        }
예제 #13
0
        public JsonResult GetDealConversionRateChartByMonth(int year = 0, int month = 0)
        {
            if (year == 0)
            {
                year = DateTime.Now.Year;
            }
            if (month == 0)
            {
                month = DateTime.Now.Month;
            }
            LineChartDataModel <float> dealConversionRateChart = ServiceHelper.Create <IStatisticsService>().GetDealConversionRateChart(base.CurrentSellerManager.ShopId, year, month);

            return(Json(new { successful = true, chart = dealConversionRateChart }, JsonRequestBehavior.AllowGet));
        }
예제 #14
0
        public LineChartDataModel <decimal> GetTradeChartMonth(DateTime start, DateTime end, long?shopId)
        {
            LineChartDataModel <decimal> chart = new LineChartDataModel <decimal>()
            {
                SeriesData = new List <ChartSeries <decimal> >()
            };

            var data = Context.OrderInfo.Where(a => a.PayDate.HasValue && a.PayDate >= start && a.PayDate < end);

            if (shopId.HasValue && shopId.Value > 0)
            {
                data = data.Where(a => a.ShopId == shopId);
            }
            var list = data.Select(a => new { Amount = (a.ProductTotalAmount + a.Freight + a.Tax - a.DiscountAmount), PayDate = a.PayDate }).ToList();

            int days = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);//本月天数

            string[] arr = new string[days];
            for (int i = 0; i <= days - 1; i++)
            {
                arr[i] = start.Date.AddDays(i).ToString("MM/dd");
            }

            chart.XAxisData = arr;

            var chartItem = new ChartSeries <decimal> {
                Name = "交易额走势图", Data = new decimal[days + 1]
            };
            var ExpandProp = new string[days + 1];

            for (int i = 0; i <= days; i++)
            {
                var date = start.Date.AddDays(i).Date;

                var m = list.Where(a => a.PayDate.Value.Date == date).ToList();
                if (m.Count > 0)
                {
                    chartItem.Data[i] = m.Sum(a => a.Amount);
                }
                else
                {
                    chartItem.Data[i] = 0;
                }
            }
            chart.SeriesData.Add(chartItem);

            return(chart);
        }
예제 #15
0
        // Line Chart Ajax
        public async Task <ActionResult> GetLineChart(LineChartModel model)
        {
            try
            {
                db = new ChartsDatabaseManager();
                var response = new LineChartDataModel();
                var details  = new ChartDetails();
                response.Result = await db.GetLineChartMeters(details, model.From, model.To, model.period, model.Ids);

                response.Details = details;
                return(Json(response, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(ex, JsonRequestBehavior.AllowGet));
            }
        }
예제 #16
0
        public ChartDataViewModel(LineChartDataModel <float> chart)
            : this()
        {
            this.SeriesData = new List <SeriesViewModel>();
            foreach (var item in chart.XAxisData)
            {
                this.xAxis += ("'" + item + "',");
            }

            foreach (var item in chart.SeriesData)
            {
                var series = new SeriesViewModel {
                    Name = item.Name, SeriesData = ""
                };
                foreach (var s in item.Data)
                {
                    series.SeriesData += (s.ToString() + ",");
                }
                this.SeriesData.Add(series);
            }
        }
예제 #17
0
        public JsonResult GetMemberChartByMonth(int year = 0, int month = 0, DateTime?begin = null, DateTime?end = null)
        {
            var chart = new LineChartDataModel <int>();

            if (begin.HasValue && end.HasValue)
            {
                chart = StatisticApplication.GetNewMemberChartByRange(begin.Value, end.Value);
            }
            else
            {
                if (year == 0)
                {
                    year = DateTime.Now.Year;
                }
                if (month == 0)
                {
                    month = DateTime.Now.Month;
                }
                chart = StatisticApplication.GetNewMemberChartByMonth(year, month);
            }
            return(Json(new { success = true, chart = chart }));
        }
예제 #18
0
        public JsonResult GetSaleRankingChart(string day = "", int year = 0, int month = 0, int weekIndex = 0, SaleDimension dimension = SaleDimension.Count)
        {
            var model = new LineChartDataModel <int>();

            if (!string.IsNullOrWhiteSpace(day))
            {
                DateTime date = DateTime.Parse(day);
                StatisticApplication.GetProductSaleRankingChart(0, date, date, dimension, 15);
            }
            else
            {
                if (year == 0)
                {
                    year = DateTime.Now.Year;
                }
                if (month == 0)
                {
                    month = DateTime.Now.Month;
                }
                StatisticApplication.GetProductSaleRankingChart(0, year, month, weekIndex, dimension, 15);
            }
            return(Json(new { success = true, chart = model }));
        }
예제 #19
0
        public ActionResult ProductRecentMonthSaleRank()
        {
            LineChartDataModel <int> recentMonthSaleRankChart = ServiceHelper.Create <IStatisticsService>().GetRecentMonthSaleRankChart();

            return(Json(new { successful = true, chart = recentMonthSaleRankChart }, JsonRequestBehavior.AllowGet));
        }