public async Task <APIResultDto> ExportSheduleDetailExcel(GetScheduleDetailsInput input) { try { var exportData = await GetNoPageScheduleDetailsByOtherTable(input); var result = new APIResultDto(); result.Code = 0; result.Data = CreateSheduleDetailExcel("任务明细.xlsx", exportData); return(result); } catch (Exception ex) { Logger.ErrorFormat("ExportEmployeesExcel errormsg{0} Exception{1}", ex.Message, ex); return(new APIResultDto() { Code = 901, Msg = "网络忙...请待会儿再试!" }); } }
/// <summary> /// 获取ScheduleDetail的分页列表信息 ///</summary> /// <param name="input"></param> /// <returns></returns> public async Task <PagedResultDto <ScheduleDetailListDto> > GetPagedScheduleDetails(GetScheduleDetailsInput input) { var query = _scheduledetailRepository.GetAll(); // TODO:根据传入的参数添加过滤条件 var scheduledetailCount = await query.CountAsync(); var scheduledetails = await query .OrderBy(input.Sorting).AsNoTracking() .PageBy(input) .ToListAsync(); // var scheduledetailListDtos = ObjectMapper.Map<List <ScheduleDetailListDto>>(scheduledetails); var scheduledetailListDtos = scheduledetails.MapTo <List <ScheduleDetailListDto> >(); return(new PagedResultDto <ScheduleDetailListDto>( scheduledetailCount, scheduledetailListDtos )); }
/// <summary> /// 查询任务完成情况 /// </summary> public async Task <PagedResultDto <ScheduleDetailListDto> > GetPagedScheduleDetailRecordAsync(GetScheduleDetailsInput input) { var query = _scheduledetailRepository.GetAll().Where(v => v.ScheduleId == input.ScheduleId); var task = _visittaskRepository.GetAll(); var result = from q in query join t in task on q.TaskId equals t.Id select new ScheduleDetailListDto() { Id = q.Id, TaskId = q.TaskId, Status = q.Status, TaskName = t.Name + $"({t.Type})", ScheduleId = q.ScheduleId, VisitNum = q.VisitNum, CompleteNum = q.CompleteNum, EmployeeName = q.EmployeeName, GrowerName = q.GrowerName, //Percentage = (float)((float)q.CompleteNum / q.VisitNum) //Percentage = Math.Round((Convert.ToDecimal((double)(q.CompleteNum.Value) / q.VisitNum.Value)), 2) }; var scheduledetailCount = await query.CountAsync(); var scheduledetailListDtos = await result .OrderBy(v => v.TaskName) .ThenBy(v => v.Percentage).AsNoTracking() .PageBy(input) .ToListAsync(); return(new PagedResultDto <ScheduleDetailListDto>( scheduledetailCount, scheduledetailListDtos )); }
/// <summary> /// 获取任务明细信息 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <List <SheduleDetailTaskListDto> > GetNoPageScheduleDetailsByOtherTable(GetScheduleDetailsInput input) { var areaCode = await GetCurrentUserAreaCodeAsync(); var areaCodeE = areaCode.HasValue ? areaCode : input.AreaCode; var query = from sd in _scheduledetailRepository.GetAll() .WhereIf(!string.IsNullOrEmpty(input.EmployeeName), sd => sd.EmployeeName.Contains(input.EmployeeName)) .WhereIf(!string.IsNullOrEmpty(input.GrowerName), sd => sd.GrowerName.Contains(input.GrowerName)) join s in _scheduleRepository.GetAll() .WhereIf(input.StartTime.HasValue, s => s.EndTime >= input.StartTime) .WhereIf(input.EndTime.HasValue, s => s.EndTime <= input.EndTime) .WhereIf(!string.IsNullOrEmpty(input.SheduleName), s => s.Desc.Contains(input.SheduleName)) .Where(s => s.Status == ScheduleMasterStatusEnum.已发布) on sd.ScheduleId equals s.Id join t in _visittaskRepository.GetAll() .WhereIf(input.TaskId.HasValue, t => t.Id == input.TaskId) on sd.TaskId equals t.Id join g in _growerRepository.GetAll() .WhereIf(areaCodeE.HasValue, g => g.AreaCode == areaCodeE) on sd.GrowerId equals g.Id select new SheduleDetailTaskListDto { Id = sd.Id, VisitNum = sd.VisitNum, CompleteNum = sd.CompleteNum, Status = sd.Status, TaskName = t.Name, TaskType = t.Type, AreaCode = g.AreaCode, GrowerId = sd.GrowerId, GrowerName = sd.GrowerName, EmployeeName = sd.EmployeeName, Time = s.BeginTime.Value.ToString("yyyy-MM-dd") + "至" + s.EndTime.Value.ToString("yyyy-MM-dd"), SheduleName = s.Desc }; var result = await query.OrderBy(s => s.AreaCode).ToListAsync(); return(result); }
public async Task <PagedResultDto <SheduleDetailTaskListDto> > GetPagedScheduleDetailsByOtherTable(GetScheduleDetailsInput input) { //var query = _scheduledetailRepository.GetAll(); // TODO:根据传入的参数添加过滤条件 var areaCode = await GetCurrentUserAreaCodeAsync(); var areaCodeE = areaCode.HasValue ? areaCode : input.AreaCode; var query = from sd in _scheduledetailRepository.GetAll() .WhereIf(!string.IsNullOrEmpty(input.EmployeeName), sd => sd.EmployeeName.Contains(input.EmployeeName)) .WhereIf(!string.IsNullOrEmpty(input.GrowerName), sd => sd.GrowerName.Contains(input.GrowerName)) join s in _scheduleRepository.GetAll() .WhereIf(input.StartTime.HasValue, s => s.EndTime >= input.StartTime) .WhereIf(input.EndTime.HasValue, s => s.EndTime <= input.EndTime) .WhereIf(!string.IsNullOrEmpty(input.SheduleName), s => s.Desc.Contains(input.SheduleName)) .Where(s => s.Status == ScheduleMasterStatusEnum.已发布) on sd.ScheduleId equals s.Id join t in _visittaskRepository.GetAll() .WhereIf(input.TaskId.HasValue, t => t.Id == input.TaskId) on sd.TaskId equals t.Id join g in _growerRepository.GetAll() .WhereIf(areaCodeE.HasValue, g => g.AreaCode == areaCodeE) on sd.GrowerId equals g.Id select new SheduleDetailTaskListDto { Id = sd.Id, VisitNum = sd.VisitNum, CompleteNum = sd.CompleteNum, Status = sd.Status, TaskName = t.Name, TaskType = t.Type, AreaCode = g.AreaCode, GrowerId = sd.GrowerId, GrowerName = sd.GrowerName, EmployeeName = sd.EmployeeName, Time = s.BeginTime.Value.ToString("yyyy-MM-dd") + "至" + s.EndTime.Value.ToString("yyyy-MM-dd"), SheduleName = s.Desc }; var scheduledetailCount = await query.CountAsync(); var scheduledetails = await query //.OrderBy(input.Sorting).AsNoTracking() .OrderBy(s => s.AreaCode) .PageBy(input) .ToListAsync(); // var scheduledetailListDtos = ObjectMapper.Map<List <ScheduleDetailListDto>>(scheduledetails); var scheduledetailListDtos = scheduledetails.MapTo <List <SheduleDetailTaskListDto> >(); return(new PagedResultDto <SheduleDetailTaskListDto>( scheduledetailCount, scheduledetailListDtos )); }