From 795a6681ccbfb757ab8b49f175e4500f36910b3d Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 28 May 2023 13:09:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E8=AE=A2=E5=8D=95=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E4=B8=80=E4=B8=AAsku=E6=8B=A5=E6=9C=89=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E6=9C=89=E6=95=88=E9=87=87=E8=B4=AD=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 54 +++++++++++++------ .../Db/Order/OrderPurchaseInfo.cs | 6 +++ .../AssociationPurchaseOrderRequest.cs | 2 +- 3 files changed, 45 insertions(+), 17 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 01073a2..f8f825e 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -235,12 +235,10 @@ namespace BBWYB.Server.Business Platform = (AdapterEnums.PlatformType)purchaseAccount.PurchasePlatformId, PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode, Extensions = extJson.Value("OrderTradeTypeCode"), - Remark = request.Remark, + Remark = !string.IsNullOrEmpty(cargoParamGroup.Remark) ? cargoParamGroup.Remark : request.Remark, OrderProductParamList = orderProductParamList }); - - var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { AppKey = purchaseAccount.AppKey, @@ -331,7 +329,8 @@ namespace BBWYB.Server.Business PurchaserName = cargoParamGroup.PurchaserName, ShopId = request.ShopId, BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)), - IsEnabled = true + IsEnabled = true, + Remark = !string.IsNullOrEmpty(cargoParamGroup.Remark) ? cargoParamGroup.Remark : request.Remark }; insertOrderPurchaseInfos.Add(orderPurchaserInfo); #endregion @@ -474,7 +473,7 @@ namespace BBWYB.Server.Business var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList(); - if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaserOrderId))) + if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId))) throw new BusinessException("关联采购单时不能包含历史采购单"); var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); @@ -491,11 +490,11 @@ namespace BBWYB.Server.Business foreach (var purchaseOrder in request.AssociationPurchaseOrderList) { - if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaserOrderId)) + if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId)) continue; var avgFreight = purchaseOrder.PurchaseFreight / purchaseOrder.AssocationOrderCostDetailList.Count(); - var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaserOrderId); + var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaseOrderId); if (dbPurchaserOrder == null) { dbPurchaserOrder = new OrderPurchaseInfo() @@ -508,7 +507,7 @@ namespace BBWYB.Server.Business BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)), CreateTime = DateTime.Now, PurchaseMethod = Enums.PurchaseMethod.关联外部单, - PurchaseOrderId = purchaseOrder.PurchaserOrderId, + PurchaseOrderId = purchaseOrder.PurchaseOrderId, PurchasePlatform = purchaseOrder.PurchasePlatform, PurchaserId = purchaseOrder.PurchaserId, PurchaserName = purchaseOrder.PurchaserName, @@ -531,7 +530,7 @@ namespace BBWYB.Server.Business SkuAmount = assOrderCostDetail.SkuAmount, PurchaseFreight = avgFreight, TotalCost = assOrderCostDetail.SkuAmount + avgFreight, - PurchaseOrderId = purchaseOrder.PurchaserOrderId + PurchaseOrderId = purchaseOrder.PurchaseOrderId }; insertOrderCostDetailList.Add(orderCostDetail); } @@ -548,17 +547,40 @@ namespace BBWYB.Server.Business foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) { - var dbOrderCostDetail = dbOrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == assOrderCostDetail.SkuId); - dbOrderCostDetail.SkuAmount = assOrderCostDetail.SkuAmount; - dbOrderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; - dbOrderCostDetail.PurchaseFreight = avgFreight; - dbOrderCostDetail.TotalCost = assOrderCostDetail.SkuAmount + avgFreight; - updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderCostDetail)); + var dbOrderCostDetail = dbOrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == assOrderCostDetail.SkuId && + ocd.PurchaseOrderId == purchaseOrder.PurchaseOrderId); + if (dbOrderCostDetail == null) + { + var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); + dbOrderCostDetail = new OrderCostDetail() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + DeductionQuantity = assOrderCostDetail.PurchaseQuantity, + IsEnabled = true, + OrderId = request.OrderId, + ProductId = dbOrderSku.ProductId, + SkuId = assOrderCostDetail.SkuId, + SkuAmount = assOrderCostDetail.SkuAmount, + PurchaseFreight = avgFreight, + TotalCost = assOrderCostDetail.SkuAmount + avgFreight, + PurchaseOrderId = purchaseOrder.PurchaseOrderId + }; + insertOrderCostDetailList.Add(dbOrderCostDetail); + } + else + { + dbOrderCostDetail.SkuAmount = assOrderCostDetail.SkuAmount; + dbOrderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; + dbOrderCostDetail.PurchaseFreight = avgFreight; + dbOrderCostDetail.TotalCost = assOrderCostDetail.SkuAmount + avgFreight; + updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderCostDetail)); + } } } } - var totalPurchaseAmount = request.AssociationPurchaseOrderList.Where(x => !dbInvalidPurchaseOrderIdList.Contains(x.PurchaserOrderId)) + var totalPurchaseAmount = request.AssociationPurchaseOrderList.Where(x => !dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId)) .Sum(p => p.PurchaseAmount + p.PurchaseFreight); var profit = dbOrder.OrderTotalPrice - totalPurchaseAmount - (dbOrderCost?.DeliveryExpressFreight ?? 0); // -orderCost.PlatformCommissionAmount diff --git a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs index a45ec29..7c6be1e 100644 --- a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs +++ b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs @@ -94,6 +94,12 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "bit")] public bool IsEnabled { get; set; } = true; + + /// + /// ɹע + /// + [Column(StringLength = 500)] + public string Remark { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs index 5076f39..a20a837 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs @@ -10,7 +10,7 @@ /// /// 采购单号 /// - public string PurchaserOrderId { get; set; } + public string PurchaseOrderId { get; set; } public Enums.Platform PurchasePlatform { get; set; }