示例#1
0
        private List <Tb_Ticket_Passenger> getPassenger(PnrModel pnrModel)
        {
            var result = pnrModel._PassengerList.Select((p) =>
            {
                var r = new Tb_Ticket_Passenger()
                {
                    PassengerName = p.PassengerName,
                    PassengerType = int.Parse(p.PassengerType),
                    Cid           = p.SsrCardID,
                };
                return(r);
            }).ToList();

            return(result);
        }
    ///// <summary>
    ///// 审核中
    ///// </summary>
    ///// <param name="OperationType">0 审核中 </param>
    ///// <param name="msg"></param>
    ///// <returns></returns>
    //private void ProcessNew(int OperationType)
    //{
    //    bool result = false;
    //    string msg = "";

    //    try
    //    {
    //        Tb_Ticket_Order mOrder = ViewState["Order"] as Tb_Ticket_Order;
    //        List<Tb_Ticket_Passenger> PassengerList = ViewState["PassengerList"] as List<Tb_Ticket_Passenger>;
    //        PbProject.Logic.Order.Tb_Ticket_OrderBLL orderBll = new PbProject.Logic.Order.Tb_Ticket_OrderBLL();

    //        #region 处理订单状态

    //        int OrderType = mOrder.TicketStatus; //3.退 4.废 5.改

    //        if (OperationType == 0 && (mOrder.OrderStatusCode == 6 || mOrder.OrderStatusCode == 7 || mOrder.OrderStatusCode == 8)) //审核中
    //        {
    //            //修改订单状态为  审核中
    //            if (OrderType == 3)
    //                mOrder.OrderStatusCode = 29;
    //            else if (OrderType == 4)
    //                mOrder.OrderStatusCode = 30;
    //            else if (OrderType == 5)
    //                mOrder.OrderStatusCode = 31;

    //            string content = "";
    //            #region 记录手续费日志

    //            // 11 13 16 17 21 22 29 30

    //            if (mOrder.OrderStatusCode == 29 || mOrder.OrderStatusCode == 30)
    //            {
    //                string temp = "";
    //                bool re = false;

    //                mOrder.A4 = DateTime.Parse(txtA4.Text.Trim());

    //                mOrder.A6 = decimal.Parse(txtA6.Text.Trim());

    //                //计算每个乘机人的手续费
    //                List<Tb_Ticket_Passenger> pasList = GetPassengerList(PassengerList, mOrder);

    //                foreach (Tb_Ticket_Passenger item in pasList)
    //                {
    //                    if (item.TGQHandlingFee > 0)
    //                        re = true;
    //                    temp += item.TGQHandlingFee + "/";
    //                }
    //                temp = temp.TrimEnd('/');

    //                if (re)
    //                {
    //                    //有手续费
    //                    //记录日志

    //                    content = "手续费:" + temp;
    //                }
    //            }

    //            #endregion

    //            result = orderBll.OperOrderTFGSHZ(mOrder, mUser, mCompany, content);
    //        }

    //        #endregion

    //        msg = result == true ? "操作成功!" : "操作失败";

    //    }
    //    catch (Exception ex)
    //    {
    //        msg = "处理出错";
    //    }

    //    Page.ClientScript.RegisterStartupScript(this.GetType(), DateTime.Now.Ticks.ToString(), "showdialogOne('" + msg + "','OrderTGQList.aspx?currentuserid=" + this.currentuserid.Value.ToString() + "');", true);
    //}

    /// <summary>
    /// 获取乘机人信息
    /// </summary>
    /// <returns></returns>
    public List <Tb_Ticket_Passenger> GetPassengerList(List <Tb_Ticket_Passenger> pasList, Tb_Ticket_Order Order)
    {
        if (Order != null && pasList != null && pasList.Count > 0)
        {
            //decimal TotalTGQHandlingFee = Order.TGQHandlingFee;

            decimal TotalTGQHandlingFee = 0;

            int Count = RepPassenger.Items.Count;
            for (int i = 0; i < Count; i++)
            {
                System.Web.UI.HtmlControls.HtmlInputText   input  = RepPassenger.Items[i].FindControl("txtTGQHandlingFee") as System.Web.UI.HtmlControls.HtmlInputText;
                System.Web.UI.HtmlControls.HtmlInputHidden Hid_Id = RepPassenger.Items[i].FindControl("Hid_Id") as System.Web.UI.HtmlControls.HtmlInputHidden;
                if (Hid_Id != null)
                {
                    string id = Hid_Id.Value;
                    Tb_Ticket_Passenger PasModel = pasList.Find(delegate(Tb_Ticket_Passenger _pas)
                    {
                        return(_pas.id.ToString() == id);
                    });
                    if (PasModel != null)
                    {
                        if (input != null)
                        {
                            decimal TGQHandlingFee = 0;
                            if (decimal.TryParse(input.Value, out TGQHandlingFee))
                            {
                                PasModel.TGQHandlingFee = TGQHandlingFee;
                                TotalTGQHandlingFee    += TGQHandlingFee;
                            }
                        }
                    }
                }
            }
            Order.TGQHandlingFee = TotalTGQHandlingFee;
        }
        return(pasList);
    }
