diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index ed2bba6..418e15e 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -58,17 +58,27 @@ namespace BBWYB.Server.Business select = select.Where((o, ocs, oct) => o.OrderSn == request.OrderSn); else { + //if (request.IsNeedOptimization == 1) + // request.OrderState = Enums.OrderState.等待采购; + //else if (request.OrderState == Enums.OrderState.等待采购) + //{ + // request.IsNeedOptimization = 0; + //} + if (!string.IsNullOrEmpty(request.Sku) || !string.IsNullOrEmpty(request.SourceSku) || !string.IsNullOrEmpty(request.ProductId) || - request.IsWaitConfig) + request.IsWaitConfig || + request.OrderState == Enums.OrderState.等待采购) { 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) .WhereIf(request.IsWaitConfig && request.IsOnlyDisplayPackConfigEditState != 1, osku => waitConfigStateList.Contains(osku.PackConfigState) || osku.PackConfigState == null) - .WhereIf(request.IsWaitConfig && request.IsOnlyDisplayPackConfigEditState == 1, osku => osku.PackConfigState == Enums.PackConfigState.需修改); + .WhereIf(request.IsWaitConfig && request.IsOnlyDisplayPackConfigEditState == 1, osku => osku.PackConfigState == Enums.PackConfigState.需修改) + .WhereIf(request.OrderState == Enums.OrderState.等待采购 && request.IsNeedOptimization == 1, osku => osku.IsNeedOptimization == 1) + .WhereIf(request.OrderState == Enums.OrderState.等待采购 && request.IsNeedOptimization != 1, osku => osku.IsNeedOptimization == 0); select = select.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消 && o.OrderState != Enums.OrderState.已完成 && o.IntoStoreType == Enums.IntoStoreType.发回齐越 && @@ -390,6 +400,12 @@ namespace BBWYB.Server.Business t.TaskType == Enums.TimeLimitTaskType.待核算任务); #endregion + #region 待议价任务 + orderSku.OptimizationTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(t => t.OrderId == order.Id && + t.SkuId == orderSku.SkuId && + t.TaskType == Enums.TimeLimitTaskType.待议价任务); + #endregion + #region 判断sku的发货状态 var purchaseOrder = order.OrderPurchaseInfoList.FirstOrDefault(opi => opi.OrderId == order.Id && opi.BelongSkuIds.Contains(orderSku.SkuId)); if (purchaseOrder != null) @@ -815,20 +831,32 @@ namespace BBWYB.Server.Business OrderState = g.Key, OrderCount = g.Count() }); - - var childSelect = fsql.Select().As("osku").Where(osku => waitConfigStateList.Contains(osku.PackConfigState) || osku.PackConfigState == null); - var waitConfigCount = fsql.Select().Where(o => o.ShopId == shopId) + long waitConfigCount = 0; + { + var childSelect = fsql.Select().As("osku").Where(osku => waitConfigStateList.Contains(osku.PackConfigState) || osku.PackConfigState == null); + waitConfigCount = fsql.Select().Where(o => o.ShopId == shopId) .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(); + } + + int opitimizationCount = 0; + { + var childSelect = fsql.Select().As("osku").Where(osku => osku.IsNeedOptimization == 1); + opitimizationCount = Convert.ToInt32(fsql.Select().Where(o => o.ShopId == shopId) + .Where(o => o.OrderState == Enums.OrderState.等待采购) + .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.Where(o => o.OrderState == Enums.OrderState.等待采购 || - o.OrderState == Enums.OrderState.部分采购).Sum(o => o.OrderCount), + o.OrderState == Enums.OrderState.部分采购).Sum(o => o.OrderCount) - opitimizationCount, WaitShipmentCount = orderCountGroup.Where(o => o.OrderState == Enums.OrderState.待发货 || o.OrderState == Enums.OrderState.部分发货).Sum(o => o.OrderCount), WaitReceiveCount = orderCountGroup.Where(o => o.OrderState == Enums.OrderState.待收货 || @@ -836,6 +864,7 @@ namespace BBWYB.Server.Business WaitCheckCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待验收)?.OrderCount ?? 0, WaitComputationCount = orderCountGroup.FirstOrDefault(o => o.OrderState == Enums.OrderState.待核算)?.OrderCount ?? 0, WaitConfigCount = waitConfigCount, + OpitimizationCount = opitimizationCount }; } diff --git a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs index 7a0508d..d28de70 100644 --- a/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs @@ -114,5 +114,10 @@ /// 是否仅显示特殊单,是=1否=0,null则不处理该条件 /// public int? IsOnlyDisplaySpecialOrder { get; set; } + + /// + /// 是否需要优化(待议价),仅在订单为等待采购状态有效, 是=1 否=0 + /// + public int? IsNeedOptimization { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs index 723ad6f..9130d58 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderCountByStateResponse.cs @@ -36,5 +36,10 @@ /// 待核算数量 /// public long WaitComputationCount { get; set; } + + /// + /// 待议价数量 + /// + public long OpitimizationCount { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs index a890d67..43284ff 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs @@ -39,5 +39,10 @@ namespace BBWYB.Server.Model.Dto /// 待核算任务 /// public TimeLimitTaskResponse? CheckComputationTimeLimitTask { get; set; } + + /// + /// 待议价任务 + /// + public TimeLimitTaskResponse OptimizationTimeLimitTask { get; set; } } }