From afa9defe17c9cc4b28c3e462965a4a213cf82300 Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Mon, 24 Jul 2023 12:29:33 +0800
Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E9=87=87=E8=B4=AD=E6=94=AF?=
 =?UTF-8?q?=E6=8C=81=E5=88=86=E6=89=B9=E9=87=87=E8=B4=AD=201.=E5=8F=96?=
 =?UTF-8?q?=E6=B6=88=E5=B0=86=E7=8E=B0=E6=9C=89=E9=87=87=E8=B4=AD=E5=8D=95?=
 =?UTF-8?q?=E8=AE=BE=E4=B8=BA=E5=A4=B1=E6=95=88=202.=E8=AE=A1=E7=AE=97?=
 =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=88=90=E6=9C=AC=E6=97=B6=E5=B0=86=E8=AF=A5?=
 =?UTF-8?q?=E7=AC=94=E8=AE=A2=E5=8D=95=E4=B8=8B=E6=89=80=E6=9C=89=E9=87=87?=
 =?UTF-8?q?=E8=B4=AD=E5=8D=95=E6=88=90=E6=9C=AC=E6=9F=A5=E5=87=BA=E5=B9=B6?=
 =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=AE=A1=E7=AE=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../PurchaseOrder/PurchaseOrderBusiness.cs    | 32 +++++++++++++++----
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index 75248b4..6b7f948 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -255,6 +255,23 @@ namespace BBWYB.Server.Business
             var isRepurchase = fsql.Select<OrderCost>(dbOrder.Id).Any();
             var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList();
             var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
+            var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList();
+
+            foreach (var cargoParamGroup in request.CargoParamGroupList)
+            {
+                var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaserId == cargoParamGroup.PurchaserId);
+                if (purchaseOrder != null)
+                {
+                    foreach (var cargoParam in cargoParamGroup.CargoParamList)
+                    {
+                        if (purchaseOrder.BelongSkuIds.Contains(cargoParam.BelongSkuId))
+                        {
+                            //throw new BusinessException($"订单sku[{cargoParam.BelongSkuId}]已经存在同一个商家[{cargoParamGroup.PurchaserId}][{cargoParamGroup.PurchaserName}]的另一笔采购单中[{purchaseOrder.PurchaseOrderId}],请不要为同一笔订单sku进行同商家采购");
+                            throw new BusinessException($"提示:请勿为同一个订单中的sku重复向同一个商家下采购单\r\n重复信息:\r\n- 订单sku:{cargoParam.BelongSkuId}\r\n- 商家:{cargoParamGroup.PurchaserName}");
+                        }
+                    }
+                }
+            }
 
             var extJArray = JsonConvert.DeserializeObject<JArray>(request.Extensions);
 
@@ -279,8 +296,8 @@ namespace BBWYB.Server.Business
 
             IInsert<OrderCost> insertOrderCost = null;
             IUpdate<OrderCost> updateOrderCost = null;
-            var totalPurchaseProductAmount = 0M;
-            var totalPurchaseFreight = 0M;
+            //var totalPurchaseProductAmount = 0M;
+            //var totalPurchaseFreight = 0M;
 
             foreach (var cargoParamGroup in request.CargoParamGroupList)
             {
@@ -326,8 +343,8 @@ namespace BBWYB.Server.Business
                     OrderId = createOrderResponse.OrderId
                 });
 
-                totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount;
-                totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount;
+                //totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount;
+                //totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount;
 
                 foreach (var cargoParam in cargoParamGroup.CargoParamList)
                 {
@@ -478,9 +495,12 @@ namespace BBWYB.Server.Business
                 CreateTime = DateTime.Now,
                 IsManualEdited = false
             };
+
+            var totalPurchaseProductAmount = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.SkuAmount);
+            var totalPurchaseFreight = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.PurchaseFreight);
             orderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value,
-                                                        totalPurchaseProductAmount,
-                                                        totalPurchaseFreight,
+                                                        totalPurchaseProductAmount ?? 0M,
+                                                        totalPurchaseFreight ?? 0M,
                                                         0M,
                                                         0M);