diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index a641609..54c20be 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -492,24 +492,10 @@ namespace BBWYB.Server.Business throw new BusinessException("关联采购单时不能包含历史采购单"); #region 读取采购单中的采购账号/采购方案 - IList schemeIdList = new List(); IList purchaseAccountIdList = request.AssociationPurchaseOrderList.Select(x => string.IsNullOrEmpty(x.PurchaseAccountId) ? x.PurchaseAccountName : x.PurchaseAccountId).Distinct().ToList(); - IList purchaseSchemeSkuList = null; IList 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().Where(pss => schemeIdList.Contains(pss.SkuPurchaseSchemeId)).ToList(); - } if (purchaseAccountIdList.Count() > 0) { dbPurchaseAccountList = fsqlManager.MDSfsql.Select().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() { purchaserId, purchaserId2 }; + var dbPurchaser = fsql.Select().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() + .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) diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs index 3b0ef13..bec6e2e 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs @@ -9,13 +9,6 @@ public string SkuId { get; set; } - /// - /// 采购方案Id - ///如果属于新增采购单, 则此参数必填 - ///如果采购单已存在,则此参数留空 - /// - public long? PurchaseSchemeId { get; set; } - /// /// 采购货款 /// diff --git a/SDKAdapter/PurchasePlatform/Client/Impl/PP_1688Client.cs b/SDKAdapter/PurchasePlatform/Client/Impl/PP_1688Client.cs index 6ab56fa..9897b46 100644 --- a/SDKAdapter/PurchasePlatform/Client/Impl/PP_1688Client.cs +++ b/SDKAdapter/PurchasePlatform/Client/Impl/PP_1688Client.cs @@ -236,6 +236,8 @@ namespace SDKAdapter.PurchasePlatform.Client FreightAmount = result["result"]["baseInfo"].Value("shippingFee"), ProductAmount = result["result"]["baseInfo"].Value("totalAmount") - result["result"]["baseInfo"].Value("shippingFee"), TotalAmount = result["result"]["baseInfo"].Value("totalAmount"), + PurchaserId = result["result"]["baseInfo"].Value("sellerID"), + PurchaserName = result["result"]["baseInfo"].Value("sellerLoginId"), ItemList = result["result"]["productItems"].Select(itemJToken => new PP_QueryOrderDetailSkuResponse() { ProductId = itemJToken.Value("productID"), diff --git a/SDKAdapter/PurchasePlatform/Models/Response/Order/PP_QueryOrderDetailResponse.cs b/SDKAdapter/PurchasePlatform/Models/Response/Order/PP_QueryOrderDetailResponse.cs index 471b663..055371c 100644 --- a/SDKAdapter/PurchasePlatform/Models/Response/Order/PP_QueryOrderDetailResponse.cs +++ b/SDKAdapter/PurchasePlatform/Models/Response/Order/PP_QueryOrderDetailResponse.cs @@ -22,6 +22,16 @@ /// public decimal FreightAmount { get; set; } + /// + /// 商家Id + /// + public string PurchaserId { get; set; } + + /// + /// 商家名称 + /// + public string PurchaserName { get; set; } + /// /// 订单Sku明细列表 ///