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
#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();
var optimizationTaskList = fsql.Select<SkuOptimizationTask>()
.Where(s => allBelongSkuIdList.Contains(s.SkuId) &&
s.IsOptimizationCompleted == true &&
s.IsPurchasementCompleted == false)
.ToList();
var optimizationSkuIdList = optimizationTaskList.Select(s => s.SkuId).Distinct().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);
//#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();
// var optimizationTaskList = fsql.Select<SkuOptimizationTask>()
// .Where(s => allBelongSkuIdList.Contains(s.SkuId) &&
// s.IsOptimizationCompleted == true &&
// s.IsPurchasementCompleted == false)
// .ToList();
// var optimizationSkuIdList = optimizationTaskList.Select(s => s.SkuId).Distinct().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);
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,
TriggerOptimizationReason = orderSku.TriggerOptimizationReason
};
insertSkuOptimizationHistoryList.Add(newOptimizationHistory);
var skuOptimizationTask = optimizationTaskList.FirstOrDefault(x => x.SkuId == optimizationSkuId);
if (skuOptimizationTask != null)
updateSkuOptimizationPurhcasementByIdList.Add(skuOptimizationTask.Id);
}
}
}
#endregion
// 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,
// TriggerOptimizationReason = orderSku.TriggerOptimizationReason
// };
// insertSkuOptimizationHistoryList.Add(newOptimizationHistory);
// var skuOptimizationTask = optimizationTaskList.FirstOrDefault(x => x.SkuId == optimizationSkuId);
// if (skuOptimizationTask != null)
// updateSkuOptimizationPurhcasementByIdList.Add(skuOptimizationTask.Id);
// }
// }
//}
//#endregion
fsql.Transaction(() =>
{

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

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

Loading…
Cancel
Save