From 77fc14142a689c212eac12c4cb3679a72f700091 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 5 Jun 2023 12:32:18 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD/=E5=85=B3=E8=81=94=20?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=83=A8=E5=88=86=E9=87=87=E8=B4=AD/?= =?UTF-8?q?=E5=BE=85=E5=8F=91=E8=B4=A7=201688=E5=8F=91=E8=B4=A7=E9=80=9A?= =?UTF-8?q?=E7=9F=A5/=E6=89=8B=E5=8A=A8=E5=8F=91=E8=B4=A7=20=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=83=A8=E5=88=86=E5=8F=91=E8=B4=A7/=E5=BE=85?= =?UTF-8?q?=E6=94=B6=E8=B4=A7=201688=E7=89=A9=E6=B5=81=E5=8F=98=E6=9B=B4/?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E6=94=B6=E8=B4=A7=20=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=94=B6=E8=B4=A7/=E6=89=93=E5=8C=85?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/OrderStateExtension.cs | 4 +- BBWYB.Server.Business/Order/OrderBusiness.cs | 29 +++++----- .../PurchaseOrder/PurchaseOrderBusiness.cs | 53 ++++++++++++++----- .../Sync/OrderSyncBusiness.cs | 2 +- 4 files changed, 59 insertions(+), 29 deletions(-) diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index 283140c..14c2bdb 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -25,9 +25,9 @@ namespace BBWYB.Server.Business order.OrderState == Enums.OrderState.待完结) return; - if (orderSkuList == null) + if (orderSkuList == null || orderSkuList.Count() == 0) orderSkuList = fsql.Select().Where(osku => osku.OrderId == order.Id).ToList(); - if (orderPurchaseInfoList == null) + if (orderPurchaseInfoList == null || orderPurchaseInfoList.Count() == 0) orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == order.Id && opi.IsEnabled == true).ToList(); #region 等待采购 diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 0ea00b3..36646b7 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -179,8 +179,20 @@ namespace BBWYB.Server.Business var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) throw new BusinessException($"订单{request.OrderId}不存在"); - //if (dbOrder.OrderState != Enums.OrderState.待出库) - // throw new BusinessException($"订单{request.OrderId} 只有在待出库时才允许出库"); + + var dbOrderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); + var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); + + dbOrderPurchaseInfo.WaybillNo = request.WayBillNo; + dbOrderPurchaseInfo.SourceExpressId = request.SourceExpressId; + dbOrderPurchaseInfo.SourceExpressName = request.SourceExpressName; + dbOrderPurchaseInfo.TargetExpressId = request.TargetExpressId; + dbOrderPurchaseInfo.TargetExpressName = request.TargetExpressName; + dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.待收货; + + #region 订单状态 + dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList); + #endregion if (!string.IsNullOrEmpty(request.TargetExpressId)) { @@ -233,17 +245,8 @@ namespace BBWYB.Server.Business fsql.Transaction(() => { - fsql.Update().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId && opi.IsEnabled == true) - .Set(opi => opi.WaybillNo, request.WayBillNo) - .Set(opi => opi.SourceExpressId, request.SourceExpressId) - .Set(opi => opi.SourceExpressName, request.SourceExpressName) - .Set(opi => opi.TargetExpressId, request.TargetExpressId) - .Set(opi => opi.TargetExpressName, request.TargetExpressName) - .Set(opi => opi.OrderState, Enums.PurchaseOrderState.待收货) - .ExecuteAffrows(); - - if (dbOrder.OrderState == Enums.OrderState.待出库) - fsql.Update(request.OrderId).Set(o => o.OrderState, Enums.OrderState.待收货).ExecuteAffrows(); + fsql.Update().SetSource(dbOrderPurchaseInfo).ExecuteAffrows(); + fsql.Update(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); }); } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 73e0dda..1569267 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -28,7 +28,7 @@ namespace BBWYB.Server.Business private PurchaseSchemeBusiness purchaseSchemeBusiness; private ExpressCompanyNameConverter expressCompanyNameConverter; private RestApiService restApiService; - + private IList cantPurchaseOrderStateList; public PurchaseOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, @@ -49,6 +49,13 @@ namespace BBWYB.Server.Business this.expressCompanyNameConverter = expressCompanyNameConverter; this.restApiService = restApiService; this.purchaseSchemeBusiness = purchaseSchemeBusiness; + cantPurchaseOrderStateList = new List() + { + Enums.OrderState.已取消, + Enums.OrderState.已完成, + Enums.OrderState.待付款, + Enums.OrderState.待完结 + }; } /// @@ -179,8 +186,8 @@ namespace BBWYB.Server.Business var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) throw new BusinessException("订单不存在"); - if (dbOrder.OrderState != Enums.OrderState.等待采购 && dbOrder.OrderState != Enums.OrderState.待出库) - throw new BusinessException("只能为等待采购或待出库的订单进行采购"); + if (cantPurchaseOrderStateList.Contains(dbOrder.OrderState.Value)) + throw new BusinessException($"当前订单状态:{dbOrder.OrderState},不允许采购"); if (request.Consignee == null || string.IsNullOrEmpty(request.Consignee.Address) || @@ -194,7 +201,7 @@ namespace BBWYB.Server.Business var isRepurchase = fsql.Select(dbOrder.Id).Any(); var orderSkus = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == request.OrderId).ToList(); - + var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); var extJArray = JsonConvert.DeserializeObject(request.Extensions); @@ -396,6 +403,10 @@ namespace BBWYB.Server.Business } #endregion + #region 订单状态 + dbOrder.CalculationOrderState(fsql, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList()); + #endregion + fsql.Transaction(() => { if (updatePurchaseOrderIdList.Count() > 0) @@ -411,8 +422,7 @@ namespace BBWYB.Server.Business insertOrderCost?.ExecuteAffrows(); if (updatePurchaseTimeSchemeIdList.Count() > 0) fsql.Update(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); - fsql.Update(request.OrderId).SetIf(dbOrder.OrderState == Enums.OrderState.待付款 || - dbOrder.OrderState == Enums.OrderState.等待采购, o => o.OrderState, Model.Enums.OrderState.待出库) + fsql.Update(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState) .SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark) .Set(o => o.IsPurchased, true) .Set(o => o.PackConfigState, Enums.PackConfigState.待配置) @@ -480,12 +490,21 @@ namespace BBWYB.Server.Business /// public void AssociatePurchaseOrder(AssociationOrderRequest request) { + var dbOrder = fsql.Select(request.OrderId).ToOne(); + if (dbOrder == null) + throw new BusinessException("订单不存在"); + + if (cantPurchaseOrderStateList.Contains(dbOrder.OrderState.Value)) + throw new BusinessException($"当前订单状态:{dbOrder.OrderState},不允许关联"); + if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0) throw new BusinessException("缺少采购单信息"); var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList(); + var dbvalidPurchaseOrderList = dbPurchaseOrderList.Where(opi => opi.IsEnabled).ToList(); + if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId))) throw new BusinessException("关联采购单时不能包含历史采购单"); @@ -518,7 +537,7 @@ namespace BBWYB.Server.Business var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); var dbOrderCost = fsql.Select(request.OrderId).ToOne(); - var dbOrder = fsql.Select(request.OrderId).ToOne(); + List insertOrderPurchaseInfoList = new List(); @@ -738,6 +757,10 @@ namespace BBWYB.Server.Business else updateOrderCost = fsql.Update().SetSource(dbOrderCost); + #region 订单状态 + dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbvalidPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); + #endregion + fsql.Transaction(() => { if (insertOrderPurchaseInfoList.Count() > 0) @@ -762,8 +785,7 @@ namespace BBWYB.Server.Business insertOrderCost?.ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); - fsql.Update(dbOrder.Id).SetIf(dbOrder.OrderState == Enums.OrderState.待付款 || - dbOrder.OrderState == Enums.OrderState.等待采购, o => o.OrderState, Enums.OrderState.待出库) + fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState) .Set(o => o.IsPurchased, true) .ExecuteAffrows(); }); @@ -822,7 +844,9 @@ namespace BBWYB.Server.Business if (dbOrder.OrderState == Enums.OrderState.已完成) throw new BusinessException("订单已完成无需签收"); - var dbOrderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId && opi.IsEnabled == true).ToOne(); + var dbOrderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); + + var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); if (dbOrderPurchaseInfo == null) throw new BusinessException("无效采购单号"); if (!dbOrderPurchaseInfo.IsEnabled) @@ -834,11 +858,14 @@ namespace BBWYB.Server.Business dbOrderPurchaseInfo.IsSign = true; dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.已签收; + dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList); + fsql.Transaction(() => { fsql.Update().SetSource(dbOrderPurchaseInfo).ExecuteAffrows(); - fsql.Update(dbOrder.Id).Set(o => o.IsWaitPack, true).ExecuteAffrows(); - Enums.OrderState.待收货; + fsql.Update(dbOrder.Id) + .Set(o => o.OrderState, dbOrder.OrderState) + .Set(o => o.IsWaitPack, true).ExecuteAffrows(); }); } @@ -904,7 +931,7 @@ namespace BBWYB.Server.Business { #region 查询代发信息 currentProgress = "查询代发信息"; - var orderPurchaseInfo = fsql.Select().Where(o => o.PurchaseOrderId == purchaseOrderId && orderPurchaseInfo.IsEnabled == true).ToOne(); + var orderPurchaseInfo = fsql.Select().Where(o => o.PurchaseOrderId == purchaseOrderId && o.IsEnabled == true).ToOne(); if (orderPurchaseInfo == null) throw new Exception("未查询到代发信息"); orderId = orderPurchaseInfo.OrderId; diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 43e159f..926bb4f 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -255,7 +255,7 @@ namespace BBWYB.Server.Business.Sync { if (!isPurchased) return Enums.OrderState.等待采购; - return Enums.OrderState.待出库; + return Enums.OrderState.待发货; } if (qtOrderState == "1")