Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }