|
|
@ -492,24 +492,10 @@ namespace BBWYB.Server.Business |
|
|
|
throw new BusinessException("关联采购单时不能包含历史采购单"); |
|
|
|
|
|
|
|
#region 读取采购单中的采购账号/采购方案
|
|
|
|
IList<long> schemeIdList = new List<long>(); |
|
|
|
IList<string> purchaseAccountIdList = request.AssociationPurchaseOrderList.Select(x => string.IsNullOrEmpty(x.PurchaseAccountId) ? |
|
|
|
x.PurchaseAccountName : |
|
|
|
x.PurchaseAccountId).Distinct().ToList(); |
|
|
|
IList<PurchaseSchemeProductSku> purchaseSchemeSkuList = null; |
|
|
|
IList<Purchaseaccount> dbPurchaseAccountList = null; |
|
|
|
foreach (var purchaseOrder in request.AssociationPurchaseOrderList) |
|
|
|
{ |
|
|
|
foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) |
|
|
|
{ |
|
|
|
if (assOrderCostDetail.PurchaseSchemeId != null) |
|
|
|
schemeIdList.Add(assOrderCostDetail.PurchaseSchemeId.Value); |
|
|
|
} |
|
|
|
} |
|
|
|
if (schemeIdList.Count() > 0) |
|
|
|
{ |
|
|
|
purchaseSchemeSkuList = fsql.Select<PurchaseSchemeProductSku>().Where(pss => schemeIdList.Contains(pss.SkuPurchaseSchemeId)).ToList(); |
|
|
|
} |
|
|
|
if (purchaseAccountIdList.Count() > 0) |
|
|
|
{ |
|
|
|
dbPurchaseAccountList = fsqlManager.MDSfsql.Select<Purchaseaccount>().Where(pa => purchaseAccountIdList.Contains(pa.Id) || |
|
|
@ -543,13 +529,8 @@ namespace BBWYB.Server.Business |
|
|
|
var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaseOrderId); |
|
|
|
if (dbPurchaserOrder == null) |
|
|
|
{ |
|
|
|
if (dbPurchaserOrder.PurchasePlatform == Enums.Platform.阿里巴巴) |
|
|
|
if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) |
|
|
|
{ |
|
|
|
#region 验证新采购单是否具备完整的采购方案
|
|
|
|
if (purchaseOrder.AssocationOrderCostDetailList.Any(x => x.PurchaseSchemeId == null)) |
|
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少采购方案"); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 补齐采购SKU
|
|
|
|
var purchaseAccount = dbPurchaseAccountList.FirstOrDefault(pa => pa.Id == purchaseOrder.PurchaseAccountId || |
|
|
|
pa.AccountName == purchaseOrder.PurchaseAccountName); |
|
|
@ -565,6 +546,42 @@ namespace BBWYB.Server.Business |
|
|
|
OrderId = purchaseOrder.PurchaseOrderId |
|
|
|
}); |
|
|
|
|
|
|
|
#region 处理采购商Id
|
|
|
|
var purchaserId = purchaseOrderSimpleInfo.PurchaserId; |
|
|
|
if (!string.IsNullOrEmpty(purchaserId)) |
|
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少采购商Id"); |
|
|
|
purchaserId = purchaserId.Replace("b2b-", string.Empty); |
|
|
|
var purchaserId2 = purchaserId.Substring(0, purchaserId.Length - 5); |
|
|
|
var purchaserIds = new List<string>() { purchaserId, purchaserId2 }; |
|
|
|
var dbPurchaser = fsql.Select<Purchaser>().Where(p => p.Platform == Enums.Platform.阿里巴巴 && purchaserIds.Contains(p.Id)).ToOne(); |
|
|
|
if (dbPurchaser == null) |
|
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少有效采购商"); |
|
|
|
purchaserId = dbPurchaser.Id; |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 匹配采购方案
|
|
|
|
var skuIds = purchaseOrder.AssocationOrderCostDetailList.Select(ocd => ocd.SkuId).ToList(); |
|
|
|
var purchaseSchemeSkuList = fsql.Select<Purchaser, PurchaseScheme, PurchaseSchemeProductSku>() |
|
|
|
.InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId) |
|
|
|
.InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId) |
|
|
|
.Where((p, ps, pss) => p.Id == purchaserId) |
|
|
|
.Where((p, ps, pss) => ps.PurchasePlatform == Enums.Platform.阿里巴巴) |
|
|
|
.Where((p, ps, pss) => skuIds.Contains(pss.SkuId)) |
|
|
|
.ToList((p, ps, pss) => new |
|
|
|
{ |
|
|
|
pss.Id, |
|
|
|
pss.SkuId, |
|
|
|
pss.ProductId, |
|
|
|
pss.PurchaseProductId, |
|
|
|
pss.PurchaseSkuId, |
|
|
|
pss.PurchaseSkuSpecId, |
|
|
|
pss.SkuPurchaseSchemeId |
|
|
|
}); |
|
|
|
if(purchaseSchemeSkuList.Count()==0) |
|
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var purchaseOrderSku in purchaseOrderSimpleInfo.ItemList) |
|
|
|
{ |
|
|
|
var orderPurchaseSkuInfo = new OrderPurchaseSkuInfo() |
|
|
@ -586,7 +603,7 @@ namespace BBWYB.Server.Business |
|
|
|
{ |
|
|
|
var currentPurchaseSchemeSkuList = purchaseSchemeSkuList.Where(x => x.SkuId == assOrderCostDetail.SkuId).ToList(); |
|
|
|
if (currentPurchaseSchemeSkuList == null || currentPurchaseSchemeSkuList.Count() == 0) |
|
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} Sku{assOrderCostDetail.SkuId}缺少采购方案"); |
|
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id {purchaserId} Sku{assOrderCostDetail.SkuId}缺少采购方案"); |
|
|
|
|
|
|
|
var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); |
|
|
|
foreach (var currentPurchaseSchemeSku in currentPurchaseSchemeSkuList) |
|
|
|