You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
3.7 KiB


using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
namespace BBWYB.Server.Business
{
public static class OrderStateExtension
{
/// <summary>
/// 计算订单状态
/// </summary>
/// <param name="order"></param>
/// <param name="orderSkuList"></param>
/// <param name="orderPurchaseInfoList"></param>
/// <returns></returns>
public static void CalculationOrderState(this Order order,
IFreeSql fsql,
IList<OrderSku> orderSkuList = null,
IList<OrderPurchaseInfo> orderPurchaseInfoList = null)
{
if (order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState.)
return;
if (orderSkuList == null || orderSkuList.Count() == 0)
orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == order.Id).ToList();
if (orderPurchaseInfoList == null || orderPurchaseInfoList.Count() == 0)
orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == order.Id && opi.IsEnabled == true).ToList();
#region 等待采购
if (orderPurchaseInfoList == null || orderPurchaseInfoList.Count() == 0)
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 部分采购
foreach (var osku in orderSkuList)
{
if (!orderPurchaseInfoList.Any(opi => opi.BelongSkuIds.Contains(osku.SkuId)))
{
order.OrderState = Enums.OrderState.;
return;
}
}
#endregion
#region 待发货
if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 部分发货
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 待收货
if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 部分收货
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 打包中
if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
}
}
}