diff --git a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs index 7a6993de..a5f8ac59 100644 --- a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs +++ b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs @@ -322,7 +322,47 @@ namespace BBWY.Server.Business CheckSkuRepeat(pt, nextPromotionTaskList); } - fsql.Update(request.TaskId).Set(pt1 => pt1.PreTaskId, request.PreTaskId).ExecuteAffrows(); + + #region 清空后代 + var waitList = fsql.Select().Where(pt1 => pt1.ShopId == pt.ShopId && + pt1.Id != pt.Id && + pt1.PreTaskId != null && + pt1.Status == Enums.PromitionTaskStatus.等待).ToList(pt1 => new PromotionTask { Id = pt1.Id, PreTaskId = pt1.PreTaskId }); + + var childIdList = GetChildTaskIdList(pt.Id, waitList, null); + #endregion + + fsql.Transaction(() => + { + fsql.Update(request.TaskId).Set(pt1 => pt1.PreTaskId, request.PreTaskId).ExecuteAffrows(); + if (childIdList.Count() > 0) + fsql.Update(childIdList.ToArray()).Set(pt1 => pt1.PreTaskId, null).ExecuteAffrows(); + }); + + } + + /// + /// 递归找子级任务 + /// + /// + /// + /// + /// + public IList GetChildTaskIdList(long taskId, IList waitList, IList childIdList) + { + if (childIdList == null) + childIdList = new List(); + + var childTaskList = waitList.Where(w => w.PreTaskId == taskId).ToList(); + if (childTaskList.Count() != 0) + { + foreach (var childTask in childTaskList) + { + childIdList.Add(childTask.Id); + GetChildTaskIdList(childTask.Id, waitList, childIdList); + } + } + return childIdList; } private void CheckSkuRepeat(PromotionTask pt, IList waitCheckList)