public Task <APIResultDto> ExportPostInfoExcel(GetActivityFormsSentInput input) { try { var exportData = GetPostInfoToExcelList(input); var result = new APIResultDto(); result.Code = 0; result.Data = SavePostInfoExcel("邮寄信息.xlsx", exportData); return(Task.FromResult(result)); } catch (Exception ex) { Logger.ErrorFormat("ExportPostInfoExcel errormsg:{0} Exception:{1}", ex.Message, ex); return(Task.FromResult(new APIResultDto() { Code = 901, Msg = "网络忙... 请待会重试!" })); } }
private List <PostInfoDtoToExcel> GetPostInfoToExcelList(GetActivityFormsSentInput input) { var mid = UserManager.GetControlEmployeeId(); //表单 var queryForm = _activityformRepository.GetAll() .WhereIf(!string.IsNullOrEmpty(input.FormCode), q => q.FormCode == input.FormCode) .WhereIf(input.StartTime.HasValue, q => q.CreationTime >= input.StartTime) .WhereIf(input.EndTime.HasValue, q => q.CreationTime < input.EndDateOne) .Where(q => q.Status != FormStatusEnum.取消 && q.Status != FormStatusEnum.拒绝) .WhereIf(mid.HasValue, q => q.ManagerId == mid) //数据权限过滤 .WhereIf(!string.IsNullOrEmpty(input.ProductSpecification), q => q.GoodsSpecification.Contains(input.ProductSpecification)); //宴席 var queryBanquet = _activityBanquetRepository.GetAll(); if (!input.UserType.HasValue) { //消费者 var queryDelivery = _activitydeliveryinfoRepository.GetAll() .Where(q => q.Type == DeliveryUserTypeEnum.消费者); //.WhereIf(!string.IsNullOrEmpty(input.Name), d => d.UserName.Contains(input.Name)) //.WhereIf(!string.IsNullOrEmpty(input.Phone), d => d.Phone.Contains(input.Phone)) //.WhereIf(input.IsSend.HasValue, d => d.IsSend == input.IsSend); //推荐人 var queryTDelivery = _activitydeliveryinfoRepository.GetAll() .Where(q => q.Type == DeliveryUserTypeEnum.推荐人); //.WhereIf(!string.IsNullOrEmpty(input.Name), d => d.UserName.Contains(input.Name)) //.WhereIf(!string.IsNullOrEmpty(input.Phone), d => d.Phone.Contains(input.Phone)) //.WhereIf(input.IsSend.HasValue, d => d.IsSend == input.IsSend); var query = from f in queryForm join d in queryDelivery on f.Id equals d.ActivityFormId into queryd from fd in queryd.DefaultIfEmpty() join t in queryTDelivery on f.Id equals t.ActivityFormId into queryt from ft in queryt.DefaultIfEmpty() join b in queryBanquet on f.Id equals b.ActivityFormId into queryb from fb in queryb.DefaultIfEmpty() select new PostInfoDtoToExcel() { Area = fb.Area, //Area = (fb == null? "" : fb.Area), FormCode = f.FormCode, ActivityName = f.ActivityName, RetailerName = f.RetailerName, ManagerName = f.ManagerName, GoodsSpecification = f.GoodsSpecification, Num = f.Num, Reason = f.Reason, Status = f.Status, CreationTime = f.CreationTime, UserName = fd.UserName, Address = fd.Address, Phone = fd.Phone, IsSend = fd.IsSend, TUserName = ft.UserName, TAddress = ft.Address, TPhone = ft.Phone, TIsSend = ft.IsSend //TUserName = (ft == null? "" : ft.UserName), //TAddress = (ft == null ? "" : ft.Address), //TPhone = (ft == null ? "" : ft.Phone), //TIsSend = (ft == null ? false : ft.IsSend) }; var dataList = query .WhereIf(!string.IsNullOrEmpty(input.AreaSe), b => b.Area == input.AreaSe) .WhereIf(!string.IsNullOrEmpty(input.Name), d => d.UserName.Contains(input.Name) || d.TUserName.Contains(input.Name)) .WhereIf(!string.IsNullOrEmpty(input.Phone), d => d.Phone.Contains(input.Phone) || d.TPhone.Contains(input.Phone)) .WhereIf(input.IsSend.HasValue, d => d.IsSend == input.IsSend || d.TIsSend == input.IsSend) .OrderByDescending(q => q.Area) .ThenBy(q => q.CreationTime) .ToList(); return(dataList); } if (input.UserType == DeliveryUserTypeEnum.消费者) { //消费者 var queryDelivery = _activitydeliveryinfoRepository.GetAll() .Where(q => q.Type == DeliveryUserTypeEnum.消费者); var query = from f in queryForm join d in queryDelivery on f.Id equals d.ActivityFormId into queryd from fd in queryd.DefaultIfEmpty() join b in queryBanquet on f.Id equals b.ActivityFormId into queryb from fb in queryb.DefaultIfEmpty() select new PostInfoDtoToExcel() { Area = fb.Area, //Area = (fb == null? "" : fb.Area), FormCode = f.FormCode, ActivityName = f.ActivityName, RetailerName = f.RetailerName, ManagerName = f.ManagerName, GoodsSpecification = f.GoodsSpecification, Num = f.Num, Reason = f.Reason, Status = f.Status, CreationTime = f.CreationTime, UserName = fd.UserName, Address = fd.Address, Phone = fd.Phone, IsSend = fd.IsSend }; var dataList = query .WhereIf(!string.IsNullOrEmpty(input.AreaSe), b => b.Area == input.AreaSe) .WhereIf(!string.IsNullOrEmpty(input.Name), d => d.UserName.Contains(input.Name)) .WhereIf(!string.IsNullOrEmpty(input.Phone), d => d.Phone.Contains(input.Phone)) .WhereIf(input.IsSend.HasValue, d => d.IsSend == input.IsSend) .OrderByDescending(q => q.Area) .ThenBy(q => q.CreationTime) .ToList(); return(dataList); } if (input.UserType == DeliveryUserTypeEnum.推荐人) { //推荐人 var queryTDelivery = _activitydeliveryinfoRepository.GetAll() .Where(q => q.Type == DeliveryUserTypeEnum.推荐人); var query = from f in queryForm join t in queryTDelivery on f.Id equals t.ActivityFormId into queryt from ft in queryt.DefaultIfEmpty() join b in queryBanquet on f.Id equals b.ActivityFormId into queryb from fb in queryb.DefaultIfEmpty() select new PostInfoDtoToExcel() { Area = fb.Area, //Area = (fb == null? "" : fb.Area), FormCode = f.FormCode, ActivityName = f.ActivityName, RetailerName = f.RetailerName, ManagerName = f.ManagerName, GoodsSpecification = f.GoodsSpecification, Num = f.Num, Reason = f.Reason, Status = f.Status, CreationTime = f.CreationTime, TUserName = ft.UserName, TAddress = ft.Address, TPhone = ft.Phone, TIsSend = ft.IsSend }; var dataList = query .WhereIf(!string.IsNullOrEmpty(input.AreaSe), b => b.Area == input.AreaSe) .WhereIf(!string.IsNullOrEmpty(input.Name), d => d.TUserName.Contains(input.Name)) .WhereIf(!string.IsNullOrEmpty(input.Phone), d => d.TPhone.Contains(input.Phone)) .WhereIf(input.IsSend.HasValue, d => d.TIsSend == input.IsSend) .OrderByDescending(q => q.Area) .ThenBy(q => q.CreationTime) .ToList(); return(dataList); } return(new List <PostInfoDtoToExcel>()); }
public Task <PagedResultDto <PostInfoDto> > GetPostInfo(GetActivityFormsSentInput input) { var mid = UserManager.GetControlEmployeeId(); var queryForm = _activityformRepository.GetAll() .WhereIf(!string.IsNullOrEmpty(input.FormCode), q => q.FormCode == input.FormCode) .WhereIf(input.StartTime.HasValue, q => q.CreationTime >= input.StartTime) .WhereIf(input.EndTime.HasValue, q => q.CreationTime < input.EndDateOne) .Where(q => q.Status != FormStatusEnum.取消 && q.Status != FormStatusEnum.拒绝) .WhereIf(mid.HasValue, q => q.ManagerId == mid) //数据权限过滤 .WhereIf(!string.IsNullOrEmpty(input.ProductSpecification), q => q.GoodsSpecification.Contains(input.ProductSpecification)); //.OrderByDescending(q=>q.CreationTime); var queryDelivery = _activitydeliveryinfoRepository.GetAll() .WhereIf(input.UserType.HasValue, d => d.Type == input.UserType) .WhereIf(!string.IsNullOrEmpty(input.Name), d => d.UserName.Contains(input.Name)) .WhereIf(!string.IsNullOrEmpty(input.Phone), d => d.Phone.Contains(input.Phone)) .WhereIf(input.IsSend.HasValue, d => d.IsSend == input.IsSend); var queryBanquet = _activityBanquetRepository.GetAll(); //.WhereIf(!string.IsNullOrEmpty(input.AreaSe), b => b.Area == input.AreaSe); var query = from f in queryForm join d in queryDelivery on f.Id equals d.ActivityFormId //from fd in queryF.DefaultIfEmpty() join b in queryBanquet on f.Id equals b.ActivityFormId into queryB from fb in queryB.DefaultIfEmpty() select new PostInfoDto() { FormCode = f.FormCode, CreationTime = f.CreationTime, Area = fb.Area, GoodsSpecification = f.GoodsSpecification, Num = f.Num, UserName = d.UserName, Type = d.Type, Address = d.Address, Phone = d.Phone, IsSend = d.IsSend, Id = d.Id, SendTime = d.SendTime, ActivityFormId = d.ActivityFormId }; //TODO:根据传入的参数添加过滤条件 var activityformCount = query.WhereIf(!string.IsNullOrEmpty(input.AreaSe), b => b.Area == input.AreaSe).Count(); //if (activityformCount>0) { // query = query.OrderByDescending(q => q.ApplyTime); //} var activityforms = query .WhereIf(!string.IsNullOrEmpty(input.AreaSe), b => b.Area == input.AreaSe) .OrderByDescending(q => q.Area) .ThenByDescending(q => q.CreationTime) .ThenBy(q => q.FormCode) .ThenBy(q => q.Type) .Skip(input.SkipCount).Take(input.MaxResultCount) //.PageBy(input) .ToList(); //.ToListAsync(); //var activityformListDtos = ObjectMapper.Map<List <ActivityFormListDto>>(activityforms); var activityformListDtos = activityforms.MapTo <List <PostInfoDto> >(); return(Task.FromResult(new PagedResultDto <PostInfoDto>( activityformCount, activityformListDtos ))); }