/// <summary>
        /// 刷卡结果处理
        /// </summary>
        private void PosCardHandle(string cardNo)
        {
            try
            {
                clientObject.ReaderInfo = EnterOutOperate.GetReaderInfo(cardNo);
                #region 判断当前读者状态
                EnterOutLogType nowReaderStatus = EnterOutLogType.Leave;
                if (clientObject.ReaderInfo.EnterOutLog != null && clientObject.ReaderInfo.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
                {
                    nowReaderStatus = clientObject.ReaderInfo.EnterOutLog.EnterOutState;
                }
                else if (clientObject.ReaderInfo.BespeakLog.Count > 0)
                {
                    nowReaderStatus = EnterOutLogType.BespeakWaiting;
                }
                else if (clientObject.ReaderInfo.WaitSeatLog != null)
                {
                    nowReaderStatus = EnterOutLogType.Waiting;
                }
                #endregion


                switch (nowReaderStatus)
                {
                case EnterOutLogType.Leave:
                case EnterOutLogType.BespeakWaiting:
                case EnterOutLogType.Waiting:
                    HandelMessage("   没有座位,谢谢配合。", EnumSimpleTipFormIco.Small);
                    break;

                //posCardHandle.BespeakSeatWait();
                //break;
                case EnterOutLogType.BookingConfirmation:
                case EnterOutLogType.SelectSeat:
                case EnterOutLogType.ContinuedTime:
                case EnterOutLogType.ComeBack:
                case EnterOutLogType.ReselectSeat:
                case EnterOutLogType.WaitingSuccess:
                    LeaveHandle();    //读者进行离开操作
                    break;

                case EnterOutLogType.ShortLeave:
                    posCardHandle.CometoBack();    //暂时离开回来
                    break;

                default:
                    HandelMessage("   没有座位,谢谢配合。", EnumSimpleTipFormIco.Small);
                    break;
                }
            }
            catch (Exception ex)
            {
                SeatManage.SeatManageComm.WriteLog.Write("操作遇到异常:" + ex.Message);
                HandelMessage("   处理遇到异常,可能是因为网络原因导致,详细信息请查看错误日志。", EnumSimpleTipFormIco.Cry);
            }
        }
        private void LeaveHandle()
        {
            EnterOutLogType leaveHandel = EnterOutLogType.None;

            if (LeaveClientSetting.LeaveState == LeaveState.Choose)
            {
                LeaveSeatForm leaveForm = new LeaveSeatForm();
                leaveForm.ShowDialog();
                leaveHandel = leaveForm.ChooseEnterOutState;
            }
            else if
            (LeaveClientSetting.LeaveState == LeaveState.FreeSeat)
            {
                leaveHandel = EnterOutLogType.Leave;
            }
            else if (LeaveClientSetting.LeaveState == LeaveState.ShortLeave)
            {
                leaveHandel = EnterOutLogType.ShortLeave;
            }
            else if (LeaveClientSetting.LeaveState == LeaveState.ContinuedTime)
            {
                leaveHandel = EnterOutLogType.ContinuedTime;
            }
            switch (leaveHandel)
            {
            case EnterOutLogType.Leave:
                posCardHandle.Leave();
                break;

            case EnterOutLogType.ShortLeave:
                posCardHandle.ShortLeave();
                break;

            case EnterOutLogType.ContinuedTime:
                posCardHandle.ContinuedTime();
                break;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.LoginUserInfo == null || this.UserSchoolInfo == null)
            {
                Response.Redirect(LoginUrl());
                return;
            }
            DataBind();
            int refreshNum = SeatManage.SeatManageComm.CookiesManager.RefreshNum;

            refreshNum += 1;
            SeatManage.SeatManageComm.CookiesManager.RefreshNum = refreshNum;
            if (!IsPostBack)
            {
                LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);
                ShowReaderState();
            }
            //暂时注释ShowBookLogs();
            spanWarmInfo.InnerText = "";
            spanWarmInfo.Visible   = false;
            if (!Page.IsPostBack && refreshNum < 2)
            {
            }
            else
            {
                cmd    = Request.Form["subCmd"];
                bookNo = Request.Form["subBookNo"];
                //SeatManage.IPocketBookOnlineBll.IMainFunctionPageBll mainFunctionBll = new SeatManage.PocketBookOnLine.Bll.MainFunctionBll();
                ReadingRoomStatus roomState = new ReadingRoomStatus();
                if (LoginUserInfo.AjmReadingRoomState != null)
                {
                    roomState = (ReadingRoomStatus)Enum.Parse(typeof(ReadingRoomStatus), LoginUserInfo.AjmReadingRoomState.OpenCloseState);
                }

                switch (cmd)
                {
                case "shortLeave":
                    shortLeaveHandle();                                                                                      //设置读者暂离
                    this.LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo); //重新绑定读者状态
                    ShowReaderState();
                    break;

                case "leave":
                    //释放读者座位
                    freeSeat();
                    this.LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);;
                    ShowReaderState();
                    break;

                case "LoginOut":
                    Session.Clear();
                    Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(-1);
                    SeatManage.SeatManageComm.CookiesManager.RefreshNum = 0;
                    Response.Redirect(LogoutUrl());
                    break;

                case "ContinuedWhen":
                    LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);;
                    EnterOutLogType enterOutLogType = new EnterOutLogType();
                    enterOutLogType =
                        (EnterOutLogType)
                        Enum.Parse(typeof(EnterOutLogType),
                                   LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.EnterOutState);
                    if (LoginUserInfo.AjmReaderStatus.AjmEnterOutLog != null && enterOutLogType != EnterOutLogType.Leave)
                    {
                        switch (enterOutLogType)
                        {
                        case EnterOutLogType.BookingConfirmation:
                        case EnterOutLogType.SelectSeat:
                        case EnterOutLogType.ContinuedTime:
                        case EnterOutLogType.ComeBack:
                        case EnterOutLogType.ReselectSeat:
                        case EnterOutLogType.WaitingSuccess:
                            LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.Remark        = "通过手机预约网站延长座位使用时间";
                            LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.EnterOutState = EnterOutLogType.ContinuedTime.ToString();
                            ContinuedWhen();
                            ShowReaderState();
                            break;

                        case EnterOutLogType.ShortLeave:
                            spanWarmInfo.Visible   = true;
                            spanWarmInfo.InnerText = "续时失败,你处于暂离状态";
                            break;
                        }
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "续时失败,您还没有选座";
                    }
                    break;

                case "ComeBack":
                    enterOutLogType =
                        (EnterOutLogType)
                        Enum.Parse(typeof(EnterOutLogType),
                                   LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.EnterOutState);
                    LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);
                    if (LoginUserInfo.AjmReaderStatus.AjmEnterOutLog != null && enterOutLogType == EnterOutLogType.ShortLeave)
                    {
                        LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.Remark        = "通过手机预约网站恢复在座";
                        LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.EnterOutState = EnterOutLogType.ComeBack.ToString();
                        ComeBack();
                        ShowReaderState();
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "暂离回来失败,您还没有暂离";
                    }
                    break;

                case "cancel":
                    CancelBookLog(bookNo);
                    confrimSeat();
                    LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);    //重新绑定读者状态
                    ShowReaderState();
                    //暂时注释ShowBookLogs();
                    break;

                case "CancelWait":
                    if (LoginUserInfo.AjmReaderStatus.AjmWaitSeatLogs != null)
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = weiXinService.CancelWait(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);
                        ShowReaderState();
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "当前没有等待的座位";
                    }
                    break;

                case "CancelBook":
                    if (LoginUserInfo.AjmReaderStatus.AjmBespeakLogs != null && LoginUserInfo.AjmReaderStatus.AjmBespeakLogs.Count > 0)
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = weiXinService.CancelBesapeakById(int.Parse(LoginUserInfo.AjmReaderStatus.AjmBespeakLogs[0].Id), UserSchoolInfo.SchoolNo);

                        LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);    //重新绑定读者状态
                        ShowReaderState();
                        //暂时注释ShowBookLogs();
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "当前没有预约的座位";
                    }
                    break;

                case "BookConfirm":
                    if (LoginUserInfo.AjmReaderStatus.AjmBespeakLogs != null && LoginUserInfo.AjmReaderStatus.AjmBespeakLogs.Count > 0)
                    {
                        confrimSeat();
                        LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);    //重新绑定读者状态
                        ShowReaderState();
                        //暂时注释ShowBookLogs();
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "当前没有预约的座位";
                    }
                    break;
                }
                subCmd.Value = "";
            }
        }
