/// <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); }
/// <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); }