Example #1
0
        public QPPage3(MainWindow parentWindow)
        {
            this.parent = parentWindow;
            this.InitializeComponent();
            TicketInfo.Clear();
            //TicketInfo.Add(new TicketInfo
            //{
            //    tickettype = "八里沟",
            //    ticketcount = "1",
            //    ticketdate = "2017年5月4日"
            //});
            //TicketInfo.Add(new TicketInfo
            //{
            //    tickettype = "九莲山",
            //    ticketcount = "1",
            //    ticketdate = "2017年5月5日"
            //});
            //TicketInfo.Add(new TicketInfo
            //{
            //    tickettype = "天界山",
            //    ticketcount = "1",
            //    ticketdate = "2017年5月5日"
            //});
            this.dataGrid1.ItemsSource = TicketInfo.GetInfo();
            //发送身份证取票
            List <SL_ORDER_DETAIL> listOrderDetail = new List <SL_ORDER_DETAIL>();

            listOrderDetail = B_SellTicketUpData.GetTicketInfo_IDCard(this.parent.Client, this.parent.mSelfHelpClass.GetTicketUserNumber);
            if (listOrderDetail.Count > 0)
            {
                //余票验证
                #region

                //1.先获取要取的票中各个票种的数量

                Int32 ACount = 0; //A票种数量
                Int32 BCount = 0; //B票种数量

                for (int i = 0; i < listOrderDetail.Count; i++)
                {
                    if (listOrderDetail[i].TicketTypeId == M_Configuration.TicketTypeID_1)//A票箱票种
                    {
                        ACount++;
                    }
                    else if (listOrderDetail[i].TicketTypeId == M_Configuration.TicketTypeID_2)//B票箱票种
                    {
                        BCount++;
                    }
                }
                //2.先看下两个票箱票种是一样的情况
                if (M_Configuration.TicketTypeID_1 == M_Configuration.TicketTypeID_2) //票箱放的是一种票的情况
                {
                    if ((ACount > 0) && (BCount > 0))                                 //实际是取两种票的情况
                    {
                        MessageBox.Show("本取票网点没有您所购的全体票种!", T_SellTicketRecord.str_Apption, MessageBoxButton.OK, MessageBoxImage.Information);
                        return;
                    }
                    else
                    {
                        //自助售票机两个票箱是一种票时 有一个票箱的票数能满足就行或A B两票箱数量加起来够也行
                        Int32 TicketCount = T_SellTicketRecord.GetCount_SL_TicketCount();//获取票箱内全体票数
                        if (listOrderDetail.Count > TicketCount)
                        {
                            MessageBox.Show("所购票数已超过当前票箱允许的售票数!", T_SellTicketRecord.str_Apption, MessageBoxButton.OK, MessageBoxImage.Information);
                            return;
                        }
                    }
                }
                else//票箱是两种票的情况  这种情况下必须是两种票都满足才能出票 否则不出票
                {
                    for (int i = 0; i < listOrderDetail.Count; i++)
                    {
                        if (T_SellTicketRecord.Judge_TicketAlarmCount(listOrderDetail[i].TicketTypeId, ACount))
                        {
                            MessageBox.Show("所购票数已超过当前票箱余票数!", T_SellTicketRecord.str_Apption, MessageBoxButton.OK, MessageBoxImage.Information);
                            return;
                        }
                    }
                }

                #endregion

                string str1         = ""; //临时存票种1
                string str2         = ""; //临时存票种2
                string strcount     = ""; //计算票数用的
                Int32  ticket1count = 0;
                //****************先根据票种获取箱号 如果是两个票箱号是同一种票种的 哪个余票多就用哪个的票箱号****************
                #region//待删除
                //if (M_Configuration.TicketTypeID_1 == M_Configuration.TicketTypeID_2)
                //{ }
                //else
                //{
                //   //
                //}
                #endregion
                //****************先根据票种获取箱号 如果是两个票箱号是同一种票种的 哪个余票多就用哪个的票箱号****************

                for (int i = 0; i < listOrderDetail.Count; i++)
                {
                    TicketInfo.Add(new TicketInfo
                    {
                        tickettype  = T_SellTicketRecord.GetTicketInfo(listOrderDetail[i].TicketTypeId).TicketTypeName,//票种
                        ticketcount = "1",
                        ticketdate  = DateTime.Now.ToString("门票日期:MM月dd日")
                    });
                    if (str1 == "")
                    {
                        str1 = listOrderDetail[i].TicketTypeId;
                    }
                    else if (str1 != listOrderDetail[i].TicketTypeId)
                    {
                        str2 = listOrderDetail[i].TicketTypeId;
                    }
                    if (strcount == "")
                    {
                        strcount     = listOrderDetail[i].TicketTypeId;
                        ticket1count = 1;
                    }
                    else if (strcount == listOrderDetail[i].TicketTypeId)
                    {
                        ticket1count = ticket1count + 1;//其中一个票种的票数
                    }
                }
                this.parent.mSelfHelpClass.listtypeid.Add(str1);                                      //票种1
                this.parent.mSelfHelpClass.listtypeid.Add(str2);                                      //票种2
                this.parent.mSelfHelpClass.listticketcount.Add(ticket1count);                         //其中一个票种的票数 其实是第一个票种的票数
                this.parent.mSelfHelpClass.listticketcount.Add(listOrderDetail.Count - ticket1count); //其中一个票种的票数 第二个票种的票数


                //****************赋值
                if (this.parent.mSelfHelpClass.OperType != "0") //购票也用此 先区分下 取票还是购票 0表示购票 1表示取票 自助售票类
                {
                    this.parent.mSelfHelpClass.OperType = "1";  //取票还是购票 0表示购票 1表示取票 自助售票类
                }
                this.parent.mSelfHelpClass.listorderdetail.Clear();
                this.parent.mSelfHelpClass.listorderdetail = listOrderDetail;                 //服务器回传销售明细信息
                this.parent.mSelfHelpClass.TicketTypeID    = listOrderDetail[0].TicketTypeId; //票种
                this.parent.mSelfHelpClass.TicketCount     = listOrderDetail.Count;           //票数
                this.parent.mSelfHelpClass.SaleTime        = DateTime.Now.ToString("MM月dd日"); //销售时间
                this.parent.mSelfHelpClass.OrderID         = listOrderDetail[0].OrderId;      //销售单号
            }
        }
