public UserTaskBase(string name, TaskPriorities priority, Action <Object> action) { this.TaskId = Guid.NewGuid(); this.Status = TaskStatus.Waiting; this.TaskName = name; this.Priority = priority; this.action = action; }
/// <summary>扩展任务的子孙节点</summary> /// <param name="collection"></param> /// <returns></returns> public static EntityList <WorkTask> Expand(IEnumerable <WorkTask> collection, TaskStatus[] status, TaskPriorities[] tps, Int32 masterid, DateTime start, DateTime end, Boolean?deleted, String key) { if (status == null) { status = new TaskStatus[0]; } if (tps == null) { tps = new TaskPriorities[0]; } var list = new EntityList <WorkTask>(); foreach (var item in collection) { // 过滤 if (status.Length > 0 && !status.Contains(item.TaskStatus)) { continue; } if (tps.Length > 0 && !tps.Contains(item.TaskPriority)) { continue; } if (masterid > 0 && item.MasterID != masterid) { continue; } if (start > DateTime.MinValue && item.PlanStartTime < start) { continue; } if (end > DateTime.MinValue && item.PlanEndTime >= end.Date.AddDays(1)) { continue; } if (deleted != null && item.Deleted != deleted.Value) { continue; } if (!key.IsNullOrEmpty() && (item.Name.IsNullOrEmpty() || !item.Name.Contains(key)) && (item.Content.IsNullOrEmpty() || !item.Content.Contains(key))) { continue; } list.Add(item); if (item.ChildCount > 0) { var childs = item.Childs; if (childs.Count > 0) { // 同级子任务按照最后更新时间降序 var childs2 = childs.Clone(); childs2.Sort((x, y) => y.UpdateTime.CompareTo(x.UpdateTime)); var list2 = Expand(childs2, status, tps, masterid, start, end, deleted, key); list.AddRange(list2); } } } return(list); }