Browse Source

屏蔽SKU优化任务和优化历史

liangku_skuoptimazation
shanji 1 year ago
parent
commit
b063f86688
  1. 114
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  2. 300
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

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

@ -684,65 +684,65 @@ namespace BBWYB.Server.Business
} }
#endregion #endregion
#region 创建优化历史 //#region 创建优化历史
{ //{
//本批次在线采购的订单sku集合 // //本批次在线采购的订单sku集合
var allBelongSkuIdList = request.CargoParamGroupList.SelectMany(cg => cg.CargoParamList.Select(c => c.BelongSkuId)).Distinct().ToList(); // 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)) // //var optimizationSkuIdList = orderSkus.Where(osku => osku.IsOptimizationCompleted == 1 && allBelongSkuIdList.Contains(osku.SkuId))
// .Select(osku => osku.SkuId) // // .Select(osku => osku.SkuId)
// .ToList(); // // .ToList();
var optimizationTaskList = fsql.Select<SkuOptimizationTask>() // var optimizationTaskList = fsql.Select<SkuOptimizationTask>()
.Where(s => allBelongSkuIdList.Contains(s.SkuId) && // .Where(s => allBelongSkuIdList.Contains(s.SkuId) &&
s.IsOptimizationCompleted == true && // s.IsOptimizationCompleted == true &&
s.IsPurchasementCompleted == false) // s.IsPurchasementCompleted == false)
.ToList(); // .ToList();
var optimizationSkuIdList = optimizationTaskList.Select(s => s.SkuId).Distinct().ToList(); // var optimizationSkuIdList = optimizationTaskList.Select(s => s.SkuId).Distinct().ToList();
if (optimizationSkuIdList.Count() > 0) // if (optimizationSkuIdList.Count() > 0)
{ // {
//优化历史 // //优化历史
var optimizationHistoryList = fsql.Select<SkuOptimizationHistory>() // var optimizationHistoryList = fsql.Select<SkuOptimizationHistory>()
.Where(s1 => s1.ShopId == request.ShopId && optimizationSkuIdList.Contains(s1.SkuId)) // .Where(s1 => s1.ShopId == request.ShopId && optimizationSkuIdList.Contains(s1.SkuId))
.GroupBy(s1 => s1.SkuId) // .GroupBy(s1 => s1.SkuId)
.WithTempQuery(g => new { MaxId = g.Max(g.Value.Id) }) // .WithTempQuery(g => new { MaxId = g.Max(g.Value.Id) })
.From<SkuOptimizationHistory>() // .From<SkuOptimizationHistory>()
.InnerJoin((s1, s2) => s1.MaxId == s2.Id) // .InnerJoin((s1, s2) => s1.MaxId == s2.Id)
.ToList((s1, s2) => s2); // .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() // foreach (var optimizationSkuId in optimizationSkuIdList)
{ // {
Id = idGenerator.NewLong(), // var orderSkuCost = allOrderSkuCostList.FirstOrDefault(x => x.SkuId == optimizationSkuId);
CreateTime = DateTime.Now, // if (orderSkuCost == null)
CurrentPurchasePrice = orderSkuCost.SkuAmount / orderSku.ItemTotal, // continue;
ProductId = orderSku.ProductId, // var orderSku = orderSkus.FirstOrDefault(x => x.SkuId == optimizationSkuId);
ShopId = request.ShopId, // var lastHistory = optimizationHistoryList.FirstOrDefault(x => x.SkuId == optimizationSkuId);
SkuId = optimizationSkuId,
LastPurchasePrice = lastHistory?.LastPurchasePrice ?? 0, // var currentPurchasePrice = orderSkuCost.SkuAmount / orderSku.ItemTotal;
OptimizationRatio = ratio, // var ratio = (lastHistory?.LastPurchasePrice ?? 0) == 0 ? 0 : 1 - currentPurchasePrice / lastHistory.LastPurchasePrice;
TriggerOptimizationReason = orderSku.TriggerOptimizationReason
}; // var newOptimizationHistory = new SkuOptimizationHistory()
insertSkuOptimizationHistoryList.Add(newOptimizationHistory); // {
// Id = idGenerator.NewLong(),
var skuOptimizationTask = optimizationTaskList.FirstOrDefault(x => x.SkuId == optimizationSkuId); // CreateTime = DateTime.Now,
if (skuOptimizationTask != null) // CurrentPurchasePrice = orderSkuCost.SkuAmount / orderSku.ItemTotal,
updateSkuOptimizationPurhcasementByIdList.Add(skuOptimizationTask.Id); // ProductId = orderSku.ProductId,
} // ShopId = request.ShopId,
} // SkuId = optimizationSkuId,
} // LastPurchasePrice = lastHistory?.LastPurchasePrice ?? 0,
#endregion // OptimizationRatio = ratio,
// TriggerOptimizationReason = orderSku.TriggerOptimizationReason
// };
// insertSkuOptimizationHistoryList.Add(newOptimizationHistory);
// var skuOptimizationTask = optimizationTaskList.FirstOrDefault(x => x.SkuId == optimizationSkuId);
// if (skuOptimizationTask != null)
// updateSkuOptimizationPurhcasementByIdList.Add(skuOptimizationTask.Id);
// }
// }
//}
//#endregion
fsql.Transaction(() => fsql.Transaction(() =>
{ {

300
BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

@ -383,142 +383,142 @@ namespace BBWYB.Server.Business.Sync
} }
#endregion #endregion
#region 检查待议价任务 //#region 检查待议价任务
{ //{
if (waitToCheckSkuSaleOrderList.Count() > 0) // if (waitToCheckSkuSaleOrderList.Count() > 0)
{ // {
var skuIdList = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList.Select(osku => osku.SkuId)).Distinct().ToList(); // var skuIdList = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList.Select(osku => osku.SkuId)).Distinct().ToList();
//没有完成首次采购的spu // //没有完成首次采购的spu
var noFisrstPurchasedSpuList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList) // var noFisrstPurchasedSpuList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList)
.Where(s => s.IsFirstPurchaseCompleted == false) // .Where(s => s.IsFirstPurchaseCompleted == false)
.Select(s => s.ProductId) // .Select(s => s.ProductId)
.ToList(); // .ToList();
//查询已存在未结束的优化任务 // //查询已存在未结束的优化任务
var dbSkuOptimizationTaskList = fsql.Select<SkuOptimizationTask>() // var dbSkuOptimizationTaskList = fsql.Select<SkuOptimizationTask>()
.Where(t => t.ShopId == shopId && // .Where(t => t.ShopId == shopId &&
t.IsOptimizationCompleted == false && // t.IsOptimizationCompleted == false &&
skuIdList.Contains(t.SkuId)) // skuIdList.Contains(t.SkuId))
.ToList(); // .ToList();
if (noFisrstPurchasedSpuList.Count() > 0) // if (noFisrstPurchasedSpuList.Count() > 0)
{ // {
var bargainTeamList = venderBusiness.GetYiJiaGroup(); //获取议价组 // var bargainTeamList = venderBusiness.GetYiJiaGroup(); //获取议价组
var bargainTeamIdList = bargainTeamList.Select(t => t.Id).ToList(); // var bargainTeamIdList = bargainTeamList.Select(t => t.Id).ToList();
var waitToCompetitiveTenderSchemeList = fsql.Select<PurchaseScheme>() // var waitToCompetitiveTenderSchemeList = fsql.Select<PurchaseScheme>()
.Where(ps => bargainTeamIdList.Contains(ps.BelongBargainTeamId) && // .Where(ps => bargainTeamIdList.Contains(ps.BelongBargainTeamId) &&
skuIdList.Contains(ps.SkuId)) // skuIdList.Contains(ps.SkuId))
.ToList(); //需要参与竞标采购方案 // .ToList(); //需要参与竞标采购方案
foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList) // foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList)
{ // {
foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList) // foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList)
{ // {
if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) && // if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) &&
!dbSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId) && // !dbSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId) &&
!insertSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId)) // !insertSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId))
{ // {
#region 解析来源店铺数据 // #region 解析来源店铺数据
JArray belongSkus = null; // JArray belongSkus = null;
string sourceShopName = string.Empty; // string sourceShopName = string.Empty;
if (!string.IsNullOrEmpty(waitCheckOrder.Extended)) // if (!string.IsNullOrEmpty(waitCheckOrder.Extended))
{ // {
try // try
{ // {
var jobject = JObject.Parse(waitCheckOrder.Extended); // var jobject = JObject.Parse(waitCheckOrder.Extended);
//dbOrder.SourceSku = jobject.Value<string>("SourceSku"); // //dbOrder.SourceSku = jobject.Value<string>("SourceSku");
sourceShopName = jobject.Value<string>("SourceShopName"); // sourceShopName = jobject.Value<string>("SourceShopName");
if (jobject.ContainsKey("BelongSkus")) // if (jobject.ContainsKey("BelongSkus"))
belongSkus = jobject["BelongSkus"] as JArray; // belongSkus = jobject["BelongSkus"] as JArray;
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
} // }
} // }
#endregion // #endregion
#region 创建待优化任务 // #region 创建待优化任务
var skuOptimizationTask = new SkuOptimizationTask() // var skuOptimizationTask = new SkuOptimizationTask()
{ // {
Id = idGenerator.NewLong(), // Id = idGenerator.NewLong(),
PreItemCount = 0, // PreItemCount = 0,
PrePurchasedAmount = 0, // PrePurchasedAmount = 0,
IsOptimizationCompleted = false, // IsOptimizationCompleted = false,
IsPurchasementCompleted = false, // IsPurchasementCompleted = false,
CreateTime = DateTime.Now, // CreateTime = DateTime.Now,
SafeWarningRemainingDay = 0, // SafeWarningRemainingDay = 0,
TriggerOptimizationReason = Enums.TriggerOptimizationReason., // TriggerOptimizationReason = Enums.TriggerOptimizationReason.首次采购,
SkuId = waitCheckOrderSku.SkuId, // SkuId = waitCheckOrderSku.SkuId,
ShopId = shopId, // ShopId = shopId,
ProductId = waitCheckOrderSku.ProductId, // ProductId = waitCheckOrderSku.ProductId,
BelongShopName = sourceShopName, // BelongShopName = sourceShopName,
CompletionTime = null, // CompletionTime = null,
JDSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == waitCheckOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty, // JDSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == waitCheckOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty,
LastOptimizationRatio = 0, // LastOptimizationRatio = 0,
LastPurchasePrice = 0, // LastPurchasePrice = 0,
LastOptimizationTime = null // LastOptimizationTime = null
}; // };
insertSkuOptimizationTaskList.Add(skuOptimizationTask); // insertSkuOptimizationTaskList.Add(skuOptimizationTask);
#endregion // #endregion
#region 创建待优化子任务 // #region 创建待优化子任务
{ // {
foreach (var department in bargainTeamList) // foreach (var department in bargainTeamList)
{ // {
var skuOptimizationChildTask = new SkuOptimizationChildTask() // var skuOptimizationChildTask = new SkuOptimizationChildTask()
{ // {
Id = idGenerator.NewLong(), // Id = idGenerator.NewLong(),
BelongTeamId = department.Id, // BelongTeamId = department.Id,
BelongTeamName = department.DepartmentName, // BelongTeamName = department.DepartmentName,
CompletionTime = null, // CompletionTime = null,
IsOptimizationCompleted = false, // IsOptimizationCompleted = false,
OptimizationTaskId = skuOptimizationTask.Id // OptimizationTaskId = skuOptimizationTask.Id
}; // };
insertSkuOptimizationChildTaskList.Add(skuOptimizationChildTask); // insertSkuOptimizationChildTaskList.Add(skuOptimizationChildTask);
#region 创建竞标任务 // #region 创建竞标任务
var schemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.SkuId == waitCheckOrderSku.SkuId && // var schemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.SkuId == waitCheckOrderSku.SkuId &&
ps.BelongBargainTeamId == department.Id) // ps.BelongBargainTeamId == department.Id)
.ToList(); // .ToList();
#endregion // #endregion
} // }
} // }
#endregion // #endregion
#region 创建待优化限时任务 // #region 创建待优化限时任务
//判断sku是否首次采购 // //判断sku是否首次采购
var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == waitCheckOrderSku.SkuId); // var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == waitCheckOrderSku.SkuId);
insertTimeLimitTaskList.Add(new TimeLimitTask() // insertTimeLimitTaskList.Add(new TimeLimitTask()
{ // {
Id = idGenerator.NewLong(), // Id = idGenerator.NewLong(),
CreateTme = DateTime.Now, // CreateTme = DateTime.Now,
//ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1), // //ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1),
ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType., DateTime.Now.AddDays(isFirst ? 1 : 0)), // ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now.AddDays(isFirst ? 1 : 0)),
//OrderId = o.OrderId, // //OrderId = o.OrderId,
//OrderSn = o.OrderSn, // //OrderSn = o.OrderSn,
ShopId = shopId, // ShopId = shopId,
SkuId = waitCheckOrderSku.SkuId, // SkuId = waitCheckOrderSku.SkuId,
TaskType = Enums.TimeLimitTaskType., // TaskType = Enums.TimeLimitTaskType.待议价任务,
TaskId = skuOptimizationTask.Id, // TaskId = skuOptimizationTask.Id,
Remark = "首次采购限时任务" // Remark = "首次采购限时任务"
}); // });
#endregion // #endregion
} // }
} // }
} // }
} // }
} // }
} //}
#endregion //#endregion
#region 检查限时采购任务 #region 检查限时采购任务
CheckPurchaseTimeLimitTask(shopId, qtOrderList.Items, dbPurchaseTimeLimitTaskList, insertTimeLimitTaskList); CheckPurchaseTimeLimitTask(shopId, qtOrderList.Items, dbPurchaseTimeLimitTaskList, insertTimeLimitTaskList);
@ -538,14 +538,14 @@ namespace BBWYB.Server.Business.Sync
if (insertTimeLimitTaskList.Count() > 0) if (insertTimeLimitTaskList.Count() > 0)
fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows();
if (insertSkuOptimizationTaskList.Count() > 0) //if (insertSkuOptimizationTaskList.Count() > 0)
fsql.Insert(insertSkuOptimizationTaskList).ExecuteAffrows(); // fsql.Insert(insertSkuOptimizationTaskList).ExecuteAffrows();
if (insertSkuOptimizationChildTaskList.Count() > 0) //if (insertSkuOptimizationChildTaskList.Count() > 0)
fsql.Insert(insertSkuOptimizationChildTaskList).ExecuteAffrows(); // fsql.Insert(insertSkuOptimizationChildTaskList).ExecuteAffrows();
if (insertCompetitiveTenderList.Count() > 0) //if (insertCompetitiveTenderList.Count() > 0)
fsql.Insert(insertCompetitiveTenderList).ExecuteAffrows(); // fsql.Insert(insertCompetitiveTenderList).ExecuteAffrows();
if (updateOrderList.Count() > 0) if (updateOrderList.Count() > 0)
foreach (var update in updateOrderList) foreach (var update in updateOrderList)
@ -574,22 +574,6 @@ namespace BBWYB.Server.Business.Sync
.ExecuteAffrows(); .ExecuteAffrows();
} }
//if (updateOrderSkuIdList_OptimizationFlag.Count() > 0)
// fsql.Update<OrderSku>(updateOrderSkuIdList_OptimizationFlag).Set(osku => osku.IsNeedOptimization, 1).ExecuteAffrows();
//if (updateOSkuOptimizationFlagByReasonGroups.Keys.Count() > 0)
//{
// foreach (var triggerOptimizationReason in updateOSkuOptimizationFlagByReasonGroups.Keys)
// {
// var updateOSkuListOptimizationFlagList = updateOSkuOptimizationFlagByReasonGroups[triggerOptimizationReason];
// if (updateOSkuListOptimizationFlagList != null && updateOSkuListOptimizationFlagList.Count > 0)
// {
// fsql.Update<OrderSku>(updateOSkuListOptimizationFlagList).Set(osku => osku.IsNeedOptimization, 1)
// .Set(osku => osku.TriggerOptimizationReason, triggerOptimizationReason)
// .ExecuteAffrows();
// }
// }
//}
foreach (var key in deductionSkuCountDictionary.Keys) foreach (var key in deductionSkuCountDictionary.Keys)
fsql.Update<SkuTotalSaleInfo>(key).Set(s => s.ItemCount - deductionSkuCountDictionary[key]).ExecuteAffrows(); fsql.Update<SkuTotalSaleInfo>(key).Set(s => s.ItemCount - deductionSkuCountDictionary[key]).ExecuteAffrows();
foreach (var key in deductionSpuCountDictionary.Keys) foreach (var key in deductionSpuCountDictionary.Keys)

Loading…
Cancel
Save