/// <summary> /// 构造乘客信息 /// </summary> /// <param name="SsrCardType"></param> /// <param name="pnrMode"></param> /// <returns></returns> public DataTable StructPassenger(string SsrCardType, PnrAnalysis.PnrModel pnrMode) { //实例化创建好的DataTable对象 DataTable dt = CreateDataTable(); //循环将乘机人信息赋值到构造好的空DataTable对象中 foreach (PassengerInfo Passenger in pnrMode._PassengerList) { DataRow dr = dt.NewRow(); //乘客姓名 dr["PassengerName"] = Passenger.PassengerName; //乘客PNR dr["PNR"] = pnrMode.Pnr; //乘客类型 dr["PassengerType"] = Passenger.PassengerType; //证件类型 dr["CType"] = ReturnPassengerCType(SsrCardType); //证件号码 dr["Cid"] = Passenger.SsrCardID; //国籍 dr["NationalityId"] = "45"; //性别 dr["Gender"] = "0"; //出生日期 dr["Birthday"] = "1999-1-1"; //购买保险标识 dr["Insurance"] = "0"; //添加到构造好的DataTable中 dt.Rows.Add(dr); } //返回DataTable return(dt); }
/// <summary> /// 分离或者取消编码 /// </summary> /// <returns></returns> private string PnrHandle(Tb_Ticket_Order Order, SendInsManage SendIns, StringBuilder sbLog, List <HashObject> selList, int INFCount) { string ErrMsg = ""; try { if (Order != null && Order.PNR != "" && Order.PNR.Trim().Length == 6) { PnrAnalysis.PnrModel pnrMode = SendIns.GetPnr(Order.PNR.Trim(), out ErrMsg); if (pnrMode != null) { if (ErrMsg.Contains("授权")) { string[] strAuthArr = ErrMsg.Split('#')[1].Split('|'); ErrMsg = ""; foreach (string item in strAuthArr) { ErrMsg += "RMK TJ AUTH " + item + "<br/>"; } ErrMsg = "需要授权,授权指令:<br />" + ErrMsg; sbLog.Append("提取编码信息失败," + ErrMsg); } else { if (!pnrMode.PnrStatus.Contains("XX")) { if (pnrMode.PnrStatus.Contains("NO")) { ErrMsg = "编码(" + Order.PNR + ")状态为NO,系统取消编码失败!"; sbLog.Append(ErrMsg); } else if (pnrMode.PnrStatus.Contains("RR")) { ErrMsg = "编码(" + Order.PNR + ")状态为RR,该编码已出票,不能取消!"; sbLog.Append(ErrMsg); } else { string TicketNumber = ""; string Cmd = "", Office = "", RecvData = ""; //用于分离编码的乘客姓名 不含婴儿 List <string> pnameList = new List <string>(); //循环选择的乘机人 foreach (HashObject hashParam in selList) { if (hashParam["pasPType"].ToString() != "3") { pnameList.Add(hashParam["pasName"].ToString()); } TicketNumber = hashParam["pasTicketNum"].ToString(); if (TicketNumber != "" && !KongZhiXiTong.Contains("|69|")) { Office = hashParam["office"].ToString(); Cmd = "DETR:TN/" + TicketNumber; RecvData = SendIns.Send(Cmd, ref Office, 0); if (!RecvData.Contains("OPEN FOR USE")) { ErrMsg = "票号(" + TicketNumber + ")状态异常,不能提交申请!"; sbLog.Append(ErrMsg); break; } } } //没有出错时 if (ErrMsg == "") { if (INFCount > 0) { //编码状态不是已经出票的PNR if (pnrMode != null && !pnrMode.PnrStatus.Contains("RR")) { //有婴儿直接提交 SendIns.CancelPnr(Order.PNR, Order.Office); } } else { //编码状态不是已经出票的PNR if (pnrMode != null) { if (!pnrMode.PnrStatus.Contains("RR")) { //取消编码 if (SendIns.CancelPnr(Order.PNR, Order.Office)) { ErrMsg = ""; } else { ErrMsg = "取消编码(" + Order.PNR + ")失败!"; } } else { ErrMsg = "编码状态为RR的编码,不能取消!"; } } } } } } } } else { sbLog.Append("提取编码信息失败,系统取消编码失败!"); } } else { sbLog.Append("订单不存在!"); } } catch (Exception ex) { ErrMsg = ex.Message; } finally { } return(ErrMsg); }
/// <summary> /// 根据订单编号构建数据对象兵赋值 /// </summary> /// <param name="OrderId">订单编号</param> /// <returns>返回构建与赋值好的string类型数组对象</returns> public string[] StructOrder(string PolicyId, string LocalOrderId, decimal SpacePrice, decimal ABFee, decimal FuelFee, decimal PolicyPoint, string LinkMan, string LinkManPhone, PnrAnalysis.PnrModel pnrModel) { //声明数组对象参数信息 string[] OrderArray = new string[18]; //构造数组中参数的值 OrderArray[0] = PolicyId; OrderArray[1] = pnrModel.TravelType.ToString(); OrderArray[2] = "0"; OrderArray[3] = LocalOrderId; #region 行程参数声明并赋值 //起飞时间 string FromTime = ""; //到达时间 string ToTime = ""; //起飞城市三字码 string FromCityCode = ""; //到达城市三字码 string ToCityCode = ""; //航班号 string FlightCode = ""; //机型 string AircraftModel = ""; //舱位 string Space = ""; //销售价 string PMFee = ""; //本地结算价 string JSFee = ""; //基建费 string strABFee = ""; //燃油费 string strFuelFee = ""; foreach (PnrAnalysis.Model.LegInfo SkyWay in pnrModel._LegList) { FromTime = FromTime + SkyWay.FlyDate1 + "T" + SkyWay.FlyStartTime.Insert(2, ":") + ":00" + "/"; ToTime = ToTime + SkyWay.FlyDateE + "T" + SkyWay.FlyEndTime.Insert(2, ":") + ":00" + "/"; FromCityCode = FromCityCode + SkyWay.FromCode + "/"; ToCityCode = ToCityCode + SkyWay.ToCode + "/"; FlightCode = FlightCode + SkyWay.AirCodeFlightNum.Replace("*", "") + "/"; //AircraftModel = AircraftModel + SkyWay.Aircraft + "/"; AircraftModel = AircraftModel + "/";// Space = Space + SkyWay.Seat + "/"; decimal PMFees = SpacePrice; string s = PMFees.ToString().Split('.')[0].ToString(); int s1 = int.Parse(s.Substring(s.Length - 1, 1)); if (s1 > 0 && s1 <= 4) { PMFees = PMFees - s1; } else if (s1 >= 5) { PMFees = PMFees - s1; PMFees = PMFees + 10; } PMFee = PMFee + PMFees.ToString() + "/"; if (PolicyPoint > 1) { PolicyPoint = PolicyPoint / 100; } JSFee = JSFee + Convert.ToString(PMFees * (1 - PolicyPoint)) + "/"; strABFee = strABFee + ABFee.ToString() + "/"; strFuelFee = strFuelFee + FuelFee.ToString() + "/"; } #endregion OrderArray[4] = FromTime.Replace("/", "#").Substring(0, FromTime.Length - 1); OrderArray[5] = ToTime.Replace("/", "#").Substring(0, ToTime.Length - 1); OrderArray[6] = FlightCode.Substring(0, FlightCode.Length - 1); OrderArray[7] = AircraftModel.Substring(0, AircraftModel.Length - 1); OrderArray[8] = FromCityCode.Substring(0, FromCityCode.Length - 1); OrderArray[9] = ToCityCode.Substring(0, ToCityCode.Length - 1); OrderArray[10] = Space.Substring(0, Space.Length - 1); OrderArray[11] = PMFee.Substring(0, PMFee.Length - 1); OrderArray[12] = JSFee.Substring(0, JSFee.Length - 1); OrderArray[13] = strABFee.Substring(0, strABFee.Length - 1); OrderArray[14] = strFuelFee.Substring(0, strFuelFee.Length - 1); OrderArray[15] = LinkMan; OrderArray[16] = LinkManPhone; OrderArray[17] = pnrModel._BigPnr; return(OrderArray); }