|
|
@ -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,11 +518,10 @@ 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) |
|
|
|
.Select(x => x.Price * (cargoParam.PurchaseRatio ?? 1)) |
|
|
|
.DefaultIfEmpty(0M) |
|
|
|
.First()); |
|
|
|
var lastPurchasePriceCost = cargoParamGroupsByScheme.Sum(cargoParam => createdPurchaseOrderItemList.Where(x => x.SkuId == cargoParam.SkuId) |
|
|
|
.Select(x => x.Price * (cargoParam.PurchaseRatio ?? 1)) |
|
|
|
.DefaultIfEmpty(0M) |
|
|
|
.First()); |
|
|
|
var purchasedAmount = insertOrderCostDetails.Where(ocd => ocd.SkuId == skuId).Sum(ocd => ocd.SkuAmount); |
|
|
|
var update = fsql.Update<PurchaseScheme>(schemeId).Set(ps => ps.LastPurchaseTime, DateTime.Now) |
|
|
|
.Set(ps => ps.LastPurchasePriceCost, lastPurchasePriceCost) |
|
|
@ -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) |
|
|
|