/// <summary> /// 按照乘机人拆分订单 /// </summary> /// <returns></returns> public List <int> SplitFltOrderByPassenger(int orderId, string oid) { #region 源数据 FltOrderEntity splitFromOrderEntity = _fltOrderDal.Find <FltOrderEntity>(orderId); if (splitFromOrderEntity == null) { throw new Exception("未找到源订单"); } List <FltFlightEntity> splitFromFlightEntities = _fltFlightDal.Query <FltFlightEntity>(n => n.OrderId == orderId, true).ToList(); List <FltPassengerEntity> splitFromPassengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => n.OrderId == orderId, true) .ToList(); if (splitFromPassengerEntities.Count == 1) { throw new Exception("只有一个乘机人不能拆单"); } FltOrderUnionEntity splitFromOrderUnionEntity = _fltOrderUnionDal.Find <FltOrderUnionEntity>(orderId); FltCorpCostCenterEntity splitFromCostCenterEntity = _fltCorpCostCenterDal.Find <FltCorpCostCenterEntity>(orderId); #endregion List <int> orderIdList = new List <int>(); for (int i = 0; i < splitFromPassengerEntities.Count; i++) { int id = AddOrder(splitFromOrderEntity, splitFromOrderUnionEntity, splitFromCostCenterEntity, splitFromFlightEntities, splitFromPassengerEntities[i], (i == 0), oid); orderIdList.Add(id); } return(orderIdList); }
public GetRetApplyModel GetRetApply(GetRetApplyQueryModel query) { FltOrderEntity fltOrderEntity = _fltOrderDal.Find <FltOrderEntity>(query.OrderId); if (fltOrderEntity == null) { throw new Exception("查无此订单"); } if ((fltOrderEntity.ProcessStatus & 8) != 8) { throw new Exception("该订单未出票,不能提交改签申请"); } if (fltOrderEntity.Cid != query.Cid && query.Customer != null && query.Customer.UserID.ToLower() != "administrator") { throw new Exception("查无此订单"); } GetRetApplyModel result = new GetRetApplyModel(); List <FltFlightEntity> flightEntities = _fltFlightDal.Query <FltFlightEntity>(n => n.OrderId == query.OrderId).ToList(); List <FltPassengerEntity> passengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => n.OrderId == query.OrderId).ToList(); List <FltTicketNoEntity> fltTicketNoEntities = _fltTicketNoDal.Query <FltTicketNoEntity>(n => n.OrderId == query.OrderId).ToList(); List <SearchCityModel> cityModels = query.AportInfo.CountryList.SelectMany(n => n.CityList).ToList(); List <SearchAirportModel> airportModels = cityModels.SelectMany(n => n.AirportList).ToList(); List <FltClassNameModel> classNameModels = _getClassNameBll.GetFlightClassName(); /* * 判断是否来回程开在一个票号上 * 如果乘机人的票数=行程数量,则代表分开开;不等于则开在同一票上 * **/ int nameTicketCount = fltTicketNoEntities.FindAll(n => n.PassengerName == passengerEntities[0].Name).Count; int flightCount = flightEntities.Count; bool isSame = (nameTicketCount != flightCount); //是否开在同一票号上 result.FlightList = new List <FltFlightModel>(); result.CName = fltOrderEntity.Cname; result.Mobile = fltOrderEntity.Mobile; result.Email = fltOrderEntity.Email; result.Cid = fltOrderEntity.Cid; result.CorpAduitId = fltOrderEntity.CorpAduitId; result.CorpPolicyId = fltOrderEntity.CorpPolicyId; result.FlightList = Mapper.Map <List <FltFlightEntity>, List <FltFlightModel> >(flightEntities); result.FlightList.ForEach(n => { SearchAirportModel airportModel = airportModels.Find(x => x.AirportCode.ToLower() == n.Dport.ToLower()); if (airportModel != null) { n.DportName = airportModel.AirportLongName; 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.AirportLongName; SearchCityModel cityModel2 = cityModels.Find(x => x.CityCode.ToLower() == airportModel2.CityCode.ToLower()); n.AportCity = cityModel2.CityName; } FltClassNameModel classNameModel = classNameModels.Find( x => !string.IsNullOrEmpty(x.MClass) && !string.IsNullOrEmpty(n.Class) && x.MClass.ToLower() == n.Class.ToLower() && !string.IsNullOrEmpty(x.AirlineCode) && !string.IsNullOrEmpty(n.AirlineNo) && x.AirlineCode.ToLower() == n.AirlineNo.ToLower()); if (classNameModel != null) { n.ClassName = classNameModel.ClassName; n.ClassEnName = classNameModel.ClassEnName; } }); List <FltPassengerModel> fltPassengerModels = Mapper.Map <List <FltPassengerEntity>, List <FltPassengerModel> >(passengerEntities); result.PassengerList = new List <FltPassengerModel>(); foreach (var ticketNo in fltTicketNoEntities) { FltPassengerModel fltPassengerModel2 = fltPassengerModels.Find(n => n.Name == ticketNo.PassengerName); FltPassengerModel fltPassengerModel = Mapper.Map <FltPassengerModel, FltPassengerModel>(fltPassengerModel2); fltPassengerModel.RetApplyTicketNo = ticketNo.AirlineNo + "-" + ticketNo.TicketNo; if (isSame) { #region 开同一票号的行程 List <string> dportList = result.FlightList.Select(n => n.Dport).ToList(); List <string> aportList = result.FlightList.Select(n => n.Aport).ToList(); List <string> lineList = new List <string>(); List <string> lineList2 = new List <string>(); for (int i = 0; i < dportList.Count; i++) { string dport = dportList[i]; string aport = aportList[i]; SearchAirportModel airportModel = airportModels.Find(x => x.AirportCode.ToLower() == dport.ToLower()); SearchCityModel cityModel = cityModels.Find(n => n.CityCode.ToLower() == airportModel.CityCode.ToLower()); SearchAirportModel airportModel2 = airportModels.Find(x => x.AirportCode.ToLower() == aport.ToLower()); SearchCityModel cityModel2 = cityModels.Find(n => n.CityCode.ToLower() == airportModel2.CityCode.ToLower()); lineList.Add(cityModel.CityName + "-" + cityModel2.CityName); lineList2.Add(dport + "-" + aport); } fltPassengerModel.RetApplyFlightLine = Convert(lineList); fltPassengerModel.RetApplyDAportList = lineList2; fltPassengerModel.RetApplySequence = 1; fltPassengerModel.RetApplyFlightNo = result.FlightList.Select(n => n.FlightNo).ToList().FirstOrDefault(); #endregion } else { #region 没有开在同一票号 var flight = result.FlightList.Find(n => n.Sequence == ticketNo.Sequence); SearchAirportModel airportModel = airportModels.Find(x => x.AirportCode.ToLower() == flight.Dport.ToLower()); SearchAirportModel airportModel2 = airportModels.Find(x => x.AirportCode.ToLower() == flight.Aport.ToLower()); if (airportModel != null && airportModel2 != null) { SearchCityModel cityModel = cityModels.Find(n => n.CityCode.ToLower() == airportModel.CityCode.ToLower()); SearchCityModel cityModel2 = cityModels.Find(n => n.CityCode.ToLower() == airportModel2.CityCode.ToLower()); fltPassengerModel.RetApplyFlightLine = cityModel.CityName + "-" + cityModel2.CityName; } fltPassengerModel.RetApplyDAportList = new List <string>() { flight.Dport + "-" + flight.Aport }; fltPassengerModel.RetApplySequence = flight.Sequence; fltPassengerModel.RetApplyFlightNo = flight.FlightNo; #endregion } result.PassengerList.Add(fltPassengerModel); } List <int> pidList = result.PassengerList.Select(n => n.PId).ToList(); List <string> orderStatusList = new List <string>() { "C" }; var select = from flight in Context.Set <FltRetModFlightApplyEntity>() join apply in Context.Set <FltRetModApplyEntity>() on flight.Rmid equals apply.Rmid into c from apply in c.DefaultIfEmpty() where !orderStatusList.Contains(apply.OrderStatus) && pidList.Contains(flight.Pid) && apply.OrderType.ToUpper() == "R" select flight; List <FltRetModFlightApplyEntity> list = select.ToList(); if (list != null && list.Count > 0) { result.PassengerList.ForEach(n => { FltRetModFlightApplyEntity l = list.Find(x => x.Pid == n.PId && x.Sequence == n.RetApplySequence); if (l != null) { n.IsRet = true; } }); } else { result.PassengerList.ForEach(n => { FltTicketNoEntity fltTicketNoEntity = fltTicketNoEntities.Find(x => x.PassengerName == n.Name && x.Sequence == n.RetApplySequence); if (fltTicketNoEntity != null && fltTicketNoEntity.TicketNoStatus == "R") { n.IsRet = true; } }); } return(result); }
/// <summary> /// 获取机票出票通知邮件 /// </summary> /// <param name="sendAppMessageModel"></param> private void GetFltPrintTicketEmail(SendAppMessageModel sendAppMessageModel) { CustomerInfoEntity customerInfoEntity = base.Context.Set <CustomerInfoEntity>().Find(sendAppMessageModel.Cid); if (string.IsNullOrEmpty(customerInfoEntity?.Email)) { return; } sendAppMessageModel.Email = customerInfoEntity.Email; FltOrderEntity fltOrderEntity = _fltOrderDal.Find <FltOrderEntity>(sendAppMessageModel.OrderId); List <FltPassengerEntity> fltPassengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => n.OrderId == fltOrderEntity.OrderId, true).ToList(); List <FltFlightEntity> fltFlightEntities = _fltFlightDal.Query <FltFlightEntity>(n => n.OrderId == fltOrderEntity.OrderId, true).ToList(); //判断是否是同一个编码 bool isSamePnr = fltFlightEntities.Select(n => n.RecordNo).Distinct().Count() == 1; if (fltFlightEntities.Count == 1) { isSamePnr = false; } StringBuilder sb = new StringBuilder(); sb.AppendFormat("<p>{0}:</p>", customerInfoEntity.RealName); sb.Append("<p> </p>"); sb.Append("<p>您好!</p>"); foreach (var fltPassengerEntity in fltPassengerEntities) { sb.Append("<p> </p>"); sb.AppendFormat("<p>{0}:{1}已成功预订!</p>", fltPassengerEntity.Name, fltPassengerEntity.CardNo); if (!isSamePnr) { //不同编码的行程 foreach (var fltFlightEntity in fltFlightEntities) { string dportName = _airPortDal.Query <AirPortEntity>(n => n.AirportCode == fltFlightEntity.Dport, true) .FirstOrDefault()? .AirportName; string aportName = _airPortDal.Query <AirPortEntity>(n => n.AirportCode == fltFlightEntity.Aport, true) .FirstOrDefault()? .AirportName; string s1 = fltFlightEntity.Airportson.Length >= 2 ? fltFlightEntity.Airportson.Substring(0, 2) : "--"; string s2 = fltFlightEntity.Airportson.Length >= 4 ? fltFlightEntity.Airportson.Substring(2, 2) : "--"; sb.AppendFormat("<p>行程:{0} {1}{2}-{3}{4}</p>", fltFlightEntity.FlightNo, dportName, s1, aportName, s2); sb.AppendFormat("<p>出行时间:{0} {1} 起飞 {2} 到达</p>", fltFlightEntity.TackoffTime.ToString("MM月dd日"), fltFlightEntity.TackoffTime.ToString("HH:mm"), fltFlightEntity.ArrivalsTime.ToString("HH:mm")); sb.AppendFormat("<p>价格:{0}元</p>", fltFlightEntity.SalePrice + fltFlightEntity.TaxFee + fltFlightEntity.OilFee + (fltFlightEntity.ServiceFee ?? 0)); } } else { //第一段 string f1 = fltFlightEntities[0].FlightNo; string dport1 = fltFlightEntities[0].Dport; string dportName1 = _airPortDal.Query <AirPortEntity>(n => n.AirportCode == dport1, true) .FirstOrDefault()? .AirportName; string aport1 = fltFlightEntities[0].Aport; string aportName1 = _airPortDal.Query <AirPortEntity>(n => n.AirportCode == aport1, true) .FirstOrDefault()? .AirportName; string d1 = fltFlightEntities[0].Airportson.Length >= 2 ? fltFlightEntities[0].Airportson.Substring(0, 2) : "--"; string a1 = fltFlightEntities[0].Airportson.Length >= 4 ? fltFlightEntities[0].Airportson.Substring(2, 2) : "--"; //第二段 string f2 = fltFlightEntities[1].FlightNo; string dport2 = fltFlightEntities[1].Dport; string dportName2 = _airPortDal.Query <AirPortEntity>(n => n.AirportCode == dport2, true) .FirstOrDefault()? .AirportName; string aport2 = fltFlightEntities[1].Aport; string aportName2 = _airPortDal.Query <AirPortEntity>(n => n.AirportCode == aport2, true) .FirstOrDefault()? .AirportName; string d2 = fltFlightEntities[1].Airportson.Length >= 2 ? fltFlightEntities[1].Airportson.Substring(0, 2) : "--"; string a2 = fltFlightEntities[1].Airportson.Length >= 4 ? fltFlightEntities[1].Airportson.Substring(2, 2) : "--"; sb.AppendFormat("<p>行程:去 {0} {1}{2}-{3}{4},回 {5} {6}{7}-{8}{9}</p>", f1, dportName1, d1, aportName1, a1, f2, dportName2, d2, aportName2, a2); sb.AppendFormat("<p>出行时间:去 {0} {1} 起飞 {2} 到达,回 {3} {4} 起飞 {5} 到达</p>", fltFlightEntities[0].TackoffTime.ToString("MM月dd日"), fltFlightEntities[0].TackoffTime.ToString("HH:mm"), fltFlightEntities[0].ArrivalsTime.ToString("HH:mm"), fltFlightEntities[1].TackoffTime.ToString("MM月dd日"), fltFlightEntities[1].TackoffTime.ToString("HH:mm"), fltFlightEntities[1].ArrivalsTime.ToString("HH:mm")); sb.AppendFormat("<p>价格:{0}元</p>", fltFlightEntities.Sum(n => n.SalePrice) + fltFlightEntities.Sum(n => n.TaxFee) + fltFlightEntities.Sum(n => n.OilFee) + fltFlightEntities.Sum(n => (n.ServiceFee ?? 0))); } } sb.Append("<p></p>"); sb.Append("<p>退改签规则:</p>"); if (fltFlightEntities.Count == 1) { sb.AppendFormat("<p>退票:{0}</p>", fltFlightEntities[0].RetDes); sb.AppendFormat("<p>改期:{0}</p>", fltFlightEntities[0].ModDes); } else { sb.AppendFormat("<p>去程:</p>"); sb.AppendFormat("<p>退票:{0}</p>", fltFlightEntities[0].RetDes); sb.AppendFormat("<p>改期:{0}</p>", fltFlightEntities[0].ModDes); sb.AppendFormat("<p>回程:</p>"); sb.AppendFormat("<p>退票:{0}</p>", fltFlightEntities[1].RetDes); sb.AppendFormat("<p>改期:{0}</p>", fltFlightEntities[1].ModDes); } sb.Append("<p>温馨提醒:请提前90分钟到达机场,祝您一路平安,旅途愉快!</p>"); sendAppMessageModel.SendContent = sb.ToString(); }
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); }
/// <summary> /// 根据订单号获取订单信息 /// </summary> /// <param name="orderId"></param> /// <returns></returns> public FltOrderInfoModel GetFltOrderById(int orderId) { FltOrderEntity fltOrderEntity = _fltOrderDal.Find <FltOrderEntity>(orderId); if (fltOrderEntity == null) { return(null); } //1.根据订单号 获取航段信息 List <FltFlightEntity> flightEntities = _fltFlightDal.Query <FltFlightEntity>(n => n.OrderId == orderId, true).ToList(); //2.根据订单号 获取乘机人信息 List <FltPassengerEntity> passengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => n.OrderId == orderId, true).ToList(); //3.根据订单号 获取成本中心 FltCorpCostCenterEntity costCenterEntity = _fltCorpCostCenterDal.Query <FltCorpCostCenterEntity>(n => n.Orderid == orderId, true).FirstOrDefault(); //4.获取仓等信息 List <FltClassNameModel> classNameModels = _getClassNameBll.GetFlightClassName(); //5.获取机场信息 List <SearchCityModel> cityModels = AportInfo?.CountryList.SelectMany(n => n.CityList).ToList(); List <SearchAirportModel> airportModels = cityModels?.SelectMany(n => n.AirportList).ToList(); //6.机票订单扩展表 FltOrderUnionEntity fltOrderUnionEntity = _fltOrderUnionDal.Find <FltOrderUnionEntity>(orderId); FltOrderInfoModel result = Mapper.Map <FltOrderEntity, FltOrderInfoModel>(fltOrderEntity); if (!string.IsNullOrEmpty(costCenterEntity?.Depart)) { result.CostCenter = costCenterEntity.Depart; } if (fltOrderUnionEntity?.ProjectId != null && ProjectNameList != null) { ProjectNameModel projectNameModel = ProjectNameList.Find(n => n.ProjectId == fltOrderUnionEntity.ProjectId.Value); result.ProjectName = projectNameModel?.ProjectName; } //result.CorpPolicy = fltOrderUnionEntity?.CorpPolicy; result.PassengerList = Mapper.Map <List <FltPassengerEntity>, List <FltPassengerModel> >( passengerEntities.FindAll(n => n.OrderId == fltOrderEntity.OrderId)); result.FlightList = Mapper.Map <List <FltFlightEntity>, List <FltFlightModel> >( flightEntities.FindAll(n => n.OrderId == fltOrderEntity.OrderId)); result.PassengerList.ForEach(n => { if (n.InsCompanyId.HasValue) { n.InsuranceName = InsuranceCompanyList?.Find(x => x.CompanyID == n.InsCompanyId.Value)?.ProductName; } }); #region 行程信息 result.CorpPolicy = string.Empty; result.ChoiceReason = string.Empty; foreach (var n in result.FlightList) { if (!string.IsNullOrEmpty(n.CorpPolicy) && n.CorpPolicy.ToLower() != "undefined") { result.CorpPolicy += ";" + n.CorpPolicy; } if (!string.IsNullOrEmpty(n.ChoiceReason) && n.ChoiceReason.ToLower() != "undefined") { result.ChoiceReason += ";" + n.ChoiceReason; } SearchAirportModel airportModel = airportModels?.Find(x => x.AirportCode.ToLower() == n.Dport.ToLower()); if (airportModel != null) { n.DportName = airportModel.AirportLongName; 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.AirportLongName; SearchCityModel cityModel2 = cityModels.Find(x => x.CityCode.ToLower() == airportModel2.CityCode.ToLower()); n.AportCity = cityModel2.CityName; } FltClassNameModel classNameModel = classNameModels.Find( x => !string.IsNullOrEmpty(x.MClass) && !string.IsNullOrEmpty(n.Class) && x.MClass.ToLower() == n.Class.ToLower() && !string.IsNullOrEmpty(x.AirlineCode) && !string.IsNullOrEmpty(n.AirlineNo) && x.AirlineCode.ToLower() == n.AirlineNo.ToLower()); if (classNameModel != null) { n.ClassName = classNameModel.ClassName; n.ClassEnName = classNameModel.ClassEnName; } } if (!string.IsNullOrEmpty(result.CorpPolicy)) { result.CorpPolicy = result.CorpPolicy.Substring(1); } if (!string.IsNullOrEmpty(result.ChoiceReason)) { result.ChoiceReason = result.ChoiceReason.Substring(1); } #endregion return(result); }
public FltRetModApplyModel GetRetModApply(int rmid) { FltRetModApplyEntity fltRetModApply = _fltRetModApplyDal.Find <FltRetModApplyEntity>(rmid); List <FltRetModFlightApplyEntity> fltRetModFlightApplyEntities = _fltRetModFlightApplyDal.Query <FltRetModFlightApplyEntity>(n => n.Rmid == rmid).ToList(); List <FltRetModApplyLogEntity> fltRetModApplyLogEntities = _fltRetModApplyLogDal.Query <FltRetModApplyLogEntity>(n => n.Rmid == rmid).ToList(); FltRetModApplyModel fltRetModApplyModel = Mapper.Map <FltRetModApplyEntity, FltRetModApplyModel>(fltRetModApply); fltRetModApplyModel.DetailList = Mapper.Map <List <FltRetModFlightApplyEntity>, List <FltRetModFlightApplyModel> >( fltRetModFlightApplyEntities); fltRetModApplyModel.LogList = Mapper.Map <List <FltRetModApplyLogEntity>, List <FltRetModApplyLogModel> >( fltRetModApplyLogEntities); List <SearchCityModel> cityModels = AportInfo?.CountryList.SelectMany(n => n.CityList).ToList(); List <SearchAirportModel> airportModels = cityModels?.SelectMany(n => n.AirportList).ToList(); #region 乘机人信息 List <int> pidList = fltRetModApplyModel.DetailList.Select(n => n.Pid).ToList(); List <FltPassengerEntity> passengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => pidList.Any(x => x == n.PId)).ToList(); #endregion //4.获取仓等信息 List <FltClassNameModel> classNameModels = _getClassNameBll.GetFlightClassName(); fltRetModApplyModel.DetailList.ForEach(n => { FltFlightEntity orderFlightEntity = _fltFlightDal.Query <FltFlightEntity>(x => x.OrderId == fltRetModApplyModel.OrderId && x.Sequence == n.Sequence) .FirstOrDefault(); if (orderFlightEntity != null) { if (!n.TackoffTime.HasValue) { n.TackoffTime = orderFlightEntity.TackoffTime; } if (string.IsNullOrEmpty(n.FlightNo)) { n.FlightNo = orderFlightEntity.FlightNo; } } string dport = n.Dport.ToLower(); if (fltRetModApplyModel.OrderType == "R" && orderFlightEntity != null) { dport = orderFlightEntity.Dport.ToLower(); } SearchAirportModel airportModel = airportModels.Find(x => x.AirportCode.ToLower() == dport); if (airportModel != null) { n.DportName = airportModel.AirportName; SearchCityModel cityModel = cityModels.Find(x => x.CityCode.ToLower() == airportModel.CityCode.ToLower()); n.DportCity = cityModel.CityName; } string aport = n.Aport.ToLower(); if (fltRetModApplyModel.OrderType == "R" && orderFlightEntity != null) { aport = orderFlightEntity.Aport.ToLower(); } SearchAirportModel airportModel2 = airportModels.Find(x => x.AirportCode.ToLower() == aport); if (airportModel2 != null) { n.AportName = airportModel2.AirportName; SearchCityModel cityModel2 = cityModels.Find(x => x.CityCode.ToLower() == airportModel2.CityCode.ToLower()); n.AportCity = cityModel2.CityName; } FltPassengerModel passengerModel = Mapper.Map <FltPassengerEntity, FltPassengerModel>(passengerEntities.Find(x => x.PId == n.Pid)); n.PassengerModel = passengerModel; if (fltRetModApplyModel.OrderType == "R") { n.PassengerModel.RefundTicketNo = n.TicketNo; } if (n.ChoiceReasonId.HasValue) { n.ChoiceReason = PolicyReasonList?.Find(x => x.Id == n.ChoiceReasonId.Value)?.Reason; } FltClassNameModel classNameModel = classNameModels.Find( x => !string.IsNullOrEmpty(x.MClass) && !string.IsNullOrEmpty(n.Class) && x.MClass.ToLower() == n.Class.ToLower() && !string.IsNullOrEmpty(x.AirlineCode) && !string.IsNullOrEmpty(n.FlightNo) && x.AirlineCode.ToLower() == n.FlightNo.Substring(0, 2).ToLower()); if (classNameModel != null) { n.ClassName = classNameModel.ClassName; } }); return(fltRetModApplyModel); }
public QueryFlightModApplyListModel QueryFlightModApplyList(QueryFlightModApplyListDataQueryModel query) { QueryFlightModApplyListModel resultModel = new QueryFlightModApplyListModel(); resultModel.ApplyDataList = new List <QueryFlightModApplyListDataModel>(); //List<string> orderstatusList = new List<string>() {"C" }; var select = from modApply in Context.Set <FltRetModApplyEntity>().AsNoTracking() join order in Context.Set <FltOrderEntity>().AsNoTracking() on modApply.OrderId equals order.OrderId into o from order in o.DefaultIfEmpty() join customer in Context.Set <CustomerInfoEntity>().AsNoTracking() on modApply.Cid equals customer.Cid into c from customer in c.DefaultIfEmpty() where modApply.OrderType.ToUpper() == "M" && (order.IsInter == "N" || order.IsInter == "n") && (modApply.IsHidden ?? 0) == 0 select new QueryFlightModApplyListDataModel() { Rmid = modApply.Rmid, CreateTime = modApply.CreateTime, OrderId = modApply.OrderId, OrderStatus = modApply.OrderStatus, Cid = modApply.Cid, CorpId = customer.CorpID, Cpid = modApply.Cpid, CpidSecond = modApply.CpidSecond }; #region 查询条件 //if(!query.IsHidden) //{ // select = select.Where(n=>n.ish) //} if (query.Cid.HasValue) { select = select.Where(n => n.Cid == query.Cid.Value); } if (!string.IsNullOrEmpty(query.CorpId)) { select = select.Where(n => n.CorpId == query.CorpId); } if (query.AllowShowDataBeginTime.HasValue) { select = select.Where(n => n.CreateTime > query.AllowShowDataBeginTime.Value); } if (query.OrderId.HasValue) { select = select.Where(n => n.OrderId == query.OrderId.Value); } if (!string.IsNullOrEmpty(query.OrderStatus)) { select = select.Where(n => n.OrderStatus.ToUpper() == query.OrderStatus.ToUpper()); } if (query.TackOffBeginTime.HasValue) { select = select.Where( n => Context.Set <FltRetModFlightApplyEntity>() .Where(m => m.TackoffTime >= query.TackOffBeginTime.Value) .Select(m => m.Rmid).Contains(n.Rmid)); } if (query.TackOffEndTime.HasValue) { query.TackOffEndTime = query.TackOffEndTime.Value.AddDays(1); select = select.Where( n => Context.Set <FltRetModFlightApplyEntity>() .Where(m => m.TackoffTime < query.TackOffEndTime.Value) .Select(m => m.Rmid).Contains(n.Rmid)); } if (query.OrderBeginTime.HasValue) { select = select.Where(n => n.CreateTime >= query.OrderBeginTime.Value); } if (query.OrderEndTime.HasValue) { query.OrderEndTime = query.OrderEndTime.Value.AddDays(1); select = select.Where(n => n.CreateTime < query.OrderEndTime.Value); } if (!string.IsNullOrEmpty(query.PassengerName)) { select = select.Where( n => Context.Set <FltRetModFlightApplyEntity>().Where(m => m.FltPassenger.Name.Contains(query.PassengerName)) .Select(m => m.Rmid).Contains(n.Rmid) ); } #endregion resultModel.TotalCount = select.Count();//查询所有结果的数量 //如果是导出操作 则返回全部订单 if ((query.IsExport ?? 0) == 0) { select = select.OrderByDescending(n => n.Rmid).Skip(query.PageSize * (query.PageIndex - 1)).Take(query.PageSize); } else { select = select.OrderByDescending(n => n.Rmid); } resultModel.ApplyDataList = select.ToList();//分页结果 List <int> rmidList = new List <int>(); resultModel.ApplyDataList.ForEach(n => rmidList.Add(n.Rmid)); List <FltRetModFlightApplyEntity> flightApplyEntities = _fltRetModFlightApplyDal.Query <FltRetModFlightApplyEntity>(n => rmidList.Contains(n.Rmid), true).ToList(); List <SearchCityModel> cityModels = query.AportInfo.CountryList.SelectMany(n => n.CityList).ToList(); List <SearchAirportModel> airportModels = cityModels.SelectMany(n => n.AirportList).ToList(); List <FltRetModFlightApplyModel> flightApplyModels = Mapper.Map <List <FltRetModFlightApplyEntity>, List <FltRetModFlightApplyModel> > (flightApplyEntities); #region 乘机人信息 List <int> pidList = flightApplyModels.Select(n => n.Pid).ToList(); List <FltPassengerEntity> passengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => pidList.Contains(n.PId), true).ToList(); List <FltPassengerModel> passengerModels = Mapper.Map <List <FltPassengerEntity>, List <FltPassengerModel> >(passengerEntities); #endregion flightApplyModels.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; } n.PassengerModel = passengerModels.Find(x => x.PId == n.Pid); }); resultModel.ApplyDataList.ForEach(n => { if (n.Cpid.HasValue) { n.FirstAuditCustomer = query.CorpCustomerList?.Find(x => x.Cid == n.Cpid.Value); } if (n.CpidSecond.HasValue) { n.SecondAuditCustomer = query.CorpCustomerList?.Find(x => x.Cid == n.CpidSecond.Value); } n.DetailList = flightApplyModels.FindAll(x => x.Rmid == n.Rmid); List <int> dPidList = new List <int>(); List <int> sequenceList = new List <int>(); n.DetailList.ForEach(x => { dPidList.Add(x.Pid); sequenceList.Add(x.Sequence); }); dPidList = dPidList.Distinct().ToList(); sequenceList = sequenceList.Distinct().ToList(); n.PassengerList = new List <FltPassengerModel>(); foreach (var pid in dPidList) { n.PassengerList.Add(passengerModels.Find(x => x.PId == pid)); } n.FlightList = new List <FltFlightModel>(); foreach (var sequence in sequenceList) { var dd = n.DetailList.Find(x => x.Sequence == sequence); n.FlightList.Add(new FltFlightModel() { FlightNo = dd.FlightNo, Dport = dd.Dport, Aport = dd.Aport, DportName = dd.DportName, AportName = dd.AportName, AportCity = dd.AportCity, DportCity = dd.DportCity, TackoffTime = dd.TackoffTime ?? Convert.ToDateTime("2000-01-01") }); } }); return(resultModel); }
/// <summary> /// 复制差旅订单 /// </summary> /// <param name="copyFltOrderModel"></param> /// <returns></returns> public int CopyOrder(CopyFltOrderModel copyFltOrderModel) { FltOrderEntity copyFromOrderEntity = _fltOrderDal.Find <FltOrderEntity>(copyFltOrderModel.CopyFromOrderId); if (copyFromOrderEntity == null) { throw new Exception("复制来源订单异常"); } List <FltFlightEntity> copyFromFlightEntities = _fltFlightDal.Query <FltFlightEntity>(n => n.OrderId == copyFltOrderModel.CopyFromOrderId, true).ToList(); List <FltPassengerEntity> copyFromPassengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => n.OrderId == copyFltOrderModel.CopyFromOrderId, true) .ToList(); List <FltTicketNoEntity> copyFromTicketNoEntities = _fltTicketNoDal.Query <FltTicketNoEntity>(n => n.OrderId == copyFltOrderModel.CopyFromOrderId, true) .ToList(); FltOrderUnionEntity copyFromOrderUnionEntity = _fltOrderUnionDal.Find <FltOrderUnionEntity>(copyFltOrderModel.CopyFromOrderId); FltCorpCostCenterEntity copyFromCostCenterEntity = _fltCorpCostCenterDal.Find <FltCorpCostCenterEntity>(copyFltOrderModel.CopyFromOrderId); FltOrderEntity fltOrderEntity = Mapper.Map <FltOrderEntity, FltOrderEntity>(copyFromOrderEntity); FltOrderUnionEntity fltOrderUnionEntity = Mapper.Map <FltOrderUnionEntity, FltOrderUnionEntity>(copyFromOrderUnionEntity); FltCorpCostCenterEntity fltCorpCostCenterEntity = Mapper.Map <FltCorpCostCenterEntity, FltCorpCostCenterEntity>(copyFromCostCenterEntity); List <FltFlightEntity> fltFlightEntities = Mapper.Map <List <FltFlightEntity>, List <FltFlightEntity> >(copyFromFlightEntities); List <FltPassengerEntity> fltPassengerEntities = Mapper.Map <List <FltPassengerEntity>, List <FltPassengerEntity> >(copyFromPassengerEntities); List <FltTicketNoEntity> fltTicketNoEntities = Mapper.Map <List <FltTicketNoEntity>, List <FltTicketNoEntity> >(copyFromTicketNoEntities); fltOrderEntity.Payamount = copyFltOrderModel.PayAmount; fltOrderEntity.CreditcardfeeAmount = copyFltOrderModel.CreditCardfeeamount; fltOrderEntity.Voucheramount = copyFltOrderModel.Voucheramount; fltOrderEntity.SendTicketAmount = copyFltOrderModel.SendTicketamount; fltOrderEntity.Totalamount = fltOrderEntity.Payamount + fltOrderEntity.CreditcardfeeAmount; fltOrderEntity.CreateOid = copyFltOrderModel.CreateOid; if (string.IsNullOrEmpty(fltOrderEntity.Remark)) { fltOrderEntity.Remark = "无"; } fltOrderEntity.ReturnAccountOid = ""; fltOrderEntity.ReturnAccountTime = null; fltOrderEntity.OutTicketStatus = "N"; fltOrderEntity.ProcessStatus = 1; fltOrderEntity.Orderstatus = "P"; if (string.IsNullOrEmpty(fltOrderEntity.Description)) { fltOrderEntity.Description = ","; } if (string.IsNullOrEmpty(fltOrderEntity.IsOnLinePay)) { fltOrderEntity.IsOnLinePay = "F"; } if (string.IsNullOrEmpty(fltOrderEntity.SendTicketType)) { fltOrderEntity.SendTicketType = SendTicketTypeEnum.Not.ToString(); } fltOrderEntity.RealAcceptDatetime = null; fltOrderEntity.RealPayDatetime = null; fltOrderEntity.Collectiontime = null; fltOrderEntity.CollectionOid = string.Empty; fltOrderEntity.PrintTicketOid = null; fltOrderEntity.PrintTicketTime = null; fltOrderEntity.PrintOrderTime = null; if (copyFltOrderModel.CopyType == "X")//虚出复制 { //判断当前原始订单是否有虚退 int xuTuiCount = _fltRetModApplyDal.Query <FltRetModApplyEntity>( n => n.OrderType.ToUpper() == "R" && n.OrderId == copyFltOrderModel.CopyFromOrderId && n.OrderStatus.ToUpper() != "C" && n.RefundType == "虚退").Count(); if (xuTuiCount == 0) { throw new Exception("当前订单不存在虚退,不允许虚退复制"); } fltOrderEntity.OrderDate = copyFromOrderEntity.OrderDate; fltOrderEntity.CopyType = "X"; //如果当前原始订单不是虚退复制的订单 if (string.IsNullOrEmpty(copyFromOrderEntity.CopyType)) { fltOrderEntity.CopyFromOrderId = copyFltOrderModel.CopyFromOrderId; } else { if (copyFromOrderEntity.CopyType == "X" && copyFromOrderEntity.CopyFromOrderId.HasValue) { fltOrderEntity.CopyFromOrderId = copyFromOrderEntity.CopyFromOrderId; } else { fltOrderEntity.CopyFromOrderId = copyFltOrderModel.CopyFromOrderId; } } } else { fltOrderEntity.CopyType = "C"; fltOrderEntity.CopyFromOrderId = copyFltOrderModel.CopyFromOrderId; fltOrderEntity.OrderDate = DateTime.Now; } fltOrderEntity = _fltOrderDal.Insert(fltOrderEntity); if (fltOrderUnionEntity != null) { fltOrderUnionEntity.OrderId = fltOrderEntity.OrderId; fltOrderUnionEntity.FivePrintId = null; fltOrderUnionEntity.FivePrintLastTime = null; fltOrderUnionEntity.IsNeedPrintTime = null; if (string.IsNullOrEmpty(fltOrderUnionEntity.IsMobile)) { fltOrderUnionEntity.IsMobile = "F"; } _fltOrderUnionDal.Insert(fltOrderUnionEntity); } foreach (var fltFlightEntity in fltFlightEntities) { CopyFltFlightModel copyFltFlightModel = copyFltOrderModel.FlightList.Find(n => n.Sequence == fltFlightEntity.Sequence); if (string.IsNullOrEmpty(fltFlightEntity.RecordNo)) { fltFlightEntity.RecordNo = "AAAAAA"; } fltFlightEntity.OrderId = fltOrderEntity.OrderId; fltFlightEntity.Sequence = copyFltFlightModel.Sequence; fltFlightEntity.OilFee = copyFltFlightModel.OilFee; fltFlightEntity.Rate = copyFltFlightModel.Rate; fltFlightEntity.SalePrice = copyFltFlightModel.SalePrice; fltFlightEntity.TaxFee = copyFltFlightModel.TaxFee; if (string.IsNullOrEmpty(fltFlightEntity.Airportson)) { fltFlightEntity.Airportson = "----"; } _fltFlightDal.Insert(fltFlightEntity); } foreach (var fltPassengerEntity in fltPassengerEntities) { fltPassengerEntity.OrderId = fltOrderEntity.OrderId; if (string.IsNullOrEmpty(fltPassengerEntity.Remark)) { fltPassengerEntity.Remark = "无"; } _fltPassengerDal.Insert(fltPassengerEntity); } if (fltTicketNoEntities != null && fltTicketNoEntities.Count > 0) { foreach (var fltTicketNoEntity in fltTicketNoEntities) { fltTicketNoEntity.OrderId = fltOrderEntity.OrderId; _fltTicketNoDal.Insert(fltTicketNoEntity); } } if (fltCorpCostCenterEntity != null) { fltCorpCostCenterEntity.Orderid = fltOrderEntity.OrderId; _fltCorpCostCenterDal.Insert <FltCorpCostCenterEntity>(fltCorpCostCenterEntity); } FltOrderLogEntity log = new FltOrderLogEntity() { OrderId = fltOrderEntity.OrderId, LogTime = DateTime.Now, LogType = "新建订单", Remark = "复制订单,来源订单号:" + copyFltOrderModel.CopyFromOrderId + ",马甲订单号:" + fltOrderEntity.CopyFromOrderId, Oid = fltOrderEntity.CreateOid }; _fltOrderLogDal.Insert(log); //将原始订单设置为线上隐藏 if (copyFltOrderModel.CopyType == "X") { copyFromOrderEntity.IsOnlineShow = 1; _fltOrderDal.Update(copyFromOrderEntity, new string[] { "IsOnlineShow" }); } return(fltOrderEntity.OrderId); }
public QueryFlightOrderDataModel QueryFlightOrder(QueryFlightOrderQueryModel query) { var select = _fltOrderDal.Query <FltOrderEntity>(n => n.OrderId == query.OrderId, true); FltOrderEntity fltOrderEntity = select.FirstOrDefault(); if (fltOrderEntity == null) { throw new Exception("查无此订单"); } //如果登录用户没有查看全部订单的权限 if ((query.Customer.IsShowAllOrder ?? 0) == 0) { if (!query.IsFromAduitQuery)//不是来自审批人查询 { if (!string.IsNullOrEmpty(query.Customer?.UserID) && query.Customer.UserID.ToLower() != "administrator" && query.Customer.Cid != fltOrderEntity.Cid) { throw new Exception("查无此订单"); } } } if (!string.IsNullOrEmpty(query.Customer?.UserID) && query.Customer.UserID.ToLower() == "administrator") { if ((query.CidList != null && !query.CidList.Contains(fltOrderEntity.Cid)) || query.CidList == null) { throw new Exception("查无此订单"); } } //1.根据订单号 获取航段信息 List <FltFlightEntity> flightEntities = _fltFlightDal.Query <FltFlightEntity>(n => n.OrderId == query.OrderId, true).ToList(); //2.根据订单号 获取乘机人信息 List <FltPassengerEntity> passengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => n.OrderId == query.OrderId, true).ToList(); //3.根据订单号 获取成本中心 FltCorpCostCenterEntity costCenterEntity = _fltCorpCostCenterDal.Query <FltCorpCostCenterEntity>(n => n.Orderid == query.OrderId, true).FirstOrDefault(); //4.获取仓等信息 List <FltClassNameModel> classNameModels = _getClassNameBll.GetFlightClassName(); //5.获取机场信息 List <SearchCityModel> cityModels = query.AportInfo.CountryList.SelectMany(n => n.CityList).ToList(); List <SearchAirportModel> airportModels = cityModels.SelectMany(n => n.AirportList).ToList(); FltOrderUnionEntity fltOrderUnionEntity = _fltOrderUnionDal.Find <FltOrderUnionEntity>(query.OrderId); #region 机票正单信息 QueryFlightOrderDataModel result = Mapper.Map <FltOrderEntity, QueryFlightOrderDataModel>(fltOrderEntity); if (!string.IsNullOrEmpty(costCenterEntity?.Depart)) { result.CostCenter = costCenterEntity.Depart; } if (fltOrderUnionEntity?.ProjectId != null && query.ProjectName != null) { ProjectNameModel projectNameModel = query.ProjectName.Find(n => n.ProjectId == fltOrderUnionEntity.ProjectId.Value); result.ProjectName = projectNameModel?.ProjectName; result.ProjectId = fltOrderUnionEntity.ProjectId; } result.PassengerList = Mapper.Map <List <FltPassengerEntity>, List <FltPassengerModel> >( passengerEntities.FindAll(n => n.OrderId == fltOrderEntity.OrderId)); result.FlightList = Mapper.Map <List <FltFlightEntity>, List <FltFlightModel> >( flightEntities.FindAll(n => n.OrderId == fltOrderEntity.OrderId)); #region 行程 int index1 = 0; foreach (var n in result.FlightList) { SearchAirportModel airportModel = airportModels.Find(x => x.AirportCode.ToLower() == n.Dport.ToLower()); if (airportModel != null) { n.DportName = airportModel.AirportLongName; 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.AirportLongName; SearchCityModel cityModel2 = cityModels.Find(x => x.CityCode.ToLower() == airportModel2.CityCode.ToLower()); n.AportCity = cityModel2.CityName; } FltClassNameModel classNameModel = classNameModels.Find( x => !string.IsNullOrEmpty(x.MClass) && !string.IsNullOrEmpty(n.Class) && x.MClass.ToLower() == n.Class.ToLower() && !string.IsNullOrEmpty(x.AirlineCode) && !string.IsNullOrEmpty(n.AirlineNo) && x.AirlineCode.ToLower() == n.AirlineNo.ToLower()); if (classNameModel != null) { n.ClassName = classNameModel.ClassName; n.ClassEnName = classNameModel.ClassEnName; } index1++; } #endregion #endregion #region 机票退改签订单信息 //改签订单 List <string> modName = new List <string>(); List <string> modSequenceList = new List <string>(); _getFlightModOrderBll.AportInfo = query.AportInfo; List <FltModOrderModel> fltModOrderList = _getFlightModOrderBll.GetModOrderByOrderId(query.OrderId); if (fltModOrderList != null && fltModOrderList.Count > 0) { fltModOrderList = fltModOrderList.FindAll(n => (n.ProcessStatus & 8) == 8); fltModOrderList.ForEach(n => { n.FltModFlightList.ForEach(x => { n.FltModPassengerList.ForEach(m => { modSequenceList.Add(x.Sequence + "|" + m.Name); }); FltClassNameModel classNameModel = classNameModels.Find( m => !string.IsNullOrEmpty(m.MClass) && !string.IsNullOrEmpty(x.Class) && m.MClass.ToLower() == x.Class.ToLower() && !string.IsNullOrEmpty(m.AirlineCode) && !string.IsNullOrEmpty(x.AirlineNo) && m.AirlineCode.ToLower() == x.AirlineNo.ToLower()); if (classNameModel != null) { x.ClassName = classNameModel.ClassName; x.ClassEnName = classNameModel.ClassEnName; } }); }); modSequenceList = modSequenceList.Distinct().ToList(); } //退票订单 List <string> retName = new List <string>(); List <string> refundSequenceList = new List <string>(); List <FltRefundOrderModel> fltRefundOrderList = _getFlighRefundOrderBll.GetFlighRefundOrderByOrderId(query.OrderId); if (fltRefundOrderList != null && fltRefundOrderList.Count > 0) { fltRefundOrderList = fltRefundOrderList.FindAll(n => n.RefundCustomer == "T"); fltRefundOrderList.ForEach(n => { n.DetailList.ForEach(x => { FltFlightModel flightTemp = result.FlightList.Find(m => m.Sequence == x.Sequence); x.Dport = flightTemp.Dport; x.DportName = flightTemp.DportName; x.DportCity = flightTemp.DportCity; x.Aport = flightTemp.Aport; x.AportName = flightTemp.AportName; x.AportCity = flightTemp.AportCity; x.FlightNo = flightTemp.FlightNo; x.Class = flightTemp.Class; refundSequenceList.Add(x.Sequence + "|" + x.PassengerName); retName.Add(x.PassengerName); }); }); refundSequenceList = refundSequenceList.Distinct().ToList(); result.FltRefundOrderList = fltRefundOrderList; } #region 先处理改签情况 if (fltModOrderList != null) { List <FltModOrderModel> tempList = new List <FltModOrderModel>(); foreach (string modSequence in modSequenceList) { int sequence = Convert.ToInt32(modSequence.Split('|')[0]); string passengerName = modSequence.Split('|')[1]; var flightRmidList = fltModOrderList.SelectMany(n => n.FltModFlightList) .Where(n => n.Sequence == sequence) .Select(n => n.Rmid) .ToList(); var passengerRmidList = fltModOrderList.SelectMany(n => n.FltModPassengerList) .Where(n => n.Name == passengerName) .Select(n => n.Rmid) .ToList(); int maxRmid = fltModOrderList.Where( n => flightRmidList.Contains(n.Rmid) && passengerRmidList.Contains(n.Rmid)) .Max(n => n.Rmid); var temp = fltModOrderList.Find(n => n.Rmid == maxRmid); if (tempList.Find(n => n.Rmid == temp.Rmid) == null) { tempList.Add(temp); } } result.FltModOrderList = tempList; result.FltModOrderList.ForEach(n => { n.FltModPassengerList.ForEach(x => { modName.Add(x.Name); }); }); } #endregion #region 既有改签又有退票 if (fltModOrderList != null && refundSequenceList.Count > 0) { foreach (string refundSequence in refundSequenceList) { //将相同行程号,并且是相同人名的改签行程删除 int sequence = Convert.ToInt32(refundSequence.Split('|')[0]); string passengerName = refundSequence.Split('|')[1]; for (int i = 0; i < fltModOrderList.Count; i++) { List <FltModPassengerModel> fltModPassengerModels = fltModOrderList[i].FltModPassengerList.FindAll(n => n.Name == passengerName); FltModFlightModel fltModFlightModel = fltModOrderList[i].FltModFlightList.Find(n => n.Sequence == sequence); if (fltModPassengerModels != null && fltModPassengerModels.Count > 0 && fltModFlightModel != null) { fltModOrderList[i].FltModFlightList.Remove(fltModFlightModel); } } } if (fltModOrderList != null && fltModOrderList.Count > 0) { List <FltModOrderModel> index = new List <FltModOrderModel>(); for (int i = 0; i < fltModOrderList.Count; i++) { if (fltModOrderList[i].FltModFlightList.Count == 0) { index.Add(fltModOrderList[i]); } } foreach (var i in index) { fltModOrderList.Remove(i); } modName = new List <string>(); result.FltModOrderList = fltModOrderList; result.FltModOrderList.ForEach(n => { n.FltModPassengerList.ForEach(x => { modName.Add(x.Name); }); }); } } #endregion #endregion result.PassengerList.ForEach(n => { if (n.InsCompanyId.HasValue) { n.InsuranceName = query.InsuranceCompany?.Find(x => x.CompanyID == n.InsCompanyId.Value)?.ProductName; } if (modName.Count > 0) { n.IsMod = (modName.Find(x => x == n.Name) != null ? true : false); } if (retName.Count > 0) { n.IsRet = (retName.Find(x => x == n.Name) != null ? true : false); } }); return(result); }
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); }
public GetModApplyModel GetModApplyView(GetModApplyQueryModel query) { //1.判断是否已经出票 FltOrderEntity fltOrderEntity = _fltOrderDal.Find <FltOrderEntity>(query.OrderId); if (fltOrderEntity == null) { throw new Exception("查无此订单"); } if ((fltOrderEntity.ProcessStatus & 8) != 8) { throw new Exception("该订单未出票,不能提交改签申请"); } if (fltOrderEntity.Cid != query.Cid && query.Customer != null && query.Customer.UserID.ToLower() != "administrator") { throw new Exception("查无此订单"); } List <FltFlightEntity> flightEntities = _fltFlightDal.Query <FltFlightEntity>(n => n.OrderId == query.OrderId).ToList(); List <FltPassengerEntity> passengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => n.OrderId == query.OrderId).ToList(); List <FltTicketNoEntity> fltTicketNoEntities = _fltTicketNoDal.Query <FltTicketNoEntity>(n => n.OrderId == query.OrderId).ToList(); //5.获取机场信息 List <SearchCityModel> cityModels = query.AportInfo.CountryList.SelectMany(n => n.CityList).ToList(); List <SearchAirportModel> airportModels = cityModels.SelectMany(n => n.AirportList).ToList(); List <FltClassNameModel> classNameModels = _getClassNameBll.GetFlightClassName(); GetModApplyModel result = new GetModApplyModel(); result.CName = fltOrderEntity.Cname; result.Mobile = fltOrderEntity.Mobile; result.Email = fltOrderEntity.Email; result.Cid = fltOrderEntity.Cid; result.CorpAduitId = fltOrderEntity.CorpAduitId; result.CorpPolicyId = fltOrderEntity.CorpPolicyId; result.PassengerList = Mapper.Map <List <FltPassengerEntity>, List <FltPassengerModel> >(passengerEntities); result.FlightList = Mapper.Map <List <FltFlightEntity>, List <FltFlightModel> >(flightEntities); result.FlightList.ForEach(n => { SearchAirportModel airportModel = airportModels.Find(x => x.AirportCode.ToLower() == n.Dport.ToLower()); if (airportModel != null) { n.DportName = airportModel.AirportLongName; 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.AirportLongName; SearchCityModel cityModel2 = cityModels.Find(x => x.CityCode.ToLower() == airportModel2.CityCode.ToLower()); n.AportCity = cityModel2.CityName; } FltClassNameModel classNameModel = classNameModels.Find( x => !string.IsNullOrEmpty(x.MClass) && !string.IsNullOrEmpty(n.Class) && x.MClass.ToLower() == n.Class.ToLower() && !string.IsNullOrEmpty(x.AirlineCode) && !string.IsNullOrEmpty(n.AirlineNo) && x.AirlineCode.ToLower() == n.AirlineNo.ToLower()); if (classNameModel != null) { n.ClassName = classNameModel.ClassName; n.ClassEnName = classNameModel.ClassEnName; } }); List <int> pidList = result.PassengerList.Select(n => n.PId).ToList(); #region 判断该乘机人是否有未处理的改签申请 List <string> orderStatusList = new List <string>() { "C", "F" }; var select = from flight in Context.Set <FltRetModFlightApplyEntity>() join apply in Context.Set <FltRetModApplyEntity>() on flight.Rmid equals apply.Rmid into c from apply in c.DefaultIfEmpty() where !orderStatusList.Contains(apply.OrderStatus) && pidList.Contains(flight.Pid) && apply.OrderType.ToUpper() == "M" select flight; List <FltRetModFlightApplyEntity> listMod = select.ToList();//已经改签人 if (listMod != null && listMod.Count > 0) { result.PassengerList.ForEach(n => { FltRetModFlightApplyEntity l = listMod.Find(x => x.Pid == n.PId); if (l != null) { n.IsMod = true; } }); } #endregion #region 判断该乘机人是否有存在退票申请 List <string> refundStatusList = new List <string>() { "C" }; var selectRefund = from flight in Context.Set <FltRetModFlightApplyEntity>() join apply in Context.Set <FltRetModApplyEntity>() on flight.Rmid equals apply.Rmid into c from apply in c.DefaultIfEmpty() where !refundStatusList.Contains(apply.OrderStatus) && pidList.Contains(flight.Pid) && apply.OrderType.ToUpper() == "R" select flight; List <FltRetModFlightApplyEntity> listRefund = selectRefund.ToList();//已经退票 if (listRefund != null && listRefund.Count > 0) { result.PassengerList.ForEach(n => { FltRetModFlightApplyEntity l = listRefund.Find(x => x.Pid == n.PId); if (l != null) { n.IsRet = true; } }); } #endregion //获取航程允许改签的乘机人Id foreach (var fltFlightModel in result.FlightList) { fltFlightModel.AllowModPidList = new List <int>(); foreach (var fltPassengerModel in result.PassengerList) { //判断当前是否已经退票 FltRetModFlightApplyEntity isRefund = listRefund.Find(n => n.Sequence == fltFlightModel.Sequence && fltPassengerModel.PId == n.Pid); //判断票号使用情况 FltTicketNoEntity fltTicketNoEntity = fltTicketNoEntities.Find( x => x.PassengerName == fltPassengerModel.Name && x.Sequence == fltFlightModel.Sequence); if (fltTicketNoEntity != null && fltTicketNoEntity.TicketNoStatus == "R")//如果当前乘机人对应航段票号已经退票了 { isRefund = new FltRetModFlightApplyEntity(); } if (isRefund == null) { //再判断是否已经改签 FltRetModFlightApplyEntity isMod = listMod.Find(n => n.Sequence == fltFlightModel.Sequence && fltPassengerModel.PId == n.Pid); if (isMod == null) { fltFlightModel.AllowModPidList.Add(fltPassengerModel.PId); } } } if (fltFlightModel.AllowModPidList.Count > 1) { fltFlightModel.AllowModPidList = fltFlightModel.AllowModPidList.Distinct().ToList(); } } return(result); }
private FltModOrderModel Convert(FltModOrderEntity fltModOrder) { //改签行程 List <FltModFlightEntity> fltModFlightEntities = _fltModFlightDal.Query <FltModFlightEntity>(n => n.Rmid == fltModOrder.Rmid).ToList(); //改签乘机人 List <FltModPassengerEntity> fltModPassengerEntities = _fltModPassengerDal.Query <FltModPassengerEntity>(n => n.Rmid == fltModOrder.Rmid).ToList(); //原订单乘机人 List <int> pidList = fltModPassengerEntities.Select(n => n.Pid).ToList(); List <FltPassengerEntity> fltPassengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => pidList.Any(x => x == n.PId)).ToList(); //改签票号 List <FltModTicketNoEntity> fltModTicketNoEntities = _fltModTicketNoDal.Query <FltModTicketNoEntity>(n => n.Rmid == fltModOrder.Rmid).ToList(); //改签日志 List <FltModOrderLogEntity> fltModOrderLogEntities = _fltModOrderLogDal.Query <FltModOrderLogEntity>(n => n.Rmid == fltModOrder.Rmid).ToList(); List <SearchCityModel> cityModels = 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> >(fltPassengerEntities); FltModOrderModel fltModOrderModel = new FltModOrderModel(); fltModOrderModel = Mapper.Map <FltModOrderEntity, FltModOrderModel>(fltModOrder); fltModOrderModel.FltModFlightList = Mapper.Map <List <FltModFlightEntity>, List <FltModFlightModel> >(fltModFlightEntities); fltModOrderModel.FltModFlightList.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; } }); fltModOrderModel.FltModPassengerList = Mapper.Map <List <FltModPassengerEntity>, List <FltModPassengerModel> >(fltModPassengerEntities); fltModOrderModel.FltModPassengerList.ForEach(n => { n.Passenger = fltPassengerModels.Find(x => x.PId == n.Pid); }); fltModOrderModel.FltModTicketNoList = Mapper.Map <List <FltModTicketNoEntity>, List <FltModTicketNoModel> >(fltModTicketNoEntities); fltModOrderModel.FltModOrderLogList = Mapper.Map <List <FltModOrderLogEntity>, List <FltModOrderLogModel> >(fltModOrderLogEntities); return(fltModOrderModel); }
public GetUnAvailablePassengerModel GetUnAvailablePassengerList(GetUnAvailablePassengerQueryModel query) { GetUnAvailablePassengerModel resultModel = new GetUnAvailablePassengerModel(); List <int> orderIdList = new List <int>(); List <string> orderstatusList = new List <string>() { "N", "C", "W" }; var select = from order in Context.Set <FltOrderEntity>().AsNoTracking() join customer in Context.Set <CustomerInfoEntity>().AsNoTracking() on order.Cid equals customer.Cid join operatorInfo in Context.Set <OperatorEntity>().AsNoTracking() on order.CreateOid equals operatorInfo.Oid where !orderstatusList.Contains(order.Orderstatus) && (order.ProcessStatus & 8) == 8 select new GetUnAvailablePassengerDataModel() { OrderId = order.OrderId, CreateOName = operatorInfo.OName, CreateOid = operatorInfo.Oid, CustomerName = customer.RealName, OrderDate = order.OrderDate, Cid = order.Cid }; #region 查询条件 if (!string.IsNullOrEmpty(query.CreateOName)) { select = select.Where(n => n.CreateOName.Contains(query.CreateOName)); } else { select = select.Where(n => n.CreateOid == query.Oid); } if (query.OrderId.HasValue) { select = select.Where(n => n.OrderId == query.OrderId.Value); } if (!string.IsNullOrEmpty(query.CustomerName)) { select = select.Where(n => n.CustomerName.Contains(query.CustomerName)); } 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) && m.IsAvailable == "F") .Select(m => m.OrderId).Contains(n.OrderId) ); } else { select = select.Where( n => Context.Set <FltPassengerEntity>() .Where(m => m.IsAvailable == "F") .Select(m => m.OrderId).Contains(n.OrderId) ); DateTime beginTime = DateTime.Now.AddYears(-1); select = select.Where( n => Context.Set <FltFlightEntity>().Where(m => m.TackoffTime >= beginTime) .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();//查询所有结果的数量 select = select.OrderByDescending(n => n.OrderId).Skip(query.PageSize * (query.PageIndex - 1)).Take(query.PageSize); resultModel.DataList = select.ToList(); //分页结果 resultModel.DataList.ForEach(n => orderIdList.Add(n.OrderId)); //1.根据订单号 获取航段信息 List <FltFlightEntity> flightEntities = _fltFlightDal.Query <FltFlightEntity>(n => orderIdList.Contains(n.OrderId) && n.Sequence == 1, true) .ToList(); //2.根据订单号 获取乘机人信息 List <FltPassengerEntity> passengerEntities = _fltPassengerDal.Query <FltPassengerEntity>(n => orderIdList.Contains(n.OrderId) && n.IsAvailable == "F", true).ToList(); List <FltPassengerModel> passengerModels = Mapper.Map <List <FltPassengerEntity>, List <FltPassengerModel> >(passengerEntities); for (int i = 0; i < resultModel.DataList.Count; i++) { resultModel.DataList[i].TackOffTime = flightEntities.Find(n => n.OrderId == resultModel.DataList[i].OrderId).TackoffTime; resultModel.DataList[i].PassengerNameList = passengerModels.FindAll(n => n.OrderId == resultModel.DataList[i].OrderId); } return(resultModel); }