From 2ba7a2d54534708f648b423c621a72d05147581a Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 7 Feb 2023 00:08:45 +0800 Subject: [PATCH] 1 --- .../EvaluationAssistantBusiness.cs | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs index 0c35f6cf..96e02e64 100644 --- a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs +++ b/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(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().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() .WhereIf(shopId != null, pt => pt.ShopId == shopId) @@ -898,30 +914,19 @@ namespace BBWY.Server.Business #region 开始后续任务 //下一轮开始任务 - var nextPromotionTaskList = new List(); - var noPrePromotionTaskList = fsql.Select().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().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 }