From e7dde046f7e536f2131d7833b786699e72b971a4 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 29 Jun 2023 12:03:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 3fb8c68..045ca8e 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -543,6 +543,8 @@ namespace BBWYB.Server.Business public void AssociatePurchaseOrder(AssociationOrderRequest request) { nLogManager.Default().Info($"AssociatePurchaseOrder {JsonConvert.SerializeObject(request)}"); + + #region 数据验证 var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) throw new BusinessException("订单不存在"); @@ -553,15 +555,15 @@ namespace BBWYB.Server.Business 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 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(); + //var dbvalidPurchaseOrderList = dbPurchaseOrderList.Where(opi => opi.IsEnabled).ToList(); + + //if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId))) + // throw new BusinessException("关联采购单时不能包含历史采购单"); - if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId))) - throw new BusinessException("关联采购单时不能包含历史采购单"); - #region 数据验证 var validation_groups_pid = request.AssociationPurchaseOrderList.GroupBy(po => po.PurchaseOrderId); if (validation_groups_pid.Any(x => x.Count() > 1)) throw new BusinessException("不允许包含重复的采购单"); @@ -571,8 +573,28 @@ namespace BBWYB.Server.Business if (Math.Abs(apo.PurchaseAmount - apo.AssocationOrderCostDetailList.Sum(aocd => aocd.SkuAmount)) > 1) throw new BusinessException($"采购单{apo.PurchaseOrderId}的采购货款与明细采购货款总和误差不能超过1"); } + + var purchaseOrderIds = request.AssociationPurchaseOrderList.Select(apo => apo.PurchaseOrderId).ToList(); + + var dbPurchaseOrderList = fsql.Select().Where(opi => purchaseOrderIds.Contains(opi.PurchaseOrderId)).ToList(); + if (dbPurchaseOrderList.Count() > 0) + { + if (dbPurchaseOrderList.Any(opi => opi.OrderId != request.OrderId)) + { + var otherUsePurchaseOrder = dbPurchaseOrderList.FirstOrDefault(opi => opi.OrderId != request.OrderId); + throw new BusinessException($"采购单{otherUsePurchaseOrder.PurchaseOrderId}的已经被其他订单{otherUsePurchaseOrder.OrderId}绑定"); + } + if (dbPurchaseOrderList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.已取消)) + { + var invalidPurchaseOrder = dbPurchaseOrderList.FirstOrDefault(opi => opi.OrderState == Enums.PurchaseOrderState.已取消); + throw new BusinessException($"采购单{invalidPurchaseOrder.PurchaseOrderId}已失效,不能参与绑定"); + } + } + + #endregion + #region 读取采购单中的采购账号/采购方案 IList purchaseAccountIdList = request.AssociationPurchaseOrderList.Select(x => string.IsNullOrEmpty(x.PurchaseAccountId) ? x.PurchaseAccountName : @@ -603,8 +625,8 @@ namespace BBWYB.Server.Business foreach (var purchaseOrder in request.AssociationPurchaseOrderList) { - if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId)) - continue; + //if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId)) + // continue; var totalQuantity = purchaseOrder.AssocationOrderCostDetailList.Sum(x => x.PurchaseQuantity); @@ -844,7 +866,7 @@ namespace BBWYB.Server.Business updateOrderCost = fsql.Update().SetSource(dbOrderCost); #region 订单状态 - dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbvalidPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); + dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); #endregion #region 通知C端状态