Exemple #1
0
 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 = "网络忙... 请待会重试!"
         }));
     }
 }
Exemple #2
0
        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>());
        }
Exemple #3
0
        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
                                       )));
        }