Example #2
0
        private void timer_Tick(object sender, EventArgs e)
        {
            //bool flag = this.firstRun;
            //if (flag)
            //{
            //    bool flag2 = !this.CreateCode();
            //    if (flag2)
            //    {
            //        this.parent.WarmOperation("暂时无法使用此功能!请重新选择其他付款方式!", "gp4");
            //    }
            //    this.firstRun = false;
            //}
            Int32 PayState = -1;//查询支付状态
            bool  flag3    = true;

            if (flag3)
            {
                this.inputBox.Focus();
                if (this.inputBox.Text != "")
                {
                    //支付部发
                    #region

                    /*
                     * bool flag5 = false;
                     * //***************************支付成功后写入数据表中*********************
                     *
                     * this.parent.mSelfHelpClass.PayStat = "2";//支付状态(1-待支付 2-已支付 3-支付失败)
                     * flag5 = T_SellTicketRecord.Insert_GP_Data(this.parent.mSelfHelpClass);
                     *
                     * //***************************支付成功后写入数据表中*********************
                     * if (flag5)
                     * {
                     * this.parent.mSelfHelpClass.PaySuccess = true;//自助售票类
                     * this.counttimer.Stop();
                     * this.parent.Operation("gp6");
                     * }
                     */
                    #endregion

                    //真正支付部分
                    #region
                    if (this.inputBox.Text.Length < 18)
                    {
                        this.parent.mSelfHelpClass.PayodNo = this.inputBox.Text;
                    }
                    else
                    {
                        this.parent.mSelfHelpClass.PayodNo = this.inputBox.Text.Substring(0, 18);
                    }
                    bool flag5 = false;
                    if (M_Configuration.SaleMode == 1)                  //身份证购票模式 直接上传
                    {
                        if (this.parent.mSelfHelpClass.OperType == "0") //取票还是购票 0表示购票 1表示取票
                        {
                            try
                            {
                                this.parent.mSelfHelpClass.GetTicketUserNumber = M_Configuration.IDCard;//身份证号
                                flag5 = B_SellTicketUpData.SellTicketDataUP_IDCard(this.parent.Client, this.parent.mSelfHelpClass.OrderID, this.parent.mSelfHelpClass);
                                if (flag5)
                                {
                                    this.parent.EndOperation();
                                    this.counttimer.Stop();
                                }
                            }
                            catch (Exception ex)
                            {//  查询售票单的支付状态,返回支付状态(1-待支付 2-已支付 3-支付失败),联机,调用6次,每5秒调用一次,非2-已支付 则调用取消交易接口
                                this.counttimer.Stop();
                                for (int i = 0; i < 6; i++)
                                {
                                    Thread.Sleep(5000);
                                    try
                                    {
                                        PayState = B_SellTicketUpData.Search_PayStat(this.parent.Client, this.parent.mSelfHelpClass.OrderID);
                                    }
                                    catch { }
                                    if (PayState == -2)
                                    {
                                        isre = true;
                                        break;
                                    }
                                    if (PayState == 2)//已支付
                                    {
                                        this.parent.Operation("gp6");
                                        break;
                                    }
                                    else if (PayState == 3)//撤销支付
                                    {
                                        try
                                        {
                                            bool isok = B_SellTicketUpData.Cancel_Pay(this.parent.Client, this.parent.mSelfHelpClass.OrderID);
                                            isre = true;
                                        }
                                        catch { }
                                        break;
                                        //MessageBox.Show("         【      温      馨      提      示      】\r\n\r\n您当前购票交易失败!请重新购票支付或到人工售票网点购票!\r\n\r\n给您造成的不便深表歉意!", T_SellTicketRecord.str_Apption, MessageBoxButton.OK, MessageBoxImage.Information);
                                        //this.parent.EndOperation();
                                        //break;
                                    }
                                    if (i == 5)
                                    {
                                        if (PayState == 1)//最终还是待支付的
                                        {
                                            try
                                            {
                                                bool isok = B_SellTicketUpData.Cancel_Pay(this.parent.Client, this.parent.mSelfHelpClass.OrderID);
                                                isre = true;
                                            }
                                            catch { }
                                            break;
                                            //MessageBox.Show("         【      温      馨      提      示      】\r\n\r\n您当前购票交易失败!请重新购票支付或到人工售票网点购票!\r\n\r\n给您造成的不便深表歉意!", T_SellTicketRecord.str_Apption, MessageBoxButton.OK, MessageBoxImage.Information);
                                            //this.parent.EndOperation();
                                            //break;
                                        }
                                    }
                                }
                            }
                        }
                        else if (this.parent.mSelfHelpClass.OperType == "1")//取票还是购票 0表示购票 1表示取票
                        {
                            flag5 = B_SellTicketUpData.SellTicketDataUP(this.parent.Client, this.parent.mSelfHelpClass);
                            if (flag5)
                            {
                                this.parent.mSelfHelpClass.PaySuccess = true;//自助售票类
                                this.counttimer.Stop();
                                this.parent.Operation("gp6");
                            }
                        }
                    }
                    else if (M_Configuration.SaleMode == 0) //出实体票的
                    {
                        if (this.parent.mSelfHelpClass.OperType != null)
                        {
                            try
                            {
                                flag5 = B_SellTicketUpData.SellTicketDataUP(this.parent.Client, this.parent.mSelfHelpClass);
                                if (flag5)
                                {
                                    this.parent.mSelfHelpClass.PaySuccess = true;//自助售票类
                                    this.counttimer.Stop();
                                    this.parent.Operation("gp6");
                                }
                            }
                            catch (Exception ex)
                            {
                                //  查询售票单的支付状态,返回支付状态(1-待支付 2-已支付 3-支付失败),联机,调用6次,每5秒调用一次,非2-已支付 则调用取消交易接口
                                this.counttimer.Stop();
                                for (int i = 0; i < 6; i++)
                                {
                                    try
                                    {
                                        PayState = B_SellTicketUpData.Search_PayStat(this.parent.Client, this.parent.mSelfHelpClass.OrderID);
                                    }
                                    catch { }
                                    if (PayState == -2)
                                    {
                                        isre = true;
                                        break;
                                    }
                                    if (PayState == 2)//已支付
                                    {
                                        this.parent.Operation("gp6");
                                        break;
                                    }
                                    else if (PayState == 3)//撤销支付
                                    {
                                        try
                                        {
                                            bool isok = B_SellTicketUpData.Cancel_Pay(this.parent.Client, this.parent.mSelfHelpClass.OrderID);
                                            isre = true;
                                        }
                                        catch { }
                                        break;
                                        //MessageBox.Show("         【      温      馨      提      示      】\r\n\r\n您当前购票交易失败!请重新购票支付或到人工售票网点购票!\r\n\r\n给您造成的不便深表歉意!", T_SellTicketRecord.str_Apption, MessageBoxButton.OK, MessageBoxImage.Information);
                                        //this.parent.EndOperation();
                                        //break;
                                    }
                                    if (i == 5)
                                    {
                                        if (PayState == 1)
                                        {
                                            try
                                            {
                                                bool isok = B_SellTicketUpData.Cancel_Pay(this.parent.Client, this.parent.mSelfHelpClass.OrderID);
                                                isre = true;
                                            }
                                            catch { }
                                            break;
                                            //MessageBox.Show("         【      温      馨      提      示      】\r\n\r\n您当前购票交易失败!请重新购票支付或到人工售票网点购票!\r\n\r\n给您造成的不便深表歉意!", T_SellTicketRecord.str_Apption, MessageBoxButton.OK, MessageBoxImage.Information);
                                            //this.parent.EndOperation();
                                            //break;
                                        }
                                    }
                                    Thread.Sleep(5000);
                                }
                            }
                        }
                    }
                    #endregion
                }
                else
                {
                    this.inputBox.Focus();
                }
            }
        }
