Exemplo n.º 1
0
        public GetNotUseTicketNoViewModel GetNotUseNationTicketNoList(GetNotUseTicketNoQueryViewModel request)
        {
            //1.查询机场信息
            SearchCityAportModel aportModel = _getCityForFlightServiceBll.SearchAirport(new List <string>()
            {
                "N"
            });
            //2.根据Cid查询客户信息
            CustomerModel customerModel = _getCustomerServiceBll.GetCustomerByCid(request.Cid);

            //3.查询机票订单

            GetNotUseTicketNoQueryModel query = Mapper.Map <GetNotUseTicketNoQueryViewModel, GetNotUseTicketNoQueryModel>(request);

            query.AportInfo = aportModel;
            query.CorpId    = customerModel.CorpID;
            query.Customer  = customerModel;
            //3.1判断是否是administrator帐号,如果是则获取当前公司下所有订单
            if (customerModel.UserID.ToLower() == "administrator")
            {
                query.Cid = null;
            }


            GetNotUseTicketNoModel     notUseTicketNoModel = _getNotUseTicketNoListServiceBll.GetNotUseNationTicketNoList(query);
            GetNotUseTicketNoViewModel viewModel           = Mapper.Map <GetNotUseTicketNoModel, GetNotUseTicketNoViewModel>(notUseTicketNoModel);

            return(viewModel);
        }
        public GetNotUseTicketNoModel GetNotUseNationTicketNoList(GetNotUseTicketNoQueryModel query)
        {
            GetNotUseTicketNoModel resultModel     = new GetNotUseTicketNoModel();
            List <string>          orderstatusList = new List <string>()
            {
                "N", "C", "W"
            };
            List <int> orderIdList = new List <int>();
            DateTime   beginTime   = DateTime.Now.AddYears(-1);
            var        select      = from ticketNo in Context.Set <FltTicketNoEntity>().AsNoTracking()
                                     join order in Context.Set <FltOrderEntity>().AsNoTracking() on ticketNo.OrderId equals order.OrderId into
                                     b
                                     from order in b.DefaultIfEmpty()
                                     join customer in Context.Set <CustomerInfoEntity>().AsNoTracking() on order.Cid equals customer.Cid into
                                     c
                                     from customer in c.DefaultIfEmpty()
                                     where (order.ProcessStatus & 8) == 8 && !orderstatusList.Contains(order.Orderstatus) &&
                                     !string.IsNullOrEmpty(order.IsInter) && order.IsInter.ToUpper() == "N" &&
                                     ticketNo.TicketNoStatus == "F" && ticketNo.AuditTime.HasValue && order.OrderDate >= beginTime
                                     select new GetNotUseTicketNoDataModel()
            {
                Cid           = order.Cid,
                OrderId       = order.OrderId,
                TicketNo      = ticketNo.AirlineNo + "-" + ticketNo.TicketNo,
                OrderDate     = order.OrderDate,
                CorpId        = customer.CorpID,
                PassengerName = ticketNo.PassengerName,
                Sequence      = ticketNo.Sequence
            };



            #region 分页功能
            if (query.Cid.HasValue)
            {
                select = select.Where(n => n.Cid == query.Cid.Value);
            }
            if (query.OrderId.HasValue)
            {
                select = select.Where(n => n.OrderId == query.OrderId.Value);
            }
            if (!string.IsNullOrEmpty(query.CorpId))
            {
                select = select.Where(n => n.CorpId == query.CorpId);
            }

            if (query.AllowShowDataBeginTime.HasValue)
            {
                select = select.Where(n => n.OrderDate > query.AllowShowDataBeginTime);
            }
            if (query.TackOffBeginTime.HasValue)
            {
                select = select.Where(n => Context.Set <FltFlightEntity>().Where(m => m.TackoffTime >= query.TackOffBeginTime.Value)
                                      .Select(m => m.OrderId).Contains(n.OrderId));
            }

            if (query.TackOffEndTime.HasValue)
            {
                query.TackOffEndTime = query.TackOffEndTime.Value.AddDays(1);
                select = select.Where(n => Context.Set <FltFlightEntity>().Where(m => m.TackoffTime < query.TackOffEndTime.Value)
                                      .Select(m => m.OrderId).Contains(n.OrderId));
            }

            if (!string.IsNullOrEmpty(query.PassengerName))
            {
                select = select.Where(m => m.PassengerName.Contains(query.PassengerName));
            }

            if (query.OrderBeginTime.HasValue)
            {
                select = select.Where(n => n.OrderDate >= query.OrderBeginTime.Value);
            }
            if (query.OrderEndTime.HasValue)
            {
                query.OrderEndTime = query.OrderEndTime.Value.AddDays(1);
                select             = select.Where(n => n.OrderDate < query.OrderEndTime.Value);
            }
            resultModel.TotalCount = select.Count();//查询所有结果的数量

            select =
                select.OrderByDescending(n => n.OrderId).Skip(query.PageSize * (query.PageIndex - 1)).Take(query.PageSize);
            List <GetNotUseTicketNoDataModel> orderList = select.ToList();//分页结果


            #endregion

            orderList.ForEach(n => orderIdList.Add(n.OrderId));
            //1.根据订单号 获取航段信息
            List <FltFlightEntity> flightEntities = _fltFlightDal.Query <FltFlightEntity>(n => orderIdList.Contains(n.OrderId), true).ToList();
            //2.根据订单号 获取乘机人信息
            List <FltPassengerEntity> passengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => orderIdList.Contains(n.OrderId), true).ToList();

            List <SearchCityModel>    cityModels         = query.AportInfo.CountryList.SelectMany(n => n.CityList).ToList();
            List <SearchAirportModel> airportModels      = cityModels.SelectMany(n => n.AirportList).ToList();
            List <FltPassengerModel>  fltPassengerModels =
                Mapper.Map <List <FltPassengerEntity>, List <FltPassengerModel> >(passengerEntities);
            List <FltFlightModel> flightModels =
                Mapper.Map <List <FltFlightEntity>, List <FltFlightModel> >(flightEntities);
            flightModels.ForEach(n =>
            {
                SearchAirportModel airportModel = airportModels.Find(x => x.AirportCode.ToLower() == n.Dport.ToLower());
                if (airportModel != null)
                {
                    n.DportName = airportModel.AirportName;
                    SearchCityModel cityModel = cityModels.Find(x => x.CityCode.ToLower() == airportModel.CityCode.ToLower());
                    n.DportCity = cityModel.CityName;
                }

                SearchAirportModel airportModel2 = airportModels.Find(x => x.AirportCode.ToLower() == n.Aport.ToLower());
                if (airportModel2 != null)
                {
                    n.AportName = airportModel2.AirportName;
                    SearchCityModel cityModel2 = cityModels.Find(x => x.CityCode.ToLower() == airportModel2.CityCode.ToLower());
                    n.AportCity = cityModel2.CityName;
                }
            });

            orderList.ForEach(n =>
            {
                n.FlightList    = flightModels.FindAll(x => x.OrderId == n.OrderId & x.Sequence == n.Sequence);
                n.PassengerList = fltPassengerModels.FindAll(x => x.OrderId == n.OrderId && x.Name == n.PassengerName);
            });

            resultModel.DataList = orderList;
            return(resultModel);
        }