Пример #4
0
        public void PosCardHandle(string cardNo)
        {
            try
            {
                ClientObject.EnterOutLogData         = new OperateResult.OperateResult();
                ClientObject.EnterOutLogData.Student = EnterOutOperate.GetReaderSeatState(cardNo);
                #region 判断当前读者状态
                EnterOutLogType nowReaderStatus = EnterOutLogType.Leave;
                if (ClientObject.EnterOutLogData.Student.EnterOutLog != null && ClientObject.EnterOutLogData.Student.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
                {
                    //如果记录不为空,设置为当前记录状态
                    nowReaderStatus = ClientObject.EnterOutLogData.Student.EnterOutLog.EnterOutState;
                }
                else if (ClientObject.EnterOutLogData.Student.BespeakLog.Count > 0)
                {
                    nowReaderStatus = EnterOutLogType.BespeakWaiting;
                }
                else if (ClientObject.EnterOutLogData.Student.WaitSeatLog != null)
                {
                    nowReaderStatus = EnterOutLogType.Waiting;
                }
                #endregion
                //如果有未读的消息则显示消息窗口
                if (ClientObject.EnterOutLogData.Student.NoticeInfo.Count > 0)
                {
                    ReaderNoteWindowObject.GetInstance().Window.ShowMessage();
                }
                //根据读者状态进入不同操作
                switch (nowReaderStatus)
                {
                case EnterOutLogType.Leave:
                    ClientObject.EnterOutLogData.EnterOutlog        = new SeatManage.ClassModel.EnterOutLogInfo();
                    ClientObject.EnterOutLogData.EnterOutlog.CardNo = cardNo;
                    posCardHandle.ChooseSeat();
                    break;

                case EnterOutLogType.BespeakWaiting:
                    posCardHandle.BespeakCheck();
                    break;

                case EnterOutLogType.BookingConfirmation:
                case EnterOutLogType.SelectSeat:
                case EnterOutLogType.ContinuedTime:
                case EnterOutLogType.ComeBack:
                case EnterOutLogType.ReselectSeat:
                case EnterOutLogType.WaitingSuccess:
                    ClientObject.EnterOutLogData.EnterOutlog = ClientObject.EnterOutLogData.Student.EnterOutLog;
                    posCardHandle.LeaveOperate();
                    break;

                case EnterOutLogType.ShortLeave:
                    ClientObject.EnterOutLogData.EnterOutlog = ClientObject.EnterOutLogData.Student.EnterOutLog;
                    posCardHandle.CometoBack();
                    break;

                case EnterOutLogType.Waiting:
                    posCardHandle.WaitingSeat();
                    break;
                }
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("执行遇到错误:{0}", ex.Message));
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.Exception);
            }
            finally
            {
                ClientObject.EnterOutLogData = null;
            }
        }
        public string SubmitSeat(string cardNo, string seatNum, string readingRoomNum)
        {
            try
            {
                if (!IsPushAccount(cardNo))
                {
                    string readCardRemark = ConfigurationManager.AppSettings["ReadCardRemark"] ?? "请先刷卡";

                    return(readCardRemark);
                }
                List <string> roomNums = new List <string>();
                roomNums.Add(readingRoomNum);
                List <ReadingRoomInfo> rooms = seatManage.GetReadingRoomInfo(roomNums);
                if (rooms.Count == 0)
                {
                    return("没有找到对应的阅览室");
                }
                ReadingRoomSetting roomSet         = rooms[0].Setting;
                ReaderInfo         reader          = GetReaderInfo(cardNo);
                EnterOutLogType    nowReaderStatus = EnterOutLogType.Leave;
                if (reader.EnterOutLog != null && reader.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
                {
                    nowReaderStatus = reader.EnterOutLog.EnterOutState;
                }
                else if (reader.BespeakLog.Count > 0)
                {
                    nowReaderStatus = EnterOutLogType.BespeakWaiting;
                }
                else if (reader.WaitSeatLog != null)
                {
                    nowReaderStatus = EnterOutLogType.Waiting;
                }

                switch (nowReaderStatus)
                {
                case EnterOutLogType.Leave:
                    if (seatManage.GetReaderChooseSeatTimes(cardNo, roomSet.PosTimes.Minutes) >= roomSet.PosTimes.Times)
                    {
                        return("选座频繁。");
                    }
                    EnterOutLogInfo enterOutlog = new EnterOutLogInfo();
                    enterOutlog.CardNo        = cardNo;
                    enterOutlog.ReadingRoomNo = readingRoomNum;
                    enterOutlog.Remark        = "读者通过手机客户端选择座位";
                    enterOutlog.SeatNo        = seatNum;
                    enterOutlog.Flag          = EnumType.Operation.Reader;
                    enterOutlog.EnterOutType  = EnumType.LogStatus.Valid;
                    enterOutlog.EnterOutState = EnumType.EnterOutLogType.SelectSeat;
                    enterOutlog.EnterOutLogNo = SeatManage.SeatManageComm.SeatComm.RndNum();
                    int newLogId = -1;
                    if (seatManage.AddEnterOutLogInfo(enterOutlog, ref newLogId) == HandleResult.Successed)
                    {
                        return("选座成功!");
                    }
                    else
                    {
                        return("未知原因,选择座位失败");
                    }
                    break;

                case EnterOutLogType.BespeakWaiting:
                    return("您已有等待签到的座位");

                case EnterOutLogType.BookingConfirmation:
                case EnterOutLogType.SelectSeat:
                case EnterOutLogType.ContinuedTime:
                case EnterOutLogType.ComeBack:
                case EnterOutLogType.ReselectSeat:
                case EnterOutLogType.WaitingSuccess:
                case EnterOutLogType.ShortLeave:
                    return("您已有座位");

                case EnterOutLogType.Waiting:
                    return("您当前在等待其他座位");
                }
                return("读者状态错误");
            }
            catch (Exception ex)
            {
                SeatManageComm.WriteLog.Write(string.Format("扫码入座失败:{0}", ex.Message));
                return("系统错误,选择座位失败");
            }
        }
        //#endregion


        #region 刷卡处理
        public void PosCardHandle(string cardNo)
        {
            try
            {
                clientObject.EnterOutLogData         = new OperateResult.OperateResult();
                clientObject.EnterOutLogData.Student = SeatManage.Bll.EnterOutOperate.GetReaderInfo(cardNo);
                #region 判断当前读者状态
                EnterOutLogType nowReaderStatus = EnterOutLogType.Leave;
                if (clientObject.EnterOutLogData.Student.EnterOutLog != null && clientObject.EnterOutLogData.Student.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
                {
                    //如果记录不为空,设置为当前记录状态
                    nowReaderStatus = clientObject.EnterOutLogData.Student.EnterOutLog.EnterOutState;
                }
                else if (clientObject.EnterOutLogData.Student.BespeakLog.Count > 0)
                {
                    nowReaderStatus = EnterOutLogType.BespeakWaiting;
                }
                else if (clientObject.EnterOutLogData.Student.WaitSeatLog != null)
                {
                    nowReaderStatus = EnterOutLogType.Waiting;
                }
                #endregion
                //如果有未读的消息则显示消息窗口
                if (clientObject.EnterOutLogData.Student.NoticeInfo.Count > 0)
                {
                    ReaderNoticeWindow noteWindow = new ReaderNoticeWindow();
                    noteWindow.ShowDialog();
                }
                //根据读者状态进入不同操作
                switch (nowReaderStatus)
                {
                case EnterOutLogType.Leave:
                    clientObject.EnterOutLogData.EnterOutlog        = new SeatManage.ClassModel.EnterOutLogInfo();
                    clientObject.EnterOutLogData.EnterOutlog.CardNo = cardNo;
                    posCardHandle.ChooseSeat();
                    break;

                case EnterOutLogType.BespeakWaiting:
                    posCardHandle.BespeakSeatWait();
                    break;

                case EnterOutLogType.BookingConfirmation:
                case EnterOutLogType.SelectSeat:
                case EnterOutLogType.ContinuedTime:
                case EnterOutLogType.ComeBack:
                case EnterOutLogType.ReselectSeat:
                case EnterOutLogType.WaitingSuccess:
                    clientObject.EnterOutLogData.EnterOutlog = clientObject.EnterOutLogData.Student.EnterOutLog;
                    posCardHandle.LeaveOperate();
                    break;

                case EnterOutLogType.ShortLeave:
                    clientObject.EnterOutLogData.EnterOutlog = clientObject.EnterOutLogData.Student.EnterOutLog;
                    posCardHandle.CometoBack();
                    break;

                case EnterOutLogType.Waiting:
                    posCardHandle.WaitingSeat();
                    break;
                }
            }
            catch (Exception ex)
            {
                SeatManage.SeatManageComm.WriteLog.Write(string.Format("执行遇到错误:{0}", ex.Message));
                SeatClientV3.FunWindow.MessageWindow popWindow = new FunWindow.MessageWindow(SeatManage.EnumType.MessageType.Exception);
                popWindow.ShowDialog();
            }
            finally
            {
                clientObject.EnterOutLogData = null;
            }
        }
Пример #7
0
        /// <summary>
        /// 更换座位
        /// </summary>
        /// <param name="cardNo">学号</param>
        /// <param name="seatNum">要更换的座位号</param>
        /// <param name="readingRoomNum">阅览室编号</param>
        /// <returns></returns>
        public string ChangeSeat(string cardNo, string seatNum, string readingRoomNum)
        {
            try
            {
                List <string> roomNums = new List <string>();
                roomNums.Add(readingRoomNum);
                List <ReadingRoomInfo> rooms = seatManage.GetReadingRoomInfo(roomNums);
                if (rooms.Count == 0)
                {
                    return("没有找到对应的阅览室");
                }
                ReadingRoomSetting roomSet         = rooms[0].Setting;
                ReaderInfo         reader          = GetReaderInfo(cardNo);
                EnterOutLogType    nowReaderStatus = EnterOutLogType.Leave;
                if (reader.EnterOutLog != null && reader.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
                {
                    nowReaderStatus = reader.EnterOutLog.EnterOutState;
                }
                else if (reader.BespeakLog.Count > 0)
                {
                    nowReaderStatus = EnterOutLogType.BespeakWaiting;
                }
                else if (reader.WaitSeatLog != null)
                {
                    nowReaderStatus = EnterOutLogType.Waiting;
                }

                switch (nowReaderStatus)
                {
                case EnterOutLogType.Leave:
                    return("你还没有选座");

                case EnterOutLogType.BespeakWaiting:
                    if (reader.BespeakLog[0].SeatNo == seatNum && reader.BespeakLog[0].BsepeakState == BookingStatus.Waiting)
                    {
                        EnterOutLogInfo newEnterOutLog = new EnterOutLogInfo();    //构造
                        newEnterOutLog.CardNo        = reader.BespeakLog[0].CardNo;
                        newEnterOutLog.EnterOutLogNo = SeatComm.RndNum();
                        newEnterOutLog.EnterOutState = EnterOutLogType.BookingConfirmation;
                        newEnterOutLog.EnterOutType  = LogStatus.Valid;
                        newEnterOutLog.Flag          = Operation.Reader;
                        newEnterOutLog.ReadingRoomNo = reader.BespeakLog[0].ReadingRoomNo;
                        newEnterOutLog.SeatNo        = reader.BespeakLog[0].SeatNo;
                        newEnterOutLog.Remark        = string.Format("通过扫码入座预约的{0} {1}号座位", reader.BespeakLog[0].ReadingRoomName, reader.BespeakLog[0].ShortSeatNum);
                        int logid = -1;
                        try
                        {
                            HandleResult result = seatManage.AddEnterOutLogInfo(newEnterOutLog, ref logid);     //添加入座记录
                            if (result == HandleResult.Successed)
                            {
                                reader.BespeakLog[0].BsepeakState = BookingStatus.Confinmed;
                                reader.BespeakLog[0].CancelPerson = Operation.Reader;
                                reader.BespeakLog[0].CancelTime   = seatManage.GetServerDateTime();
                                reader.BespeakLog[0].Remark       = string.Format("通过扫码入座预约的{0} {1}号座位", reader.BespeakLog[0].ReadingRoomName, reader.BespeakLog[0].ShortSeatNum);
                                seatManage.UpdateBespeakLogInfo(reader.BespeakLog[0]);
                            }
                            else
                            {
                                return("预约入座失败。");
                            }
                        }
                        catch (Exception ex)
                        {
                            SeatManageComm.WriteLog.Write(string.Format("扫码预约入座确认失败:{0}", ex.Message));
                            return("未知原因,预约入座确认失败");
                        }
                    }
                    else
                    {
                        return(string.Format("您已预约{0} {1}号座位,请扫该座位上的条形码", reader.BespeakLog[0].ReadingRoomName, reader.BespeakLog[0].ShortSeatNum));
                    }
                    break;

                case EnterOutLogType.BookingConfirmation:
                case EnterOutLogType.SelectSeat:
                case EnterOutLogType.ContinuedTime:
                case EnterOutLogType.ComeBack:
                case EnterOutLogType.ReselectSeat:
                case EnterOutLogType.WaitingSuccess:
                case EnterOutLogType.ShortLeave:
                    if (seatManage.GetReaderChooseSeatTimes(cardNo, roomSet.PosTimes.Minutes) >= roomSet.PosTimes.Times)
                    {
                        return("选座频繁。");
                    }
                    EnterOutLogInfo enterOutlog = reader.EnterOutLog;
                    enterOutlog.ReadingRoomNo = readingRoomNum;
                    enterOutlog.Remark        = "通过扫码更换到该座位";
                    enterOutlog.SeatNo        = seatNum;
                    enterOutlog.Flag          = EnumType.Operation.Reader;
                    enterOutlog.EnterOutType  = EnumType.LogStatus.Valid;
                    enterOutlog.EnterOutState = EnumType.EnterOutLogType.ReselectSeat;
                    enterOutlog.EnterOutLogNo = SeatManage.SeatManageComm.SeatComm.RndNum();
                    int newLogId = -1;
                    if (seatManage.AddEnterOutLogInfo(enterOutlog, ref newLogId) == HandleResult.Successed)
                    {
                        return("");
                    }
                    else
                    {
                        return("未知原因,更换座位失败");
                    }

                case EnterOutLogType.Waiting:
                    return("您当前在等待其他座位");
                }
                return("读者状态错误");
            }
            catch (Exception ex)
            {
                SeatManageComm.WriteLog.Write(string.Format("扫码入座失败:{0}", ex.Message));
                return("系统错误,更换座位失败");
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string strparam = Request.QueryString["param"];

            if (string.IsNullOrEmpty(strparam))
            {
                spanWarmInfo.InnerText = "非正常的访问!";
                divHanderPanel.Style.Add("display", "none");
                return;
            }
            Code.ScanCodeParamModel param = new Code.ScanCodeParamModel(strparam);
            seatNo        = param.SeatNum;
            readingRoomNo = param.ReadingRoomNum;
            //if (Request.Cookies["userInfo"] != null)//存在记录的cookies信息
            //{
            //    cardNo = this.LoginUserInfo.CardNo;
            //}
            if (this.LoginUserInfo != null)//存在记录的cookies信息
            {
                cardNo = this.LoginUserInfo.StudentNo;
            }
            else
            {
                string url = Request.Url.AbsoluteUri;
                //string url = "/QRcodeDecode/SeatInfo.aspx?param=" + strparam;
                Response.Redirect(LoginUrl() + "?url=" + url);
            }
            if (!IsPostBack)
            {
                //DataBind(cardNo, param.SeatNum, param.ReadingRoomNum);
                ShowReaderState();
            }
            else
            {
                string cmd = Request.Form["subCmd"];
                string result;
                switch (cmd)
                {
                case "changeSeat":
                    result = weiXinService.ChangeSeat(LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.SeatNo,
                                                      LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.RoomNo, LoginUserInfo.StudentNo,
                                                      UserSchoolInfo.SchoolNo);
                    if (!string.IsNullOrEmpty(result))
                    {
                        spanWarmInfo.InnerText = result;
                    }
                    else
                    {
                        spanWarmInfo.InnerText = "更换座位成功";
                        //DataBind(cardNo, param.SeatNum, param.ReadingRoomNum);
                        ShowReaderState();
                        //this.divHanderPanel.Style.Add("display", "none");
                    }
                    break;

                    #region 注释
                case "selectSeat":
                    //此方法需要修改
                    result = "";
                    //result = ((SeatManage.IPocketBespeak.IMainFunctionPage_Ex)handler).SelectSeat(this.UserSchoolInfo, cardNo, param.SeatNum, param.ReadingRoomNum);
                    if (!string.IsNullOrEmpty(result))
                    {
                        this.spanWarmInfo.InnerText = result;
                    }
                    else
                    {
                        this.spanWarmInfo.InnerText = "选择座位成功";
                        //DataBind(cardNo, param.SeatNum, param.ReadingRoomNum);
                        ShowReaderState();
                        //this.divHanderPanel.Style.Add("display", "none");
                    }
                    break;

                    //case "waitSeat":
                    //    if (!handler2.IsCanWaitSeat(this.UserSchoolInfo, this.LoginUserInfo.StudentNo, readingRoomNo))
                    //    {
                    //        spanWarmInfo.Visible = true;
                    //        spanWarmInfo.InnerText = "您等待座位的间隔过短,请稍后重试。";
                    //    }
                    //    else
                    //    {
                    //        WaitSeatLogInfo waitInfo = new WaitSeatLogInfo();
                    //        waitInfo.CardNo = this.LoginUserInfo.StudentNo;
                    //        waitInfo.SeatNo = seatNo;
                    //        waitInfo.NowState = SeatManage.EnumType.LogStatus.Valid;
                    //        waitInfo.OperateType = SeatManage.EnumType.Operation.Reader;
                    //        waitInfo.WaitingState = SeatManage.EnumType.EnterOutLogType.Waiting;
                    //        result = handler2.SubmitWaitInfo(this.UserSchoolInfo, waitInfo);
                    //        if (!string.IsNullOrEmpty(result))
                    //        {
                    //            this.spanWarmInfo.InnerText = result;
                    //        }
                    //        else
                    //        {
                    //            this.spanWarmInfo.InnerText = "等待座位成功";
                    //        }
                    //    }
                    //    ShowReaderState();
                    //    break;
                    #endregion
                case "shortLeave":
                    shortLeaveHandle();    //设置读者暂离
                    //this.LoginUserInfo = handler.GetReaderInfo(this.UserSchoolInfo, this.LoginUserInfo.CardNo);//重新绑定读者状态
                    ShowReaderState();
                    break;

                case "leave":
                    //释放读者座位
                    freeSeat();
                    //this.LoginUserInfo = handler.GetReaderInfo(this.UserSchoolInfo, this.LoginUserInfo.CardNo);
                    ShowReaderState();
                    break;

                case "LoginOut":
                    Session.Clear();
                    Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(-1);
                    SeatManage.SeatManageComm.CookiesManager.RefreshNum = 0;
                    Response.Redirect(LogoutUrl());
                    break;

                    #region 注释
                case "ContinuedWhen":
                    LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);
                    EnterOutLogType enterOutLogType = new EnterOutLogType();
                    enterOutLogType = (EnterOutLogType)Enum.Parse(typeof(EnterOutLogType), LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.EnterOutState);
                    if (LoginUserInfo.AjmReaderStatus.AjmEnterOutLog != null && enterOutLogType != EnterOutLogType.Leave)
                    {
                        switch (enterOutLogType)
                        {
                        case EnterOutLogType.BookingConfirmation:
                        case EnterOutLogType.SelectSeat:
                        case EnterOutLogType.ContinuedTime:
                        case EnterOutLogType.ComeBack:
                        case EnterOutLogType.ReselectSeat:
                        case EnterOutLogType.WaitingSuccess:
                            LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.Remark        = "通过手机预约网站延长座位使用时间";
                            LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.EnterOutState = EnterOutLogType.ContinuedTime.ToString();
                            ContinuedWhen();
                            ShowReaderState();
                            break;

                        case EnterOutLogType.ShortLeave:
                            spanWarmInfo.Visible   = true;
                            spanWarmInfo.InnerText = "续时失败,你处于暂离状态";
                            break;
                        }
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "续时失败,您还没有选座";
                    }
                    break;

                case "ComeBack":
                    LoginUserInfo = weiXinService.GetUserInfo_WeiXin(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);
                    if (this.LoginUserInfo.AjmReaderStatus.AjmEnterOutLog != null && (EnterOutLogType)Enum.Parse(typeof(EnterOutLogType), LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.EnterOutState) == EnterOutLogType.ShortLeave)
                    {
                        this.LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.Remark        = "通过手机预约网站恢复在座";
                        this.LoginUserInfo.AjmReaderStatus.AjmEnterOutLog.EnterOutState = EnterOutLogType.ComeBack.ToString();
                        ComeBack();
                        ShowReaderState();
                        break;
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "暂离回来失败,您还没有暂离";
                    }
                    break;

                    #endregion
                case "cancel":
                    CancelBookLog(bookNo);
                    confrimSeat();
                    //this.LoginUserInfo = handler.GetReaderInfo(this.UserSchoolInfo, this.LoginUserInfo.CardNo);//重新绑定读者状态
                    ShowReaderState();
                    break;

                case "CancelWait":
                    if (LoginUserInfo.AjmReaderStatus.AjmWaitSeatLogs != null)
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = weiXinService.CancelWait(LoginUserInfo.StudentNo, UserSchoolInfo.SchoolNo);
                        ShowReaderState();
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "当前没有等待的座位";
                    }
                    break;

                case "CancelBook":
                    if (LoginUserInfo.AjmReaderStatus.AjmBespeakLogs != null && LoginUserInfo.AjmReaderStatus.AjmBespeakLogs.Count > 0)
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = weiXinService.CancelBesapeakById(int.Parse(LoginUserInfo.AjmReaderStatus.AjmBespeakLogs[0].Id), UserSchoolInfo.SchoolNo);

                        ShowReaderState();
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "当前没有预约的座位";
                    }
                    break;

                case "BookConfirm":
                    if (LoginUserInfo.AjmReaderStatus.AjmBespeakLogs != null && this.LoginUserInfo.AjmReaderStatus.AjmBespeakLogs.Count > 0)
                    {
                        confrimSeat();
                        //this.LoginUserInfo = handler.GetReaderInfo(this.UserSchoolInfo, this.LoginUserInfo.CardNo);//重新绑定读者状态
                        ShowReaderState();
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "当前没有预约的座位";
                    }
                    break;
                }
                subCmd.Value = "";
            }
        }
Пример #9
0
        /// <summary>
        /// 刷卡结果处理
        /// </summary>
        private void PosCardHandle(string cardNo)
        {
            WPF_ReaderInfo.MainWindow read = new WPF_ReaderInfo.MainWindow();


            try
            {
                clientObject.EnterOutLogData.Student = EnterOutOperate.GetReaderInfo(cardNo);
                #region 判断当前读者状态
                EnterOutLogType nowReaderStatus = EnterOutLogType.Leave;
                if (clientObject.EnterOutLogData.Student.EnterOutLog != null && clientObject.EnterOutLogData.Student.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
                {
                    nowReaderStatus = clientObject.EnterOutLogData.Student.EnterOutLog.EnterOutState;
                }
                else if (clientObject.EnterOutLogData.Student.BespeakLog.Count > 0)
                {
                    nowReaderStatus = EnterOutLogType.BespeakWaiting;
                }
                else if (clientObject.EnterOutLogData.Student.WaitSeatLog != null)
                {
                    nowReaderStatus = EnterOutLogType.Waiting;
                }
                #endregion

                posCardHandle.ShowNotice();
                read.reader.ReaderInfo = clientObject.EnterOutLogData.Student;
                if (clientObject.ClientSetting.DeviceSetting.SystemResoultion.WindowSize.Size.X == 1080)
                {
                    read.Left = 0;
                    read.Top  = 720;
                }
                else
                {
                    read.Left = 1024;
                    read.Top  = 0;
                }
                read.Width  = 350;
                read.Height = 200;
                read.Show();

                switch (nowReaderStatus)
                {
                case EnterOutLogType.Leave:
                    clientObject.EnterOutLogData.EnterOutlog        = new SeatManage.ClassModel.EnterOutLogInfo();
                    clientObject.EnterOutLogData.EnterOutlog.CardNo = cardNo;
                    posCardHandle.ChooseSeat();
                    break;

                case EnterOutLogType.BespeakWaiting:
                    posCardHandle.BespeakSeatWait();
                    break;

                case EnterOutLogType.BookingConfirmation:
                case EnterOutLogType.SelectSeat:
                case EnterOutLogType.ContinuedTime:
                case EnterOutLogType.ComeBack:
                case EnterOutLogType.ReselectSeat:
                case EnterOutLogType.WaitingSuccess:
                    clientObject.EnterOutLogData.EnterOutlog = clientObject.EnterOutLogData.Student.EnterOutLog;
                    posCardHandle.LeaveOperate();
                    break;

                case EnterOutLogType.ShortLeave:
                    clientObject.EnterOutLogData.EnterOutlog = clientObject.EnterOutLogData.Student.EnterOutLog;
                    posCardHandle.CometoBack();
                    break;

                case EnterOutLogType.Waiting:
                    posCardHandle.WaitingSeat();
                    break;
                }
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("执行遇到错误:{0}", ex.Message));
                SeatManage.SeatClient.Tip.Tip_Framework tip = new SeatManage.SeatClient.Tip.Tip_Framework(SeatManage.EnumType.TipType.Exception, 7);//显示提示窗体
                tip.ShowDialog();
            }
            finally
            {
                read.Close();
                posCardHandle.Resetting();//执行初始化操作
            }
        }