/// <summary> /// 门店商品查询 /// </summary> /// <param name="query"></param> /// <returns></returns> public static QueryPageModel <ProductInfo> GetShopBranchProducts(ShopBranchProductQuery query) { var pageModel = _shopBranchService.SearchProduct(query); //TODO:补充门店销售数量 var orders = OrderApplication.GetOrdersNoPage(new OrderQuery { ShopBranchId = query.shopBranchId }); var orderItems = OrderApplication.GetOrderItemsByOrderId(orders.Select(e => e.Id)); var pids = pageModel.Models.Select(e => e.Id); var productSaleCounts = orderItems.Where(e => pids.Contains(e.ProductId)).GroupBy(o => o.ProductId).Select(e => new { productId = e.Key, saleCount = e.Sum(p => p.Quantity) }); foreach (var p in pageModel.Models) { var productCount = productSaleCounts.FirstOrDefault(e => e.productId == p.Id); if (productCount != null) { p.SaleCounts = productCount.saleCount; } else { p.SaleCounts = 0;//门店商品无销量则为0,不应用默认的商家商品销量 } } return(pageModel); }
public object GetShopHome() { CheckUserLogin(); DateTime nowDt = DateTime.Now; //三个月内预约单 OrderQuery query = new OrderQuery() { ShopId = this.CurrentUser.ShopId, StartDate = nowDt.Date.AddDays(-nowDt.Day).AddMonths(-2), EndDate = nowDt }; var orders = OrderApplication.GetOrdersNoPage(query); var threeMonthAmounht = orders.Sum(e => e.ActualPayAmount); //从三个月的数据中统计本周的 DateTime weekStartDt = nowDt.Date.AddDays(-(int)nowDt.DayOfWeek); var weekAmount = orders.Where(e => e.OrderDate >= weekStartDt).Sum(e => e.ActualPayAmount); //从三个月的数据中统计当天的 var todayAmount = orders.Where(e => e.OrderDate.Date == nowDt.Date).Sum(e => e.ActualPayAmount); //近三天发布诊疗项目数 ProductQuery productQuery = new ProductQuery(); productQuery.AuditStatus = new[] { ProductInfo.ProductAuditStatus.Audited }; productQuery.StartDate = nowDt.Date.AddDays(-2); productQuery.EndDate = nowDt; productQuery.PageNo = 1; productQuery.PageSize = int.MaxValue; var products = ProductManagerApplication.GetProducts(productQuery).Models; var productCount = products.Select(e => e.Id).Count(); RefundQuery refundQuery = new RefundQuery() { AuditStatus = OrderRefundInfo.OrderRefundAuditStatus.WaitAudit, PageNo = 1, PageSize = int.MaxValue }; var refunds = RefundApplication.GetOrderRefunds(refundQuery); var refundCount = refunds.Total; return(Json(new { success = true, data = new { shopName = CurrentShopBranch.ShopBranchName, todayAmount = todayAmount, weekAmount = weekAmount, threeMonthAmounht = threeMonthAmounht, createProductCount = productCount, refundCount = refundCount } })); }
public object GetShopBranchHome() { CheckUserLogin(); DateTime nowDt = DateTime.Now; //三个月内预约单 OrderQuery query = new OrderQuery() { ShopBranchId = CurrentShopBranch.Id, StartDate = nowDt.Date.AddDays(-nowDt.Day).AddMonths(-2), EndDate = nowDt }; var orders = OrderApplication.GetOrdersNoPage(query); var threeMonthAmounht = orders.Sum(e => e.ActualPayAmount); //从三个月的数据中统计本周的 DateTime weekStartDt = nowDt.Date.AddDays(-(int)nowDt.DayOfWeek); var weekAmount = orders.Where(e => e.OrderDate >= weekStartDt).Sum(e => e.ActualPayAmount); //从三个月的数据中统计当天的 var todayAmount = orders.Where(e => e.OrderDate.Date == nowDt.Date).Sum(e => e.ActualPayAmount); //待自提预约单数 query = new OrderQuery() { ShopBranchId = CurrentShopBranch.Id, Status = OrderInfo.OrderOperateStatus.WaitSelfPickUp }; var pickUpOrders = OrderApplication.GetOrdersNoPage(query); var pickUpOrderCount = pickUpOrders.Count; //近三天发布诊疗项目数 var products = ShopBranchApplication.GetShopBranchProductCount(CurrentShopBranch.Id, nowDt.Date.AddDays(-2), nowDt.Date); var productCount = products.Select(e => e.ProductId).Distinct().Count(); var vshop = ServiceProvider.Instance <IVShopService> .Create.GetVShopByShopId(CurrentShopBranch.ShopId); var logo = "/Images/branchapp.jpg"; if (vshop != null && vshop.State == VShopInfo.VshopStates.Normal && !string.IsNullOrEmpty(vshop.WXLogo)) { logo = vshop.WXLogo; } return(Json(new { success = true, data = new { shopName = CurrentShopBranch.ShopBranchName, todayAmount = todayAmount, weekAmount = weekAmount, threeMonthAmounht = threeMonthAmounht, createProductCount = productCount, pickUpOrderCount = pickUpOrderCount, logo = logo, shopBranchId = CurrentShopBranch.Id } })); }
/// <summary> /// 门店销量 /// </summary> /// <param name="shopBranchId"></param> /// <param name="startDate"></param> /// <param name="endDate"></param> /// <returns></returns> public static long GetShopBranchSaleCount(long shopBranchId, DateTime startDate, DateTime endDate) { return(Enumerable.Sum <OrderItem>((IEnumerable <OrderItem>)OrderApplication.GetOrderItemsByOrderId(Enumerable.Select <Order, long>((IEnumerable <Order>)OrderApplication.GetOrdersNoPage(new OrderQuery() { ShopBranchId = new long?(shopBranchId), StartDate = new DateTime?(startDate), EndDate = new DateTime?(endDate.AddDays(-1.0)) }), (Func <Order, long>)(e => e.Id))), (Func <OrderItem, long>)(p => p.Quantity))); }
/// <summary> /// 产品销量 /// </summary> /// <param name="shopBranchId"></param> /// <param name="productId"></param> /// <param name="startDate"></param> /// <param name="endDate"></param> /// <returns></returns> public static long GetProductSaleCount(long shopBranchId, long productId, DateTime startDate, DateTime endDate) { IEnumerable <OrderItem> source = Enumerable.Where <OrderItem>((IEnumerable <OrderItem>)OrderApplication.GetOrderItemsByOrderId(Enumerable.Select <Order, long>((IEnumerable <Order>)OrderApplication.GetOrdersNoPage(new OrderQuery() { ShopBranchId = new long?(shopBranchId), StartDate = new DateTime?(startDate), EndDate = new DateTime?(endDate.AddDays(-1.0)) }), (Func <Order, long>)(e => e.Id))), (Func <OrderItem, bool>)(e => e.ProductId == productId)); if (Enumerable.Any <OrderItem>(source)) { return(Enumerable.Sum <OrderItem>(source, (Func <OrderItem, long>)(x => x.Quantity))); } return(0); }
/// <summary> /// 获取门店的月产品数量 /// </summary> /// <param name="query"></param> /// <param name="startDate"></param> /// <param name="endDate"></param> /// <returns></returns> public static QueryPageModel <ProductInfo> GetShopBranchProductsMonth(ShopBranchProductQuery query, DateTime startDate, DateTime endDate) { QueryPageModel <ProductInfo> model = _shopBranchService.SearchProduct(query); OrderQuery orderQuery = new OrderQuery { ShopBranchId = query.shopBranchId, StartDate = new DateTime?(startDate), EndDate = new DateTime?(endDate.AddDays(-1.0)) }; List <OrderItem> orderItemsByOrderId = OrderApplication.GetOrderItemsByOrderId((IEnumerable <long>)(from e in OrderApplication.GetOrdersNoPage(orderQuery) select e.Id)); IEnumerable <long> pids = from e in model.Models select e.Id; var source = from o in orderItemsByOrderId where pids.Contains <long>(o.ProductId) group o by o.ProductId into e select new { productId = e.Key, saleCount = e.Sum <OrderItem>((Func <OrderItem, long>)(p => p.Quantity)) }; using (List <ProductInfo> .Enumerator enumerator = model.Models.GetEnumerator()) { while (enumerator.MoveNext()) { ProductInfo p = enumerator.Current; var fAnonymousType0 = Enumerable.FirstOrDefault(source, e => e.productId == p.Id); p.SaleCounts = fAnonymousType0 == null ? 0 : fAnonymousType0.saleCount; } } return(model); }