public QueryFltOrderListResponseViewModel QueryFltOrderList(QueryFltOrderListRequestViewModel request) { //1.查询机场信息 SearchCityAportModel aportModel = _getCityForFlightServiceBll.SearchAirport(new List <string>() { "N" }); //2.根据Cid查询客户信息 CustomerModel customerModel = _getCustomerServiceBll.GetCustomerByCid(request.Cid); //3.查询机票订单 QueryFlightOrderListDataQueryModel query = Mapper.Map <QueryFltOrderListRequestViewModel, QueryFlightOrderListDataQueryModel>(request); query.AportInfo = aportModel; query.CorpId = customerModel.CorpID; query.Customer = customerModel; //判断是否显示全部订单 if ((query.IsShowAllOrder ?? 0) == 1) { //判断客户是否有查看全部订单权限 if ((customerModel.IsShowAllOrder ?? 0) == 1) { query.Cid = null; } } //3.1判断是否是administrator帐号,如果是则获取当前公司下所有订单 //administrator administator if (customerModel.UserID.ToLower() == "administrator") { query.Cid = null; } if (!string.IsNullOrEmpty(customerModel.CorpID)) { query.CorpCustomerList = _getCustomerServiceBll.GetCustomerByCorpId(customerModel.CorpID); } QueryFlightOrderListModel result = _queryFlightOrderListServiceBll.QueryFlightOrderList(query); if (result.OrderDataList != null && result.OrderDataList.Count > 0) { foreach (var order in result.OrderDataList) { List <CorpAduitOrderInfoModel> corpAduitOrderInfoModels = _getCorpAduitOrderServiceBll.GetAduitOrderInfoByOrderId(order.OrderId); if (corpAduitOrderInfoModels != null && corpAduitOrderInfoModels.Count > 0) { order.AduitOrderStatus = corpAduitOrderInfoModels[0].Status; if (!string.IsNullOrEmpty(corpAduitOrderInfoModels[0].NextAduitName)) { order.AuditStatus = string.Format("待{0}审批", corpAduitOrderInfoModels[0].NextAduitName); } } } } QueryFltOrderListResponseViewModel viewModel = Mapper.Map <QueryFlightOrderListModel, QueryFltOrderListResponseViewModel>(result); SortedList <int, string> fltOrderStatusSortedList = EnumConvert.QueryEnum <FltOrderListOrderStatusEnum>(); viewModel.QueryOrderStatusList = (from status in fltOrderStatusSortedList select new SortedListViewModel() { Key = status.Key, Value = status.Value }).ToList(); return(viewModel); }
public QueryFlightOrderListModel QueryFlightOrderList(QueryFlightOrderListDataQueryModel query) { QueryFlightOrderListModel resultModel = new QueryFlightOrderListModel(); resultModel.OrderDataList = new List <QueryFlightOrderListDataModel>(); #region 订单分页 List <string> orderstatusList = new List <string>() { "N" }; List <int> orderIdList = new List <int>(); var select = from order in Context.Set <FltOrderEntity>().AsNoTracking() join customer in Context.Set <CustomerInfoEntity>().AsNoTracking() on order.Cid equals customer.Cid into c from customer in c.DefaultIfEmpty() join aduitOrderDetail in Context.Set <CorpAduitOrderDetailEntity>().AsNoTracking() on order.OrderId equals aduitOrderDetail.OrderId into aod from aduitOrderDetail in aod.DefaultIfEmpty() join aduitOrder in Context.Set <CorpAduitOrderEntity>().AsNoTracking() on aduitOrderDetail.AduitOrderId equals aduitOrder.AduitOrderId into ao from aduitOrder in ao.DefaultIfEmpty() where !orderstatusList.Contains(order.Orderstatus) && (order.IsInter == "N" || order.IsInter == "n") && order.IsOnlineShow != 1 select new QueryFlightOrderListDataModel() { OrderId = order.OrderId, Cid = order.Cid, OrderDate = order.OrderDate, OrderStatus = order.Orderstatus, PayAmount = order.Payamount, ProcessStatus = order.ProcessStatus, CorpId = customer.CorpID, AduitOrderId = aduitOrderDetail.AduitOrderId, AduitOrderStatus = aduitOrder.Status, CopyFromOrderId = order.CopyFromOrderId, CopyType = order.CopyType, ShowOnlineOrderId2 = (order.CopyType == "X" && order.CopyFromOrderId.HasValue && (order.ProcessStatus & 8) == 8 && order.Orderstatus.ToUpper() != "C") ? order.CopyFromOrderId.Value : order.OrderId }; #region 查询条件 if (query.Cid.HasValue) { select = select.Where(n => n.Cid == query.Cid.Value); } if (query.OrderId.HasValue) { select = select.Where(n => n.ShowOnlineOrderId2 == 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.OrderStatus.HasValue) { if (query.OrderStatus.Value == (int)FltOrderListOrderStatusEnum.WaitTicket) { select = select.Where(n => (n.ProcessStatus & 8) != 8 && n.OrderStatus.ToUpper() == "W"); } if (query.OrderStatus.Value == (int)FltOrderListOrderStatusEnum.Ticketing) { select = select.Where( n => (n.ProcessStatus & 8) != 8 && n.OrderStatus.ToUpper() == "P" && ((n.AduitOrderStatus.HasValue && n.AduitOrderStatus == 7) || !n.AduitOrderStatus.HasValue)); } if (query.OrderStatus.Value == (int)FltOrderListOrderStatusEnum.Ticketed) { select = select.Where(n => (n.ProcessStatus & 8) == 8); } if (query.OrderStatus.Value == (int)FltOrderListOrderStatusEnum.PartRefunded) { select = select.Where(n => (n.ProcessStatus & 8) != 8 && n.OrderStatus.ToUpper() == "S"); } if (query.OrderStatus.Value == (int)FltOrderListOrderStatusEnum.AllRefunded) { select = select.Where(n => (n.ProcessStatus & 8) != 8 && n.OrderStatus.ToUpper() == "T"); } if (query.OrderStatus.Value == (int)FltOrderListOrderStatusEnum.Cancel) { select = select.Where(n => n.OrderStatus.ToUpper() == "C"); } if (query.OrderStatus.Value == (int)FltOrderListOrderStatusEnum.Aduiting) { List <string> statusList = new List <string>() { "W", "P" }; select = select.Where( n => statusList.Contains(n.OrderStatus.ToUpper()) && n.AduitOrderStatus.HasValue && n.AduitOrderStatus != 6 && n.AduitOrderStatus != 7); } } 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( n => Context.Set <FltPassengerEntity>().Where(m => m.Name.Contains(query.PassengerName)) .Select(m => m.OrderId).Contains(n.OrderId) ); } 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); } #endregion resultModel.TotalCount = select.Count();//查询所有结果的数量 //判断是否是导出excel 如果是导出操作 返回全部订单 if ((query.IsExport ?? 0) == 0) { select = select.OrderByDescending(n => n.OrderId).Skip(query.PageSize * (query.PageIndex - 1)).Take(query.PageSize); } else { select = select.OrderByDescending(n => n.OrderId); } List <QueryFlightOrderListDataModel> orderList = select.ToList();//分页结果 if (orderList == null || orderList.Count == 0) { return(resultModel); } #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(); #region 拼凑实体 List <SearchCityModel> cityModels = query.AportInfo.CountryList.SelectMany(n => n.CityList).ToList(); List <SearchAirportModel> airportModels = cityModels.SelectMany(n => n.AirportList).ToList(); for (int i = 0; i < orderList.Count; i++) { QueryFlightOrderListDataModel result = orderList[i]; if (result == null) { continue; } result.PassengerList = Mapper.Map <List <FltPassengerEntity>, List <FltPassengerModel> >( passengerEntities.FindAll(n => n.OrderId == orderList[i].OrderId)); result.FlightList = Mapper.Map <List <FltFlightEntity>, List <FltFlightModel> >( flightEntities.FindAll(n => n.OrderId == orderList[i].OrderId)); result.FlightList.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; } }); resultModel.OrderDataList.Add(result); } #endregion return(resultModel); }