Browse Source

1

updatebug
shanji 2 years ago
parent
commit
3e91947270
  1. 57
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

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

@ -42,6 +42,29 @@ namespace BBWYB.Server.Business
this.expressCompanyNameConverter = expressCompanyNameConverter; this.expressCompanyNameConverter = expressCompanyNameConverter;
} }
/// <summary>
/// 合并相同的采购Sku
/// </summary>
/// <param name="cargoParamList"></param>
/// <returns></returns>
private IList<PP_OrderProductParamRequest> CombineRepeatPurchaseSku(IList<CargoParamRequest> cargoParamList)
{
IList<PP_OrderProductParamRequest> orderProductParamList = new List<PP_OrderProductParamRequest>();
var samePurchaseSkuGroups = cargoParamList.GroupBy(p => p.SkuId).ToList();
foreach (var samePurchaseSkuGroup in samePurchaseSkuGroups)
{
var first = samePurchaseSkuGroup.First();
orderProductParamList.Add(new PP_OrderProductParamRequest()
{
ProductId = first.ProductId,
SkuId = first.SkuId,
SpecId = first.SpecId,
Quantity = samePurchaseSkuGroup.Sum(p => p.Quantity)
});
}
return orderProductParamList;
}
public PreviewOrderResponse PreviewPurchaseOrder(PreviewOrderRequest request) public PreviewOrderResponse PreviewPurchaseOrder(PreviewOrderRequest request)
{ {
nLogManager.Default().Info($"PreviewPurchaseOrder {JsonConvert.SerializeObject(request)}"); nLogManager.Default().Info($"PreviewPurchaseOrder {JsonConvert.SerializeObject(request)}");
@ -67,6 +90,7 @@ namespace BBWYB.Server.Business
if (purchaseAccount == null) if (purchaseAccount == null)
throw new BusinessException($"缺少{cargoParamGroup.PurchasePlatform}采购平台账号,请在店铺配置中设置"); throw new BusinessException($"缺少{cargoParamGroup.PurchasePlatform}采购平台账号,请在店铺配置中设置");
var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList);
try try
{ {
var response = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform) var response = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform)
@ -88,13 +112,7 @@ namespace BBWYB.Server.Business
}, },
Platform = (AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform, Platform = (AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform,
PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode, PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode,
OrderProductParamList = cargoParamGroup.CargoParamList.Select(p => new PP_OrderProductParamRequest() OrderProductParamList = orderProductParamList
{
ProductId = p.ProductId,
Quantity = p.Quantity,
SkuId = p.SkuId,
SpecId = p.SpecId
}).ToList()
}); });
if (cargoParamGroup.PurchasePlatform == Enums.Platform.) if (cargoParamGroup.PurchasePlatform == Enums.Platform.)
@ -165,6 +183,8 @@ namespace BBWYB.Server.Business
var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform); var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform);
var extJson = extJArray.FirstOrDefault(j => j.Value<string>("PurchaserId") == cargoParamGroup.PurchaserId); var extJson = extJArray.FirstOrDefault(j => j.Value<string>("PurchaserId") == cargoParamGroup.PurchaserId);
var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList);
var createOrderResponse = client.CreateOrder(new PP_CreateOrderRequest() var createOrderResponse = client.CreateOrder(new PP_CreateOrderRequest()
{ {
AppKey = purchaseAccount.AppKey, AppKey = purchaseAccount.AppKey,
@ -185,13 +205,7 @@ namespace BBWYB.Server.Business
PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode, PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode,
Extensions = extJson.Value<string>("OrderTradeTypeCode"), Extensions = extJson.Value<string>("OrderTradeTypeCode"),
Remark = request.Remark, Remark = request.Remark,
OrderProductParamList = cargoParamGroup.CargoParamList.Select(p => new PP_OrderProductParamRequest() OrderProductParamList = orderProductParamList
{
ProductId = p.ProductId,
Quantity = p.Quantity,
SkuId = p.SkuId,
SpecId = p.SpecId
}).ToList()
}); });
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
@ -203,7 +217,6 @@ namespace BBWYB.Server.Business
}); });
totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount; totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount;
//purchaseOrderSimpleInfoList.Add(purchaseOrderSimpleInfo);
var belongSkuGroups = cargoParamGroup.CargoParamList.GroupBy(p => p.BelongSkuId); var belongSkuGroups = cargoParamGroup.CargoParamList.GroupBy(p => p.BelongSkuId);
foreach (var belongSkuGroup in belongSkuGroups) foreach (var belongSkuGroup in belongSkuGroups)
@ -211,8 +224,16 @@ namespace BBWYB.Server.Business
var belongSkuId = belongSkuGroup.Key; var belongSkuId = belongSkuGroup.Key;
var currentOrderSkuProductAmount = 0M; //采购成本 var currentOrderSkuProductAmount = 0M; //采购成本
var currentOrderSkuCargoParamList = cargoParamGroup.CargoParamList.Where(p => p.BelongSkuId == belongSkuId); //找当前skuId的采购skuId var currentOrderSkuCargoParamList = cargoParamGroup.CargoParamList.Where(p => p.BelongSkuId == belongSkuId); //找当前skuId的采购skuId
currentOrderSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => currentOrderSkuCargoParamList.Any(p1 => p1.SkuId == p.SkuId))
?.Sum(p => p.ProductAmount) ?? 0M; foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList)
{
var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId)
.Sum(p => p.ProductAmount);
var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId)
.Sum(p => p.Quantity);
currentOrderSkuProductAmount += purchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / purchaseSkuTotalQuantity);
}
var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / belongSkuGroups.Count(); //采购运费(按sku数均分) var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / belongSkuGroups.Count(); //采购运费(按sku数均分)
#region 成本明细 #region 成本明细
@ -238,6 +259,7 @@ namespace BBWYB.Server.Business
}; };
insertOrderCostDetails.Add(orderCostDetail); insertOrderCostDetails.Add(orderCostDetail);
#endregion #endregion
}
#region 订单采购信息 #region 订单采购信息
var orderPurchaserInfo = new OrderPurchaseInfo() var orderPurchaserInfo = new OrderPurchaseInfo()
@ -256,7 +278,6 @@ namespace BBWYB.Server.Business
insertOrderPurchaseInfos.Add(orderPurchaserInfo); insertOrderPurchaseInfos.Add(orderPurchaserInfo);
#endregion #endregion
} }
}
#region 订单成本 #region 订单成本
var orderCost = new OrderCost() var orderCost = new OrderCost()

Loading…
Cancel
Save