Example #3
0
        //***************读卡函数************
//        public void DoWork()
//        {
//            B_CallBackEventArg arg = new B_CallBackEventArg();
//            arg.message = "";
//            while (!_shoudStop)
//            {

//                #region
//                try
//                {
//                    rfidReader.WaitForTicketPresent(-1);

//                    //读取发行信息
//                    TicketPublishInfo tpInfo = rfidReader.readTicketPublishInfo();
//                    arg.TicketNumber = tpInfo.ID.ToString();//票号
//                    //读取销售信息
//                    TicketSaleInfo? tsInfo = rfidReader.readTicketSaleInfo();
//                    if (!tsInfo.HasValue)//未做过销售的
//                    {
//                        #region //验证出票与购票的票种是否相同
//                        if (tpInfo.TicketClass.ToString() == this.parent.mSelfHelpClass.TicketTypeID)
//                        {
//                            //获到票种实体
//                            mticketType = D_TicketType.GetTicketTypeInfo(tpInfo.TicketClass.ToString());

//                            #region//首先判断票种是否存在
//                            if (mticketType.TICKET_TYPE_ID != null)//当前票票种存在的
//                            {
//                                Yu_Price = T_SellTicketRecord.Get_sl_period_Price(tpInfo.TicketClass.ToString());//获取预售期票价
//                                #region//是否团体票
//                                if (mticketType.TEAM_FLAG == "Y")//团体票
//                                {
//                                    BeginDate = DateTime.Now;
//                                    EndDate = DateTime.Now.AddMinutes(M_Configuration.Teamtickettime);//从参数表中取出结束时间//Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 16:00:00"));
//                                    arg.message = "此门票为团体票,不能在此销售!";
//                                    //  reportChange(-1, arg, null);
//                                    wkThread_progressReport(-1, arg, null);
//                                    rfidReader.LongBeep();
//                                }
//                                else
//                                {
//                                    if (mticketType.DAY_VALIDATE_FLAG == "Y")//当日有效
//                                    {
//                                        BeginDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
//                                        EndDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));
//                                    }
//                                    else //非当日有效
//                                    {
//                                        BeginDate = DateTime.Now;
//                                        EndDate = DateTime.Now.AddYears(2);
//                                    }
//                                }
//                                #endregion
//                                #region//  循环写票
//                                if (this.cardCount > 0)//未出完票的
//                                {
//                                    //************************写入售票内容*****************
//                                    #region//写票
//                                    if (rfidReader.writeTicketSaleInfo(BeginDate, EndDate, 1))
//                                    {
//                                        if (this.parent.mSelfHelpClass.OperType == "0")//购票时生成销售明细单号
//                                        {
//                                            XiaoMX = T_SellTicketRecord.CreateTableUID(M_Configuration.CLIENTID, T_SellTicketRecord.LocalTicketMX_Prefix_ZG, this.cardCount);
//                                        }
//                                        //保存数据
//                                        #region//保存
//                                        if (T_SellTicketRecord.Insert_SL_ORDER_DETAIL(mticketType, tpInfo.ID.ToString(), Convert.ToInt32(this.parent.mSelfHelpClass.OperType), this.parent.mSelfHelpClass, XiaoMX,this.cardCount))
//                                        {
//                                            rfidReader.Beep();
//                                            try
//                                            {
//                                                if (this.api.OutputCard())//出票
//                                                {
//                                                    this.cardCount--;//读取成功且出票成功再计数
//                                                }
//                                                else//出票不成功
//                                                {
//                                                    isError = true;
//                                                    arg.message = "未成功出票!";
//                                                    wkThread_progressReport(-1, arg, null);
//                                                }
//                                            }
//                                            catch (Exception ex)
//                                            {
//                                                _log.Error(typeof(GPPage6), ex);
//                                            }
//                                        }
//                                        else
//                                        {
//                                            arg.message = "保存票据信息失败!";
//                                            wkThread_progressReport(-1, arg, null);
//                                        }
//#endregion

