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; }
+ }
+}