示例#3
0
        /// <summary>
        /// 处理退改签 处理
        /// </summary>
        private string TGQ(UserLoginInfo userInfo, Tb_Ticket_Order Order, List <Tb_Ticket_SkyWay> OldSkyWayList, List <HashObject> newSkyWay, List <Tb_Ticket_Passenger> oldPassengerList, List <HashObject> newPasList, string TGQRemark, string quitReasonType, string reason)
        {
            bool   result = false;
            string msg    = "";
            //选择申请类型
            int ApplayType = int.Parse(CommonMethod.GetFomartString(parames["ApplayType"]));

            try
            {
                //订单管理类
                Tb_Ticket_OrderBLL OrderManage = new Tb_Ticket_OrderBLL();

                List <Tb_Ticket_Passenger> tempPassengerList = new List <Tb_Ticket_Passenger>();

                //记录出票订单id
                List <string> passengerId = new List <string>();
                List <Tb_Ticket_Passenger> NewPassengerList = new List <Tb_Ticket_Passenger>();
                Tb_Ticket_Passenger        Passenger        = null;
                //新订单号
                string NewOrderId = OrderManage.GetOrderId("0");
                int    TicketNum  = 0;

                #region 处理乘机人
                string strId = "", IsChecked = "0";
                for (int i = 0; i < newPasList.Count; i++)
                {
                    Passenger = new Tb_Ticket_Passenger();
                    //strId = newPasList[i].GetValue<string>("id");
                    strId = newPasList[i]["id"].ToString();
                    //IsChecked = newPasList[i].GetValue<string>("IsChecked");
                    IsChecked = newPasList[i]["IsChecked"].ToString();
                    Guid id = Guid.Parse(strId);

                    if (oldPassengerList != null && oldPassengerList.Count > 0)
                    {
                        tempPassengerList = oldPassengerList.Where(w => w.id == id).ToList <Tb_Ticket_Passenger>();
                    }

                    if (tempPassengerList != null && tempPassengerList.Count > 0)
                    {
                        Passenger = tempPassengerList[0];
                    }

                    //选中的乘客
                    if (IsChecked == "1")
                    {
                        //原乘客id
                        //passengerId.Add(newPasList[i].GetValue<string>("id"));
                        passengerId.Add(newPasList[i]["id"].ToString());
                        Passenger.id = Guid.NewGuid();
                        NewPassengerList.Add(Passenger);
                        TicketNum++;
                    }
                }

                #endregion

                #region 处理航段表

                //改签用到航班号和舱位
                List <string> FlightCodeList = new List <string>();
                List <string> SpaceList      = new List <string>();
                //临时日期
                DateTime TempDate = DateTime.Parse("1901-01-01");
                DateTime fromDate = DateTime.Parse("1901-01-01");
                for (int i = 0; i < OldSkyWayList.Count; i++)
                {
                    //处理改签航段
                    if (ApplayType == 5)
                    {
                        foreach (HashObject skyParam in newSkyWay)
                        {
                            //找到相同航段id
                            if (skyParam.GetValue <string>("SkyId") == OldSkyWayList[i].id.ToString())
                            {
                                if (DateTime.TryParse(skyParam.GetValue <string>("FromDate"), out fromDate))
                                {
                                    OldSkyWayList[i].FromDate = fromDate;
                                }
                                if (TempDate.ToString("yyyy-MM-dd") == "1901-01-01")
                                {
                                    TempDate = OldSkyWayList[i].FromDate;
                                }
                                if (DateTime.TryParse(skyParam.GetValue <string>("ToDate"), out fromDate))
                                {
                                    OldSkyWayList[i].ToDate = fromDate;
                                }
                                OldSkyWayList[i].FlightCode = skyParam.GetValue <string>("FlightCode");
                                OldSkyWayList[i].Space      = skyParam.GetValue <string>("Space");
                                //航班号和舱位
                                FlightCodeList.Add(OldSkyWayList[i].FlightCode);
                                SpaceList.Add(OldSkyWayList[i].Space);
                            }
                        }
                    }
                    //新id
                    OldSkyWayList[i].id = Guid.NewGuid();
                }

                #endregion

                if (TicketNum == 0)
                {
                    msg = "请选择乘客!";
                }
                else
                {
                    string PassengerNameS = "";
                    foreach (Tb_Ticket_Passenger item in NewPassengerList)
                    {
                        PassengerNameS += item.PassengerName + "|";
                    }
                    PassengerNameS = PassengerNameS.TrimEnd('|');


                    //新id
                    Order.id              = Guid.NewGuid();
                    Order.PassengerName   = PassengerNameS;
                    Order.PassengerNumber = NewPassengerList.Count;
                    Order.OldOrderId      = Order.OrderId; //原订单号
                    Order.OrderId         = NewOrderId;    //新订单号
                    //Order.PayNo = "";
                    Order.InPayNo       = new PbProject.Logic.Order.Tb_Ticket_OrderBLL().GetIndexId();
                    Order.TicketStatus  = ApplayType; //机票状态
                    Order.CreateTime    = DateTime.Now;
                    Order.YDRemark      = TGQRemark;  //退改签申请备注
                    Order.PayDebtsMoney = 0;
                    Order.LockLoginName = "";
                    Order.LockCpyNo     = "";
                    Order.LockTime      = DateTime.Parse("1900-01-01 00:00:00.000");

                    string strType = "";

                    if (ApplayType == 3)//退票
                    {
                        Order.OrderStatusCode = 7;
                        Order.A8 = quitReasonType;

                        if (quitReasonType == "1")
                        {
                            strType = "自愿申请";
                            Order.TGQApplyReason = reason + "--自愿申请";  //申请退票理由:自愿
                        }
                        else
                        {
                            strType = "非自愿申请";
                            Order.TGQApplyReason = reason + "--非自愿申请"; //申请退票理由:非自愿
                        }
                    }
                    else if (ApplayType == 4)//废票
                    {
                        Order.OrderStatusCode = 8;
                        Order.TGQApplyReason  = reason; //申请废票理由
                    }
                    else if (ApplayType == 5)           //改签
                    {
                        Order.OrderStatusCode = 6;
                        Order.AirTime         = TempDate;
                        Order.FlightCode      = string.Join("/", FlightCodeList.ToArray());
                        Order.Space           = string.Join("/", SpaceList.ToArray());
                        //改签申请理由
                        Order.TGQApplyReason = reason;

                        //改签处理其它参数
                        Order.PayWay = 0; //默认支付方式
                        Order.PayNo  = "";
                    }

                    string isContent = ""; //是否保留编码日志

                    //生成订单
                    result = OrderManage.CreateOrderTFG(Order, NewPassengerList, passengerId, OldSkyWayList, userInfo.User, userInfo.Company, strType, isContent, out msg);
                }
            }
            catch (Exception ex)
            {
            }
            string values = "";

            if (result)
            {
                values = "订单申请成功!";
            }
            else
            {
                if (string.IsNullOrEmpty(msg))
                {
                    if (ApplayType == 3)
                    {
                        values = "订单申请退票失败!";
                    }
                    else if (ApplayType == 4)
                    {
                        values = "订单申请废票失败!";
                    }
                    else if (ApplayType == 5)
                    {
                        values = "订单申请改签失败!";
                    }
                }
                else
                {
                    values = msg;
                }
            }

            return(values);
        }
