shanji 2 years ago
parent
commit
2ba7a2d545
  1. 45
      BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs

45
BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs

@ -303,6 +303,9 @@ namespace BBWY.Server.Business
if (pt == null)
throw new BusinessException($"{request.TaskId}任务不存在");
if (pt.Status != Enums.PromitionTaskStatus.)
throw new BusinessException("任务状态必须为等待");
if (request.PreTaskId != -1)
{
var prpt = fsql.Select<PromotionTask>(request.PreTaskId).ToOne();
@ -312,9 +315,6 @@ namespace BBWY.Server.Business
if (pt.Id == prpt.Id)
throw new BusinessException("前置任务不能设置为自己");
if (pt.Status != Enums.PromitionTaskStatus.)
throw new BusinessException("任务状态必须为等待");
if (prpt.Status != Enums.PromitionTaskStatus. && prpt.Status != Enums.PromitionTaskStatus.)
throw new BusinessException("前置任务状态必须为等待或进行中");
@ -700,6 +700,22 @@ namespace BBWY.Server.Business
//查询店铺
var shopList = venderBusiness.GetShopList(shopId, Enums.Platform.);
//开始下一轮开始任务
var nextPromotionTaskList = fsql.Select<PromotionTask>().WhereIf(shopId != null, pt => pt.ShopId == shopId)
.Where(pt => pt.Status == Enums.PromitionTaskStatus. &&
pt.PreTaskId == -1).ToList(pt => new { Id = pt.Id, ShopId = pt.ShopId });
if (nextPromotionTaskList.Count() > 0)
{
foreach (var nextTask in nextPromotionTaskList)
{
var shop = shopList.FirstOrDefault(s => s.ShopId == nextTask.ShopId.ToString());
if (shop != null)
{
Task.Factory.StartNew(() => AutoStart(nextTask.Id, shop), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionAutoStartTaskScheduler);
}
}
}
//查询正在进行的任务
var runningTaskList = fsql.Select<PromotionTask>()
.WhereIf(shopId != null, pt => pt.ShopId == shopId)
@ -898,30 +914,19 @@ namespace BBWY.Server.Business
#region 开始后续任务
//下一轮开始任务
var nextPromotionTaskList = new List<long>();
var noPrePromotionTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == shopId &&
pt.Status == Enums.PromitionTaskStatus. &&
pt.PreTaskId == -1).ToList(pt => pt.Id);
if (noPrePromotionTaskList.Count() > 0)
nextPromotionTaskList.AddRange(noPrePromotionTaskList);
if (jobDoneTaskIdList.Count() > 0)
{
var childTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == shopId &&
pt.Status == Enums.PromitionTaskStatus. &&
jobDoneTaskIdList.Contains(pt.PreTaskId.Value)).ToList(pt => pt.Id);
pt.Status == Enums.PromitionTaskStatus. &&
jobDoneTaskIdList.Contains(pt.PreTaskId.Value)).ToList(pt => pt.Id);
if (childTaskList.Count() > 0)
nextPromotionTaskList.AddRange(childTaskList);
}
if (nextPromotionTaskList.Count() > 0)
{
foreach (var taskId in nextPromotionTaskList)
{
Task.Factory.StartNew(() => AutoStart(taskId, shop), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionAutoStartTaskScheduler);
foreach (var taskId in childTaskList)
{
Task.Factory.StartNew(() => AutoStart(taskId, shop), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionAutoStartTaskScheduler);
}
}
}
#endregion
}

Loading…
Cancel
Save