/// <summary> /// 转换政策 /// </summary> /// <param name="corpPolicyDetailConfigEntities"></param> /// <returns></returns> public static CorpPolicyDetailConfigModel Convert(List <CorpPolicyDetailConfigEntity> corpPolicyDetailConfigEntities) { CorpPolicyDetailConfigModel configModel = new CorpPolicyDetailConfigModel(); foreach (var config in corpPolicyDetailConfigEntities) { configModel.Cid = config.Cid; configModel.PolicyId = config.PolicyId; if (config.DetailType == "L" && config.PolicyType == "N") { configModel.NPolicyValL = config.PolicyVal; } else if (config.DetailType == "T" && config.PolicyType == "N") { configModel.NPolicyValT = config.PolicyVal; } else if (config.DetailType == "R" && config.PolicyType == "N") { configModel.NPolicyValR = config.PolicyVal; } else if (config.DetailType == "I" && config.PolicyType == "N") { configModel.NPolicyValI = config.PolicyVal; } else if (config.DetailType == "L" && config.PolicyType == "I") { configModel.IPolicyValL = config.PolicyVal; } else if (config.DetailType == "T" && config.PolicyType == "I") { configModel.IPolicyValT = config.PolicyVal; } else if (config.DetailType == "R" && config.PolicyType == "I") { configModel.IPolicyValR = config.PolicyVal; } else if (config.DetailType == "I" && config.PolicyType == "I") { configModel.IPolicyValI = config.PolicyVal; } else if (config.DetailType == "Y" && config.PolicyType == "N") { configModel.NPolicyValY = config.PolicyVal; } else if (config.DetailType == "Q" && config.PolicyType == "T") { configModel.TPolicyValQ = config.PolicyVal; } else if (config.DetailType == "S" && config.PolicyType == "T") { configModel.TPolicyValS = config.PolicyVal; } else if (config.DetailType == "M" && config.PolicyType == "T") { configModel.TPolicyValM = config.PolicyVal; } } return(configModel); }
public CorpPolicyDetailConfigModel GetCorpPolicyById(int policyId, string corpId, string policyType) { if (string.IsNullOrEmpty(corpId)) { return(null); } if (policyId == 0) { return(null); } List <CorpPolicyDetailConfigEntity> corpPolicyDetailConfigEntities = _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>( n => n.PolicyId == policyId, true).ToList(); CorpPolicyDetailConfigModel policyModel = CorpPolicyConvertFactory.Convert(corpPolicyDetailConfigEntities); List <ChoiceReasonEntity> choiceReasonEntities = _choiceReasonDal.Query <ChoiceReasonEntity>( n => n.IsDel != "T" && n.CorpID == corpId && n.PolicyType == policyType, true) .ToList(); if (choiceReasonEntities != null && choiceReasonEntities.Count > 0) { policyModel.PolicyReason = choiceReasonEntities.Select(n => n.Reason).ToList(); policyModel.PolicyReasonList = (from n in choiceReasonEntities select new ChoiceReasonModel() { Id = n.ID, Reason = n.Reason, PolicyType = n.PolicyType }).ToList(); } return(policyModel); }
public CorpPolicyDetailConfigModel GetCorpPolicy(int cid) { CorpPolicyDetailConfigModel policyModel = null; //1.获取客户信息 CustomerInfoEntity customerInfoEntity = _customerDal.Find <CustomerInfoEntity>(cid); if (!customerInfoEntity.CorpDepartID.HasValue) { return(null); } List <CorporationEntity> corporationModels = _corporationDal.Query <CorporationEntity>(n => n.CorpId == customerInfoEntity.CorpID, true).ToList(); if (corporationModels == null || corporationModels.Count == 0) { return(null); } //2.获取部门信息 CorpDepartmentEntity corpDepartmentEntity = _corpDepartmentDal.Find <CorpDepartmentEntity>(customerInfoEntity.CorpDepartID.Value); if (!corpDepartmentEntity.PolicyId.HasValue) { return(null); } //3.获取部门上的差旅政策信息 List <CorpPolicyDetailConfigEntity> corpPolicyDetailConfigEntities = _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>( n => n.PolicyId == corpDepartmentEntity.PolicyId.Value, true).ToList(); policyModel = CorpPolicyConvertFactory.Convert(corpPolicyDetailConfigEntities); policyModel.CorpDepartmentModel = Mapper.Map <CorpDepartmentEntity, CorpDepartmentModel>(corpDepartmentEntity); policyModel.CorpModel = Mapper.Map <CorporationEntity, CorporationModel>(corporationModels[0]); policyModel.CustomerInfoModel = Mapper.Map <CustomerInfoEntity, CustomerInfoModel>(customerInfoEntity); List <ChoiceReasonEntity> choiceReasonEntities = null; if (!string.IsNullOrEmpty(corpDepartmentEntity.CorpId)) { choiceReasonEntities = _choiceReasonDal.Query <ChoiceReasonEntity>( n => n.IsDel != "T" && n.CorpID == corpDepartmentEntity.CorpId, true).ToList(); } if (choiceReasonEntities != null) { policyModel.PolicyReason = choiceReasonEntities.Select(n => n.Reason).ToList(); policyModel.PolicyReasonList = (from n in choiceReasonEntities select new ChoiceReasonModel() { Id = n.ID, Reason = n.Reason }).ToList(); } return(policyModel); }
/// <summary> /// 根据项目成本中心对应的差旅政策信息 /// </summary> /// <param name="projectId"></param> /// <param name="isAllowUserInsurance"></param> /// <returns></returns> public List <CorpPolicyChangeModel> GetCorpPolicyChangeInfoByProjectId(int projectId, int isAllowUserInsurance) { List <int> policyIdList = _corpPolicyConfigProjectDal.Query <CorpPolicyConfigProjectEntity>( n => projectId == n.ProjectId, true).Select(n => n.PolicyId).ToList();//根据项目Id获取对应的差标信息 if (policyIdList == null || policyIdList.Count == 0) { return(null); } List <CorpPolicyChangeModel> resultList = new List <CorpPolicyChangeModel>(); List <CorpPolicyConfigEntity> policyList = _corpPolicyConfigDal.Query <CorpPolicyConfigEntity>( n => policyIdList.Contains(n.PolicyId) && !string.IsNullOrEmpty(n.IsDel) && n.IsDel.ToUpper() == "F", true).ToList(); foreach (var entity in policyList) { List <CorpPolicyDetailConfigEntity> policyDetailList = _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>( n => n.PolicyId == entity.PolicyId, true).ToList(); CorpPolicyDetailConfigModel policyModel = CorpPolicyConvertFactory.Convert(policyDetailList); if (isAllowUserInsurance == 0)//如果当前公司个性化不许购买保险,则统一设置F;如果允许购买保险,则看差标允许不允许 { policyModel.NPolicyValI = "F"; } resultList.Add(new CorpPolicyChangeModel() { PolicyId = entity.PolicyId, PolicyName = entity.PolicyName, ViolateNPolicyValL = policyModel.NPolicyValL, ViolateNPolicyValT = policyModel.NPolicyValT, ViolateNPolicyValR = policyModel.NPolicyValR, ViolateNPolicyValY = policyModel.NPolicyValY, ViolateNPolicyValI = policyModel.NPolicyValI, ViolateTPolicyValQ = policyModel.TPolicyValQ, ViolateTPolicyValM = policyModel.TPolicyValM, ViolateTPolicyValS = policyModel.TPolicyValS }); } return(resultList); }
public SearchFlightResponseViewModel Search(SearchFlightRequestViewModel request) { if (request.Cid == 0) { throw new Exception("请传入客户Id"); } //2.根据Cid查询客户信息 CustomerModel customerModel = _getCustomerServiceBll.GetCustomerByCid(request.Cid); //调用查询该客户的差旅政策服务 CorpPolicyDetailConfigModel poilConfigModel = _getCustomerCorpPolicyServiceBll.GetCorpPolicyById(request.PolicyId ?? 0, customerModel.CorpID, "N"); SearchFlightQueryModel query = new SearchFlightQueryModel() { AirlineNo = request.AirlineNo, Aport = request.Aport, TackOffTime = request.TackOffTime, Dport = request.Dport, CorpPolicy = poilConfigModel, CardNoList = request.CardNoList, PassengerNameList = request.PassengerNameList, CorpId = customerModel.CorpID, OrderSource = request.OrderSource, IsShareFly = customerModel.Corporation.IsShareFly, IsXYPrice = customerModel.Corporation.IsXYPrice, IsAllSeat = customerModel.Corporation.IsAllSeat, IsHeightSeat = customerModel.Corporation.IsHeightSeat }; //调用查询航班服务 List <SearchFlightModel> searchFlightModels = _searchFlightServiceBll.SearchFlight(query); SearchFlightResponseViewModel viewModel = new SearchFlightResponseViewModel(); viewModel.FlightList = Mapper.Map <List <SearchFlightModel>, List <SearchFlightViewModel> >(searchFlightModels); viewModel.AirlineQuery = searchFlightModels.Select(n => n.AirlineDesc).Distinct().ToList(); viewModel.AportNameQuery = searchFlightModels.Select(n => n.AportName).Distinct().ToList(); viewModel.DportNameQuery = searchFlightModels.Select(n => n.DportName).Distinct().ToList(); viewModel.TackOffTimeQuery = searchFlightModels.Select(n => n.TackOffDate).Distinct().ToList(); viewModel.ClassQuery = searchFlightModels.SelectMany(n => n.DetailList).Select(n => n.ClassDesc).Distinct().ToList(); viewModel.PolicyReason = poilConfigModel?.PolicyReason; return(viewModel); }
public SearchTrainResponseViewModel SearchTrain(SearchTrainRequestViewModel request) { if (request.Cid == 0) { throw new Exception("请传入客户Id"); } //2.根据Cid查询客户信息 CustomerModel customerModel = _getCustomerServiceBll.GetCustomerByCid(request.Cid); string notAllowUserTrainCorpId = AppSettingsHelper.GetAppSettings(AppSettingsEnum.NotAllowUserTrain); if (!string.IsNullOrEmpty(customerModel.CorpID) && notAllowUserTrainCorpId.Contains(customerModel.CorpID.ToUpper())) { throw new Exception("当前公司不能使用火车票功能"); } //调用查询该客户的差旅政策服务 CorpPolicyDetailConfigModel poilConfigModel = _getCustomerCorpPolicyServiceBll.GetCorpPolicyById(request.PolicyId ?? 0, customerModel.CorpID, "T"); TraQueryTrainModel queryTrainModel = new TraQueryTrainModel() { from_station = request.FromStation, needdistance = request.NeedDistance, purpose_codes = request.PurposeCodes, to_station = request.ToStation, train_date = request.TrainDate, CorpPolicy = poilConfigModel, CorpId = customerModel.CorpID, IsTraAllSeat = customerModel.Corporation == null ? 0 : customerModel.Corporation.IsTraAllSeat }; List <TraTravelInfoModel> traTravelInfoModels = _searchTrainServiceBll.DoQueryTrain(queryTrainModel); SearchTrainResponseViewModel responseViewModel = new SearchTrainResponseViewModel(); List <TraTravelInfoViewModel> travelInfo = new List <TraTravelInfoViewModel>(); List <string> formStation = new List <string>(); List <string> toStation = new List <string>(); List <string> trainType = new List <string>(); foreach (var item in traTravelInfoModels) { #region 循环 if (!string.IsNullOrEmpty(item.train_type)) { trainType.Add(item.train_type); } if (!string.IsNullOrEmpty(item.from_station_name)) { formStation.Add(item.from_station_name); } if (!string.IsNullOrEmpty(item.to_station_name)) { toStation.Add(item.to_station_name); } TraTravelInfoViewModel travelInfoViewModel = new TraTravelInfoViewModel() { AccessByidCard = item.access_byidcard, ArriveDays = item.arrive_days, ArriveTime = item.arrive_time, CanBuyNow = item.can_buy_now, DetailList = AutoMapperHelper.DoMapList <TraTravelInfoDetailModel, TraTravelInfoDetailViewModel>(item.DetailList).ToList(), Distance = item.distance, EndStationName = item.end_station_name, FromStationCode = item.from_station_code, FromStationName = item.from_station_name, Note = item.note, RunTime = item.run_time, RunTimeMinute = item.run_time_minute, SaleDateTime = item.sale_date_time, StartStationName = item.start_station_name, StartTime = item.start_time, ToStationCode = item.to_station_code, ToStationName = item.to_station_name, TrainCode = item.train_code, TrainNo = item.train_no, TrainStartDate = Convert.ToDateTime(queryTrainModel.train_date).ToString("yyyy-MM-dd"),//item.train_start_date, TrainType = item.train_type, OnTrainDate = request.TrainDate }; travelInfo.Add(travelInfoViewModel); #endregion } responseViewModel.TravelInfo = travelInfo; responseViewModel.FormStation = formStation.Distinct().ToList(); responseViewModel.ToStation = toStation.Distinct().ToList(); responseViewModel.TrainType = trainType.Distinct().ToList(); responseViewModel.PolicyReason = poilConfigModel?.PolicyReason; return(responseViewModel); }
/// <summary> /// 产生差旅政策信息 /// </summary> /// <param name="cid"></param> /// <param name="departId"></param> /// <param name="isAllowUserInsurance"></param> /// <returns></returns> public List <CorpPolicyChangeModel> GetCorpPolicyChangeInfo(int cid, int departId, int isAllowUserInsurance) { List <CorpPolicyChangeModel> resultList = null; #region 先根据cid查找员工的差旅政策 List <CorpPolicyConfigCustomerEntity> corpPolicyConfigCustomerList = _corpPolicyConfigCustomerDal.Query <CorpPolicyConfigCustomerEntity>(n => n.Cid == cid, true).ToList(); if (corpPolicyConfigCustomerList != null && corpPolicyConfigCustomerList.Count > 0) { List <int> policyIdList = new List <int>(); corpPolicyConfigCustomerList.ForEach(n => { policyIdList.Add(n.PolicyId); }); //获取政策信息 List <CorpPolicyConfigEntity> policyList = _corpPolicyConfigDal.Query <CorpPolicyConfigEntity>( n => policyIdList.Contains(n.PolicyId) && !string.IsNullOrEmpty(n.IsDel) && n.IsDel.ToUpper() == "F", true).ToList(); resultList = new List <CorpPolicyChangeModel>(); foreach (var entity in corpPolicyConfigCustomerList) { var policy = policyList.Find(n => n.PolicyId == entity.PolicyId); if (policy != null) { List <CorpPolicyDetailConfigEntity> policyDetailList = _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>( n => n.PolicyId == entity.PolicyId, true).ToList(); CorpPolicyDetailConfigModel policyModel = CorpPolicyConvertFactory.Convert(policyDetailList); if (isAllowUserInsurance == 0)//如果当前公司个性化不许购买保险,则统一设置F;如果允许购买保险,则看差标允许不允许 { policyModel.NPolicyValI = "F"; } resultList.Add(new CorpPolicyChangeModel() { PolicyId = entity.PolicyId, PolicyName = policy.PolicyName, ViolateNPolicyValL = policyModel.NPolicyValL, ViolateNPolicyValT = policyModel.NPolicyValT, ViolateNPolicyValR = policyModel.NPolicyValR, ViolateNPolicyValY = policyModel.NPolicyValY, ViolateNPolicyValI = policyModel.NPolicyValI, ViolateTPolicyValQ = policyModel.TPolicyValQ, ViolateTPolicyValM = policyModel.TPolicyValM, ViolateTPolicyValS = policyModel.TPolicyValS }); } } return(resultList); } #endregion #region 如果没有政策,则查找部门的差旅政策 List <CorpPolicyConfigDepartmentEntity> corpPolicyConfigDepartmentEntities = _corpPolicyConfigDepartmentDal.Query <CorpPolicyConfigDepartmentEntity>(n => n.DepartmentId == departId, true) .ToList(); if (corpPolicyConfigDepartmentEntities != null && corpPolicyConfigDepartmentEntities.Count > 0) { List <int> policyIdList = new List <int>(); corpPolicyConfigDepartmentEntities.ForEach(n => { policyIdList.Add(n.PolicyId); }); //获取政策信息 List <CorpPolicyConfigEntity> policyList = _corpPolicyConfigDal.Query <CorpPolicyConfigEntity>( n => policyIdList.Contains(n.PolicyId) && !string.IsNullOrEmpty(n.IsDel) && n.IsDel.ToUpper() == "F", true).ToList(); resultList = new List <CorpPolicyChangeModel>(); foreach (var entity in corpPolicyConfigDepartmentEntities) { var policy = policyList.Find(n => n.PolicyId == entity.PolicyId); if (policy != null) { List <CorpPolicyDetailConfigEntity> policyDetailList = _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>( n => n.PolicyId == entity.PolicyId, true).ToList(); CorpPolicyDetailConfigModel policyModel = CorpPolicyConvertFactory.Convert(policyDetailList); if (isAllowUserInsurance == 0)//如果当前公司个性化不许购买保险,则统一设置F;如果允许购买保险,则看差标允许不允许 { policyModel.NPolicyValI = "F"; } resultList.Add(new CorpPolicyChangeModel() { PolicyId = entity.PolicyId, PolicyName = policy.PolicyName, ViolateNPolicyValL = policyModel.NPolicyValL, ViolateNPolicyValT = policyModel.NPolicyValT, ViolateNPolicyValR = policyModel.NPolicyValR, ViolateNPolicyValY = policyModel.NPolicyValY, ViolateNPolicyValI = policyModel.NPolicyValI, ViolateTPolicyValQ = policyModel.TPolicyValQ, ViolateTPolicyValM = policyModel.TPolicyValM, ViolateTPolicyValS = policyModel.TPolicyValS }); } } return(resultList); } #endregion //都没找到则返回null return(null); }
public List <SearchFlightModel> SearchFlight(SearchFlightQueryModel query) { List <SearchFlightModel> ibeFlightModels = _checkWhitelFlightSearch.SearchFlight(query); if (string.IsNullOrEmpty(query.CorpId)) //没有公司Id的直接返回ibe航班信息 { return(ibeFlightModels); } CorpPolicyDetailConfigModel policyModel = query.CorpPolicy; #region 将差旅政策包装到IBE航班信息 List <SearchFlightModel> flightTempList = new List <SearchFlightModel>(); #region 没有差旅政策 if (policyModel == null) { foreach (var model in ibeFlightModels) { foreach (var detail in model.DetailList) { detail.IsViolate = "F"; detail.ViolateNPolicyValL = "F"; detail.ViolateNPolicyValLDesc = ""; detail.ViolateNPolicyValT = "F"; detail.ViolateNPolicyValTDesc = ""; detail.ViolateNPolicyValR = "F"; detail.ViolateNPolicyValRDesc = ""; detail.ViolateNPolicyValY = "F"; detail.ViolateNPolicyValYDesc = "F"; } flightTempList.Add(model); } return(flightTempList); } #endregion #region 存在差旅政策 #region 判断 //个性化设置 是否显示全部舱位 如果选否,按照下一个“最高舱位限制”政策的舱位 if ((query.IsAllSeat ?? 0) == 0) { if (query.IsHeightSeat == 1) { LimitClassType = 1;//(最高仓位限制) } else if (query.IsHeightSeat == 0) { LimitClassType = 2;//一旦限制的仓位买完了,显示上一级仓位 } } int? nPolicyValLValue = null; //国内机票低价航班为出发时间前后XX分钟内最低航班 //判断明细 int? nPolicyValTValue = null; //国内机票提前预定 提前XXX天以上预定航班 //判断主体 decimal?nPolicyValRValue = null; // 国内机票XXX折扣限制 //判断明细 string nPolicyValY = string.Empty; //国内机票仓等限制 Y经济舱/C公务舱/F头等舱 //判断明细 if (!string.IsNullOrEmpty(policyModel.NPolicyValL) && policyModel.NPolicyValL != "-1") //存在该政策,并且非不受限制 { nPolicyValLValue = Convert.ToInt32(policyModel.NPolicyValL); } if (!string.IsNullOrEmpty(policyModel.NPolicyValT) && policyModel.NPolicyValT != "-1") { nPolicyValTValue = Convert.ToInt32(policyModel.NPolicyValT); } if (!string.IsNullOrEmpty(policyModel.NPolicyValR) && policyModel.NPolicyValR != "-1") { nPolicyValRValue = Convert.ToDecimal(policyModel.NPolicyValR); } if (!string.IsNullOrEmpty(policyModel.NPolicyValY)) { nPolicyValY = policyModel.NPolicyValY; } #endregion string isViolate = "F"; string violateNPolicyValT = "F"; string violateNPolicyValTDesc = string.Empty; #region 提前预定判断政策 if (nPolicyValTValue.HasValue) { double day = (query.TackOffTime - Convert.ToDateTime(DateTime.Now.ToShortDateString())).TotalDays; if (day < nPolicyValTValue.Value) { isViolate = "T"; violateNPolicyValT = "T"; if (query.CorpId == "JYJR") { violateNPolicyValTDesc = "航班预定需需提前" + nPolicyValTValue.Value + "天以上航班预定"; } else { violateNPolicyValTDesc = "提前" + nPolicyValTValue.Value + "天以上预定航班"; } } } #endregion foreach (var model in ibeFlightModels) { foreach (var detail in model.DetailList) { detail.ViolateNPolicyValT = violateNPolicyValT; detail.ViolateNPolicyValTDesc = violateNPolicyValTDesc; #region 折扣限制政策判断 if (nPolicyValRValue.HasValue && Convert.ToDecimal(detail.Rate) > nPolicyValRValue) { detail.ViolateNPolicyValR = "T"; detail.ViolateNPolicyValRDesc = nPolicyValRValue + "折以下的航班"; } else { detail.ViolateNPolicyValR = "F"; detail.ViolateNPolicyValRDesc = ""; } #endregion #region 仓等限制政策判断 if (!string.IsNullOrEmpty(nPolicyValY)) { if (detail.FatherClass == "J") { detail.FatherClass = "C"; } if (nPolicyValY != detail.FatherClass) { detail.ViolateNPolicyValY = "T"; detail.ViolateNPolicyValYDesc = "未预定" + (nPolicyValY == "Y" ? "经济舱" : nPolicyValY == "C" ? "公务舱" : "头等舱"); } else { detail.ViolateNPolicyValY = "F"; detail.ViolateNPolicyValYDesc = ""; } #region 隐藏仓位 var classIndex = nPolicyValY == "Y" ? 1 : nPolicyValY == "C" ? 2 : 3; if (LimitClassType == 1) { model.DetailList = model.DetailList.Where(a => (a.ClassDesc.Contains("经济舱") ? 1 : ((a.ClassDesc.Contains("公务舱") || a.ClassDesc.Contains("商务舱")) ? 2 : 3)) <= classIndex).ToList(); } else if (LimitClassType == 2) { //如果最高仓位买完显示全部仓位 int count = model.DetailList.FindAll(n => n.ClassIndex <= classIndex).Count;//所有仓位到限制最高仓位的数量 if (count > 0) { model.DetailList = model.DetailList.Where(a => (a.ClassDesc.Contains("经济舱") ? 1 : ((a.ClassDesc.Contains("公务舱") || a.ClassDesc.Contains("商务舱")) ? 2 : 3)) <= classIndex).ToList(); } } #endregion } else { detail.ViolateNPolicyValY = "F"; detail.ViolateNPolicyValYDesc = ""; } #endregion #region 航班前后XX分钟内是否最低价格政策判断 if (nPolicyValLValue.HasValue) { decimal?minPrice = GetMinSalePrice(Convert.ToDateTime(model.TackOffTime), nPolicyValLValue.Value, ibeFlightModels, Convert.ToDecimal(detail.SalePrice)); if (minPrice.HasValue) { detail.ViolateNPolicyValL = "T"; detail.ViolateNPolicyValLDesc = "未选择前后" + nPolicyValLValue.Value + "分钟内最低价格为" + minPrice.Value.ToString("0"); detail.MinSalePrice = Convert.ToDecimal(minPrice.Value.ToString("0")); } else { detail.ViolateNPolicyValL = "F"; detail.ViolateNPolicyValLDesc = ""; } } else { detail.ViolateNPolicyValL = "F"; detail.ViolateNPolicyValLDesc = ""; } #endregion if (isViolate == "T") { detail.IsViolate = "T"; } else { if (string.IsNullOrEmpty(detail.ViolateNPolicyValRDesc) && string.IsNullOrEmpty(detail.ViolateNPolicyValYDesc) && string.IsNullOrEmpty(detail.ViolateNPolicyValLDesc)) { detail.IsViolate = "F"; } else { detail.IsViolate = "T"; } } } if (model.DetailList != null && model.DetailList.Any()) { flightTempList.Add(model); } } #endregion #endregion return(flightTempList); }
public List <TraTravelInfoModel> SearchTrain(TraQueryTrainModel query) { List <TraTravelInfoModel> traTravelInfoModels = _searchTrainBll.SearchTrain(query); if (string.IsNullOrEmpty(query.CorpId)) //没有公司Id的直接返回ibe航班信息 { return(traTravelInfoModels); } CorpPolicyDetailConfigModel policyModel = query.CorpPolicy; #region 将差旅政策包装到火车车次信息 List <TraTravelInfoModel> traTravelInfoTempList = new List <TraTravelInfoModel>(); #region 没有差旅政策 if (policyModel == null) { return(traTravelInfoModels); } #endregion #region 存在差旅政策 List <string> qTrainTypeList = new List <string>() { "C", "D", "G" };//快车类型 List <string> cTrainTypeList = new List <string>() { "K", "T", "Z", "L", "A", "Y", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };//普车类型 List <string> seatTypeList = new List <string>() { "硬卧", "动卧", "软卧", "高级软卧" }; foreach (var traTravelInfoModel in traTravelInfoModels) { if (traTravelInfoModel.DetailList == null || traTravelInfoModel.DetailList.Count == 0) { continue; } List <TraTravelInfoDetailModel> detailList = new List <TraTravelInfoDetailModel>(); //如果个性化设置中设置选择全部坐席 不进行政策中坐席筛选 if ((query.IsTraAllSeat ?? 0) == 1) { detailList.AddRange(traTravelInfoModel.DetailList); } else { foreach (var traTravelInfoDetailModel in traTravelInfoModel.DetailList) { int p2 = (from n in _seatSortedList where n.Value == traTravelInfoDetailModel.SeatName select n.Key).FirstOrDefault(); if (!string.IsNullOrEmpty(policyModel.TPolicyValQ) && !string.IsNullOrEmpty(traTravelInfoModel.train_type) && qTrainTypeList.Contains(traTravelInfoModel.train_type) && !traTravelInfoDetailModel.SeatName.Contains("卧")) //快车限制 { int p1 = (from n in _seatSortedList where n.Value == policyModel.TPolicyValQ select n.Key).FirstOrDefault();//标准 if (p1 < p2) { traTravelInfoDetailModel.ViolateTPolicyValQ = "T"; traTravelInfoDetailModel.ViolateTPolicyValQDesc = "快车席别最高限制为" + policyModel.TPolicyValQ; } } if (!string.IsNullOrEmpty(policyModel.TPolicyValM) && !string.IsNullOrEmpty(traTravelInfoModel.train_type) && cTrainTypeList.Contains(traTravelInfoModel.train_type) && !traTravelInfoDetailModel.SeatName.Contains("卧"))//普车限制 { int p1 = (from n in _seatSortedList where n.Value == policyModel.TPolicyValM select n.Key).FirstOrDefault();//标准 if (p1 < p2) { traTravelInfoDetailModel.ViolateTPolicyValM = "T"; traTravelInfoDetailModel.ViolateTPolicyValMDesc = "普车/其他最高限制为" + policyModel.TPolicyValM; } } if (!string.IsNullOrEmpty(policyModel.TPolicyValS) && seatTypeList.Contains(traTravelInfoDetailModel.SeatName) && traTravelInfoDetailModel.SeatName.Contains("卧"))//卧铺限制 { if (policyModel.TPolicyValS == "99") { traTravelInfoDetailModel.ViolateTPolicyValS = "T"; traTravelInfoDetailModel.ViolateTPolicyValSDesc = "最高卧铺限制为不可乘坐卧铺"; } else { int p1 = (from n in _seatSortedList where n.Value == policyModel.TPolicyValS select n.Key).FirstOrDefault();//标准 if (p1 < p2) { traTravelInfoDetailModel.ViolateTPolicyValS = "T"; traTravelInfoDetailModel.ViolateTPolicyValSDesc = "最高卧铺限制为" + policyModel.TPolicyValS; } } } if (traTravelInfoDetailModel.ViolateTPolicyValQ == "T" || traTravelInfoDetailModel.ViolateTPolicyValM == "T" || traTravelInfoDetailModel.ViolateTPolicyValS == "T") { traTravelInfoDetailModel.IsViolate = "T"; } else { detailList.Add(traTravelInfoDetailModel); } } } if (detailList.Count > 0) { traTravelInfoModel.DetailList = detailList; traTravelInfoTempList.Add(traTravelInfoModel); } } #endregion #endregion return(traTravelInfoTempList); }