From 28ed4dcf1ffd9c9db488368efd517965f60721e6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 14 Jul 2023 15:20:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=84=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OrderController.cs | 14 ++++- BBWYB.Server.Business/Order/OrderBusiness.cs | 51 +++++++++++++++++-- .../Dto/Request/Order/QueryOrderRequest.cs | 2 +- .../Order/OrderCountByStateResponse.cs | 40 +++++++++++++++ 4 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index eb83425..7bebd65 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -119,7 +119,7 @@ namespace BBWYB.Server.API.Controllers /// /// [HttpPost("{orderId}")] - public void CheckComputationOrder([FromRoute]string orderId) + public void CheckComputationOrder([FromRoute] string orderId) { orderBusiness.CheckComputationOrder(orderId); } @@ -133,5 +133,17 @@ namespace BBWYB.Server.API.Controllers { orderBusiness.QiKuPublishPackAmount(request); } + + /// + /// 统计各状态订单数量 + /// + /// + /// + [HttpPost("{shopId}")] + [AllowAnonymous] + public OrderCountByStateResponse StatisticsOrderCountByOrderState([FromRoute] long shopId) + { + return orderBusiness.StatisticsOrderCountByOrderState(shopId); + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 6c861ac..77483b8 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -38,13 +38,20 @@ namespace BBWYB.Server.Business select = select.Where((o, ocs, oct) => o.OrderSn == request.OrderSn); else { - if (!string.IsNullOrEmpty(request.Sku) || !string.IsNullOrEmpty(request.SourceSku) || !string.IsNullOrEmpty(request.ProductId)) + if (!string.IsNullOrEmpty(request.Sku) || + !string.IsNullOrEmpty(request.SourceSku) || + !string.IsNullOrEmpty(request.ProductId) || + request.IsWaitConfig) { var childSelect = fsql.Select().As("osku") .WhereIf(!string.IsNullOrEmpty(request.Sku), osku => osku.SkuId == request.Sku) .WhereIf(!string.IsNullOrEmpty(request.SourceSku), osku => osku.BelongSkuId == request.SourceSku) - .WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId); - select = select.Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); + .WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId) + .WhereIf(request.IsWaitConfig, osku => osku.PackConfigState == Enums.PackConfigState.待配置); + select = select.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消) + .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IntoStoreType == Enums.IntoStoreType.发回齐越) + .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IsPurchased == true) + .Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); } if (!string.IsNullOrEmpty(request.PurchaseOrderId)) @@ -65,7 +72,6 @@ namespace BBWYB.Server.Business o.OrderState == Enums.OrderState.部分发货) .WhereIf(request.OrderState == Enums.OrderState.待收货, (o, ocs, oct) => o.OrderState == Enums.OrderState.待收货 || o.OrderState == Enums.OrderState.部分收货) - .WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消 && o.IsPurchased == true) .WhereIf(request.StartDate != null, (o, ocs, oct) => o.StartTime >= request.StartDate) .WhereIf(request.EndDate != null, (o, ocs, oct) => o.StartTime <= request.EndDate) .WhereIf(!string.IsNullOrEmpty(request.ClientOrderId), (o, ocs, oct) => o.ClientOrderId == request.ClientOrderId) @@ -585,5 +591,42 @@ namespace BBWYB.Server.Business } } + + public OrderCountByStateResponse StatisticsOrderCountByOrderState(long shopId) + { + var noOrderStateList = new List() + { + Enums.OrderState.已取消, + Enums.OrderState.已完成 + }; + var orderCountGroup = fsql.Select().Where(o => !noOrderStateList.Contains(o.OrderState.Value)) + .GroupBy(o => o.OrderState) + .ToList(g => new + { + OrderState = g.Key, + OrderCount = g.Count() + }); + + var childSelect = fsql.Select().As("osku").Where(osku => osku.PackConfigState == Enums.PackConfigState.待配置); + var waitConfigCount = fsql.Select().Where(o => !noOrderStateList.Contains(o.OrderState.Value)) + .Where(o => o.IntoStoreType == Enums.IntoStoreType.发回齐越) + .Where(o => o.IsPurchased == true) + .Where(o => childSelect.Where(osku => osku.OrderId == o.Id).Any()) + .Count(); + + return new OrderCountByStateResponse() + { + WaitPayCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待付款)?.OrderCount ?? 0, + WaitPurchaseCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.等待采购 || + o.OrderState == Enums.OrderState.部分采购)?.OrderCount ?? 0, + WaitShipmentCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待发货 || + o.OrderState == Enums.OrderState.部分发货)?.OrderCount ?? 0, + WaitReceiveCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待收货 || + o.OrderState == Enums.OrderState.部分收货)?.OrderCount ?? 0, + WaitCheckCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待验收)?.OrderCount ?? 0, + WaitComputationCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待核算)?.OrderCount ?? 0, + WaitConfigCount = waitConfigCount, + }; + } } } diff --git a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs index 8f73ec2..0ffc3d1 100644 --- a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs @@ -71,7 +71,7 @@ /// /// 是否为待配置 (复合条件) - /// 条件1: 已采购 + 未取消 + /// 订单未取消 + 订单为发回齐越 + 订单已采购 + 任意sku为待配置 /// public bool IsWaitConfig { get; set; } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs new file mode 100644 index 0000000..723ad6f --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs @@ -0,0 +1,40 @@ +namespace BBWYB.Server.Model.Dto +{ + public class OrderCountByStateResponse + { + /// + /// 待付款数量 + /// + public long WaitPayCount { get; set; } + + /// + /// 待采购数量(含部分采购) + /// + public int WaitPurchaseCount { get; set; } + + /// + /// 待配置数量 + /// + public long WaitConfigCount { get; set; } + + /// + /// 待发货数量(含部分发货) + /// + public long WaitShipmentCount { get; set; } + + /// + /// 待收货数量(含部分收货) + /// + public long WaitReceiveCount { get; set; } + + /// + /// 待验收数量 + /// + public long WaitCheckCount { get; set; } + + /// + /// 待核算数量 + /// + public long WaitComputationCount { get; set; } + } +}