Browse Source

订单各状态统计接口

yijia
shanji 2 years ago
parent
commit
28ed4dcf1f
  1. 14
      BBWYB.Server.API/Controllers/OrderController.cs
  2. 51
      BBWYB.Server.Business/Order/OrderBusiness.cs
  3. 2
      BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs
  4. 40
      BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs

14
BBWYB.Server.API/Controllers/OrderController.cs

@ -119,7 +119,7 @@ namespace BBWYB.Server.API.Controllers
/// </summary>
/// <param name="orderId"></param>
[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);
}
/// <summary>
/// 统计各状态订单数量
/// </summary>
/// <param name="shopId"></param>
/// <returns></returns>
[HttpPost("{shopId}")]
[AllowAnonymous]
public OrderCountByStateResponse StatisticsOrderCountByOrderState([FromRoute] long shopId)
{
return orderBusiness.StatisticsOrderCountByOrderState(shopId);
}
}
}

51
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<OrderSku>().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.,
Enums.OrderState.
};
var orderCountGroup = fsql.Select<Order>().Where(o => !noOrderStateList.Contains(o.OrderState.Value))
.GroupBy(o => o.OrderState)
.ToList(g => new
{
OrderState = g.Key,
OrderCount = g.Count()
});
var childSelect = fsql.Select<OrderSku>().As("osku").Where(osku => osku.PackConfigState == Enums.PackConfigState.);
var waitConfigCount = fsql.Select<Order>().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,
};
}
}
}

2
BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs

@ -71,7 +71,7 @@
/// <summary>
/// 是否为待配置 (复合条件)
/// <para>条件1: 已采购 + 未取消</para>
/// <para>订单未取消 + 订单为发回齐越 + 订单已采购 + 任意sku为待配置</para>
/// </summary>
public bool IsWaitConfig { get; set; }

40
BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs

@ -0,0 +1,40 @@
namespace BBWYB.Server.Model.Dto
{
public class OrderCountByStateResponse
{
/// <summary>
/// 待付款数量
/// </summary>
public long WaitPayCount { get; set; }
/// <summary>
/// 待采购数量(含部分采购)
/// </summary>
public int WaitPurchaseCount { get; set; }
/// <summary>
/// 待配置数量
/// </summary>
public long WaitConfigCount { get; set; }
/// <summary>
/// 待发货数量(含部分发货)
/// </summary>
public long WaitShipmentCount { get; set; }
/// <summary>
/// 待收货数量(含部分收货)
/// </summary>
public long WaitReceiveCount { get; set; }
/// <summary>
/// 待验收数量
/// </summary>
public long WaitCheckCount { get; set; }
/// <summary>
/// 待核算数量
/// </summary>
public long WaitComputationCount { get; set; }
}
}
Loading…
Cancel
Save