示例#4
0
        /// <summary>
        /// 获取乘机人
        /// </summary>
        /// <returns></returns>
        public List <Tb_Ticket_Passenger> GetPassengerList()
        {
            string[] strPasName = new string[] {
                "刘梦雯",
                "黄翔",
                "李忠",
                "杨晓红",
                "幸坤建",
                "刘爱珠",
                "陈国利",
                "何晓波",
                "王学成",
                "郝连娟",
                "周廷洋",
                "李财玉",
                "刘雪琴",
                "沈军",
                "朱万春",
                "姚贵玉",
                "李静",
                "翁琳",
                "吴俊",
                "陈刚",
                "李芳明"
            };
            string[] strPasId = new string[] {
                "522321196906260415",
                "652827196911273119",
                "432426197011210371",
                "510211196911223422",
                "610402197003061299",
                "152221199002091849",
                "510525198503118432",
                "142327198010040213",
                "152224198212097581",
                "522423198112197319",
                "650202194410110716",
                "513624198010185727",
                "650300197207290332",
                "653201197604071014",
                "520102196102045822",
                "420105198009073647",
                "510226197305057187",
                "522423195403290026",
                "512923197410241294",
                "43022519760706153X",
                "620121196709260556"
            };
            List <Tb_Ticket_Passenger> paslist = new List <Tb_Ticket_Passenger>();

            try
            {
                //随机取一位乘客
                Random rd = new Random((int)System.DateTime.Now.Ticks);
                int    i  = rd.Next(0, strPasName.Length);
                Tb_Ticket_Passenger Passenger = new Tb_Ticket_Passenger();
                Passenger.PassengerName = strPasName[i];
                Passenger.PassengerType = 1;
                Passenger.Cid           = strPasId[i];
                paslist.Add(Passenger);
            }
            catch (Exception)
            {
                Tb_Ticket_Passenger Passenger = new Tb_Ticket_Passenger();
                Passenger.PassengerName = "张三";
                Passenger.PassengerType = 1;
                Passenger.Cid           = "2525145554";
                paslist.Add(Passenger);
            }
            return(paslist);
        }
