/// <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); }
/// <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); }
private int AddOrder(FltOrderEntity splitFromOrderEntity, FltOrderUnionEntity splitFromOrderUnionEntity, FltCorpCostCenterEntity splitFromCostCenterEntity, List <FltFlightEntity> splitFromFlightEntities, FltPassengerEntity splitFromPassengerEntity, bool isFirst, string oid) { FltOrderEntity fltOrderEntity = Mapper.Map <FltOrderEntity, FltOrderEntity>(splitFromOrderEntity); FltOrderUnionEntity fltOrderUnionEntity = Mapper.Map <FltOrderUnionEntity, FltOrderUnionEntity>(splitFromOrderUnionEntity); List <FltFlightEntity> fltFlightEntities = Mapper.Map <List <FltFlightEntity>, List <FltFlightEntity> >(splitFromFlightEntities); FltCorpCostCenterEntity fltCorpCostCenterEntity = Mapper.Map <FltCorpCostCenterEntity, FltCorpCostCenterEntity>(splitFromCostCenterEntity); FltPassengerEntity fltPassengerEntity = Mapper.Map <FltPassengerEntity, FltPassengerEntity>(splitFromPassengerEntity); fltOrderEntity.Payamount = fltFlightEntities.Sum(n => (n.SalePrice ?? 0) + n.TaxFee + (n.OilFee ?? 0) + (n.ServiceFee ?? 0)); if (fltPassengerEntity.InsuranceCount.HasValue && fltPassengerEntity.InsuranceCount.Value > 0) { fltOrderEntity.Payamount = fltOrderEntity.Payamount + (fltPassengerEntity.InsuranceCount.Value * (fltPassengerEntity.Insurance ?? 0)); } if (!isFirst) { fltOrderEntity.CreditcardfeeAmount = 0; fltOrderEntity.Voucheramount = 0; fltOrderEntity.SendTicketAmount = 0; } fltOrderEntity.Totalamount = fltOrderEntity.Payamount + fltOrderEntity.CreditcardfeeAmount; if (string.IsNullOrEmpty(fltOrderEntity.Remark)) { fltOrderEntity.Remark = "无"; } fltOrderEntity.ReturnAccountOid = ""; fltOrderEntity.ReturnAccountTime = null; fltOrderEntity.OutTicketStatus = "N"; fltOrderEntity.ProcessStatus = 1; fltOrderEntity.Orderstatus = "P"; fltOrderEntity.CreateOid = oid; 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; 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) { fltFlightEntity.OrderId = fltOrderEntity.OrderId; if (string.IsNullOrEmpty(fltFlightEntity.RecordNo)) { fltFlightEntity.RecordNo = "AAAAAA"; } if (string.IsNullOrEmpty(fltFlightEntity.Airportson)) { fltFlightEntity.Airportson = "----"; } _fltFlightDal.Insert(fltFlightEntity); } fltPassengerEntity.OrderId = fltOrderEntity.OrderId; if (string.IsNullOrEmpty(fltPassengerEntity.Remark)) { fltPassengerEntity.Remark = "无"; } _fltPassengerDal.Insert(fltPassengerEntity); if (fltCorpCostCenterEntity != null) { fltCorpCostCenterEntity.Orderid = fltOrderEntity.OrderId; _fltCorpCostCenterDal.Insert <FltCorpCostCenterEntity>(fltCorpCostCenterEntity); } FltOrderLogEntity log = new FltOrderLogEntity() { OrderId = fltOrderEntity.OrderId, LogTime = DateTime.Now, LogType = "新建订单", Remark = "拆分订单,来源订单号:" + splitFromOrderEntity.OrderId, Oid = fltOrderEntity.CreateOid }; _fltOrderLogDal.Insert(log); return(fltOrderEntity.OrderId); }
/// <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 int AddOrder(AddOrderModel fltAddOrderModel) { string json = JsonConvert.SerializeObject(fltAddOrderModel); LogHelper.WriteLog(json, "MojoryApiAddDomesticOrder"); FltOrderEntity fltOrderEntity = Mapper.Map <AddOrderModel, FltOrderEntity>(fltAddOrderModel); fltOrderEntity.OrderDate = DateTime.Now; fltOrderEntity.IsInter = "N"; fltOrderEntity.Oid = fltOrderEntity.CreateOid; fltOrderEntity.Orderstatus = "W"; if (!string.IsNullOrEmpty(fltOrderEntity.CreateOid) && fltOrderEntity.CreateOid.ToLower() != "sys") { fltOrderEntity.Orderstatus = "P"; } fltOrderEntity.OrderType = "T"; fltOrderEntity.IsModandChange = "F"; fltOrderEntity.IsTA = "F"; fltOrderEntity.CorpAduitId = fltAddOrderModel.CorpAduitId; fltOrderEntity.CorpPolicyId = fltAddOrderModel.CorpPolicyId; if (string.IsNullOrEmpty(fltOrderEntity.Description)) { fltOrderEntity.Description = ","; } if (string.IsNullOrEmpty(fltOrderEntity.Remark)) { fltOrderEntity.Remark = "无"; } if (string.IsNullOrEmpty(fltOrderEntity.IsOnLinePay)) { fltOrderEntity.IsOnLinePay = "F"; } if (string.IsNullOrEmpty(fltOrderEntity.SendTicketType)) { fltOrderEntity.SendTicketType = SendTicketTypeEnum.Not.ToString(); } string choiceReason = string.Concat( fltAddOrderModel.FlightList.Select(n => string.IsNullOrEmpty(n.ChoiceReason) ? "" : "/" + n.ChoiceReason) ); if (!string.IsNullOrEmpty(choiceReason)) { choiceReason = choiceReason.Substring(1); } if (!string.IsNullOrEmpty(choiceReason) && !choiceReason.Contains("/")) { choiceReason = "/" + choiceReason; } fltOrderEntity.ChoiceReason = choiceReason; fltOrderEntity.Totalamount = fltOrderEntity.Payamount + fltOrderEntity.Voucheramount;//订单总价加上优惠的金额 fltAddOrderModel.FlightList.ForEach(n => { fltOrderEntity.Allport += "-" + n.Dport + n.Aport;//SHAPEK-PEKSHA }); if (!string.IsNullOrEmpty(fltOrderEntity.Allport)) { fltOrderEntity.Allport = fltOrderEntity.Allport.Substring(1); } fltOrderEntity.OutTicketStatus = "N"; if (!string.IsNullOrEmpty(fltAddOrderModel.Customer?.CorpID) && fltAddOrderModel.Customer?.CorpID.ToLower() == "mzl") { fltOrderEntity.BuyRemark = fltOrderEntity.BuyRemark + "测试订单,请勿出票"; fltOrderEntity.IsAutoOutTicket = 1;//测试公司下的订单统一转为人工出票,防止自动出票直接出票了 } fltOrderEntity = _fltOrderDal.Insert(fltOrderEntity); FltOrderUnionEntity fltOrderUnionEntity = new FltOrderUnionEntity(); fltOrderUnionEntity.OrderId = fltOrderEntity.OrderId; if (string.IsNullOrEmpty(fltOrderUnionEntity.IsMobile)) { fltOrderUnionEntity.IsMobile = "F"; } fltOrderUnionEntity.IsAutoInsurance = "F"; fltOrderUnionEntity.CorpId = fltAddOrderModel.Customer != null ? fltAddOrderModel.Customer.CorpID : string.Empty; fltOrderUnionEntity.CorpDepartId = fltAddOrderModel.CorpDepartId; string corpPolicy = string.Concat( fltAddOrderModel.FlightList.Select(n => string.IsNullOrEmpty(n.CorpPolicy) ? "" : "|" + n.CorpPolicy) ); if (!string.IsNullOrEmpty(corpPolicy)) { corpPolicy = corpPolicy.Substring(1); } if (!string.IsNullOrEmpty(corpPolicy) && !corpPolicy.Contains("|")) { corpPolicy = "|" + corpPolicy; } fltOrderUnionEntity.CorpPolicy = corpPolicy; if (!string.IsNullOrEmpty(fltOrderUnionEntity.CorpPolicy)) { if (fltOrderUnionEntity.CorpPolicy.Contains("提前")) { fltOrderUnionEntity.IsPolicyT = "T"; } if (fltOrderUnionEntity.CorpPolicy.Contains("折以下的航班")) { fltOrderUnionEntity.IsPolicyR = "T"; } if (fltOrderUnionEntity.CorpPolicy.Contains("分钟内最低航班")) { fltOrderUnionEntity.IsPolicyL = "T"; } } fltOrderUnionEntity.LostAmount = fltAddOrderModel.FlightList.Sum(n => n.LostAmount); fltOrderUnionEntity.ProjectId = fltAddOrderModel.ProjectId; fltOrderUnionEntity.BalanceType = fltAddOrderModel.BalanceType; fltOrderUnionEntity.TravelType = fltAddOrderModel.TravelType; _fltOrderUnionDal.Insert(fltOrderUnionEntity); List <FltFlightEntity> fltFlightEntities = Mapper.Map <List <FltFlightModel>, List <FltFlightEntity> >(fltAddOrderModel.FlightList); foreach (var f in fltFlightEntities) { f.OrderId = fltOrderEntity.OrderId; f.RecordNo = "AAAAAA";//默认编码 if (string.IsNullOrEmpty(f.Airportson)) { f.Airportson = "----"; } f.IsInter = fltOrderEntity.IsInter; if (f.Class.Length > 1) { f.Class = f.Class.Substring(0, 1); } if (!string.IsNullOrEmpty(f.ChoiceReason) && f.ChoiceReason.Trim().ToLower() == "undefined") { f.ChoiceReason = string.Empty; } if (f.Rate.HasValue && f.Rate.Value > 1) { f.Rate = f.Rate / 10; } if (f.FRate > 1) { f.FRate = f.FRate / 10; } _fltFlightDal.Insert(f); } List <FltPassengerEntity> fltPassengerEntities = Mapper.Map <List <FltPassengerModel>, List <FltPassengerEntity> >(fltAddOrderModel.PassengerList); foreach (var p in fltPassengerEntities) { p.IsAvailable = "T"; if (string.IsNullOrEmpty(p.Remark)) { p.Remark = "无"; } p.OrderId = fltOrderEntity.OrderId; _fltPassengerDal.Insert(p); } FltOrderLogEntity log = new FltOrderLogEntity() { OrderId = fltOrderEntity.OrderId, LogTime = DateTime.Now, LogType = "新建订单", Remark = "新建订单" + (string.IsNullOrEmpty(fltOrderEntity.BuyRemark) ? "" : "采购备注:" + fltOrderEntity.BuyRemark), Oid = "sys" }; _fltOrderLogDal.Insert(log); return(fltOrderEntity.OrderId); }