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; }
}
}