Пример #1
0
 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;
 }
Пример #2
0
        /// <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);
        }