Browse Source

采购完成创建优化历史

yijia
shanji 2 years ago
parent
commit
d9cb0b48be
  1. 57
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

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

@ -326,6 +326,7 @@ namespace BBWYB.Server.Business
List<string> updatePurchaseTimeLimitTaskOrderSkuList = new List<string>();
List<IUpdate<Purchaser>> updatePurchaserList = new List<IUpdate<Purchaser>>();
List<SkuHistoryPurchaserRelation> insertSkuHistoryPurchaserRelationList = new List<SkuHistoryPurchaserRelation>();
List<SkuOptimizationHistory> insertSkuOptimizationHistoryList = new List<SkuOptimizationHistory>();
List<QiKuPackTaskSkuPurchaseSchemeIdRequest> notifyQikuPackSchemeParamList = null;
if (dbOrder.IntoStoreType == Enums.IntoStoreType.)
@ -517,8 +518,7 @@ namespace BBWYB.Server.Business
var schemeId = cargoParamGroupsByScheme.Key;
var skuId = cargoParamGroupsByScheme.FirstOrDefault().BelongSkuId;
var lastPurchasePriceCost = cargoParamGroupsByScheme.Sum(cargoParam => createdPurchaseOrderItemList
.Where(x => x.SkuId == cargoParam.SkuId)
var lastPurchasePriceCost = cargoParamGroupsByScheme.Sum(cargoParam => createdPurchaseOrderItemList.Where(x => x.SkuId == cargoParam.SkuId)
.Select(x => x.Price * (cargoParam.PurchaseRatio ?? 1))
.DefaultIfEmpty(0M)
.First());
@ -617,7 +617,9 @@ namespace BBWYB.Server.Business
// totalPurchaseFreight ?? 0M,
// 0M,
// 0M);
orderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, orderSkuCostList.Union(insertOrderSkuCostList).ToList());
var allOrderSkuCostList = orderSkuCostList.Union(insertOrderSkuCostList).ToList();
orderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, allOrderSkuCostList);
if (!isRepurchase)
@ -647,6 +649,53 @@ namespace BBWYB.Server.Business
}
#endregion
#region 创建优化历史
{
//本批次在线采购的订单sku集合
var allBelongSkuIdList = request.CargoParamGroupList.SelectMany(cg => cg.CargoParamList.Select(c => c.BelongSkuId)).Distinct().ToList();
var optimizationSkuIdList = orderSkus.Where(osku => osku.IsOptimizationCompleted == 1 && allBelongSkuIdList.Contains(osku.SkuId))
.Select(osku => osku.SkuId)
.ToList();
if (optimizationSkuIdList.Count() > 0)
{
//优化历史
var optimizationHistoryList = fsql.Select<SkuOptimizationHistory>()
.Where(s1 => s1.ShopId == request.ShopId && optimizationSkuIdList.Contains(s1.SkuId))
.GroupBy(s1 => s1.SkuId)
.WithTempQuery(g => new { MaxId = g.Max(g.Value.Id) })
.From<SkuOptimizationHistory>()
.InnerJoin((s1, s2) => s1.MaxId == s2.Id)
.ToList((s1, s2) => s2);
foreach (var optimizationSkuId in optimizationSkuIdList)
{
var orderSkuCost = allOrderSkuCostList.FirstOrDefault(x => x.SkuId == optimizationSkuId);
if (orderSkuCost == null)
continue;
var orderSku = orderSkus.FirstOrDefault(x => x.SkuId == optimizationSkuId);
var lastHistory = optimizationHistoryList.FirstOrDefault(x => x.SkuId == optimizationSkuId);
var currentPurchasePrice = orderSkuCost.SkuAmount / orderSku.ItemTotal;
var ratio = (lastHistory?.LastPurchasePrice ?? 0) == 0 ? 0 : 1 - currentPurchasePrice / lastHistory.LastPurchasePrice;
var newOptimizationHistory = new SkuOptimizationHistory()
{
Id = idGenerator.NewLong(),
CreateTime = DateTime.Now,
CurrentPurchasePrice = orderSkuCost.SkuAmount / orderSku.ItemTotal,
ProductId = orderSku.ProductId,
ShopId = request.ShopId,
SkuId = optimizationSkuId,
LastPurchasePrice = lastHistory?.LastPurchasePrice ?? 0,
OptimizationRatio = ratio
};
insertSkuOptimizationHistoryList.Add(newOptimizationHistory);
}
}
}
#endregion
fsql.Transaction(() =>
{
if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0)
@ -669,6 +718,8 @@ namespace BBWYB.Server.Business
fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows();
if (insertSkuHistoryPurchaserRelationList.Count() > 0)
fsql.Insert(insertSkuHistoryPurchaserRelationList).ExecuteAffrows();
if (insertSkuOptimizationHistoryList.Count() > 0)
fsql.Insert(insertSkuOptimizationHistoryList).ExecuteAffrows();
updateOrderCost?.ExecuteAffrows();
insertOrderCost?.ExecuteAffrows();
if (updatePurchaseSchemeList.Count() > 0)

Loading…
Cancel
Save