//                                    }
//                                    else//写票失败
//                                    {
//                                        arg.message = "写入票据信息失败!";
//                                        wkThread_progressReport(-1, arg, null);
//                                    }
//#endregion
//                                }
//                                else
//                                {
//                                    rfidReader.Beep();
//                                    arg.message = "已完成售票,请取票!";
//                                    wkThread_progressReport(-1, arg, null);
//                                }
//                                #endregion

//                            }
//                            else//该票的票种不存在
//                            {
//                                arg.message = "系统中不存在当前票种!";
//                                //  reportChange(-1, arg, null);
//                                wkThread_progressReport(-1, arg, null);
//                                rfidReader.LongBeep();
//                            }
//                            #endregion
//                        }
//                        else//购票与出票 票种不符
//                        {
//                            arg.message = "当前门票同所购门票的票种不符!";
//                            // reportChange(-1, arg, null);
//                            wkThread_progressReport(-1, arg, null);
//                            rfidReader.LongBeep();
//                        }
//                        #endregion
//                    }
//                    else//已做过销售的
//                    {
//                        arg.message = "当前门票已做过销售处理!";
//                        // reportChange(-1, arg, null);
//                        wkThread_progressReport(-1, arg, null);
//                        rfidReader.LongBeep();
//                    }
//                }
//                catch (Exception ex)
//                {
//                    if (_shoudStop)
//                        return;
//                    arg.message = ex.Message;
//                    //  reportChange(-1, arg, ex);
//                    wkThread_progressReport(-1, arg, ex);
//                    _log.Error(typeof(GPPage6), ex);
//                }
//                finally
//                {
//                    rfidReader.WaitForTicketRemoval(-1);
//                }
//                #endregion


