|
|
@ -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(); |
|
|
|
//#region 检查待议价任务
|
|
|
|
//{
|
|
|
|
// if (waitToCheckSkuSaleOrderList.Count() > 0)
|
|
|
|
// {
|
|
|
|
// var skuIdList = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList.Select(osku => osku.SkuId)).Distinct().ToList();
|
|
|
|
|
|
|
|
//查询已存在未结束的优化任务
|
|
|
|
var dbSkuOptimizationTaskList = fsql.Select<SkuOptimizationTask>() |
|
|
|
.Where(t => t.ShopId == shopId && |
|
|
|
t.IsOptimizationCompleted == false && |
|
|
|
skuIdList.Contains(t.SkuId)) |
|
|
|
.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 |
|
|
|
}; |
|
|
|
// 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");
|
|
|
|
|
|
|
|
insertSkuOptimizationTaskList.Add(skuOptimizationTask); |
|
|
|
#endregion
|
|
|
|
// if (jobject.ContainsKey("BelongSkus"))
|
|
|
|
// belongSkus = jobject["BelongSkus"] as JArray;
|
|
|
|
|
|
|
|
#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); |
|
|
|
// }
|
|
|
|
// catch (Exception ex)
|
|
|
|
// {
|
|
|
|
|
|
|
|
#region 创建竞标任务
|
|
|
|
var schemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.SkuId == waitCheckOrderSku.SkuId && |
|
|
|
ps.BelongBargainTeamId == department.Id) |
|
|
|
.ToList(); |
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |
|
|
|
#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 创建待优化限时任务
|
|
|
|
// #region 创建待优化限时任务
|
|
|
|
|
|
|
|
//判断sku是否首次采购
|
|
|
|
var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == waitCheckOrderSku.SkuId); |
|
|
|
// //判断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
|
|
|
|
// 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) |
|
|
|