示例#5
0
        /* BSP常见错误信息
         * MRT:HT0LYJ IGNORED
         * INCOMPLETE PNR/FN
         * PLEASE CHECK TKT ELEMENT
         * CHECK BLINK CODE
         * ELE NBR
         */
        /// <summary>
        /// BSP订单处理
        /// </summary>
        /// <param name="Order"></param>
        private void BspHandle(Tb_Ticket_Order Order, List <ListParam> LPList, BSPShowLog Log)
        {  //订单日志
            StringBuilder sbLog = new StringBuilder();

            if (Order != null)
            {
                //订单出票公司信息
                ListParam TicketLP = LPList.Find(delegate(ListParam _tempLP)
                {
                    return(Order.OwnerCpyNo.Contains(_tempLP.CpyNo));
                });

                //编码解析类
                PnrAnalysis.FormatPNR pnrFormat = new PnrAnalysis.FormatPNR();
                //判断标识
                List <string> NumTickList          = new List <string>();
                List <string> PTList               = null;
                List <Tb_Ticket_Passenger> PasList = null;
                try
                {
                    Log(0, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "订单号:" + Order.OrderId + "=======================start=====================\r\n");
                    string GYCpyNo = Order.OwnerCpyNo;
                    if (GYCpyNo.Length >= 12)
                    {
                        GYCpyNo = GYCpyNo.Substring(0, 12);
                    }
                    string CarrayCode = Order.CarryCode.Split('/')[0];
                    Tb_Ticket_PrintOffice PrintOffice = GetPrintOffice(GYCpyNo, CarrayCode);
                    if (PrintOffice == null || PrintOffice.PrintCode == "")
                    {
                        Log(0, string.Format("{0}未设置打票机号,请手动出票!", CarrayCode));
                        sbLog.Append(string.Format("{0}未设置打票机号,请手动出票!", CarrayCode));
                        return;
                    }
                    //出票Office
                    string pOffice   = string.IsNullOrEmpty(PrintOffice.OfficeCode) ? Order.PrintOffice : PrintOffice.OfficeCode;
                    string PrintCode = PrintOffice.PrintCode;
                    string Pnr       = Order.PNR;//Pnr编码
                    if (pOffice == "")
                    {
                        Log(0, string.Format("{0}出票Office不能为空!", CarrayCode));
                        sbLog.Append(string.Format("{0}出票Office不能为空!", CarrayCode));
                        return;
                    }
                    //获取乘客
                    string sqlWhere           = string.Format(" OrderId='{0}' order by PassengerType", Order.OrderId);
                    Tb_Ticket_Passenger pMode = null;
                    PasList = Manage.CallMethod("Tb_Ticket_Passenger", "GetList", null, new object[] { sqlWhere }) as List <Tb_Ticket_Passenger>;
                    if (PasList == null || PasList.Count == 0)
                    {
                        Log(0, string.Format("订单号:{0}没有找到对应的乘客信息!", Order.OrderId));
                        sbLog.Append(string.Format("订单号:{0}没有找到对应的乘客信息!", Order.OrderId));
                        return;
                    }
                    else
                    {
                        pMode = PasList[0];
                    }
                    List <Bd_Base_Parameters> baseParamList = Manage.CallMethod("Bd_Base_Parameters", "GetList", null, new Object[] { "CpyNo='" + GYCpyNo + "'" }) as List <Bd_Base_Parameters>;
                    ConfigParam config = Bd_Base_ParametersBLL.GetConfigParam(baseParamList);
                    //指令管理类
                    //SendInsManage SendManage = new SendInsManage(Order.OwnerCpyNo, GYCpyNo, config);
                    if (config == null)
                    {
                        Log(0, string.Format("订单号{0},公司{1}未设置使用配置信息,请设置!", Order.OrderId, CarrayCode));
                        sbLog.Append(string.Format("订单号{0},公司{1}未设置使用配置信息,请设置!", Order.OrderId, CarrayCode));
                        return;
                    }
                    if (string.IsNullOrEmpty(Order.PNR))
                    {
                        Log(0, string.Format("订单号{0}中没有PNR,请检查!", Order.OrderId));
                        sbLog.Append(string.Format("订单号{0}中没有PNR,请检查!", Order.OrderId));
                        return;
                    }

                    ParamObject PM = new ParamObject();
                    PM.ServerIP   = config.WhiteScreenIP;
                    PM.ServerPort = int.Parse(config.WhiteScreenPort);
                    PM.Office     = pOffice;

                    //发送指令
                    string SendIns = "RT" + Pnr;
                    //返回数据
                    string Recvdata = string.Empty;
                    PM.code = SendIns;
                    PM.IsPn = true;
                    //  Recvdata = SendNewPID.SendCommand(PM);
                    Recvdata = WriteLogDB(PM, TicketLP);
                    //指令日志
                    Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                    //授权检查
                    if (Recvdata.ToUpper().Contains("授权"))
                    {
                        Log(0, string.Format("订单号{0},编码{1} 出票Office{2},发送指令需要授权!", Order.OrderId, Pnr, pOffice));
                        sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},发送指令需要授权!", Order.OrderId, Pnr, pOffice));
                        return;
                    }
                    else if (Recvdata.ToUpper().Contains("CANCELLED"))
                    {
                        Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码已取消,出票失败!", Order.OrderId, Pnr, pOffice));
                        sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码已取消,出票失败!", Order.OrderId, Pnr, pOffice));
                        return;
                    }
                    string Msg = "";
                    string Xe = "", RR = "";
                    string PnrStatus = pnrFormat.GetPnrStatus(Recvdata, out Msg);
                    if (PnrStatus.Contains("NO"))
                    {
                        Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},不能自动出票!!", Order.OrderId, Pnr, pOffice, PnrStatus));
                        sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},不能自动出票!!", Order.OrderId, Pnr, pOffice, PnrStatus));
                        return;
                    }
                    //存在的票号
                    PTList = GetTicketNum(Pnr, Recvdata.ToUpper(), pnrFormat);
                    List <string> RRList = null;
                    List <string> XEList = null;
                    if (PTList.Count == 0)
                    {
Start:
                        {
                            //进行出票
                            HashObject hash = GetNumList(Recvdata);
                            XEList = hash["XEList"] as List <string>;
                            RRList = hash["RRList"] as List <string>;
                            List <string> StartXeList = hash["StartXeList"] as List <string>;
                            //XE项
                            if (StartXeList.Count > 0)
                            {
                                for (int i = 0; i < StartXeList.Count; i++)
                                {
                                    string XeStr = StartXeList[i];
                                    if (XeStr != "")
                                    {
                                        //发送指令
                                        SendIns = "RT" + Pnr + "|XE" + XeStr + "|@";
                                        PM.code = SendIns;
                                        PM.IsPn = false;
                                        //Recvdata = SendNewPID.SendCommand(PM);//MRT:JG61M2 IGNORED
                                        Recvdata = WriteLogDB(PM, TicketLP);
                                        //指令日志
                                        Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));

                                        //判断是否XE成功
                                        if (pnrFormat.INFMarkIsOK(Recvdata, out Msg))
                                        {
                                            /*  3U8881  E TU30APR  CTUPEK HK1   0730 1005
                                             * JG61M2 -  航空公司使用自动出票时限, 请检查PNR
                                             *** 预订酒店指令HC, 详情  HC:HELP   ***
                                             */
                                            //发送指令
                                            SendIns = "RT" + Pnr;
                                            PM.code = SendIns;
                                            PM.IsPn = true;
                                            //Recvdata = SendNewPID.SendCommand(PM);
                                            Recvdata = WriteLogDB(PM, TicketLP);
                                            //指令日志
                                            Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                                            goto Start;
                                        }
                                    }
                                }
                            }
                        }



                        string patPrice = "pat:a";
                        if (!Order.IsChdFlag)
                        {
                            //成人
                            patPrice = "pat:a";
                        }
                        else
                        {
                            //儿童
                            patPrice = "pat:a*ch";
                        }
                        //发送指令
                        SendIns = "RT" + Pnr + "|" + patPrice;
                        PM.code = SendIns;
                        PM.IsPn = false;
                        //Recvdata = SendNewPID.SendCommand(PM);
                        Recvdata = WriteLogDB(PM, TicketLP);
                        //指令日志
                        Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                        if (Recvdata.IndexOf("PAT") == -1)
                        {
                            //发送指令
                            Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码已取消,未能PAT出票价,出票失败!", Order.OrderId, Pnr, pOffice));
                            sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码已取消,未能PAT出票价,出票失败!", Order.OrderId, Pnr, pOffice));
                            return;
                        }

                        //比较
                        string  xuhao = "", Seat = "", Err = "";
                        decimal _xsFare          = 0m;
                        bool    IsExistParice    = false;
                        PnrAnalysis.PatModel PAT = pnrFormat.GetPATInfo(Recvdata.Replace("\r", ""), out Err);
                        foreach (PatInfo pat in PAT.UninuePatList)
                        {
                            decimal.TryParse(pat.Fare, out _xsFare);
                            //存在此价格
                            if (_xsFare == pMode.PMFee)
                            {
                                IsExistParice = true;
                                xuhao         = pat.SerialNum;
                                Seat          = pat.SeatGroup;
                                break;
                            }
                        }
                        if (!IsExistParice)
                        {
                            Log(0, string.Format("订单号{0},编码{1} 出票Office{2},舱位价{3}与Pat价格{4}不一致,出票失败!", Order.OrderId, Pnr, pOffice, pMode.PMFee, _xsFare));
                            sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},舱位价{3}与Pat价格{4}不一致,出票失败!", Order.OrderId, Pnr, pOffice, pMode.PMFee, _xsFare));
                            return;
                        }

                        //做价格进去
                        SendIns = "RT" + Pnr + "|" + patPrice + "|SFC:" + xuhao + "|@";
                        PM.code = SendIns;
                        PM.IsPn = false;
                        //Recvdata = SendNewPID.SendCommand(PM);
                        Recvdata = WriteLogDB(PM, TicketLP);
                        //指令日志
                        Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                        if (Recvdata.Contains("超时") || Recvdata.Contains("NO PNR"))
                        {
                            //Recvdata = SendNewPID.SendCommand(PM);
                            Recvdata = WriteLogDB(PM, TicketLP);
                            //指令日志
                            Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                        }

                        //做备注
                        decimal _Discount = 0m;
                        if (decimal.TryParse(Order.Discount, out _Discount) && Order.Space.IndexOf("Y") == -1 && Order.Space.IndexOf("C") == -1 && Order.Space.IndexOf("F") == -1 && _Discount < 100)
                        {
                            //做价格进去
                            SendIns = "RT" + Pnr + "|EI:不得签转|@";
                            PM.code = SendIns;
                            PM.IsPn = false;
                            //Recvdata = SendNewPID.SendCommand(PM);
                            Recvdata = WriteLogDB(PM, TicketLP);
                            //指令日志
                            Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                            if (Recvdata != "" && Recvdata.Contains("超时"))
                            {
                                //Recvdata = SendNewPID.SendCommand(PM);
                                Recvdata = WriteLogDB(PM, TicketLP);
                                //指令日志
                                Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                            }
                        }



                        foreach (string item in XEList)
                        {
                            if (item != "")
                            {
                                Xe += "XE" + item + "|";
                            }
                        }
                        foreach (string item in RRList)
                        {
                            if (item != "")
                            {
                                RR += item + "RR" + "|";
                            }
                        }
                        if (Xe.Trim(new char[] { '|' }) == "")
                        {
                            Xe = "";
                        }
                        else
                        {
                            Xe = "|" + Xe.Trim('|') + "|";
                        }
                        if (RR.Trim(new char[] { '|' }) == "")
                        {
                            RR = "";
                        }
                        else
                        {
                            RR = "|" + RR.Trim('|') + "|";
                        }
                        if (RR == "")
                        {
                            RR = "|";
                        }
                        if (XEList == null || XEList.Count == 0 || Xe == "")
                        {
                            Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},未能取出出票时限!!", Order.OrderId, Pnr, pOffice, PnrStatus));
                            sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},未能取出出票时限!!", Order.OrderId, Pnr, pOffice, PnrStatus));
                            return;
                        }

                        //组合打票指令
                        string etdz = "rt" + Pnr + Xe + RR.TrimEnd('|') + "|ETDZ " + PrintCode;
                        etdz = etdz.Replace("||", "|");

                        //出票
                        SendIns = etdz;
                        PM.code = SendIns;
                        PM.IsPn = false;
                        // Recvdata = SendNewPID.SendCommand(PM);
                        Recvdata = WriteLogDB(PM, TicketLP);
                        //指令日志
                        Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));


                        if (Recvdata.Contains("超时") || Recvdata.Contains("NO PNR"))
                        {
                            //Recvdata = SendNewPID.SendCommand(PM);
                            Recvdata = WriteLogDB(PM, TicketLP);
                            //指令日志
                            Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                        }
                        if (Recvdata.Contains("请输入证件信息"))
                        {
                            Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},编码中没有证件号,请输入证件信息,否则不能出票!", Order.OrderId, Pnr, pOffice, PnrStatus));
                            sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},编码中没有证件号,请输入证件信息,否则不能出票!", Order.OrderId, Pnr, pOffice, PnrStatus));
                            return;
                        }
                        if (Recvdata.ToUpper().Contains("STOCK"))
                        {
                            Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3}," + Recvdata + "没有票号了!", Order.OrderId, Pnr, pOffice, PnrStatus));
                            sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3}," + Recvdata + "没有票号了!", Order.OrderId, Pnr, pOffice, PnrStatus));
                            return;
                        }
                        //出票成功
                        if (Recvdata.Contains("CNY") && Recvdata.ToUpper().Contains(Pnr.ToUpper()))
                        {
                            /*CNY2730.00      HF9550
                             * 876-3250823439         876-3250823441  */

                            SendIns = "RT" + Pnr;
                            PM.code = SendIns;
                            PM.IsPn = true;
                            //Recvdata = SendNewPID.SendCommand(PM);
                            Recvdata = WriteLogDB(PM, TicketLP);
                            //指令日志
                            Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                            //存在的票号
                            PTList = GetTicketNum(Pnr, Recvdata.ToUpper(), pnrFormat);
                        }
                        else
                        {
                            //出票失败 重试
                            if (!Recvdata.ToUpper().Contains("**ELECTRONIC TICKET PNR**") &&
                                Recvdata.ToUpper().Contains("SSR TKNE") &&
                                Recvdata.ToUpper().Contains("/DPN") &&
                                Recvdata.ToUpper().Contains("RMK " + CarrayCode + "/"))
                            {
                                //"ETRY:"   重试指令
                                SendIns = "RT" + Pnr + "|ETRY:";
                                PM.code = SendIns;
                                PM.IsPn = false;
                                //Recvdata = SendNewPID.SendCommand(PM);
                                Recvdata = WriteLogDB(PM, TicketLP);
                                //指令日志
                                Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata));
                            }
                            else
                            {
                                Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3}," + "出票失败,{4}", Order.OrderId, Pnr, pOffice, PnrStatus, Recvdata));
                                sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3}," + "出票失败,{4}", Order.OrderId, Pnr, pOffice, PnrStatus, Recvdata));
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log(0, string.Format("订单号{0},出票异常:{1}", Order.OrderId, ex.Message + ex.Source + ex.StackTrace.ToString()));
                    sbLog.Append(string.Format("订单号{0},出票异常:{1}", Order.OrderId, ex.Message + ex.Source + ex.StackTrace.ToString()));
                }
                finally
                {
                    string          TicketMsg = "";
                    Log_Tb_AirOrder OrderLog  = new Log_Tb_AirOrder();
                    //执行SQl语句
                    List <string> sqlList = new List <string>();
                    //修改订单数据列表
                    List <string> OrderList = new List <string>();
                    if (TicketLP != null)
                    {
                        //解锁
                        OrderList.Add(" LockCpyNo='' ");
                        OrderList.Add(" LockLoginName='' ");
                        OrderList.Add(" LockTime='1900-01-01' ");

                        OrderList.Add(" CPTime=getdate() ");
                        OrderList.Add(" CPName='管理员' ");
                        OrderList.Add(string.Format(" CPCpyNo='{0}' ", TicketLP.CpyNo));
                        OrderList.Add(" CPRemark='BSP自动出票' ");
                        OrderList.Add(string.Format(" CPCpyName='{0}' ", TicketLP.UninAllName));

                        //日志
                        OrderLog.id            = Guid.NewGuid();
                        OrderLog.OrderId       = Order.OrderId;
                        OrderLog.OperType      = "出票";
                        OrderLog.OperTime      = DateTime.Now;
                        OrderLog.OperLoginName = "管理员";
                        OrderLog.OperUserName  = "******";
                        OrderLog.CpyNo         = TicketLP.CpyNo;
                        OrderLog.CpyType       = 1;
                        OrderLog.CpyName       = TicketLP.UninAllName;
                    }

                    if (PTList != null && PTList.Count > 0 && PasList != null && PasList.Count > 0)
                    {
                        string PasName = "", TicketNumber = "";
                        for (int i = 0; i < PTList.Count; i++)
                        {
                            if (PTList[i].Split('|').Length == 2)
                            {
                                TicketNumber = PTList[i].Split('|')[0];
                                PasName      = PTList[i].Split('|')[1];
                                Tb_Ticket_Passenger Passenger = PasList.Find(delegate(Tb_Ticket_Passenger _tempPassenger)
                                {
                                    return(PTList[i].ToUpper().Trim().Contains(_tempPassenger.PassengerName.ToUpper().Trim()));
                                });
                                if (Passenger != null)
                                {
                                    sqlList.Add(string.Format(" update Tb_Ticket_Passenger set TicketNumber='{0}',TicketStatus=2 where id='{1}' and PassengerName='{2}' ", TicketNumber, Passenger.id.ToString(), Passenger.PassengerName));
                                }
                            }
                        }
                        //修改订单数据
                        OrderList.Add(" TicketStatus=2 ");
                        OrderList.Add(" OrderStatusCode=4 ");
                        if (OrderList.Count > 0)
                        {
                            sqlList.Add(string.Format(" update Tb_Ticket_Order set {0} where id='{1}' ", string.Join(",", OrderList.ToArray()), Order.id.ToString()));
                        }

                        //出票成功
                        TicketMsg          = "出票成功";
                        OrderLog.WatchType = 5;
                        //日志
                        OrderLog.OperContent = "订单号:" + Order.OrderId + " BSP自动出票成功," + string.Format(",", PasList.ToArray());
                        //修改数据库状态
                    }
                    else
                    {
                        //出票失败
                        TicketMsg = "出票失败";
                        //修改订单自动出票尝试次数
                        if (Order.AutoPrintTimes > 3)//尝试次数大于3改为手动出票
                        {
                            sqlList.Add(string.Format(" update Tb_Ticket_Order set AutoPrintFlag=0,AutoPrintTimes=CAST(AutoPrintTimes as int)+1  where id='{0}' ", Order.id.ToString()));
                        }
                        else
                        {
                            sqlList.Add(string.Format(" update Tb_Ticket_Order set AutoPrintTimes=CAST(AutoPrintTimes as int)+1  where id='{0}' ", Order.id.ToString()));
                        }
                        OrderLog.WatchType = 2;
                        //日志
                        OrderLog.OperContent = "BSP自动出票失败," + sbLog.ToString();
                    }
                    //日志
                    string tempSql = Dal.Mapping.MappingHelper <Log_Tb_AirOrder> .CreateInsertModelSql(OrderLog);

                    sqlList.Add(tempSql);

                    string Msg = "";
                    //修改数据库
                    if (!Manage.ExecuteSqlTran(sqlList, out Msg))
                    {
                        Log(0, string.Format("订单号{0},修改数据库失败:{1}", Order.OrderId, Msg));
                    }
                    Log(0, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "订单号:" + Order.OrderId + "  " + TicketMsg + "=======================end=====================\r\n");
                }
            }
        }
