Browse Source

关联验证

yijia
shanji 2 years ago
parent
commit
e7dde046f7
  1. 40
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

40
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -543,6 +543,8 @@ namespace BBWYB.Server.Business
public void AssociatePurchaseOrder(AssociationOrderRequest request) public void AssociatePurchaseOrder(AssociationOrderRequest request)
{ {
nLogManager.Default().Info($"AssociatePurchaseOrder {JsonConvert.SerializeObject(request)}"); nLogManager.Default().Info($"AssociatePurchaseOrder {JsonConvert.SerializeObject(request)}");
#region 数据验证
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(); var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
if (dbOrder == null) if (dbOrder == null)
throw new BusinessException("订单不存在"); throw new BusinessException("订单不存在");
@ -553,15 +555,15 @@ namespace BBWYB.Server.Business
if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0) if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0)
throw new BusinessException("缺少采购单信息"); throw new BusinessException("缺少采购单信息");
var dbPurchaseOrderList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId).ToList(); //var dbPurchaseOrderList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId).ToList();
var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).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); var validation_groups_pid = request.AssociationPurchaseOrderList.GroupBy(po => po.PurchaseOrderId);
if (validation_groups_pid.Any(x => x.Count() > 1)) if (validation_groups_pid.Any(x => x.Count() > 1))
throw new BusinessException("不允许包含重复的采购单"); throw new BusinessException("不允许包含重复的采购单");
@ -571,8 +573,28 @@ namespace BBWYB.Server.Business
if (Math.Abs(apo.PurchaseAmount - apo.AssocationOrderCostDetailList.Sum(aocd => aocd.SkuAmount)) > 1) if (Math.Abs(apo.PurchaseAmount - apo.AssocationOrderCostDetailList.Sum(aocd => aocd.SkuAmount)) > 1)
throw new BusinessException($"采购单{apo.PurchaseOrderId}的采购货款与明细采购货款总和误差不能超过1"); throw new BusinessException($"采购单{apo.PurchaseOrderId}的采购货款与明细采购货款总和误差不能超过1");
} }
var purchaseOrderIds = request.AssociationPurchaseOrderList.Select(apo => apo.PurchaseOrderId).ToList();
var dbPurchaseOrderList = fsql.Select<OrderPurchaseInfo>().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 #endregion
#region 读取采购单中的采购账号/采购方案 #region 读取采购单中的采购账号/采购方案
IList<string> purchaseAccountIdList = request.AssociationPurchaseOrderList.Select(x => string.IsNullOrEmpty(x.PurchaseAccountId) ? IList<string> purchaseAccountIdList = request.AssociationPurchaseOrderList.Select(x => string.IsNullOrEmpty(x.PurchaseAccountId) ?
x.PurchaseAccountName : x.PurchaseAccountName :
@ -603,8 +625,8 @@ namespace BBWYB.Server.Business
foreach (var purchaseOrder in request.AssociationPurchaseOrderList) foreach (var purchaseOrder in request.AssociationPurchaseOrderList)
{ {
if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId)) //if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId))
continue; // continue;
var totalQuantity = purchaseOrder.AssocationOrderCostDetailList.Sum(x => x.PurchaseQuantity); var totalQuantity = purchaseOrder.AssocationOrderCostDetailList.Sum(x => x.PurchaseQuantity);
@ -844,7 +866,7 @@ namespace BBWYB.Server.Business
updateOrderCost = fsql.Update<OrderCost>().SetSource(dbOrderCost); updateOrderCost = fsql.Update<OrderCost>().SetSource(dbOrderCost);
#region 订单状态 #region 订单状态
dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbvalidPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList());
#endregion #endregion
#region 通知C端状态 #region 通知C端状态

Loading…
Cancel
Save