diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index 3ff5517..c5572a3 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -542,6 +542,7 @@ namespace BBWYB.Server.Business
///
public void AssociatePurchaseOrder(AssociationOrderRequest request)
{
+ nLogManager.Default().Info($"AssociatePurchaseOrder {JsonConvert.SerializeObject(request)}");
var dbOrder = fsql.Select(request.OrderId).ToOne();
if (dbOrder == null)
throw new BusinessException("订单不存在");
@@ -560,6 +561,18 @@ namespace BBWYB.Server.Business
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("不允许包含重复的采购单");
+
+ foreach (var apo in request.AssociationPurchaseOrderList)
+ {
+ if (Math.Abs(apo.PurchaseAmount - apo.AssocationOrderCostDetailList.Sum(aocd => aocd.SkuAmount)) > 1)
+ throw new BusinessException($"采购单{apo.PurchaseOrderId}的采购货款与明细采购货款总和误差不能超过1");
+ }
+ #endregion
+
#region 读取采购单中的采购账号/采购方案
IList purchaseAccountIdList = request.AssociationPurchaseOrderList.Select(x => string.IsNullOrEmpty(x.PurchaseAccountId) ?
x.PurchaseAccountName :
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs
index a20a837..0589da8 100644
--- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs
@@ -35,7 +35,7 @@
public string PurchaserName { get; set; }
///
- /// 采购金额
+ /// 采购金额(货款)
///
public decimal PurchaseAmount { get; set; }