示例#6
0
    /// <summary>
    /// 获取打印数据
    /// </summary>
    /// <returns></returns>
    public PnrAnalysis.Model.TripPrintData GetPrintData()
    {
        PnrAnalysis.Model.TripPrintData model = null;
        if (Request["OrderId"] != null && Request["OrderId"].ToString() != "" && Request["PasId"] != null && Request["PasId"].ToString() != "")
        {
            model = new PnrAnalysis.Model.TripPrintData();
            model.m_strOrderId     = Request["OrderId"].ToString();
            model.m_strPassengerId = Request["PasId"].ToString();

            OrderInputParam InputParam = new OrderInputParam();
            string          ErrMsg     = "";
            //成人订单数据显示
            InputParam = OrderBLL.GetOrder(model.m_strOrderId, InputParam, out ErrMsg);
            if (InputParam != null && InputParam.OrderParamModel.Count > 0)
            {
                OrderMustParamModel OMP       = InputParam.OrderParamModel[0];
                Tb_Ticket_Passenger Passenger = OMP.PasList.Find(delegate(Tb_Ticket_Passenger _TP)
                {
                    return(_TP.id.ToString().ToUpper() == model.m_strPassengerId.ToUpper());
                });
                Tb_TripDistribution         tb_tripdistribution = null;
                Tb_Ticket_Order             Order   = OMP.Order;
                List <Tb_Ticket_SkyWay>     skyList = OMP.SkyList;
                PbProject.Model.ConfigParam config  = this.configparam;
                if (Passenger != null && Order != null)
                {
                    if (Passenger.TravelNumber.Trim() != "")
                    {
                        string sqlWhere = string.Format(" TripNum='{0}' and UseCpyNo='{1}' ", Passenger.TravelNumber.Trim(), Order.OwnerCpyNo);
                        List <Tb_TripDistribution> TTPList = this.baseDataManage.CallMethod("Tb_TripDistribution", "GetList", null, new object[] { sqlWhere }) as List <Tb_TripDistribution>;
                        if (TTPList != null && TTPList.Count > 0)
                        {
                            tb_tripdistribution = TTPList[0];
                        }
                    }
                    //管理员
                    if (mCompany.RoleType == 1)
                    {
                        string GYCpyNo = Order.OwnerCpyNo;
                        if (Order.OwnerCpyNo.Length >= 12)
                        {
                            GYCpyNo = GYCpyNo.Substring(0, 12);
                        }
                        List <Bd_Base_Parameters> baseParamList = baseDataManage.CallMethod("Bd_Base_Parameters", "GetList", null, new Object[] { "CpyNo='" + GYCpyNo + "'" }) as List <Bd_Base_Parameters>;
                        config = Bd_Base_ParametersBLL.GetConfigParam(baseParamList);
                    }

                    #region 获取 配置号
                    if (tb_tripdistribution != null)
                    {
                        //航协号
                        model.m_strIataCode = tb_tripdistribution.IataCode;
                        //中文填开单位
                        model.m_strCNTKTConjunction = tb_tripdistribution.OwnerCpyName;
                        //office
                        model.m_strAgentOffice = tb_tripdistribution.CreateOffice;
                        //行程单号
                        model.m_strTravelNumber = tb_tripdistribution.TripNum;
                    }
                    else
                    {
                        //行程单号为空时
                        if (config != null)
                        {
                            string   PrintOffice      = GetPrintOffice(Order.OwnerCpyNo, Order.CarryCode.Split('/')[0]);
                            string[] Arroffice        = config.Office.Split('^');        //office
                            string[] ArrIataCode      = config.IataCode.Split('^');      //航协号
                            string[] ArrTicketCompany = config.TicketCompany.Split('^'); //公司名称
                            for (int i = 0; i < Arroffice.Length; i++)
                            {
                                if (Arroffice.Length == ArrIataCode.Length && Arroffice.Length == ArrTicketCompany.Length)
                                {
                                    if (PrintOffice == "")
                                    {
                                        //Office
                                        model.m_strAgentOffice = Arroffice[i];
                                        //中文填开单位
                                        model.m_strCNTKTConjunction = ArrTicketCompany[i];
                                        //航协号
                                        model.m_strIataCode = ArrIataCode[i];//航协号
                                        break;
                                    }
                                    else
                                    {
                                        if (PrintOffice.ToUpper() == Arroffice[i].ToUpper())
                                        {
                                            //Office
                                            model.m_strAgentOffice = Arroffice[i];             //Office
                                            //中文填开单位
                                            model.m_strCNTKTConjunction = ArrTicketCompany[i]; //填开单位
                                            //航协号
                                            model.m_strIataCode = ArrIataCode[i];              //航协号
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    #endregion

                    //乘客姓名
                    model.m_strPassengerName = Passenger.PassengerName;
                    //乘客证件号
                    model.m_strPassengerCardId = Passenger.Cid;
                    //签注
                    model.m_strEndorsements = ddlEndorsements.SelectedValue;
                    //小编码
                    model.m_strPnrB = Order.PNR.ToUpper();
                    //行程单号
                    model.m_strTravelNumber = Passenger.TravelNumber.Trim();
                    //舱位价
                    model.m_strSpaceFare = Passenger.PMFee.ToString("F2");
                    //基建费
                    model.m_strABFare = Passenger.ABFee.ToString("F2");
                    //燃油费
                    model.m_strFuelFare = Passenger.FuelFee.ToString("F2");
                    //总价
                    model.m_strTotalFare = (Passenger.PMFee + Passenger.ABFee + Passenger.FuelFee).ToString("F2");
                    //保险费
                    model.m_strInsuranceFare = "XXX";
                    //其他费用
                    model.m_strOtherFare = "0.00";
                    //票号
                    model.m_strTicketNumber = Passenger.TicketNumber;
                    //验证码
                    model.m_strCheckNum = Passenger.TravelNumber.Length > 4 ? (Passenger.TravelNumber.Substring(Passenger.TravelNumber.Length - 4, 4)) : txtCheckNum.Value;
                    //填开日期
                    model.m_strIssuedDate = System.DateTime.Now.ToString("yyyy-MM-dd");
                    //航段
                    if (skyList != null && skyList.Count > 0)
                    {
                        //第一段
                        model.m_strFCityName1    = skyList[0].FromCityName;    //出发城市
                        model.m_strTCityName1    = skyList[0].ToCityName;      //到达城市
                        model.m_strAirName1      = skyList[0].CarryName;       //航空公司名称
                        model.m_strAirCode1      = skyList[0].CarryCode;       //航空公司二字码
                        model.m_strFlightNum1    = skyList[0].FlightCode;      //航班号
                        model.m_strSpace1        = skyList[0].Space.ToUpper(); //舱位
                        model.m_strTicketBasis1  = skyList[0].Space.ToUpper(); //舱位等级
                        model.m_strFlyDate1      = skyList[0].FromDate.ToString("yyyy-MM-dd");
                        model.m_strFlyStartTime1 = skyList[0].FromDate.ToString("HH:mm");
                        model.m_strFlyEndTime1   = skyList[0].ToDate.ToString("HH:mm"); //到达时间
                        model.m_strTerminal1     = skyList[0].Terminal;                 //航站楼

                        //行李
                        model.m_strAllowPacket1 = "20K";
                        if (model.m_strSpace1 == "C")
                        {
                            model.m_strAllowPacket1 = "30K";
                        }
                        else if (model.m_strSpace1 == "F")
                        {
                            model.m_strAllowPacket1 = "40K";
                        }
                        //-------------------------------------------
                        //第二段
                        if (skyList.Count > 1)
                        {
                            model.m_strFCityName2    = skyList[1].FromCityName;    //出发城市
                            model.m_strTCityName2    = skyList[1].ToCityName;      //到达城市
                            model.m_strAirName2      = skyList[1].CarryName;       //航空公司名称
                            model.m_strAirCode2      = skyList[1].CarryCode;       //航空公司二字码
                            model.m_strFlightNum2    = skyList[1].FlightCode;      //航班号
                            model.m_strSpace2        = skyList[1].Space.ToUpper(); //舱位
                            model.m_strTicketBasis2  = skyList[1].Space.ToUpper(); //舱位等级
                            model.m_strFlyDate2      = skyList[1].FromDate.ToString("yyyy-MM-dd");
                            model.m_strFlyStartTime2 = skyList[1].FromDate.ToString("HH:mm");
                            model.m_strFlyEndTime2   = skyList[1].ToDate.ToString("HH:mm"); //到达时间
                            model.m_strTerminal2     = skyList[1].Terminal;                 //航站楼
                            //行李
                            model.m_strAllowPacket2 = "20K";
                            if (model.m_strSpace2 == "C")
                            {
                                model.m_strAllowPacket2 = "30K";
                            }
                            else if (model.m_strSpace2 == "F")
                            {
                                model.m_strAllowPacket2 = "40K";
                            }
                            if (model.m_strFCityName2 == model.m_strTCityName1)
                            {
                                if (model.m_strFCityName1 != model.m_strTCityName2)
                                {
                                    model.m_strTravelType = "3";//联程
                                }
                                else
                                {
                                    model.m_strTravelType = "2";//往返
                                }
                            }
                            else
                            {
                                if (skyList.Count == 2)
                                {
                                    model.m_strTravelType = "4";//缺口程
                                }
                                else
                                {
                                    model.m_strTravelType = "5";//多程
                                }
                            }
                        }
                    }
                }
            }
        }
        return(model);
    }