diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 61ab09f..f979837 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1,23 +1,21 @@ using BBWYB.Common.Http; using BBWYB.Common.Log; using BBWYB.Common.Models; +using BBWYB.Server.Business.Extensions; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; +using BBWYB.Server.Model.Db.Mds; using BBWYB.Server.Model.Db.MDS; using BBWYB.Server.Model.Dto; using FreeSql; +using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SDKAdapter; -using SDKAdapter.OperationPlatform.Models; using SDKAdapter.PurchasePlatform.Client; using SDKAdapter.PurchasePlatform.Models; using System.Text; using Yitter.IdGenerator; -using BBWYB.Server.Business.Extensions; -using Microsoft.Extensions.DependencyInjection; -using BBWYB.Server.Model.Db.Mds; -using static BBWYB.Server.Model.Enums; namespace BBWYB.Server.Business { @@ -825,6 +823,64 @@ namespace BBWYB.Server.Business }); } + /// + /// 预览关联订单信息 + /// + /// + public void PreviewAssocationPurchaseOrder(AssocationPurchaseOrderPreviewRequest request) + { + var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.PurchasePlatform); + var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() + { + AppKey = request.PurchaseAccount.AppKey, + AppSecret = request.PurchaseAccount.AppSecret, + AppToken = request.PurchaseAccount.AppToken, + OrderId = request.PurchaseOrderId + }); + + #region 处理采购商Id + var purchaserId = purchaseOrderSimpleInfo.PurchaserId; + if (string.IsNullOrEmpty(purchaserId)) + throw new BusinessException($"采购单{request.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($"采购单{request.PurchaseOrderId}缺少有效采购商"); + purchaserId = dbPurchaser.Id; + #endregion + + #region 查询订单Sku + var orderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); + if (orderSkuList.Count() == 0) + throw new BusinessException("缺少订单sku信息"); + #endregion + + #region 匹配采购方案 + var skuIds = orderSkuList.Select(osku => osku.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($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); + #endregion + + } + /// /// 设置历史采购单 /// diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationPurchaseOrderPreviewRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationPurchaseOrderPreviewRequest.cs index 8d38887..d8bb8dc 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationPurchaseOrderPreviewRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationPurchaseOrderPreviewRequest.cs @@ -10,5 +10,7 @@ public string PurchaseOrderId { get; set; } public PurchaseAccountRequest PurchaseAccount { get; set; } + + public Enums.Platform PurchasePlatform { get; set; } } }