using BBWYB.Server.Model; using BBWYB.Server.Model.Db; namespace BBWYB.Server.Business { public static class OrderStateExtension { /// /// 计算订单状态 /// /// /// /// /// public static void CalculationOrderState(this Order order, IFreeSql fsql, IList orderSkuList = null, IList 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().Where(osku => osku.OrderId == order.Id).ToList(); if (orderPurchaseInfoList == null || orderPurchaseInfoList.Count() == 0) orderPurchaseInfoList = fsql.Select().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 } } }