public _SumModel GetSum(ListModel model)
        {
            _SumModel sumModel = new _SumModel
            {
                Types = new Dictionary<string, int> 
                { 
                    { "虚", 2 }, 
                    { "实", 12 }
                },
                Priorities = new Dictionary<string, int>
                { 
                    { "高", 2 },
                    { "中", 12 }, 
                    { "低", 3 } 
                },
                Difficulties = new Dictionary<string, int> 
                { 
                    { "困难", 2 }, 
                    { "普通", 11 } 
                },
                ConsumeTime = new Dictionary<string, int> 
                { 
                    { "预计", 235 }, 
                    { "实际", 386 } 
                },
                Status = new Dictionary<string, int> 
                {
                    { "发布", 1 }, 
                    { "承接", 2 }, 
                    { "质疑", 1 },
                    { "完成", 3 },
                    { "合格", 8 }, 
                    { "不合格", 1 }
                },
                OverDue = new Dictionary<string, int>
                { 
                    { "条数", 3 }, 
                    { "次数", 7 }
                },
                Qualities = new Dictionary<string, int>
                { 
                    { "良好", 2 }, 
                    { "合格", 8 }, 
                    { "不合格", 1 } 
                },
                Doubt = new Dictionary<string, int>
                { 
                    { "条数", 3 }, 
                    { "次数", 9 },
                },
                RefuseAccept = new Dictionary<string, int>
                { 
                    { "良好", 2 }, 
                    { "合格", 8 }, 
                    { "不合格", 1 } 
                },
            };

            return sumModel;
        }
        public _SumModel GetSum(ListModel model)
        {
            _SumModel sumModel = new _SumModel();

            Project current = session.Load<Project>(model.CurrentProject.TailSelectedProject.Id);
            IList<int> allProjectIds = current.GetDescendantIds();
            var allTasks = _querySource
                .Get(model, allProjectIds);

            sumModel.Types = new Dictionary<string, int>();
            sumModel.Types.Add("虚", allTasks.Count(t => t.IsVirtual));
            sumModel.Types.Add("实", allTasks.Count(t => !t.IsVirtual));

            sumModel.Publish = allTasks.GroupBy(t => t.Publisher).ToDictionary(t => t.Key.Name, t => t.Count());
            sumModel.Own = allTasks.GroupBy(t => t.Owner).ToDictionary(t => getName(t.Key), t => t.Count());
            sumModel.Accept = allTasks.GroupBy(t => t.Accepter).ToDictionary(t => t.Key.Name, t => t.Count());

            sumModel.Priorities = allTasks.GroupBy(t => t.Priority).ToDictionary(t => getDescription(t.Key), t => t.Count());
            sumModel.Difficulties = allTasks.GroupBy(t => t.Difficulty).ToDictionary(t => getDescription(t.Key), t => t.Count());

            sumModel.ConsumeTime = new Dictionary<string, int>();
            sumModel.ConsumeTime.Add("预计", allTasks.Sum(t => t.ExpectWorkPeriod) ?? 0);
            sumModel.ConsumeTime.Add("实际", allTasks.Sum(t => t.ActualWorkPeriod) ?? 0);

            sumModel.Status = allTasks.GroupBy(t => t.CurrentStatus).ToDictionary(t => t.Key.GetEnumDescription(), t => t.Count());

            sumModel.OverDue = new Dictionary<string, int>();
            sumModel.OverDue.Add("条数", allTasks.Where(t => t.OverDue > 0).Count());
            sumModel.OverDue.Add("时间", allTasks.Sum(t => t.OverDue) ?? 0);

            sumModel.Qualities = allTasks.GroupBy(t => t.Quality).ToDictionary(t => getDescription(t.Key), t => t.Count());

            sumModel.Doubt = new Dictionary<string, int>();
            sumModel.Doubt.Add("条数", allTasks.Count(t => t.Histroy.Count(h => h.Status == Status.Doubt) > 0));
            sumModel.Doubt.Add("次数", _historyItemQuery.Get(allTasks, Status.Doubt).Count());

            sumModel.RefuseAccept = new Dictionary<string, int>();
            sumModel.RefuseAccept.Add("条数", allTasks.Count(t => t.Histroy.Count(h => h.Status == Status.RefuseAccept) > 0));
            sumModel.RefuseAccept.Add("次数", _historyItemQuery.Get(allTasks, Status.RefuseAccept).Count());

            return sumModel;
        }