Example #1
0
        /// <summary>
        /// 按月统计任务(半年、一年)
        /// </summary>
        /// <param name="searchMoth"></param>
        /// <returns></returns>
        public async Task <ChartByTaskDto> GetChartByMothAsync(int searchMoth, AreaCodeEnum areaCode)
        {
            var      timeNow = DateTime.Today;
            DateTime startTime;
            DateTime endTime;

            if (searchMoth == 1)
            {
                startTime = timeNow.AddDays(1 - timeNow.Day).AddMonths(-11);
                endTime   = timeNow.AddDays(1 - timeNow.Day).AddMonths(1).AddDays(-1);
            }
            else
            {
                startTime = timeNow.AddDays(1 - timeNow.Day).AddMonths(-5);
                endTime   = timeNow.AddDays(1 - timeNow.Day).AddMonths(1).AddDays(-1);
            }
            var list = await _scheduleDetailRepository.GetSheduleStatisticalDtosByMothAsync(startTime, endTime, areaCode);

            list.OrderBy(s => s.GroupName).ToList();
            var items  = new List <DistrictChartItemDto>();
            var result = new ChartByTaskDto();

            foreach (var item in list)
            {
                result.Tasks.Add(new SheduleByTaskDto
                {
                    TaskName    = item.GroupName,
                    VisitNum    = item.Total,
                    CompleteNum = item.Completed,
                    ExpiredNum  = item.Expired
                });
                //items.Add(new DistrictChartItemDto()
                //{
                //    District = item.GroupName,
                //    Name = "计划",
                //    Num = item.Total
                //});
                //items.Add(new DistrictChartItemDto()
                //{
                //    District = item.GroupName,
                //    Name = "进行中",
                //    Num = item.Completed
                //});
                //items.Add(new DistrictChartItemDto()
                //{
                //    District = item.GroupName,
                //    Name = "逾期",
                //    Num = item.Expired
                //});
            }
            return(result);
        }
Example #2
0
        /// <summary>
        /// 统计任务完成情况的数据(按任务类型和任务名分组)
        /// </summary>
        /// <param name="tabIndex">(1表示当前任务,结束时间大于今天;2表示所有任务)</param>
        /// <returns></returns>
        public async Task <ChartByTaskDto> GetChartByGroupAsync(DateTime?startTime, DateTime?endTime, int tabIndex, AreaCodeEnum areaCode)
        {
            var query = from sd in _scheduleDetailRepository.GetAll()
                        join s in _scheduleRepository.GetAll()
                        .WhereIf(startTime.HasValue && tabIndex == 2, s => s.EndTime >= startTime)
                        .WhereIf(startTime.HasValue && tabIndex == 2, s => s.EndTime <= endTime.Value.AddDays(1))
                        .WhereIf(tabIndex == 1, s => s.EndTime >= DateTime.Today)
                        .Where(s => s.Status == ScheduleMasterStatusEnum.已发布)
                        on sd.ScheduleId equals s.Id
                        join t in _visitTaskRepository.GetAll() on sd.TaskId equals t.Id
                        join g in _growerRepository.GetAll() on sd.GrowerId equals g.Id
                        where (areaCode == AreaCodeEnum.广元市 || g.AreaCode == areaCode)//添加区县权限 add by donald 2019-1-22
                        select new
            {
                sd.VisitNum,
                sd.CompleteNum,
                sd.Status,
                t.Type,
                t.Name,
                t.Id
            };
            var list = query.GroupBy(s => new { s.Name, s.Type, s.Id }).Select(s =>
                                                                               new SheduleByTaskDto()
            {
                Id = s.Key.Id,
                //TaskType=s.Key.Type,
                TaskName    = s.Key.Name,
                VisitNum    = s.Sum(sd => sd.VisitNum),
                CompleteNum = s.Sum(sd => sd.CompleteNum),
                ExpiredNum  = s.Where(sd => sd.Status == ScheduleStatusEnum.已逾期).Sum(sd => sd.VisitNum - sd.CompleteNum)
            });
            var result = new ChartByTaskDto();

            result.Tasks = await list.OrderBy(l => l.TaskName).ToListAsync();

            return(result);
        }