|
|
@ -384,142 +384,167 @@ 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 spuIdList = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList.Select(osku => osku.ProductId)).Distinct().ToList(); |
|
|
|
|
|
|
|
//没有完成首次采购的spu
|
|
|
|
var noFisrstPurchasedSpuList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList) |
|
|
|
.Where(s => s.IsFirstPurchaseCompleted == false) |
|
|
|
.Select(s => s.ProductId) |
|
|
|
.ToList(); |
|
|
|
|
|
|
|
//查询已存在未结束的优化任务
|
|
|
|
var dbSpuOptimizationTaskList = fsql.Select<SpuOptimizationTask>() |
|
|
|
.Where(t => t.ShopId == shopId && |
|
|
|
t.IsOptimizationCompleted == false && |
|
|
|
spuIdList.Contains(t.ProductId)) |
|
|
|
.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) && |
|
|
|
spuIdList.Contains(ps.ProductId)) |
|
|
|
.ToList(); //需要参与竞标采购方案
|
|
|
|
|
|
|
|
|
|
|
|
var waitToCheckOrderSpuGroups = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList).GroupBy(osku => osku.ProductId); |
|
|
|
foreach (var spuGroup in waitToCheckOrderSpuGroups) |
|
|
|
{ |
|
|
|
if (noFisrstPurchasedSpuList.Contains(spuGroup.Key) && |
|
|
|
!dbSpuOptimizationTaskList.Any(t => t.ProductId == spuGroup.Key) && |
|
|
|
!insertSpuOptimizationTaskList.Any(t => t.ProductId == spuGroup.Key)) |
|
|
|
{ |
|
|
|
var includeSpuOrderList = waitToCheckSkuSaleOrderList.Where(o => o.OrderSkuList.Any(osku => osku.ProductId == spuGroup.Key)); |
|
|
|
|
|
|
|
var sourceShopName = string.Empty; |
|
|
|
//京东sku-拳探sku下单关系映射表
|
|
|
|
var mappingQT_JDSKUDictionary = new Dictionary<string, string>(); |
|
|
|
|
|
|
|
#region 解析来源店铺数据
|
|
|
|
foreach (var waitCheckOrder in includeSpuOrderList) |
|
|
|
{ |
|
|
|
if (!string.IsNullOrEmpty(waitCheckOrder.Extended)) |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
var jobject = JObject.Parse(waitCheckOrder.Extended); |
|
|
|
sourceShopName = jobject.Value<string>("SourceShopName"); |
|
|
|
|
|
|
|
if (jobject.ContainsKey("BelongSkus")) |
|
|
|
{ |
|
|
|
var jbelongSkus = jobject["BelongSkus"] as JArray; |
|
|
|
foreach (var j in jbelongSkus) |
|
|
|
{ |
|
|
|
var skuId = j.Value<string>("SkuId"); |
|
|
|
var belongSkuId = j.Value<string>("BelongSkuId"); |
|
|
|
if (!mappingQT_JDSKUDictionary.ContainsKey(skuId)) |
|
|
|
mappingQT_JDSKUDictionary.TryAdd(skuId, belongSkuId); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList) |
|
|
|
{ |
|
|
|
|
|
|
|
foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList) |
|
|
|
{ |
|
|
|
if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) && |
|
|
|
!dbSpuOptimizationTaskList.Any(t => t.ProductId == waitCheckOrderSku.ProductId) && |
|
|
|
!insertSpuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId)) |
|
|
|
{ |
|
|
|
#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); |
|
|
|