//            }
//        }
        //void wkThread_progressReport(int pProgressPercentage, object UserState, Exception ex)
        //{
        //    arg = (B_CallBackEventArg)UserState;
        //    //this.Invoke(new ShowinfoDelegate(ShowInfo));
        //    if (pProgressPercentage >= 0)
        //    {
        //      //  str_ChangTicket = arg.TicketNumber;
        //    }
        //    else
        //    {
        //      //  MessageBox.Show("提示信息:"+arg.message, T_SellTicketRecord.str_Apption,MessageBoxButton.OK,MessageBoxImage.Information);
        //    }
        //}
        //***************读卡函数************



        //*********************刮票、写票、出票操作函数****************
        private void OutPutTicket()
        {
            //刮票 写票 出票部分
            #region
            bool isok = false;
            bool isup = false;//上传
            try
            {
                while (this.cardCount > 0)                          //未出完票的
                {
                    if (this.parent.mSelfHelpClass.OperType == "1") //取票还是购票 0表示购票 1表示取票 自助售票类
                    {
                        displayErrorMessage("暂不支持自助取票!", "error");
                        break;
                        //取票
                        #region
                        //*****************实际取票时 需要判定的情况比较多
                        //if (M_Configuration.TicketTypeID_1 != M_Configuration.TicketTypeID_2)//不同票种
                        //{
                        //不同票种出票
                        //#region
                        //    if (M_Configuration.TicketTypeID_1 == this.parent.mSelfHelpClass.listorderdetail[this.cardCount - 1].TicketTypeId)
                        //    {
                        //        curBoxNumber = 0;//A票箱号
                        //        this.parent.mSelfHelpClass.BoxNumber = "A";
                        //        _log.Info("出A票箱!");
                        //    }
                        //    else if (M_Configuration.TicketTypeID_2 == this.parent.mSelfHelpClass.listorderdetail[this.cardCount - 1].TicketTypeId)
                        //    {
                        //        curBoxNumber = 1;//B票箱号
                        //        this.parent.mSelfHelpClass.BoxNumber = "B";
                        //        _log.Info("出B票箱!");
                        //    }
                        //    else
                        //    {
                        //        _log.Error("票箱内不含当前票种!");
                        //    }
                        //    #endregion
                        //}
                        //else if (M_Configuration.TicketTypeID_1 == M_Configuration.TicketTypeID_2)//同一票种的
                        //{
                        //    if (T_SellTicketRecord.Judge_TicketAlarmCount("A", 1))//A箱不够出B票箱
                        //    {
                        //        curBoxNumber = 1;//B票箱号
                        //        this.parent.mSelfHelpClass.BoxNumber = "B";
                        //        _log.Info("出B票箱!");
                        //    }
                        //    else if (T_SellTicketRecord.Judge_TicketAlarmCount("B", 1))//B箱不够出A票箱
                        //    {
                        //        curBoxNumber = 0;//A票箱号
                        //        this.parent.mSelfHelpClass.BoxNumber = "A";
                        //        _log.Info("出A票箱!");
                        //    }
                        //}
                        #endregion
                    }
                    else if (this.parent.mSelfHelpClass.OperType == "0")//取票还是购票 0表示购票 1表示取票 自助售票类
                    {
                        DataTable dt = T_SellTicketRecord.Get_BoxTicketInfo();
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            if (dt.Rows[i]["ticket_type_id"].ToString() == this.parent.mSelfHelpClass.TicketTypeID &&
                                (int)dt.Rows[i]["surplusCount"] >= this.cardCount + (int)dt.Rows[i]["alarmCount"])
                            {
                                if (dt.Rows[i]["boxNumber"].ToString() == "A")
                                {
                                    this.parent.mSelfHelpClass.BoxNumber = "A";
                                    curBoxNumber = 0;//A票箱号
                                    break;
                                }
                                else
                                {
                                    this.parent.mSelfHelpClass.BoxNumber = "B";
                                    curBoxNumber = 1;//B票箱号
                                    break;
                                }
                            }
                        }
                    }
                    Thread.Sleep(100);
                    //1.刮票
                    //num = TPU_SEND_TK(Convert.ToByte(curBoxNumber));//0表示A票箱 1表示B票箱
                    num = CZLHTpuHandler.SendTicket((byte)curBoxNumber);
                    //  num =0;//测试代码
                    _log.Info("刮票结果:" + num.ToString());
                    Thread.Sleep(200);
                    if (num == 0)
                    {
                        _log.Info("刮票成功!");
                        isok = T_SellTicketRecord.Update_SL_TicketCount(this.parent.mSelfHelpClass.BoxNumber);
                        if (isok)
                        {
                            _log.Info("更新票箱余票成功!");
                        }
                        else
                        {
                            _log.Error("更新票箱余票失败!");
                        }
                        //2.写票
                        #region
                        if (WriteTicket() == true)
                        //if(1==1)//测试代码
                        {
                            Thread.Sleep(100);
                            _log.Info("写票成功!");
                            //********************写票成功后是各种更新及上传********

                            #region//各种更新上传
                            //******************出一张票就上传一次
                            for (int i = 0; i < 3; i++)
                            {
                                try
                                {
                                    isup = B_SellTicketUpData.SellTicketDataUP_MX(this.parent.Client, this.parent.mSelfHelpClass.OrderID, this.parent.mSelfHelpClass, CurTicketID); // CurTicketID
                                    if (isup == true)                                                                                                                               //上传成功
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        _log.Warn("上传出票数据失败,开始重试。上传计数:" + (i + 1).ToString());
                                    }
                                }
                                catch (Exception ex)
                                {
                                    _log.Error("上传出票数据失败,开始重试。上传计数:" + (i + 1).ToString(), ex);
                                }
                            }
                            if (isup)
                            {
                                _log.Info("出票上传成功!");
                                //******开始出票**
                                //num = TPU_OUT(0);//出票   TPU_OUT返回1为出票成功
                                num = CZLHTpuHandler.OutTicket(0);
                                //   num = 1;//测试代码
                                if (num != 0)
                                {
                                    //num = TPU_OUT(0);//再出一次
                                    num = CZLHTpuHandler.OutTicket(0);
                                }
                                if (num == 0)//出票成功
                                {
                                    _log.Info("出票成功!");
                                    this.cardCount--;
                                }
                                else//出票失败
                                {
                                    #region//出票失败的
                                    _log.Error("出票操作失败!");
                                    M_Configuration.RunState = Convert.ToInt32(DeviceStatus.OutCardFault); //出票机故障
                                    this.cardCount           = -99999;                                     //返回首页
                                    displayErrorMessage("出票卡票!请联系工作人员取走卡票,并到人工售票窗口补取余票。", "error");
                                    #endregion
                                }
                                //*******开始出票**
                            }
                            else
                            {
                                //*******************************数据上传失败就回收票*********
                                try
                                {
                                    rfidReader.clearTicketSaleInfo();
                                }
                                catch { }
                                //num = TPU_OUT(1);//出不了就回收   废票回收无法判断是否执行成功
                                num = CZLHTpuHandler.OutTicket(1);
                                if (num == 0)//回收成功
                                {
                                    _log.Info("出票上传失败,门票回收成功!");
                                }
                                else
                                {
                                    _log.Error("出票上传失败,门票回收失败!状态码:" + num.ToString());
                                }

                                //*****更新废票箱
                                isok = T_SellTicketRecord.Update_SL_AbolishCount(false);//更新废票箱票数;
                                if (isok)
                                {
                                    _log.Info("更新废票箱成功!");
                                }
                                else
                                {
                                    _log.Error("更新废票箱失败!");
                                }
                                //*******************************数据上传失败就回收票*********

                                this.cardCount = -99999;
                                this.parent.ticketbox_isErr = 100;
                            }
                            #endregion
                        }
                        else
                        {
                            #region 写票失败的
                            try
                            {
                                rfidReader.clearTicketSaleInfo();
                            }
                            catch { }
                            num = CZLHTpuHandler.OutTicket(1);
                            if (num == 0)//回收成功
                            {
                                _log.Info("写票操作失败,门票回收成功!");
                            }
                            else
                            {
                                _log.Error("写票操作失败,门票回收失败!状态码:" + num.ToString());
                            }

                            //          废票回收无法获取到是否回收成功状态
                            //*****更新废票箱
                            isok = T_SellTicketRecord.Update_SL_AbolishCount(false);//更新废票箱票数;
                            if (isok)
                            {
                                _log.Info("更新废票箱成功!");
                            }
                            else
                            {
                                _log.Error("更新废票箱失败!");
                            }

                            if (this.parent.ticketbox_isErr == 1)//票种放反
                            {
                                this.cardCount = 0;
                            }
                            #endregion
                        }
                        #endregion
                    }
                    else
                    {
                        //_log.Error("刮票操作失败!");
                        //TPU_RST(0);
                        num = CZLHTpuHandler.Reset();
                        if (num == 0)//回收成功
                        {
                            _log.Error("刮票操作失败,控制板重置成功!");
                        }
                        else
                        {
                            _log.Error("刮票操作失败,控制板重置失败!状态码:" + num.ToString());
                        }

                        M_Configuration.RunState = Convert.ToInt32(DeviceStatus.OutCardFault); //出票机故障
                        this.cardCount           = -99999;                                     //返回首页
                        displayErrorMessage("出票失败!请到人工售票窗口取票。", "error");
                    }
                }
                #endregion
                if (this.cardCount == 0)
                {
                    displayErrorMessage("出票完成,请取走门票。", "INFO", true);
                }
            }
            catch (Exception ex)
            {
                _log.Error("出票失败,未知异常。", ex);
                displayErrorMessage("出票失败!请到人工售票窗口取票。", "error");
            }
            finally
            {
                CZLHTpuHandler.Close();
            }
        }