Browse Source

关联采购单

master
shanji 2 years ago
parent
commit
969ef3518a
  1. 59
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  2. 7
      BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs
  3. 2
      SDKAdapter/PurchasePlatform/Client/Impl/PP_1688Client.cs
  4. 10
      SDKAdapter/PurchasePlatform/Models/Response/Order/PP_QueryOrderDetailResponse.cs

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

@ -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)

7
BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs

@ -9,13 +9,6 @@
public string SkuId { get; set; }
/// <summary>
/// 采购方案Id
///<para>如果属于新增采购单, 则此参数必填</para>
///<para>如果采购单已存在,则此参数留空</para>
/// </summary>
public long? PurchaseSchemeId { get; set; }
/// <summary>
/// 采购货款
/// </summary>

2
SDKAdapter/PurchasePlatform/Client/Impl/PP_1688Client.cs

@ -236,6 +236,8 @@ namespace SDKAdapter.PurchasePlatform.Client
FreightAmount = result["result"]["baseInfo"].Value<decimal>("shippingFee"),
ProductAmount = result["result"]["baseInfo"].Value<decimal>("totalAmount") - result["result"]["baseInfo"].Value<decimal>("shippingFee"),
TotalAmount = result["result"]["baseInfo"].Value<decimal>("totalAmount"),
PurchaserId = result["result"]["baseInfo"].Value<string>("sellerID"),
PurchaserName = result["result"]["baseInfo"].Value<string>("sellerLoginId"),
ItemList = result["result"]["productItems"].Select(itemJToken => new PP_QueryOrderDetailSkuResponse()
{
ProductId = itemJToken.Value<string>("productID"),

10
SDKAdapter/PurchasePlatform/Models/Response/Order/PP_QueryOrderDetailResponse.cs

@ -22,6 +22,16 @@
/// </summary>
public decimal FreightAmount { get; set; }
/// <summary>
/// 商家Id
/// </summary>
public string PurchaserId { get; set; }
/// <summary>
/// 商家名称
/// </summary>
public string PurchaserName { get; set; }
/// <summary>
/// 订单Sku明细列表
/// </summary>

Loading…
Cancel
Save