/// <summary>
        /// 增加一条数据
        /// </summary>
        public int Add(WaitSeatLogInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into T_SM_SeatWaiting(");
            strSql.Append("CardNo,EnterOutLogID,WaitingState,OperateType,StateChangeTime)");
            strSql.Append(" values (");
            strSql.Append("@CardNo,@EnterOutLogID,@WaitingState,@OperateType,@StateChangeTime)");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters =
            {
                new SqlParameter("@CardNo",          SqlDbType.NVarChar, 50),
                new SqlParameter("@EnterOutLogID",   SqlDbType.Int,       4),
                new SqlParameter("@WaitingState",    SqlDbType.Int,       4),
                new SqlParameter("@OperateType",     SqlDbType.Int,       4),
                new SqlParameter("@StateChangeTime", SqlDbType.DateTime)
            };
            parameters[0].Value = model.CardNo;
            parameters[1].Value = model.EnterOutLogID;
            parameters[2].Value = model.WaitingState;
            parameters[3].Value = model.OperateType;
            parameters[4].Value = model.StatsChangeTime;
            object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);

            if (obj == null)
            {
                return(0);
            }
            else
            {
                return(Convert.ToInt32(obj));
            }
        }
        /// <summary>
        /// 等待座位
        /// </summary>
        public void WaitingSeat()
        {
            WaitSeatLogInfo waitLog     = clientobject.EnterOutLogData.Student.WaitSeatLog;
            ReadingRoomInfo roomInfo    = clientobject.EnterOutLogData.Student.AtReadingRoom;
            string          shortSeatNo = SeatComm.SeatNoToShortSeatNo(roomInfo.Setting.SeatNumAmount, waitLog.SeatNo);
            WaitSeatCancel  askForm     = new WaitSeatCancel(roomInfo.Name, shortSeatNo);

            askForm.ShowDialog();
            if (askForm.IsTrue)
            {
                //处理等待记录的Id
                this.clientobject.EnterOutLogData.WaitSeatLogModel              = waitLog;
                this.clientobject.EnterOutLogData.WaitSeatLogModel.OperateType  = Operation.Reader;
                this.clientobject.EnterOutLogData.WaitSeatLogModel.WaitingState = EnterOutLogType.WaitingCancel;
                this.clientobject.EnterOutLogData.WaitSeatLogModel.NowState     = LogStatus.Valid;
                if (T_SM_SeatWaiting.UpdateWaitLog(this.clientobject.EnterOutLogData.WaitSeatLogModel))
                {  //恢复读者的在座状态
                    this.clientobject.EnterOutLogData.EnterOutlog = T_SM_EnterOutLog.GetEnterOutLogInfoById(this.clientobject.EnterOutLogData.WaitSeatLogModel.EnterOutLogID);
                    System.TimeSpan shortleavetimelong = ServiceDateTime.Now - clientobject.EnterOutLogData.EnterOutlog.EnterOutTime;
                    this.clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.ComeBack;
                    this.clientobject.EnterOutLogData.EnterOutlog.EnterOutType  = LogStatus.Valid;
                    this.clientobject.EnterOutLogData.EnterOutlog.Flag          = Operation.OtherReader;
                    clientobject.EnterOutLogData.EnterOutlog.TerminalNum        = clientobject.ClientSetting.ClientNo;
                    this.clientobject.EnterOutLogData.EnterOutlog.Remark        = string.Format("读者{0}在{1}终端取消等待{2} {3}号座位,您暂离{4}分钟后恢复为在座状态",
                                                                                                this.clientobject.EnterOutLogData.WaitSeatLogModel.CardNo,
                                                                                                this.clientobject.ClientSetting.ClientNo,
                                                                                                this.clientobject.EnterOutLogData.EnterOutlog.ReadingRoomName,
                                                                                                this.clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo,
                                                                                                shortleavetimelong.Minutes);
                    int newId = -1;
                    EnterOutOperate.AddEnterOutLog(this.clientobject.EnterOutLogData.EnterOutlog, ref newId);
                }
            }
        }
        /// <summary>
        /// 获取读者最后一条等待记录
        /// </summary>
        /// <param name="cardNo"></param>
        /// <returns></returns>
        public WaitSeatLogInfo GetListWaitLogByCardNo(string cardNo, string roomNum)
        {
            StringBuilder strSql = new StringBuilder();

            if (!string.IsNullOrEmpty(cardNo))
            {
                strSql.Append(string.Format(" cardNo='{0}'", cardNo));
            }
            if (!string.IsNullOrEmpty(roomNum))
            {
                if (!string.IsNullOrEmpty(strSql.ToString()))
                {
                    strSql.Append(string.Format(" and ReadingRoomNo ='{0}'", roomNum));
                }
                else
                {
                    strSql.Append(string.Format(" ReadingRoomNo ='{0}'", roomNum));
                }
            }
            DataSet         ds          = t_sm_seatwaiting_dal.GetList(1, strSql.ToString(), "[StateChangeTime] desc", null);
            WaitSeatLogInfo waitSeatLog = null;

            if (ds.Tables[0].Rows.Count > 0)
            {
                waitSeatLog = DataRowToWaitSeatLogInfo(ds.Tables[0].Rows[0]);
            }
            return(waitSeatLog);
        }
Exemplo n.º 4
0
 public bool IsCanWaitSeat(string CardNo, string roomNo)
 {
     try
     {
         WaitSeatLogInfo lastWaitInfo = seatManage.GetListWaitLogByCardNo(CardNo, roomNo);
         if (lastWaitInfo == null)
         {
             return(true);
         }
         List <ReadingRoomInfo> roomInfos = seatManage.GetReadingRooms(new List <string>()
         {
             roomNo
         }, null, null);
         if (roomInfos.Count > 0)
         {
             if (lastWaitInfo != null && lastWaitInfo.SeatWaitTime.AddMinutes(roomInfos[0].Setting.NoManagement.OperatingInterval).CompareTo(DateTime.Now) >= 0)
             {
                 return(false);
             }
             else
             {
                 return(true);
             }
         }
         else
         {
             throw new Exception("获取信息失败!");
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        /// <summary>
        /// 等待座位
        /// </summary>
        public void WaitingSeat()
        {
            WaitSeatLogInfo waitLog = Clientobject.EnterOutLogData.Student.WaitSeatLog;

            //ReadingRoomInfo roomInfo = Clientobject.EnterOutLogData.Student.AtReadingRoom;
            //string shortSeatNo = SeatComm.SeatNoToShortSeatNo(roomInfo.Setting.SeatNumAmount, waitLog.SeatNo);
            PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.WaitSeatCancelWarn);
            if (PopupWindowsObject.GetInstance().Window.ViewModel.OperateResule != HandleResult.Successed)
            {
                return;
            }
            //处理等待记录的Id
            Clientobject.EnterOutLogData.WaitSeatLogModel              = waitLog;
            Clientobject.EnterOutLogData.WaitSeatLogModel.OperateType  = Operation.Reader;
            Clientobject.EnterOutLogData.WaitSeatLogModel.WaitingState = EnterOutLogType.WaitingCancel;
            Clientobject.EnterOutLogData.WaitSeatLogModel.NowState     = LogStatus.Valid;
            if (!T_SM_SeatWaiting.UpdateWaitLog(Clientobject.EnterOutLogData.WaitSeatLogModel))
            {
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.Exception);
                return; //恢复读者的在座状态
            }

            Clientobject.EnterOutLogData.EnterOutlog = T_SM_EnterOutLog.GetEnterOutLogInfoById(Clientobject.EnterOutLogData.WaitSeatLogModel.EnterOutLogID);
            TimeSpan shortleavetimelong = ServiceDateTime.Now - Clientobject.EnterOutLogData.EnterOutlog.EnterOutTime;

            Clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.ComeBack;
            Clientobject.EnterOutLogData.EnterOutlog.EnterOutType  = LogStatus.Valid;
            Clientobject.EnterOutLogData.EnterOutlog.Flag          = Operation.OtherReader;
            Clientobject.EnterOutLogData.EnterOutlog.TerminalNum   = Clientobject.ClientSetting.ClientNo;
            Clientobject.EnterOutLogData.EnterOutlog.Remark        = string.Format("读者{0}在{1}终端取消等待{2} {3}号座位,您暂离{4}分钟后恢复为在座状态", Clientobject.EnterOutLogData.WaitSeatLogModel.CardNo, Clientobject.ClientSetting.ClientNo, Clientobject.EnterOutLogData.EnterOutlog.ReadingRoomName, Clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo, shortleavetimelong.Minutes);
            int newId = -1;

            PopupWindowsObject.GetInstance().Window.ShowMessage(EnterOutOperate.AddEnterOutLog(Clientobject.EnterOutLogData.EnterOutlog, ref newId) == HandleResult.Successed ? TipType.WaitSeatCancel : TipType.Exception);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 添加等待记录
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static int AddWaitSeatLog(WaitSeatLogInfo model)
        {
            IWCFService.ISeatManageService seatService = WcfAccessProxy.ServiceProxy.CreateChannelSeatManageService();
            bool error = false;

            try
            {
                return(seatService.AddWaitLog(model));
            }
            catch (Exception ex)
            {
                error = true;
                SeatManageComm.WriteLog.Write("添加等待记录失败:" + ex.Message);
                return(-1);
            }
            finally
            {
                ICommunicationObject ICommObjectService = seatService as ICommunicationObject;
                try
                {
                    if (ICommObjectService.State == CommunicationState.Faulted)
                    {
                        ICommObjectService.Abort();
                    }
                    else
                    {
                        ICommObjectService.Close();
                    }
                }
                catch
                {
                    ICommObjectService.Abort();
                }
            }
        }
Exemplo n.º 7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.LoginUserInfo == null || this.UserSchoolInfo == null)
            {
                Response.Redirect(LoginUrl());
            }
            seatNo      = Request.QueryString["seatNo"];
            seatShortNo = Request.QueryString["seatShortNo"];
            roomNo      = Request.QueryString["roomNo"];

            if (!IsPostBack)
            {
                BindUIElement(seatNo, seatShortNo);
            }
            string cmd = Request.Form["subCmd"];

            switch (cmd)
            {
            case "query":
                WaitSeatLogInfo waitInfo = new WaitSeatLogInfo();
                waitInfo.CardNo       = this.LoginUserInfo.CardNo;
                waitInfo.SeatNo       = seatNo;
                waitInfo.NowState     = SeatManage.EnumType.LogStatus.Valid;
                waitInfo.OperateType  = SeatManage.EnumType.Operation.Reader;
                waitInfo.WaitingState = SeatManage.EnumType.EnterOutLogType.Waiting;
                try
                {
                    string resultValue = handler.SubmitWaitInfo(this.UserSchoolInfo, waitInfo);    //bookSeatMessageBll.AddBespeakLogInfo(bespeakModel, Session["SchoolConnectionString"].ToString());
                    if (!string.IsNullOrEmpty(resultValue))
                    {
                        page1.Style.Add("display", "none");
                        page2.Style.Add("display", "none");
                        page3.Style.Add("display", "block");
                        MessageTip.InnerText = resultValue;
                        this.LoginUserInfo   = handler1.GetReaderInfo(this.UserSchoolInfo, this.LoginUserInfo.CardNo);
                    }
                    else
                    {
                        page1.Style.Add("display", "none");
                        page2.Style.Add("display", "none");
                        page3.Style.Add("display", "block");
                        MessageTip.InnerText = "未知错误";
                        return;
                    }
                }
                catch (Exception ex)
                {
                    page1.Style.Add("display", "none");
                    page2.Style.Add("display", "none");
                    page3.Style.Add("display", "block");
                    MessageTip.InnerText = ex.Message;
                    return;
                }
                break;
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// 等待座位
        /// </summary>
        /// <returns></returns>
        public bool WaitSeat(SeatUC_ViewModel seatVM)
        {
            WaitSeatLogInfo lastWaitInfo = T_SM_SeatWaiting.GetListWaitLogByCardNo(ClientObject.EnterOutLogData.EnterOutlog.CardNo, ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo);
            ReadingRoomInfo roomInfo     = ClientObject.EnterOutLogData.Student.AtReadingRoom;

            if (!string.IsNullOrEmpty(ClientObject.EnterOutLogData.EnterOutlog.SeatNo))
            {
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.WaitSeatWithSeat);
                return(false);
            }

            if (lastWaitInfo != null && lastWaitInfo.SeatWaitTime.AddMinutes(roomInfo.Setting.NoManagement.OperatingInterval).CompareTo(ServiceDateTime.Now) >= 0)
            {
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.WaitSeatFrequent);
                return(false);
            }
            SeatLockState lockseat = T_SM_Seat.LockSeat(seatVM.LongSeatNo);

            if (lockseat != SeatLockState.Locked) //座位成功加锁
            {
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.SeatLocking);
                return(false);
            }
            ClientObject.EnterOutLogData.WaitSeatLogModel = new WaitSeatLogInfo()
            {
                SeatNo = seatVM.ShortSeatNo
            };
            PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.SetShortWarning);
            ClientObject.EnterOutLogData.WaitSeatLogModel = null;
            if (PopupWindowsObject.GetInstance().Window.ViewModel.OperateResule == HandleResult.Successed)
            {
                //初始化等待记录 记录ID需要待执行之后添加。
                WaitSeatLogInfo waitInfo = new WaitSeatLogInfo();
                waitInfo.CardNo       = ClientObject.EnterOutLogData.EnterOutlog.CardNo;
                waitInfo.NowState     = LogStatus.Valid;
                waitInfo.OperateType  = Operation.Reader;
                waitInfo.WaitingState = EnterOutLogType.Waiting;

                EnterOutLogInfo seatUsingEnterOutInfo = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatVM.LongSeatNo);
                seatUsingEnterOutInfo.EnterOutState = EnterOutLogType.ShortLeave;
                seatUsingEnterOutInfo.EnterOutType  = LogStatus.Valid;
                seatUsingEnterOutInfo.Flag          = Operation.OtherReader;
                seatUsingEnterOutInfo.TerminalNum   = ClientObject.ClientSetting.ClientNo;
                seatUsingEnterOutInfo.Remark        = string.Format("在{0} {1}号座位,被读者{2}在终端{3}设置为暂离并等待该座位", seatUsingEnterOutInfo.ReadingRoomName, seatUsingEnterOutInfo.ShortSeatNo, waitInfo.CardNo, ClientObject.ClientSetting.ClientNo);

                ClientObject.EnterOutLogData.EnterOutlog      = seatUsingEnterOutInfo; //要等待读者的暂离记录
                ClientObject.EnterOutLogData.WaitSeatLogModel = waitInfo;              //等待记录
                ClientObject.EnterOutLogData.FlowControl      = ClientOperation.WaitSeat;
                return(true);
            }
            else
            {
                T_SM_Seat.UnLockSeat(seatVM.LongSeatNo);//确认窗口点击取消或者自动关闭,则解锁。
                return(false);
            }
        }
Exemplo n.º 9
0
 public string CancelWait(WaitSeatLogInfo waitInfo)
 {
     try
     {
         ReadingRoomInfo        roomInfo;
         List <ReadingRoomInfo> roomInfos = seatManage.GetReadingRooms(new List <string>()
         {
             waitInfo.ReadingRoomNo
         }, null, null);
         if (roomInfos.Count > 0)
         {
             roomInfo = roomInfos[0];
         }
         else
         {
             throw new Exception("获取信息失败!");
         }
         //处理等待记录的Id
         waitInfo.OperateType  = Operation.Reader;
         waitInfo.WaitingState = EnterOutLogType.WaitingCancel;
         waitInfo.NowState     = LogStatus.Valid;
         if (seatManage.UpdateWaitLog(waitInfo))
         {  //恢复读者的在座状态
             EnterOutLogInfo enterOutlog        = seatManage.GetEnterOutLogInfoById(waitInfo.EnterOutLogID);
             System.TimeSpan shortleavetimelong = DateTime.Now - enterOutlog.EnterOutTime;
             enterOutlog.EnterOutState = EnterOutLogType.ComeBack;
             enterOutlog.EnterOutType  = LogStatus.Valid;
             enterOutlog.Flag          = Operation.OtherReader;
             enterOutlog.Remark        = string.Format("读者{0}在手机预约网站取消等待{1} {2}号座位,您暂离{3}分钟后恢复为在座状态",
                                                       waitInfo.CardNo,
                                                       enterOutlog.ReadingRoomName,
                                                       enterOutlog.ShortSeatNo,
                                                       shortleavetimelong.Minutes);
             int newId = -1;
             if (seatManage.AddEnterOutLogInfo(enterOutlog, ref newId) == HandleResult.Successed)
             {
                 return("取消等待成功!");
             }
             else
             {
                 return("操作失败!");
             }
         }
         else
         {
             return("操作失败!");
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        /// <summary>
        /// 暂离回来操作
        /// </summary>
        public void CometoBack()
        {
            Clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.ComeBack;//设置读者状态为暂回来
            Clientobject.EnterOutLogData.EnterOutlog.TerminalNum   = Clientobject.ClientSetting.ClientNo;
            TimeSpan shortleavetimelong = ServiceDateTime.Now - Clientobject.EnterOutLogData.EnterOutlog.EnterOutTime;

            Clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("在终端{0}刷卡暂离回来,暂离时长{1}分钟,继续使用{2} {3}号座位", Clientobject.ClientSetting.ClientNo, shortleavetimelong.Minutes, Clientobject.EnterOutLogData.EnterOutlog.ReadingRoomName, Clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
            int newLogId = -1;

            PopupWindowsObject.GetInstance().Window.ShowMessage(EnterOutOperate.AddEnterOutLog(Clientobject.EnterOutLogData.EnterOutlog, ref newLogId) == HandleResult.Failed ? TipType.Exception : TipType.ComeToBack);
            if (Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.NoManagement.Used)
            {
                List <WaitSeatLogInfo> waitSeatLogs = T_SM_SeatWaiting.GetWaitSeatList("", Clientobject.EnterOutLogData.EnterOutlog.EnterOutLogID, null, null, null);
                if (waitSeatLogs.Count > 0)
                {
                    WaitSeatLogInfo waitSeatLog = waitSeatLogs[0];
                    waitSeatLog.NowState     = LogStatus.Fail;
                    waitSeatLog.OperateType  = Operation.OtherReader;
                    waitSeatLog.WaitingState = EnterOutLogType.WaitingCancel;
                    T_SM_SeatWaiting.UpdateWaitLog(waitSeatLog);
                }
            }
            if (!Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.Used)
            {
                return;
            }
            if (Clientobject.EnterOutLogData.Student.CanContinuedTime.AddMinutes(Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.CanDelayTime) > ServiceDateTime.Now)
            {
                return;
            }

            if (Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes == 0 || Clientobject.EnterOutLogData.Student.ContinuedTimeCount < Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes)
            {
                Clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.ContinuedTime;
                Clientobject.EnterOutLogData.EnterOutlog.Flag          = Operation.Service;
                Clientobject.EnterOutLogData.EnterOutlog.TerminalNum   = Clientobject.ClientSetting.ClientNo;
                Clientobject.EnterOutLogData.EnterOutlog.Remark        = string.Format("在终端{0}刷卡暂离回来,暂离期间在座超时,系统自动延长{1} {2}号座位使用时间", Clientobject.ClientSetting.ClientNo, Clientobject.EnterOutLogData.Student.AtReadingRoom.Name, Clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);

                PopupWindowsObject.GetInstance().Window.ShowMessage(EnterOutOperate.AddEnterOutLog(Clientobject.EnterOutLogData.EnterOutlog, ref newLogId) == HandleResult.Successed ? TipType.AutoContinuedTime : TipType.Exception);
            }
            else
            {
                Clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.Leave;
                Clientobject.EnterOutLogData.EnterOutlog.Flag          = Operation.Service;
                Clientobject.EnterOutLogData.EnterOutlog.TerminalNum   = Clientobject.ClientSetting.ClientNo;
                Clientobject.EnterOutLogData.EnterOutlog.Remark        = string.Format("在终端{0}刷卡暂离回来,暂离期间在座超时,续时次数已用完,系统自动释放{1} {2}号座位", Clientobject.ClientSetting.ClientNo, Clientobject.EnterOutLogData.Student.AtReadingRoom.Name, Clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);

                PopupWindowsObject.GetInstance().Window.ShowMessage(EnterOutOperate.AddEnterOutLog(Clientobject.EnterOutLogData.EnterOutlog, ref newLogId) == HandleResult.Successed ? TipType.AutoContinuedTimeNoCount : TipType.Exception);
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// 修改等待记录
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static bool UpdateWaitLog(WaitSeatLogInfo model)
        {
            IWCFService.ISeatManageService seatService = new WcfServiceForSeatManage.SeatManageDateService();
            bool error = false;

            try
            {
                return(seatService.UpdateWaitLog(model));
            }
            catch (Exception ex)
            {
                error = true;
                SeatManageComm.WriteLog.Write("修改等待记录失败:" + ex.Message);
                return(false);
            }
        }
        private WaitSeatLogInfo DataRowToWaitSeatLogInfo(DataRow dr)
        {
            WaitSeatLogInfo wsli = new WaitSeatLogInfo();

            //SeatWaitingID,CardNo,CardNoB,ReadingRoomNo,EnterOutLogID,SeatWaitTime,StateChangeTime,WaitingState,OperateType
            wsli.SeatWaitingID   = dr["SeatWaitingID"].ToString();
            wsli.CardNo          = dr["CardNo"].ToString();
            wsli.CardNoB         = dr["CardNoB"].ToString();
            wsli.ReadingRoomNo   = dr["ReadingRoomNo"].ToString();
            wsli.EnterOutLogID   = int.Parse(dr["EnterOutLogID"].ToString());
            wsli.SeatWaitTime    = DateTime.Parse(dr["SeatWaitTime"].ToString());
            wsli.StatsChangeTime = DateTime.Parse(dr["StateChangeTime"].ToString());
            wsli.WaitingState    = (EnterOutLogType)int.Parse(dr["WaitingState"].ToString());
            wsli.OperateType     = (Operation)int.Parse(dr["OperateType"].ToString());
            wsli.SeatNo          = dr["SeatNo"].ToString();
            return(wsli);
        }
        /// <summary>
        /// 等待座位
        /// </summary>
        public void WaitingSeat()
        {
            WaitSeatLogInfo waitLog = clientobject.EnterOutLogData.Student.WaitSeatLog;
            ReadingRoomInfo roomInfo = clientobject.EnterOutLogData.Student.AtReadingRoom;

            string shortSeatNo = SeatComm.SeatNoToShortSeatNo(roomInfo.Setting.SeatNumAmount, waitLog.SeatNo);
            MessageWindow popWindowCancel = new MessageWindow(MessageType.CancelWaitConfirm);
            popWindowCancel.ShowDialog();
            if (popWindowCancel.viewModel.OperateResule == HandleResult.Successed)
            {
                //处理等待记录的Id
                this.clientobject.EnterOutLogData.WaitSeatLogModel = waitLog;
                this.clientobject.EnterOutLogData.WaitSeatLogModel.OperateType = Operation.Reader;
                this.clientobject.EnterOutLogData.WaitSeatLogModel.WaitingState = EnterOutLogType.WaitingCancel;
                this.clientobject.EnterOutLogData.WaitSeatLogModel.NowState = LogStatus.Valid;
                if (T_SM_SeatWaiting.UpdateWaitLog(this.clientobject.EnterOutLogData.WaitSeatLogModel))
                {  //恢复读者的在座状态

                    this.clientobject.EnterOutLogData.EnterOutlog = T_SM_EnterOutLog.GetEnterOutLogInfoById(this.clientobject.EnterOutLogData.WaitSeatLogModel.EnterOutLogID);
                    System.TimeSpan shortleavetimelong = ServiceDateTime.Now - clientobject.EnterOutLogData.EnterOutlog.EnterOutTime;
                    this.clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.ComeBack;
                    this.clientobject.EnterOutLogData.EnterOutlog.EnterOutType = LogStatus.Valid;
                    this.clientobject.EnterOutLogData.EnterOutlog.Flag = Operation.OtherReader;
                    clientobject.EnterOutLogData.EnterOutlog.TerminalNum = clientobject.ClientSetting.ClientNo;
                    this.clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("读者{0}在{1}终端取消等待{2} {3}号座位,您暂离{4}分钟后恢复为在座状态",
                        this.clientobject.EnterOutLogData.WaitSeatLogModel.CardNo,
                        this.clientobject.ClientSetting.ClientNo,
                        this.clientobject.EnterOutLogData.EnterOutlog.ReadingRoomName,
                        this.clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo,
                        shortleavetimelong.Minutes);
                    int newId = -1;
                    if (EnterOutOperate.AddEnterOutLog(this.clientobject.EnterOutLogData.EnterOutlog, ref newId) == HandleResult.Successed)
                    {
                        MessageWindow popWindow = new MessageWindow(MessageType.CancleWaitSuccess);
                        popWindow.ShowDialog();
                    }
                    else
                    {
                        MessageWindow popWindow = new MessageWindow(MessageType.Exception);
                        popWindow.ShowDialog();
                    }
                }

            }
        }
Exemplo n.º 14
0
 public string SubmitWaitInfo(WaitSeatLogInfo waitInfo)
 {
     try
     {
         SeatManage.ClassModel.EnterOutLogInfo enterOutLog = seatManage.GetEnterOutLogInfoBySeatNum(waitInfo.SeatNo);
         if (enterOutLog == null)
         {
             return("等待座位失败,请刷新页面重新尝试");
         }
         if (enterOutLog.EnterOutState == EnterOutLogType.BookingConfirmation ||
             enterOutLog.EnterOutState == EnterOutLogType.ComeBack ||
             enterOutLog.EnterOutState == EnterOutLogType.ContinuedTime ||
             enterOutLog.EnterOutState == EnterOutLogType.ReselectSeat ||
             enterOutLog.EnterOutState == EnterOutLogType.SelectSeat ||
             enterOutLog.EnterOutState == EnterOutLogType.WaitingSuccess)
         {
             enterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.ShortLeave;
             enterOutLog.EnterOutType  = SeatManage.EnumType.LogStatus.Valid;
             enterOutLog.Flag          = SeatManage.EnumType.Operation.OtherReader;
             enterOutLog.Remark        = string.Format("在{0} {1}号座位,被读者{2}在手机预约网站设置为暂离并等待该座位", enterOutLog.ReadingRoomName, enterOutLog.ShortSeatNo, waitInfo.CardNo);
             int          newLogId = -1;
             HandleResult result   = seatManage.AddEnterOutLogInfo(enterOutLog, ref newLogId);//插入进出记录
             if (result == HandleResult.Successed)
             {
                 waitInfo.EnterOutLogID = newLogId;
                 seatManage.AddWaitLog(waitInfo);
                 return(string.Format("您以成功等待{0} {1}号座位", enterOutLog.ReadingRoomName, enterOutLog.ShortSeatNo));
             }
             else
             {
                 return("等待座位失败!");
             }
         }
         else
         {
             return("此座位不能被等待,请重新选择!");
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        /// <summary>
        /// 增加一条等待记录
        /// </summary>
        /// <param name="model">等待记录</param>
        /// <returns></returns>
        public int AddWaitLog(WaitSeatLogInfo model)
        {
            int             r    = t_sm_seatwaiting_dal.Add(model);
            WaitSeatLogInfo wsli = GetListWaitLogByCardNo(model.CardNo, null);

            if (wsli == null)
            {
                return(r);
            }
            PushMsgInfo msg = new PushMsgInfo();

            msg.Title      = "您好,您已等待成功";
            msg.MsgType    = MsgPushType.UserOperation;
            msg.StudentNum = wsli.CardNo;
            msg.SeatNum    = wsli.EnterOutLog.ShortSeatNo;
            msg.RoomName   = wsli.EnterOutLog.ReadingRoomName;
            msg.Message    = string.Format("您已成功等待{0} {1}号座位。", msg.RoomName, msg.SeatNum);
            SendMsg(msg);

            return(r);
        }
        /// <summary>
        /// 修改一条等待记录
        /// </summary>
        /// <param name="model">等待记录</param>
        /// <returns></returns>
        public bool UpdateWaitLog(WaitSeatLogInfo model)
        {
            model.SeatWaitTime = GetServerDateTime();
            if (model.OperateType == Operation.OtherReader)
            {
                if (model.WaitingState == EnterOutLogType.WaitingCancel)
                {
                    PushMsgInfo msg = new PushMsgInfo();
                    msg.Title      = "您好,您等待已失效";
                    msg.MsgType    = MsgPushType.UserOperation;
                    msg.StudentNum = model.CardNo;
                    msg.SeatNum    = model.EnterOutLog.ShortSeatNo;
                    msg.RoomName   = model.EnterOutLog.ReadingRoomName;

                    msg.Message = string.Format("您等待的{0} {1}号座位已取消", msg.RoomName, msg.SeatNum);

                    switch (model.OperateType)
                    {
                    case Operation.Admin:
                        msg.Message = string.Format("您等待的{0} {1}号座位已被管理员取消", msg.RoomName, msg.SeatNum);
                        break;

                    case Operation.OtherReader:
                        msg.Message = string.Format("原用户归来,您等待的{0} {1}号座位已取消", msg.RoomName, msg.SeatNum);
                        break;

                    case Operation.Service:
                        msg.Message = string.Format("您等待的{0} {1}号座位已被系统取消", msg.RoomName, msg.SeatNum);
                        break;
                    }

                    SendMsg(msg);
                }
            }



            return(t_sm_seatwaiting_dal.Update(model));
        }
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(WaitSeatLogInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update T_SM_SeatWaiting set ");
            strSql.Append("CardNo=@CardNo,");
            strSql.Append("EnterOutLogID=@EnterOutLogID,");
            strSql.Append("StateChangeTime=@StateChangeTime,");
            strSql.Append("WaitingState=@WaitingState,");
            strSql.Append("OperateType=@OperateType");
            strSql.Append(" where SeatWaitingID=@SeatWaitingID ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@CardNo",          SqlDbType.NVarChar,  50),
                new SqlParameter("@EnterOutLogID",   SqlDbType.Int,        4),
                new SqlParameter("@StateChangeTime", SqlDbType.DateTime),
                new SqlParameter("@WaitingState",    SqlDbType.Int,        4),
                new SqlParameter("@OperateType",     SqlDbType.Int,        4),
                new SqlParameter("@SeatWaitingID",   SqlDbType.Int, 4)
            };
            parameters[0].Value = model.CardNo;
            parameters[1].Value = model.EnterOutLogID;
            parameters[2].Value = model.SeatWaitTime;
            parameters[3].Value = model.WaitingState;
            parameters[4].Value = model.OperateType;
            parameters[5].Value = model.SeatWaitingID;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 18
0
        /// <summary>
        ///暂离回来
        /// </summary>
        public void CometoBack()
        {
            clientobject.ReaderInfo.EnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.ComeBack;//设置读者状态为暂回来
            clientobject.ReaderInfo.EnterOutLog.Flag          = SeatManage.EnumType.Operation.Reader;
            List <WaitSeatLogInfo> waitSeatLogs = T_SM_SeatWaiting.GetWaitSeatList("", clientobject.ReaderInfo.EnterOutLog.EnterOutLogID, null, null, null);
            WaitSeatLogInfo        waitSeatLog  = null;
            string clientType = "终端";

            switch (LeaveClientSetting.LeaveState)
            {
            case LeaveState.FreeSeat:
                clientType = "离开终端";
                break;

            case LeaveState.ShortLeave:
                clientType = "暂离终端";
                break;

            case LeaveState.ContinuedTime:
                clientType = "续时终端";
                break;

            case LeaveState.Choose:
                clientType = "自助终端";
                break;
            }
            int newLogId = -1;

            System.TimeSpan shortleavetimelong = ServiceDateTime.Now - clientobject.ReaderInfo.EnterOutLog.EnterOutTime;
            clientobject.ReaderInfo.EnterOutLog.Remark = string.Format("在{0}刷卡暂离回来,暂离时长{1}分钟,继续使用{2} {3}号座位",
                                                                       clientType,
                                                                       shortleavetimelong.Minutes,
                                                                       clientobject.ReaderInfo.EnterOutLog.ReadingRoomName,
                                                                       clientobject.ReaderInfo.EnterOutLog.ShortSeatNo);
            clientobject.ReaderInfo.EnterOutLog.TerminalNum = clientobject.ClientSetting.ClientNo;
            try
            {
                SeatManage.EnumType.HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.ReaderInfo.EnterOutLog, ref newLogId);//插入进出记录
                if (result == SeatManage.EnumType.HandleResult.Successed)
                {
                    if (waitSeatLogs.Count > 0)
                    {
                        waitSeatLog              = waitSeatLogs[0];
                        waitSeatLog.NowState     = SeatManage.EnumType.LogStatus.Fail;
                        waitSeatLog.OperateType  = SeatManage.EnumType.Operation.OtherReader;
                        waitSeatLog.WaitingState = SeatManage.EnumType.EnterOutLogType.WaitingCancel;
                        T_SM_SeatWaiting.UpdateWaitLog(waitSeatLog);//取消等待
                    }
                    if (HandleResult != null)
                    {
                        HandleResult(string.Format("    欢迎回来,您的座位在{0} {1}号。", clientobject.ReaderInfo.EnterOutLog.ReadingRoomName, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo), SeatManage.EnumType.HandleResult.Successed);
                        if (clientobject.ReaderInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.Used)
                        {
                            List <SeatManage.EnumType.EnterOutLogType> typeList = new List <SeatManage.EnumType.EnterOutLogType>();
                            typeList.Add(SeatManage.EnumType.EnterOutLogType.BookingConfirmation);
                            typeList.Add(SeatManage.EnumType.EnterOutLogType.SelectSeat);
                            typeList.Add(SeatManage.EnumType.EnterOutLogType.ReselectSeat);
                            typeList.Add(SeatManage.EnumType.EnterOutLogType.WaitingSuccess);
                            typeList.Add(SeatManage.EnumType.EnterOutLogType.ContinuedTime);
                            List <EnterOutLogInfo> seatTimeEnterOutLog = SeatManage.Bll.T_SM_EnterOutLog.GetEnterOutLogByNo(clientobject.ReaderInfo.EnterOutLog.EnterOutLogNo, typeList, 1);
                            if (seatTimeEnterOutLog.Count > 0)
                            {
                                if (seatTimeEnterOutLog[0].EnterOutState == SeatManage.EnumType.EnterOutLogType.ContinuedTime)
                                {
                                    if (seatTimeEnterOutLog[0].EnterOutTime.AddMinutes(clientobject.ReaderInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.DelayTimeLength) < ServiceDateTime.Now)
                                    {
                                        if (clientobject.ReaderInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes == 0 || clientobject.ReaderInfo.ContinuedTimeCount < clientobject.ReaderInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes)
                                        {
                                            clientobject.ReaderInfo.EnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.ContinuedTime;
                                            clientobject.ReaderInfo.EnterOutLog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                            clientobject.ReaderInfo.EnterOutLog.Remark        = string.Format("在{0}刷卡暂离回来,暂离期间在座超时,系统自动延长{1},{2}号座位使用时间", clientType, clientobject.ReaderInfo.AtReadingRoom.Name, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo);
                                            result = EnterOutOperate.AddEnterOutLog(clientobject.ReaderInfo.EnterOutLog, ref newLogId);//插入进出记录
                                            if (result == SeatManage.EnumType.HandleResult.Successed)
                                            {
                                                HandleResult(string.Format("    暂离期间在座超时,系统自动延长{0},{1}号座位使用时间。", clientobject.ReaderInfo.EnterOutLog.ReadingRoomName, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo), SeatManage.EnumType.HandleResult.Successed);
                                            }
                                            else
                                            {
                                                //TODO:错误提示
                                            }
                                        }
                                        else
                                        {
                                            clientobject.ReaderInfo.EnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.Leave;
                                            clientobject.ReaderInfo.EnterOutLog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                            clientobject.ReaderInfo.EnterOutLog.Remark        = string.Format("在{0}刷卡暂离回来,暂离期间在座超时,续时次数已用完,系统自动释放{1},{2}号座位", clientType, clientobject.ReaderInfo.AtReadingRoom.Name, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo);
                                            result = EnterOutOperate.AddEnterOutLog(clientobject.ReaderInfo.EnterOutLog, ref newLogId);//插入进出记录
                                            if (result == SeatManage.EnumType.HandleResult.Successed)
                                            {
                                                HandleResult(string.Format("    暂离期间在座超时,续时次数已用完,系统自动释放{0},{1}号座位。", clientobject.ReaderInfo.EnterOutLog.ReadingRoomName, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo), SeatManage.EnumType.HandleResult.Successed);
                                            }
                                            else
                                            {
                                                //TODO:错误提示
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    if (seatTimeEnterOutLog[0].EnterOutTime.AddMinutes(clientobject.ReaderInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.UsedTimeLength) < ServiceDateTime.Now)
                                    {
                                        if (clientobject.ReaderInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.IsCanContinuedTime)
                                        {
                                            if (clientobject.ReaderInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes == 0 || clientobject.ReaderInfo.ContinuedTimeCount < clientobject.ReaderInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes)
                                            {
                                                clientobject.ReaderInfo.EnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.ContinuedTime;
                                                clientobject.ReaderInfo.EnterOutLog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                                clientobject.ReaderInfo.EnterOutLog.Remark        = string.Format("在{0}刷卡暂离回来,暂离期间在座超时,系统自动延长{1},{2}号座位使用时间", clientType, clientobject.ReaderInfo.AtReadingRoom.Name, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo);
                                                result = EnterOutOperate.AddEnterOutLog(clientobject.ReaderInfo.EnterOutLog, ref newLogId);//插入进出记录
                                                if (result == SeatManage.EnumType.HandleResult.Successed)
                                                {
                                                    HandleResult(string.Format("    暂离期间在座超时,系统自动延长{0},{1}号座位使用时间。", clientobject.ReaderInfo.EnterOutLog.ReadingRoomName, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo), SeatManage.EnumType.HandleResult.Successed);
                                                }
                                                else
                                                {
                                                    //TODO:错误提示
                                                }
                                            }
                                            else
                                            {
                                                clientobject.ReaderInfo.EnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.Leave;
                                                clientobject.ReaderInfo.EnterOutLog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                                clientobject.ReaderInfo.EnterOutLog.Remark        = string.Format("在{0}刷卡暂离回来,暂离期间在座超时,续时次数已用完,系统自动释放{1},{2}号座位", clientType, clientobject.ReaderInfo.AtReadingRoom.Name, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo);
                                                result = EnterOutOperate.AddEnterOutLog(clientobject.ReaderInfo.EnterOutLog, ref newLogId);//插入进出记录
                                                if (result == SeatManage.EnumType.HandleResult.Successed)
                                                {
                                                    HandleResult(string.Format("    暂离期间在座超时,续时次数已用完,系统自动释放{0},{1}号座位。", clientobject.ReaderInfo.EnterOutLog.ReadingRoomName, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo), SeatManage.EnumType.HandleResult.Successed);
                                                }
                                                else
                                                {
                                                    //TODO:错误提示
                                                }
                                            }
                                        }
                                        else
                                        {
                                            clientobject.ReaderInfo.EnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.Leave;
                                            clientobject.ReaderInfo.EnterOutLog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                            clientobject.ReaderInfo.EnterOutLog.Remark        = string.Format("在{0}刷卡暂离回来,暂离期间在座超时,系统自动释放{1},{2}号座位", clientType, clientobject.ReaderInfo.AtReadingRoom.Name, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo);
                                            result = EnterOutOperate.AddEnterOutLog(clientobject.ReaderInfo.EnterOutLog, ref newLogId);//插入进出记录
                                            if (result == SeatManage.EnumType.HandleResult.Successed)
                                            {
                                                HandleResult(string.Format("    暂离期间在座超时,系统自动释放{0},{1}号座位。", clientobject.ReaderInfo.EnterOutLog.ReadingRoomName, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo), SeatManage.EnumType.HandleResult.Successed);
                                            }
                                            else
                                            {
                                                //TODO:错误提示
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    if (HandleResult != null)
                    {
                        HandleResult("操作失败!", SeatManage.EnumType.HandleResult.Failed);
                    }
                }
            }
            catch (Exception ex)
            {
                SeatManage.SeatManageComm.WriteLog.Write(string.Format("读者{0}暂离回来操作失败:{1}", clientobject.ReaderInfo.CardNo, ex.Message));
                if (HandleResult != null)
                {
                    HandleResult("操作失败!", SeatManage.EnumType.HandleResult.Failed);
                }
            }
        }
Exemplo n.º 19
0
        /// <summary>
        /// 读者等待座位
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void seatBtn_WaitSeat(object sender, MouseButtonEventArgs e)
        {
            WaitSeatLogInfo lastWaitInfo = T_SM_SeatWaiting.GetListWaitLogByCardNo(clientobject.EnterOutLogData.EnterOutlog.CardNo, clientobject.EnterOutLogData.EnterOutlog.ReadingRoomNo);
            ReadingRoomInfo roomInfo     = clientobject.EnterOutLogData.Student.AtReadingRoom;


            if (!string.IsNullOrEmpty(clientobject.EnterOutLogData.EnterOutlog.SeatNo))
            {
                SeatManage.SeatClient.Tip.Tip_Framework tipForm = new SeatManage.SeatClient.Tip.Tip_Framework(SeatManage.EnumType.TipType.WaitSeatWithSeat, 7);
                countDownSeconds.Pause();
                tipForm.ShowDialog();
                countDownSeconds.Start();
                return;
            }

            if (lastWaitInfo != null && lastWaitInfo.SeatWaitTime.AddMinutes(roomInfo.Setting.NoManagement.OperatingInterval).CompareTo(ServiceDateTime.Now) >= 0)
            {
                SeatManage.SeatClient.Tip.Tip_Framework tipForm = new SeatManage.SeatClient.Tip.Tip_Framework(SeatManage.EnumType.TipType.WaitSeatFrequent, 7);
                countDownSeconds.Pause();
                tipForm.ShowDialog();
                countDownSeconds.Start();
                return;
            }
            SeatButton seatBtn = sender as SeatButton;

            SeatManage.EnumType.SeatLockState lockseat = T_SM_Seat.LockSeat(seatBtn.SeatNo);
            if (lockseat == SeatManage.EnumType.SeatLockState.Locked)//座位成功加锁
            {
                SetShortWarning warnForm = new SetShortWarning(seatBtn.ShortSeatNo);
                countDownSeconds.Pause();
                warnForm.ShowDialog();
                countDownSeconds.Start();
                if (warnForm.IsTrue)
                {
                    //初始化等待记录 记录ID需要待执行之后添加。
                    WaitSeatLogInfo waitInfo = new WaitSeatLogInfo();
                    waitInfo.CardNo       = clientobject.EnterOutLogData.EnterOutlog.CardNo;
                    waitInfo.NowState     = SeatManage.EnumType.LogStatus.Valid;
                    waitInfo.OperateType  = SeatManage.EnumType.Operation.Reader;
                    waitInfo.WaitingState = SeatManage.EnumType.EnterOutLogType.Waiting;

                    EnterOutLogInfo seatUsingEnterOutInfo = SeatManage.Bll.T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatBtn.SeatNo);
                    seatUsingEnterOutInfo.EnterOutState = SeatManage.EnumType.EnterOutLogType.ShortLeave;
                    seatUsingEnterOutInfo.EnterOutType  = SeatManage.EnumType.LogStatus.Valid;
                    seatUsingEnterOutInfo.Flag          = SeatManage.EnumType.Operation.OtherReader;
                    seatUsingEnterOutInfo.TerminalNum   = clientobject.ClientSetting.ClientNo;
                    seatUsingEnterOutInfo.Remark        = string.Format("在{0} {1}号座位,被读者{2}在终端{3}设置为暂离并等待该座位", seatUsingEnterOutInfo.ReadingRoomName, seatUsingEnterOutInfo.ShortSeatNo, waitInfo.CardNo, clientobject.ClientSetting.ClientNo);

                    clientobject.EnterOutLogData.EnterOutlog      = seatUsingEnterOutInfo; //要等待读者的暂离记录
                    clientobject.EnterOutLogData.WaitSeatLogModel = waitInfo;              //等待记录
                    this.Hide();
                }
                else
                {
                    T_SM_Seat.UnLockSeat(seatBtn.SeatNo);//确认窗口点击取消或者自动关闭,则解锁。
                }
            }
            else if (lockseat == SeatManage.EnumType.SeatLockState.UnLock)                                                                                                                    //没有成功加锁
            {
                SeatManage.SeatClient.Tip.Tip_Framework tip = new SeatManage.SeatClient.Tip.Tip_Framework(SeatManage.EnumType.TipType.SeatLocking, frmResolution.ViewModel.CountDownSeconds); //显示提示窗体
                tip.ShowDialog();

                drowSeatLayout();
            }
        }
        /// <summary>
        /// 管理员对座位进行管理操作
        /// </summary>
        /// <param name="seatNoList">多选座位列表</param>
        /// <param name="operateType">操作类型</param>
        /// <param name="loginId">登录名</param>
        /// <returns></returns>
        public string SeatOperation(string seatNoList, string operateType, string loginId)
        {
            try
            {
                JM_HandleResultObject result = new JM_HandleResultObject();
                result.Result = false;
                List <JM_Seat> list          = SeatManage.SeatManageComm.JSONSerializer.Deserialize <List <JM_Seat> >(seatNoList);
                int            successResult = 0;
                int            failResult    = 0;
                List <string>  noList        = new List <string>();
                string         no            = list[0].ReadingRoomNum;
                noList.Add(no);
                List <ReadingRoomInfo> room = seatDataService.GetReadingRoomInfo(noList);

                switch (operateType)
                {
                    #region 设置暂离
                case "shortLeave":
                    try
                    {
                        foreach (JM_Seat seat in list)
                        {
                            EnterOutLogInfo model = seatDataService.GetEnterOutLogInfoBySeatNum(seat.SeatNo);
                            if (model != null && model.EnterOutState != SeatManage.EnumType.EnterOutLogType.ShortLeave)
                            {
                                model.EnterOutState = SeatManage.EnumType.EnterOutLogType.ShortLeave;
                                model.Flag          = SeatManage.EnumType.Operation.Admin;
                                model.Remark        = "在" + model.ReadingRoomName + "," + model.SeatNo + "号座位,被管理员" + loginId + ",通过手持设备设置为暂离";
                                int newId = -1;
                                SeatManage.EnumType.HandleResult rs = seatDataService.AddEnterOutLogInfo(model, ref newId);
                                if (rs == SeatManage.EnumType.HandleResult.Successed)
                                {
                                    successResult++;
                                    result.Result = true;
                                }
                                else
                                {
                                    failResult++;
                                }
                            }
                        }
                        result.Msg = "设置读者暂离";
                    }
                    catch (Exception ex)
                    {
                        SeatManage.SeatManageComm.WriteLog.Write("设置读者暂离遇到异常:" + ex.Message);
                        result.Result = false;
                        result.Msg    = "执行遇到异常!";
                    }
                    break;
                    #endregion

                    #region 取消暂离
                case "comeBack":
                    try
                    {
                        foreach (JM_Seat seat in list)
                        {
                            EnterOutLogInfo model = seatDataService.GetEnterOutLogInfoBySeatNum(seat.SeatNo);
                            if (model != null && model.EnterOutState == EnterOutLogType.ShortLeave)
                            {
                                model.EnterOutState = EnterOutLogType.ComeBack;
                                model.Flag          = Operation.Admin;
                                model.Remark        = "在" + model.ReadingRoomName + "," + model.SeatNo + "号座位,被管理员" + loginId + ",通过手持设备取消暂离,恢复为在座";
                                int newId = -1;
                                SeatManage.EnumType.HandleResult rs = seatDataService.AddEnterOutLogInfo(model, ref newId);
                                if (rs == SeatManage.EnumType.HandleResult.Successed)
                                {
                                    List <SeatManage.ClassModel.WaitSeatLogInfo> logs = seatDataService.GetWaitLogList("", model.EnterOutLogID, null, null, null);
                                    WaitSeatLogInfo log = null;
                                    if (logs.Count > 0)
                                    {
                                        log              = logs[0];
                                        log.NowState     = LogStatus.Fail;
                                        log.OperateType  = Operation.OtherReader;
                                        log.WaitingState = EnterOutLogType.WaitingCancel;
                                        if (seatDataService.UpdateWaitLog(log))
                                        {
                                            //result.Result = true;
                                            //result.Msg = "取消读者暂离成功";
                                            successResult++;
                                            result.Result = true;
                                        }
                                        else
                                        {
                                            //result.Result = true;
                                            //result.Msg = "取消读者暂离成功,释放读者等待失败";
                                            successResult++;
                                            result.Result = true;
                                        }
                                    }
                                    else
                                    {
                                        //result.Result = true;
                                        //result.Msg = "取消读者暂离成功";
                                        successResult++;
                                        result.Result = true;
                                    }
                                }
                                else
                                {
                                    //result.Result = false;
                                    //result.Msg = "取消读者暂离失败";
                                    failResult++;
                                }
                            }
                        }
                        result.Msg = "取消读者暂离";
                    }
                    catch (Exception ex)
                    {
                        SeatManage.SeatManageComm.WriteLog.Write("取消读者暂离遇到异常:" + ex.Message);
                        result.Result = false;
                        result.Msg    = "执行遇到异常!";
                    }
                    break;
                    #endregion

                    #region 释放座位
                case "leave":
                    try
                    {
                        foreach (JM_Seat seat in list)
                        {
                            EnterOutLogInfo model = seatDataService.GetEnterOutLogInfoBySeatNum(seat.SeatNo);
                            if (model != null && model.EnterOutState != EnterOutLogType.Leave)
                            {
                                model.EnterOutState = EnterOutLogType.Leave;
                                model.Flag          = Operation.Admin;
                                model.Remark        = "在" + model.ReadingRoomName + "," + model.SeatNo + "号座位,被管理员" + loginId + ",通过手持设备设置离开";
                                int          newId = -1;
                                HandleResult rs    = seatDataService.AddEnterOutLogInfo(model, ref newId);
                                if (rs == HandleResult.Successed)
                                {
                                    SeatManage.ClassModel.RegulationRulesSetting rules = seatDataService.GetRegulationRulesSetting();
                                    if (room[0].Setting.IsRecordViolate)
                                    {
                                        if (room[0].Setting.BlackListSetting.Used)
                                        {
                                            if (room[0].Setting.BlackListSetting.ViolateRoule[ViolationRecordsType.LeaveByAdmin])
                                            {
                                                ViolationRecordsLogInfo logs = new ViolationRecordsLogInfo();
                                                logs.CardNo        = model.CardNo;
                                                logs.SeatID        = model.SeatNo.Substring(model.SeatNo.Length - room[0].Setting.SeatNumAmount, room[0].Setting.SeatNumAmount);
                                                logs.ReadingRoomID = model.ReadingRoomNo;
                                                logs.EnterOutTime  = DateTime.Now.ToString();
                                                logs.EnterFlag     = ViolationRecordsType.LeaveByAdmin;
                                                logs.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", room[0].Name, model.ShortSeatNo, loginId);
                                                logs.BlacklistID   = "-1";
                                                seatDataService.AddViolationRecordsLog(logs);
                                            }
                                        }
                                        else if (rules.BlacklistSet.Used && rules.BlacklistSet.ViolateRoule[ViolationRecordsType.LeaveByAdmin])
                                        {
                                            ViolationRecordsLogInfo logs = new ViolationRecordsLogInfo();
                                            logs.CardNo        = model.CardNo;
                                            logs.SeatID        = model.SeatNo.Substring(model.SeatNo.Length - room[0].Setting.SeatNumAmount, room[0].Setting.SeatNumAmount);
                                            logs.ReadingRoomID = model.ReadingRoomNo;
                                            logs.EnterOutTime  = DateTime.Now.ToString();
                                            logs.EnterFlag     = ViolationRecordsType.LeaveByAdmin;
                                            logs.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", room[0].Name, model.ShortSeatNo, loginId);
                                            logs.BlacklistID   = "-1";
                                            seatDataService.AddViolationRecordsLog(logs);
                                        }
                                    }
                                    result.Result = true;
                                    //result.Msg = "成功释放读者座位";
                                    successResult++;
                                }
                                else
                                {
                                    //result.Result = false;
                                    //result.Msg = "释放读者座位失败";
                                    failResult++;
                                }
                            }
                        }
                        result.Msg = "释放读者座位";
                    }
                    catch (Exception ex)
                    {
                        SeatManage.SeatManageComm.WriteLog.Write("释放读者座位遇到异常:" + ex.Message);
                        result.Result = false;
                        result.Msg    = "执行遇到异常!";
                    }
                    break;
                    #endregion

                    #region 加入计时
                case "timing":
                    try
                    {
                        foreach (JM_Seat seat in list)
                        {
                            EnterOutLogInfo model = seatDataService.GetEnterOutLogInfoBySeatNum(seat.SeatNo);
                            if (model != null && model.EnterOutState != EnterOutLogType.ShortLeave)
                            {
                                DateTime markTime = DateTime.Now;
                                if (seatDataService.UpdateMarkTime(model.EnterOutLogID, markTime))
                                {
                                    //result.Result = true;
                                    //result.Msg = "加入计时成功";
                                    successResult++;
                                    result.Result = true;
                                }
                                else
                                {
                                    //result.Result = false;
                                    //result.Msg = "加入计时失败";
                                    failResult++;
                                }
                            }
                        }
                        result.Msg = "加入计时";
                    }
                    catch (Exception ex)
                    {
                        SeatManage.SeatManageComm.WriteLog.Write("加入计时遇到异常:" + ex.Message);
                        result.Result = false;
                        result.Msg    = "执行遇到异常!";
                    }
                    break;
                    #endregion

                    #region 取消计时
                case "cancelTiming":
                    try
                    {
                        foreach (JM_Seat seat in list)
                        {
                            EnterOutLogInfo model = seatDataService.GetEnterOutLogInfoBySeatNum(seat.SeatNo);
                            if (model != null && !string.IsNullOrEmpty(model.MarkTime.ToString()) && model.MarkTime.CompareTo(DateTime.Parse("1900/1/1")) != 0)
                            {
                                DateTime markTime = DateTime.Parse("1900/1/1");
                                if (seatDataService.UpdateMarkTime(model.EnterOutLogID, markTime))
                                {
                                    //result.Result = true;
                                    //result.Msg = "取消计时成功";
                                    successResult++;
                                    result.Result = true;
                                }
                                else
                                {
                                    //result.Result = false;
                                    //result.Msg = "取消计时失败";
                                    failResult++;
                                }
                            }
                        }
                        result.Msg = "取消计时";
                    }
                    catch (Exception ex)
                    {
                        SeatManage.SeatManageComm.WriteLog.Write("取消计时遇到异常:" + ex.Message);
                        result.Result = false;
                        result.Msg    = "执行遇到异常!";
                    }
                    break;
                    #endregion

                    #region 加入黑名单
                case "addBlackList":
                    try
                    {
                        int newId = -1;
                        SeatManage.ClassModel.RegulationRulesSetting rules = seatDataService.GetRegulationRulesSetting();
                        if (!room[0].Setting.BlackListSetting.Used && !rules.BlacklistSet.Used)
                        {
                            result.Result = false;
                            result.Msg    = "阅览室未开启记录黑名单功能";
                            break;
                        }
                        foreach (JM_Seat seat in list)
                        {
                            EnterOutLogInfo model = seatDataService.GetEnterOutLogInfoBySeatNum(seat.SeatNo);
                            if (model != null && model.EnterOutState != EnterOutLogType.Leave)
                            {
                                if (room[0] != null && room[0].Setting.BlackListSetting.Used)
                                {
                                    BlackListInfo info = new BlackListInfo();
                                    info.AddTime          = DateTime.Now;
                                    info.BlacklistState   = LogStatus.Valid;
                                    info.CardNo           = model.CardNo;
                                    info.ReadingRoomID    = model.ReadingRoomNo;
                                    info.OutBlacklistMode = rules.BlacklistSet.LeaveBlacklist;
                                    if (info.OutBlacklistMode == LeaveBlacklistMode.AutomaticMode)
                                    {
                                        info.ReMark  = string.Format("管理员{0}通过手持设备{0}把读者加入黑名单,记录黑名单{1}天", loginId, room[0].Setting.BlackListSetting.LimitDays);
                                        info.OutTime = info.AddTime.AddDays(room[0].Setting.BlackListSetting.LimitDays);
                                    }
                                    else
                                    {
                                        info.ReMark = string.Format("管理员{0}通过手持设备把读者加入黑名单,手动离开黑名单", loginId);
                                    }
                                    newId = seatDataService.AddBlacklist(info);
                                }
                                else if (rules.BlacklistSet.Used)
                                {
                                    BlackListInfo info = new BlackListInfo();
                                    info.AddTime          = DateTime.Now;
                                    info.OutTime          = info.AddTime.AddDays(rules.BlacklistSet.LimitDays);
                                    info.BlacklistState   = LogStatus.Valid;
                                    info.CardNo           = model.CardNo;
                                    info.OutBlacklistMode = rules.BlacklistSet.LeaveBlacklist;
                                    if (info.OutBlacklistMode == LeaveBlacklistMode.AutomaticMode)
                                    {
                                        info.ReMark  = string.Format("管理员{0}通过手持设备把读者加入黑名单,记录黑名单{1}天", loginId, rules.BlacklistSet.LimitDays);
                                        info.OutTime = info.AddTime.AddDays(rules.BlacklistSet.LimitDays);
                                    }
                                    else
                                    {
                                        info.ReMark = string.Format("管理员{0}通过手持设备把读者加入黑名单,手动离开黑名单", loginId);
                                    }
                                    newId = seatDataService.AddBlacklist(info);
                                }

                                if (newId > 0)
                                {
                                    model.EnterOutState = EnterOutLogType.Leave;
                                    model.Flag          = Operation.Admin;
                                    model.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", room[0].Name, model.ShortSeatNo, loginId);

                                    HandleResult rs = seatDataService.AddEnterOutLogInfo(model, ref newId);
                                    if (rs == HandleResult.Successed)
                                    {
                                        //result.Result = true;
                                        //result.Msg = "成功将读者加入黑名单!";
                                        successResult++;
                                        result.Result = true;
                                    }
                                    else
                                    {
                                        //result.Result = false;
                                        //result.Msg = "将读者加入黑名单失败!";
                                        failResult++;
                                    }
                                }
                                else
                                {
                                    //result.Result = false;
                                    //result.Msg = "将读者加入黑名单失败!";
                                    failResult++;
                                }
                            }
                        }
                        result.Msg = "加入黑名单";
                    }
                    catch (Exception ex)
                    {
                        SeatManage.SeatManageComm.WriteLog.Write("加入黑名单遇到异常:" + ex.Message);
                        result.Result = false;
                        result.Msg    = "执行遇到异常!";
                    }
                    break;
                    #endregion
                }
                StringBuilder str = new StringBuilder();
                if (result.Result)
                {
                    str.Append("成功");
                }
                else
                {
                    str.Append("失败");
                }
                if (successResult > 0)
                {
                    str.Append(string.Format(",成功{0}条", successResult));
                }
                if (failResult > 0)
                {
                    str.Append(string.Format(",失败{0}条", failResult));
                }
                result.Msg = result.Msg + str.ToString();
                return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                SeatManage.SeatManageComm.WriteLog.Write("对座位进行操作遇到异常:" + ex.Message);
                JM_HandleResultObject result = new JM_HandleResultObject();
                result.Result = false;
                result.Msg    = "执行遇到异常!";
                return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result));
            }
        }
        /// <summary>
        /// 获取等待记录
        /// </summary>
        /// <param name="cardNo">读者学号</param>
        /// <param name="SaetNo">座位号</param>
        /// <param name="enterOutLogNo">进出记录编号</param>
        /// <param name="logStatus">记录状态</param>
        /// <returns></returns>
        public List <WaitSeatLogInfo> GetWaitLogList(string cardNo, string enterOutLogNo, string begindate, string enddate, List <EnterOutLogType> logType)
        {
            StringBuilder strWhere = new StringBuilder();

            if (!string.IsNullOrEmpty(cardNo))
            {
                if (String.IsNullOrEmpty(strWhere.ToString()))
                {
                    strWhere.Append(string.Format(" cardNo='{0}'", cardNo));
                }
                else
                {
                    strWhere.Append(string.Format(" and cardNo='{0}'", cardNo));
                }
            }
            if (!string.IsNullOrEmpty(enterOutLogNo))
            {
                if (String.IsNullOrEmpty(strWhere.ToString()))
                {
                    strWhere.Append(string.Format(" EnterOutLogID='{0}'", enterOutLogNo));
                }
                else
                {
                    strWhere.Append(string.Format(" and EnterOutLogID='{0}'", enterOutLogNo));
                }
            }
            if (!string.IsNullOrEmpty(begindate))
            {
                if (string.IsNullOrEmpty(strWhere.ToString()))
                {
                    strWhere.AppendFormat(" StateChangeTime >= {0}", begindate);
                }
                else
                {
                    strWhere.AppendFormat(" and StateChangeTime >= {0}", begindate);
                }
            }
            if (!string.IsNullOrEmpty(enddate))
            {
                if (string.IsNullOrEmpty(strWhere.ToString()))
                {
                    strWhere.AppendFormat(" StateChangeTime <= {0}", enddate);
                }
                else
                {
                    strWhere.AppendFormat(" and StateChangeTime <= {0}", enddate);
                }
            }
            if (logType != null && logType.Count > 0)
            {
                for (int i = 0; i < logType.Count; i++)
                {
                    if (i == 0)
                    {
                        if (string.IsNullOrEmpty(strWhere.ToString()))
                        {
                            strWhere.AppendFormat(" WaitingState in ({0}", (int)logType[i]);
                        }
                        else
                        {
                            strWhere.AppendFormat(" and WaitingState in ({0}", (int)logType[i]);
                        }
                    }
                    else if (i != logType.Count - 1)
                    {
                        strWhere.Append(string.Format(",{0}", (int)logType[i]));
                    }
                    if (i == logType.Count - 1)
                    {
                        strWhere.Append(string.Format(" ,{0})", (int)logType[i]));
                    }
                }
            }
            List <WaitSeatLogInfo> list = new List <WaitSeatLogInfo>();

            try
            {
                DataSet ds = t_sm_seatwaiting_dal.GetList(strWhere.ToString(), null);
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    WaitSeatLogInfo waitSeatLog = DataRowToWaitSeatLogInfo(ds.Tables[0].Rows[0]);
                    list.Add(waitSeatLog);
                }
                return(list);
            }
            catch
            {
                throw;
            }
        }
Exemplo n.º 22
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["LoginId"] == null)
            {
                Response.Redirect("../Login.aspx");
            }
            if (!IsPostBack)
            {
                BindReadingRoomList(Session[CookiesManager.LoginID].ToString());
                GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
            }

            cmd = Request.Form["subCmd"];
            if (cmd != null)
            {
                #region 座位相关操作
                switch (cmd)
                {
                case "search":    //查询座位
                    try
                    {
                        GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                    }
                    catch
                    {
                    }
                    break;

                case "ShortLeave":    //设置暂离
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState != EnterOutLogType.ShortLeave)
                            {
                                ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(enterOutLog.ReadingRoomNo);
                                enterOutLog.EnterOutState = EnterOutLogType.ShortLeave;
                                enterOutLog.Flag          = Operation.Admin;
                                enterOutLog.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置为暂离", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                int          newId  = -1;
                                HandleResult result = EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId);
                                if (result == HandleResult.Successed)
                                {
                                    Page.RegisterStartupScript("", "<script>alert('设置读者暂离成功');</script>");
                                    GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                }
                                else
                                {
                                    Page.RegisterStartupScript("", "<script>alert('设置读者暂离失败');</script>");
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                    break;

                case "ReleaseShortLeave":    //取消暂离
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState == EnterOutLogType.ShortLeave)
                            {
                                ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(enterOutLog.ReadingRoomNo);
                                enterOutLog.EnterOutState = EnterOutLogType.ComeBack;
                                enterOutLog.Flag          = Operation.Admin;
                                enterOutLog.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备取消暂离,恢复为在座", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                int          newId  = -1;
                                HandleResult result = EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId);
                                if (result == HandleResult.Successed)
                                {
                                    List <WaitSeatLogInfo> waitSeatLogs = T_SM_SeatWaiting.GetWaitSeatList("", enterOutLog.EnterOutLogID, null, null, null);
                                    WaitSeatLogInfo        waitSeatLog  = null;
                                    if (waitSeatLogs.Count > 0)
                                    {
                                        waitSeatLog              = waitSeatLogs[0];
                                        waitSeatLog.NowState     = LogStatus.Fail;
                                        waitSeatLog.OperateType  = Operation.OtherReader;
                                        waitSeatLog.WaitingState = EnterOutLogType.WaitingCancel;
                                        if (T_SM_SeatWaiting.UpdateWaitLog(waitSeatLog))
                                        {
                                            Page.RegisterStartupScript("", "<script>alert('取消读者暂离成功');</script>");
                                            GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                        }
                                        else
                                        {
                                            Page.RegisterStartupScript("", "<script>alert('取消读者暂离成功,取消读者等待失败');</script>");
                                            GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                        }
                                    }
                                    else
                                    {
                                        Page.RegisterStartupScript("", "<script>alert('取消读者暂离成功');</script>");
                                        GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                    }
                                }
                                else
                                {
                                    Page.RegisterStartupScript("", "<script>alert('取消读者暂离失败');</script>");
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                    break;

                case "Release":    //释放座位
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState != EnterOutLogType.Leave)
                            {
                                ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(enterOutLog.ReadingRoomNo);

                                enterOutLog.EnterOutState = EnterOutLogType.Leave;
                                enterOutLog.Flag          = Operation.Admin;
                                enterOutLog.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                int          newId  = -1;
                                HandleResult result = EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId);
                                if (result == HandleResult.Successed)
                                {
                                    RegulationRulesSetting rulesSet = T_SM_SystemSet.GetRegulationRulesSetting();
                                    if (roomInfo.Setting.IsRecordViolate)
                                    {
                                        if (roomInfo.Setting.BlackListSetting.Used)
                                        {
                                            if (roomInfo.Setting.BlackListSetting.ViolateRoule[ViolationRecordsType.LeaveByAdmin])
                                            {
                                                ViolationRecordsLogInfo violationRecords = new ViolationRecordsLogInfo();
                                                violationRecords.CardNo        = enterOutLog.CardNo;
                                                violationRecords.SeatID        = enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - roomInfo.Setting.SeatNumAmount, roomInfo.Setting.SeatNumAmount);
                                                violationRecords.ReadingRoomID = enterOutLog.ReadingRoomNo;
                                                violationRecords.EnterOutTime  = ServiceDateTime.Now.ToString();
                                                violationRecords.EnterFlag     = ViolationRecordsType.LeaveByAdmin;
                                                violationRecords.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                                violationRecords.BlacklistID   = "-1";
                                                T_SM_ViolateDiscipline.AddViolationRecords(violationRecords);
                                            }
                                        }
                                        else if (rulesSet.BlacklistSet.Used && rulesSet.BlacklistSet.ViolateRoule[ViolationRecordsType.LeaveByAdmin])
                                        {
                                            ViolationRecordsLogInfo violationRecords = new ViolationRecordsLogInfo();
                                            violationRecords.CardNo        = enterOutLog.CardNo;
                                            violationRecords.SeatID        = enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - roomInfo.Setting.SeatNumAmount, roomInfo.Setting.SeatNumAmount);
                                            violationRecords.ReadingRoomID = enterOutLog.ReadingRoomNo;
                                            violationRecords.EnterOutTime  = ServiceDateTime.Now.ToString();
                                            violationRecords.EnterFlag     = ViolationRecordsType.LeaveByAdmin;
                                            violationRecords.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                            violationRecords.BlacklistID   = "-1";
                                            T_SM_ViolateDiscipline.AddViolationRecords(violationRecords);
                                        }
                                    }
                                    Page.RegisterStartupScript("", "<script>alert('设置读者离开成功');</script>");
                                    GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                }
                                else
                                {
                                    Page.RegisterStartupScript("", "<script>alert('设置读者离开失败');</script>");
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                    break;

                case "onTime":    //计时
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState != EnterOutLogType.ShortLeave)
                            {
                                DateTime markTime = ServiceDateTime.Now;
                                EnterOutOperate.UpdateMarkTime(enterOutLog.EnterOutLogID, markTime);
                                GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                            }
                        }
                    }
                    catch
                    {
                    }

                    break;

                case "offTime":    //取消计时
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && !string.IsNullOrEmpty(enterOutLog.MarkTime.ToString()) && enterOutLog.MarkTime.CompareTo(DateTime.Parse("1900/1/1")) != 0)
                            {
                                DateTime markTime = DateTime.Parse("1900-1-1");
                                EnterOutOperate.UpdateMarkTime(enterOutLog.EnterOutLogID, markTime);
                                GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                            }
                        }
                    }
                    catch
                    {
                    }

                    break;

                case "AddBlacklist":
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        int      newId   = -1;
                        RegulationRulesSetting rulesSet = T_SM_SystemSet.GetRegulationRulesSetting();
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            newId  = -1;
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState != EnterOutLogType.Leave)
                            {
                                ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(enterOutLog.ReadingRoomNo);
                                if (roomInfo != null && roomInfo.Setting.BlackListSetting.Used)
                                {
                                    BlackListInfo blacklistModel = new BlackListInfo();
                                    blacklistModel.AddTime          = ServiceDateTime.Now;
                                    blacklistModel.ReadingRoomID    = roomInfo.No;
                                    blacklistModel.BlacklistState   = LogStatus.Valid;
                                    blacklistModel.CardNo           = enterOutLog.CardNo;
                                    blacklistModel.OutBlacklistMode = roomInfo.Setting.BlackListSetting.LeaveBlacklist;
                                    if (blacklistModel.OutBlacklistMode == LeaveBlacklistMode.AutomaticMode)
                                    {
                                        blacklistModel.ReMark  = string.Format("管理员{0}通过手持设备{0}把读者加入黑名单,记录黑名单{1}天", Session["LoginID"], roomInfo.Setting.BlackListSetting.LimitDays);
                                        blacklistModel.OutTime = blacklistModel.AddTime.AddDays(roomInfo.Setting.BlackListSetting.LimitDays);
                                    }
                                    else
                                    {
                                        blacklistModel.ReMark = string.Format("管理员{0}通过手持设备把读者加入黑名单,手动离开黑名单", Session["LoginID"]);
                                    }
                                    blacklistModel.ReadingRoomID = roomInfo.No;
                                    newId = T_SM_Blacklist.AddBlackList(blacklistModel);
                                }
                                else if (rulesSet.BlacklistSet.Used)
                                {
                                    BlackListInfo blacklistModel = new BlackListInfo();
                                    blacklistModel.AddTime          = ServiceDateTime.Now;
                                    blacklistModel.OutTime          = blacklistModel.AddTime.AddDays(rulesSet.BlacklistSet.LimitDays);
                                    blacklistModel.BlacklistState   = LogStatus.Valid;
                                    blacklistModel.CardNo           = enterOutLog.CardNo;
                                    blacklistModel.OutBlacklistMode = rulesSet.BlacklistSet.LeaveBlacklist;
                                    if (blacklistModel.OutBlacklistMode == LeaveBlacklistMode.AutomaticMode)
                                    {
                                        blacklistModel.ReMark  = string.Format("管理员{0}通过手持设备把读者加入黑名单,记录黑名单{1}天", Session["LoginID"], rulesSet.BlacklistSet.LimitDays);
                                        blacklistModel.OutTime = blacklistModel.AddTime.AddDays(rulesSet.BlacklistSet.LimitDays);
                                    }
                                    else
                                    {
                                        blacklistModel.ReMark = string.Format("管理员{0}通过手持设备把读者加入黑名单,手动离开黑名单", Session["LoginID"]);
                                    }
                                    blacklistModel.ReadingRoomID = roomInfo.No;
                                    newId = T_SM_Blacklist.AddBlackList(blacklistModel);
                                }
                                else
                                {
                                    Page.RegisterStartupScript("", "<script>alert('对不起,此阅览室以及图书馆没有启用黑名单功能');</script>");
                                    return;
                                }
                                if (newId > 0)
                                {
                                    enterOutLog.EnterOutState = EnterOutLogType.Leave;
                                    enterOutLog.Flag          = Operation.Admin;
                                    enterOutLog.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);

                                    HandleResult result = EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId);
                                    if (result == HandleResult.Successed)
                                    {
                                        Page.RegisterStartupScript("", "<script>alert('设置读者黑名单成功');</script>");
                                        GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                    }
                                    else
                                    {
                                        Page.RegisterStartupScript("", "<script>alert('设置读者黑名单失败');</script>");
                                    }
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                    break;

                case "LoginOut":
                    HttpCookie aCookie;
                    string     cookieName;
                    int        limit = Request.Cookies.Count;
                    for (int i = 0; i < limit; i++)
                    {
                        cookieName      = Request.Cookies[i].Name;
                        aCookie         = new HttpCookie(cookieName);
                        aCookie.Expires = DateTime.Now.AddDays(-1);
                        Response.Cookies.Add(aCookie);
                    }
                    Response.Redirect("../Login.aspx");
                    break;
                }
                #endregion
            }
        }
Exemplo n.º 23
0
        //private SeatManage.IPocketBespeak.IMainFunctionPageBll handler = new SeatManage.PocketBespeak.PocketBespeak_MainFunctionPageBll();
        //private SeatManage.IPocketBespeak.IQueryLogs handler1 = new SeatManage.PocketBespeak.PocketBespeak_QueryLogs();
        //private SeatManage.IPocketBespeak.IWaitSeat handler2 = new SeatManage.PocketBespeak.PocketBespeak_WaitSeat();
        //private SeatManage.IPocketBespeak.IBespeakSeatListForm handler3 = new SeatManage.PocketBespeak.PocketBespeak_BespeakSeat();
        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;
            }

            ScanCodeParamModel param = new ScanCodeParamModel(strparam);

            seatNo        = param.SeatNum;
            readingRoomNo = param.ReadingRoomNum;
            if (LoginUserInfo != null)//存在记录的cookies信息
            {
                cardNo = LoginUserInfo.CardNo;
            }
            else
            {
                string url = Request.Url.AbsoluteUri;
                //string url = "/QRcodeDecode/SeatInfo.aspx?param=" + strparam;
                Response.Redirect(LoginUrl() + "?url=" + url);
            }
            //UserInfo user = SeatManage.Bll.Users_ALL.GetUserInfo(cardNo);
            //SeatManage.ClassModel.ManagerPotency potency = SeatManage.Bll.T_SM_ManagerPotency.GetManangePotencyByLoginID(cardNo);
            //if (user == null || user.UserType != SeatManage.EnumType.UserType.Admin || potency.RightRoomList.All(u => u.No != readingRoomNo))
            //{
            //    spanWarmInfo.InnerText = "您没有权限!";
            //    divHanderPanel.Style.Add("display", "none");
            //    return;
            //}



            if (!IsPostBack)
            {
                //DataBind(cardNo, param.SeatNum, param.ReadingRoomNum);
                ShowReaderState();
            }
            else
            {
                string cmd = Request.Form["subCmd"];
                string result;
                switch (cmd)
                {
                case "changeSeat":
                    result = handler.ChangeSeat(cardNo, param.SeatNum, param.ReadingRoomNum);
                    if (!string.IsNullOrEmpty(result))
                    {
                        spanWarmInfo.InnerText = result;
                    }
                    else
                    {
                        spanWarmInfo.InnerText = "更换座位成功";
                        //DataBind(cardNo, param.SeatNum, param.ReadingRoomNum);
                        ShowReaderState();
                        //this.divHanderPanel.Style.Add("display", "none");
                    }
                    break;

                case "selectSeat":
                    result = handler.SelectSeat(cardNo, param.SeatNum, param.ReadingRoomNum);
                    if (!string.IsNullOrEmpty(result))
                    {
                        spanWarmInfo.InnerText = result;
                    }
                    else
                    {
                        spanWarmInfo.InnerText = "选择座位成功";
                        //DataBind(cardNo, param.SeatNum, param.ReadingRoomNum);
                        ShowReaderState();
                        //this.divHanderPanel.Style.Add("display", "none");
                    }
                    break;

                case "waitSeat":
                    if (!handler.IsCanWaitSeat(LoginUserInfo.CardNo, readingRoomNo))
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "您等待座位的间隔过短,请稍后重试。";
                    }
                    else
                    {
                        WaitSeatLogInfo waitInfo = new WaitSeatLogInfo();
                        waitInfo.CardNo       = LoginUserInfo.CardNo;
                        waitInfo.SeatNo       = seatNo;
                        waitInfo.NowState     = LogStatus.Valid;
                        waitInfo.OperateType  = Operation.Reader;
                        waitInfo.WaitingState = EnterOutLogType.Waiting;
                        result = handler.SubmitWaitInfo(waitInfo);
                        if (!string.IsNullOrEmpty(result))
                        {
                            spanWarmInfo.InnerText = result;
                        }
                        else
                        {
                            spanWarmInfo.InnerText = "等待座位成功";
                        }
                    }
                    ShowReaderState();
                    break;

                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);
                    CookiesManager.RefreshNum            = 0;
                    Response.Redirect(LogoutUrl());
                    break;

                case "ContinuedWhen":
                    LoginUserInfo = handler.GetReaderInfo(LoginUserInfo.CardNo);
                    if (LoginUserInfo.EnterOutLog != null && LoginUserInfo.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
                    {
                        switch (LoginUserInfo.EnterOutLog.EnterOutState)
                        {
                        case EnterOutLogType.BookingConfirmation:
                        case EnterOutLogType.SelectSeat:
                        case EnterOutLogType.ContinuedTime:
                        case EnterOutLogType.ComeBack:
                        case EnterOutLogType.ReselectSeat:
                        case EnterOutLogType.WaitingSuccess:
                            LoginUserInfo.EnterOutLog.Remark        = "通过手机预约网站延长座位使用时间";
                            LoginUserInfo.EnterOutLog.EnterOutState = EnterOutLogType.ContinuedTime;
                            ContinuedWhen();
                            ShowReaderState();
                            break;

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

                case "ComeBack":
                    LoginUserInfo = handler.GetReaderInfo(LoginUserInfo.CardNo);
                    if (LoginUserInfo.EnterOutLog != null && LoginUserInfo.EnterOutLog.EnterOutState == EnterOutLogType.ShortLeave)
                    {
                        LoginUserInfo.EnterOutLog.Remark        = "通过手机预约网站恢复在座";
                        LoginUserInfo.EnterOutLog.EnterOutState = EnterOutLogType.ComeBack;
                        ComeBack();
                        ShowReaderState();
                    }
                    spanWarmInfo.Visible   = true;
                    spanWarmInfo.InnerText = "暂离回来失败,您还没有暂离";
                    break;

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

                case "CancelWait":
                    if (LoginUserInfo.WaitSeatLog != null)
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = handler.CancelWait(LoginUserInfo.WaitSeatLog);
                        ShowReaderState();
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "当前没有等待的座位";
                    }
                    break;

                case "CancelBook":
                    if (LoginUserInfo.BespeakLog != null && LoginUserInfo.BespeakLog.Count > 0)
                    {
                        spanWarmInfo.Visible = true;
                        if (handler.UpdateBookLogsState(int.Parse(LoginUserInfo.BespeakLog[0].BsepeaklogID)))
                        {
                            spanWarmInfo.InnerText = "取消预约成功";
                            //confrimSeat();
                            //this.LoginUserInfo = handler.GetReaderInfo(this.UserSchoolInfo, this.LoginUserInfo.CardNo);//重新绑定读者状态
                            ShowReaderState();
                        }
                        else
                        {
                            spanWarmInfo.InnerText = "取消预约取消失败";
                        }
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "当前没有预约的座位";
                    }
                    break;

                case "BookConfirm":
                    if (LoginUserInfo.BespeakLog != null && LoginUserInfo.BespeakLog.Count > 0)
                    {
                        confrimSeat();
                        //this.LoginUserInfo = handler.GetReaderInfo(this.UserSchoolInfo, this.LoginUserInfo.CardNo);//重新绑定读者状态
                        ShowReaderState();
                    }
                    else
                    {
                        spanWarmInfo.Visible   = true;
                        spanWarmInfo.InnerText = "当前没有预约的座位";
                    }
                    break;
                }
                subCmd.Value = "";
            }
        }
Exemplo n.º 24
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="cardNo"></param>
 /// <returns></returns>
 public string ComeBack(string cardNo)
 {
     try
     {
         JsonModel.JM_HandleResult result = new JsonModel.JM_HandleResult();
         if (string.IsNullOrEmpty(cardNo))
         {
             result.Result = false;
             result.Msg    = "读者学号为空。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         ReaderInfo reader = seatDataService.GetReader(cardNo, true);
         if (reader == null)
         {
             result.Result = false;
             result.Msg    = "获取读者信息失败。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         if (reader.EnterOutLog == null || reader.EnterOutLog.EnterOutState == EnterOutLogType.Leave)
         {
             result.Result = false;
             result.Msg    = "您还没有选座。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         if (reader.EnterOutLog.EnterOutState != EnterOutLogType.ShortLeave)
         {
             result.Result = false;
             result.Msg    = "您当前不是暂离状态。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         reader.EnterOutLog.EnterOutState = EnterOutLogType.ComeBack;
         reader.EnterOutLog.Remark        = "读者通过移动客户端设置暂离回来。";
         reader.EnterOutLog.Flag          = Operation.Reader;
         reader.EnterOutLog.EnterOutTime  = DateTime.Now;
         result.Result = true;
         int newId = -1;
         if (seatDataService.AddEnterOutLogInfo(reader.EnterOutLog, ref newId) != HandleResult.Successed)
         {
             result.Result = false;
             result.Msg    = "执行遇到异常!";
             return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result));
         }
         else
         {
             result.Result = true;
             result.Msg    = "欢迎回来";
             List <WaitSeatLogInfo> waitSeatLogs = seatDataService.GetWaitLogList("", reader.EnterOutLog.EnterOutLogID, null, null, null);
             if (waitSeatLogs.Count > 0)
             {
                 WaitSeatLogInfo waitSeatLog = waitSeatLogs[0];
                 waitSeatLog.NowState     = LogStatus.Fail;
                 waitSeatLog.OperateType  = Operation.OtherReader;
                 waitSeatLog.WaitingState = EnterOutLogType.WaitingCancel;
                 seatDataService.UpdateWaitLog(waitSeatLog);
             }
         }
         return(SeatManageComm.JSONSerializer.Serialize(result));
     }
     catch (Exception ex)
     {
         SeatManage.SeatManageComm.WriteLog.Write("暂离回来遇到异常:" + ex.Message);
         JM_HandleResult result = new JM_HandleResult();
         result.Result = false;
         result.Msg    = "执行遇到异常!";
         return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result));
     }
 }
        /// <summary>
        /// 暂离回来操作
        /// </summary>
        public void CometoBack()
        {
            clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.ComeBack;//设置读者状态为暂回来
            clientobject.EnterOutLogData.EnterOutlog.Flag          = Operation.Reader;
            List <WaitSeatLogInfo> waitSeatLogs = T_SM_SeatWaiting.GetWaitSeatList("", clientobject.EnterOutLogData.EnterOutlog.EnterOutLogID, null, null, null);
            WaitSeatLogInfo        waitSeatLog  = null;

            int newLogId = -1;

            System.TimeSpan shortleavetimelong = ServiceDateTime.Now - clientobject.EnterOutLogData.EnterOutlog.EnterOutTime;
            clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("在终端{0}刷卡暂离回来,暂离时长{1}分钟,继续使用{2} {3}号座位",
                                                                            clientobject.ClientSetting.ClientNo,
                                                                            shortleavetimelong.Minutes,
                                                                            clientobject.EnterOutLogData.EnterOutlog.ReadingRoomName,
                                                                            clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
            clientobject.EnterOutLogData.EnterOutlog.TerminalNum = clientobject.ClientSetting.ClientNo;
            HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录

            if (result == HandleResult.Successed)
            {
                if (waitSeatLogs.Count > 0)
                {
                    waitSeatLog              = waitSeatLogs[0];
                    waitSeatLog.NowState     = LogStatus.Fail;
                    waitSeatLog.OperateType  = Operation.OtherReader;
                    waitSeatLog.WaitingState = EnterOutLogType.WaitingCancel;
                    T_SM_SeatWaiting.UpdateWaitLog(waitSeatLog);
                }
                PopupWindow popWindow = new PopupWindow(TipType.ComeToBack);
                popWindow.ShowDialog();
                if (clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.Used && clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.Mode == "Free")
                {
                    List <EnterOutLogType> typeList = new List <EnterOutLogType>();
                    typeList.Add(EnterOutLogType.BookingConfirmation);
                    typeList.Add(EnterOutLogType.SelectSeat);
                    typeList.Add(EnterOutLogType.ReselectSeat);
                    typeList.Add(EnterOutLogType.WaitingSuccess);
                    typeList.Add(EnterOutLogType.ContinuedTime);
                    List <EnterOutLogInfo> seatTimeEnterOutLog = SeatManage.Bll.T_SM_EnterOutLog.GetEnterOutLogByNo(clientobject.EnterOutLogData.EnterOutlog.EnterOutLogNo, typeList, 1);
                    if (seatTimeEnterOutLog.Count > 0)
                    {
                        if (seatTimeEnterOutLog[0].EnterOutState == EnterOutLogType.ContinuedTime)
                        {
                            if (seatTimeEnterOutLog[0].EnterOutTime.AddMinutes(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.DelayTimeLength) < ServiceDateTime.Now)
                            {
                                if (clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes == 0 || clientobject.EnterOutLogData.Student.ContinuedTimeCount < clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes)
                                {
                                    clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.ContinuedTime;
                                    clientobject.EnterOutLogData.EnterOutlog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                    clientobject.EnterOutLogData.EnterOutlog.Remark        = string.Format("在终端{0}刷卡暂离回来,暂离期间在座超时,系统自动延长{1} {2}号座位使用时间", clientobject.ClientSetting.ClientNo, clientobject.EnterOutLogData.Student.AtReadingRoom.Name, clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
                                    result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录
                                    if (result == HandleResult.Successed)
                                    {
                                        PopupWindow popWindow_Continue = new PopupWindow(TipType.AutoContinuedTime);
                                        popWindow_Continue.ShowDialog();
                                    }
                                    else
                                    {
                                        PopupWindow popWindow_Continue = new PopupWindow(TipType.Exception);
                                        popWindow_Continue.ShowDialog();
                                    }
                                }
                                else
                                {
                                    clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.Leave;
                                    clientobject.EnterOutLogData.EnterOutlog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                    clientobject.EnterOutLogData.EnterOutlog.Remark        = string.Format("在终端{0}刷卡暂离回来,暂离期间在座超时,续时次数已用完,系统自动释放{1} {2}号座位", clientobject.ClientSetting.ClientNo, clientobject.EnterOutLogData.Student.AtReadingRoom.Name, clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
                                    result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录
                                    if (result == HandleResult.Successed)
                                    {
                                        PopupWindow popWindow_Continue = new PopupWindow(TipType.AutoContinuedTimeNoCount);
                                        popWindow_Continue.ShowDialog();
                                    }
                                    else
                                    {
                                        PopupWindow popWindow_Continue = new PopupWindow(TipType.Exception);
                                        popWindow_Continue.ShowDialog();
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (seatTimeEnterOutLog[0].EnterOutTime.AddMinutes(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.UsedTimeLength) < ServiceDateTime.Now)
                            {
                                if (clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.IsCanContinuedTime)
                                {
                                    if (clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes == 0 || clientobject.EnterOutLogData.Student.ContinuedTimeCount < clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes)
                                    {
                                        clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.ContinuedTime;
                                        clientobject.EnterOutLogData.EnterOutlog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                        clientobject.EnterOutLogData.EnterOutlog.Remark        = string.Format("在终端{0}刷卡暂离回来,暂离期间在座超时,系统自动延长{1} {2}号座位使用时间", clientobject.ClientSetting.ClientNo, clientobject.EnterOutLogData.Student.AtReadingRoom.Name, clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
                                        result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录
                                        if (result == HandleResult.Successed)
                                        {
                                            PopupWindow popWindow_Continue = new PopupWindow(TipType.AutoContinuedTime);
                                            popWindow_Continue.ShowDialog();
                                        }
                                        else
                                        {
                                            PopupWindow popWindow_Continue = new PopupWindow(TipType.Exception);
                                            popWindow_Continue.ShowDialog();
                                        }
                                    }
                                    else
                                    {
                                        clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.Leave;
                                        clientobject.EnterOutLogData.EnterOutlog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                        clientobject.EnterOutLogData.EnterOutlog.Remark        = string.Format("在终端{0}刷卡暂离回来,暂离期间在座超时,续时次数已用完,系统自动释放{1} {2}号座位", clientobject.ClientSetting.ClientNo, clientobject.EnterOutLogData.Student.AtReadingRoom.Name, clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
                                        result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录
                                        if (result == HandleResult.Successed)
                                        {
                                            PopupWindow popWindow_Continue = new PopupWindow(TipType.AutoContinuedTimeNoCount);
                                            popWindow_Continue.ShowDialog();
                                        }
                                        else
                                        {
                                            PopupWindow popWindow_Continue = new PopupWindow(TipType.Exception);
                                            popWindow_Continue.ShowDialog();
                                        }
                                    }
                                }
                                else
                                {
                                    clientobject.EnterOutLogData.EnterOutlog.EnterOutState = EnterOutLogType.Leave;
                                    clientobject.EnterOutLogData.EnterOutlog.TerminalNum   = clientobject.ClientSetting.ClientNo;
                                    clientobject.EnterOutLogData.EnterOutlog.Remark        = string.Format("在终端{0}刷卡暂离回来,暂离期间在座超时,系统自动释放{1} {2}号座位", clientobject.ClientSetting.ClientNo, clientobject.EnterOutLogData.Student.AtReadingRoom.Name, clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
                                    result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录
                                    if (result == HandleResult.Successed)
                                    {
                                        PopupWindow popWindow_Continue = new PopupWindow(TipType.AutoContinuedTimeNoCount);
                                        popWindow_Continue.ShowDialog();
                                    }
                                    else
                                    {
                                        PopupWindow popWindow_Continue = new PopupWindow(TipType.Exception);
                                        popWindow_Continue.ShowDialog();
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                PopupWindow popWindow_Continue = new PopupWindow(TipType.Exception);
                popWindow_Continue.ShowDialog();
            }
        }
Exemplo n.º 26
0
        public string QRcodeOperation(string codeStr, string studentNo)
        {
            try
            {
                AJM_HandleResult          result          = new AJM_HandleResult();
                string[]                  scanResultArray = codeStr.Split('?');
                ClientCheckCodeParamModel scancode        = null;
                if (scanResultArray.Length >= 2)
                {
                    string[] strParam = scanResultArray[1].Split('=');
                    if (strParam.Length >= 2)
                    {
                        scancode = ClientCheckCodeParamModel.Prase(strParam[1]);//兼容url的二维码。
                    }
                }
                else
                {
                    scancode = ClientCheckCodeParamModel.Prase(codeStr);
                }
                DateTime ndt = DateTime.Now;
                if (scancode == null)
                {
                    result.Result = false;
                    result.Msg    = "对不起,二维码错误!";
                    return(JSONSerializer.Serialize(result));
                }
                if (scancode.CodeTime.AddMinutes(1) <= ndt)
                {
                    result.Result = false;
                    result.Msg    = "对不起,二维码超时!";
                    return(JSONSerializer.Serialize(result));
                }
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "读者学号为空。";
                    return(JSONSerializer.Serialize(result));
                }
                ReaderInfo reader = SeatManageDateService.GetReader(studentNo, true);
                if (reader == null)
                {
                    result.Result = false;
                    result.Msg    = "获取读者信息失败。";
                    return(JSONSerializer.Serialize(result));
                }
                if (reader.EnterOutLog == null && reader.BespeakLog.Count < 1)
                {
                    result.Result = false;
                    result.Msg    = "对不起,您还没有座位,请先选择或预约一个座位。";
                }

                if (reader.EnterOutLog != null)
                {
                    switch (reader.EnterOutLog.EnterOutState)
                    {
                    case EnterOutLogType.BookingConfirmation: //预约入座
                    case EnterOutLogType.SelectSeat:          //选座
                    case EnterOutLogType.ContinuedTime:       //续时
                    case EnterOutLogType.ComeBack:            //暂离回来
                    case EnterOutLogType.ReselectSeat:        //重新选座
                    case EnterOutLogType.WaitingSuccess:      //等待入座
                        result.Result = false;
                        result.Msg    = "您当前已有座位。";
                        break;

                    case EnterOutLogType.ShortLeave:
                        reader.EnterOutLog.EnterOutState = EnterOutLogType.ComeBack;
                        reader.EnterOutLog.Remark        = string.Format("您在选座终端{0}扫描二维码恢复在座,本次暂离时长{1}分钟。", scancode.ClientNo, ((int)(ndt - reader.EnterOutLog.EnterOutTime).TotalMinutes));
                        reader.EnterOutLog.Flag          = Operation.Reader;
                        reader.EnterOutLog.EnterOutTime  = ndt;
                        result.Result = true;
                        int newId = -1;
                        if (SeatManageDateService.AddEnterOutLogInfo(reader.EnterOutLog, ref newId) != HandleResult.Successed)
                        {
                            result.Result = false;
                            result.Msg    = "对不起,暂离回来失败!";
                            return(JSONSerializer.Serialize(result));
                        }
                        result.Result = true;
                        result.Msg    = reader.EnterOutLog.Remark;
                        List <WaitSeatLogInfo> waitSeatLogs = SeatManageDateService.GetWaitLogList("", reader.EnterOutLog.EnterOutLogID, null, null, null);
                        if (waitSeatLogs.Count > 0)
                        {
                            WaitSeatLogInfo waitSeatLog = waitSeatLogs[0];
                            waitSeatLog.NowState     = LogStatus.Fail;
                            waitSeatLog.OperateType  = Operation.OtherReader;
                            waitSeatLog.WaitingState = EnterOutLogType.WaitingCancel;
                            SeatManageDateService.UpdateWaitLog(waitSeatLog);
                        }
                        break;

                    case EnterOutLogType.Leave:
                        result.Result = false;
                        result.Msg    = "对不起,您还没有座位,请先选择或预约一个座位。";
                        break;

                    default:
                        result.Result = false;
                        result.Msg    = "对不起,您还没有座位,请先选择或预约一个座位。";
                        break;
                    }
                    return(JSONSerializer.Serialize(result));
                }
                ReadingRoomSetting set     = reader.AtReadingRoom.Setting;
                DateTime           dtBegin = reader.BespeakLog[0].BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime));
                DateTime           dtEnd   = reader.BespeakLog[0].BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime));
                if (!DateTimeOperate.DateAccord(dtBegin, dtEnd, ndt) && (!set.SeatBespeak.NowDayBespeak || reader.BespeakLog[0].SubmitTime != reader.BespeakLog[0].BsepeakTime))
                {
                    result.Result = false;
                    result.Msg    = "对不起,您预约的座位没有到达签到时间";
                    return(JSONSerializer.Serialize(result));
                }
                EnterOutLogInfo seatUsedInfo = SeatManageDateService.GetEnterOutLogInfoBySeatNum(reader.BespeakLog[0].SeatNo);
                if (seatUsedInfo != null && seatUsedInfo.EnterOutState != EnterOutLogType.Leave)
                {
                    //条件满足,说明座位正在使用。
                    seatUsedInfo.EnterOutState = EnterOutLogType.Leave;
                    seatUsedInfo.EnterOutType  = LogStatus.Valid;
                    seatUsedInfo.Remark        = "您正在使用的座位已被原预约的读者";
                    seatUsedInfo.Flag          = Operation.OtherReader;
                    int newId = -1;
                    if (SeatManageDateService.AddEnterOutLogInfo(seatUsedInfo, ref newId) != HandleResult.Successed)
                    {
                        result.Result = false;
                        result.Msg    = "对不起,此阅览室尚未开放。";
                        return(JSONSerializer.Serialize(result));
                    }

                    List <WaitSeatLogInfo> waitInfoList = SeatManageDateService.GetWaitLogList(null, seatUsedInfo.EnterOutLogID, null, null, null);
                    if (waitInfoList.Count > 0)
                    {
                        WaitSeatLogInfo waitSeatLogModel = waitInfoList[0];
                        waitSeatLogModel.OperateType  = Operation.Reader;
                        waitSeatLogModel.WaitingState = EnterOutLogType.WaitingCancel;
                        waitSeatLogModel.NowState     = LogStatus.Valid;
                        SeatManageDateService.UpdateWaitLog(waitSeatLogModel);
                    }
                }
                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.ReadingRoomName = reader.BespeakLog[0].ReadingRoomName;
                newEnterOutLog.ShortSeatNo     = reader.BespeakLog[0].ShortSeatNum;
                newEnterOutLog.SeatNo          = reader.BespeakLog[0].SeatNo;
                newEnterOutLog.Remark          = string.Format("您在选座终端{0}扫描二维码,签到入座预约的{1} {2}号座位", scancode.ClientNo, reader.BespeakLog[0].ReadingRoomName, reader.BespeakLog[0].ShortSeatNum);

                int logid = -1;
                if (SeatManageDateService.AddEnterOutLogInfo(newEnterOutLog, ref logid) == HandleResult.Successed)
                {
                    reader.BespeakLog[0].BsepeakState = BookingStatus.Confinmed;
                    reader.BespeakLog[0].CancelPerson = Operation.Reader;
                    reader.BespeakLog[0].CancelTime   = ndt;
                    reader.BespeakLog[0].Remark       = newEnterOutLog.Remark;
                    SeatManageDateService.UpdateBespeakLogInfo(reader.BespeakLog[0]);
                }
                result.Result = true;
                result.Msg    = newEnterOutLog.Remark;
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write("读者签到/回来遇到异常:" + ex.Message);
                AJM_HandleResult result = new AJM_HandleResult();
                result.Result = false;
                result.Msg    = "执行遇到异常";
                return(JSONSerializer.Serialize(result));
            }
        }
Exemplo n.º 27
0
        /// <summary>
        /// 预约签到
        /// </summary>
        /// <param name="bookNo"></param>
        /// <returns></returns>
        public string ConfigSeat(int bookNo)
        {
            try
            {
                DateTime       nowDate    = DateTime.Now;
                BespeakLogInfo bespeaklog = seatManage.GetBespeaklogById(bookNo);
                if (bespeaklog == null)
                {
                    return("获取预约记录失败");
                }
                if (bespeaklog.BsepeakState != BookingStatus.Waiting)
                {
                    return("此条记录状态无效,请查询刷新页面");
                }

                List <ReadingRoomInfo> rooms = seatManage.GetReadingRoomInfo(new List <string>()
                {
                    bespeaklog.ReadingRoomNo
                });
                if (rooms.Count < 1)
                {
                    return("阅览室设置获取失败");
                }
                ReadingRoomSetting set     = rooms[0].Setting;
                DateTime           dtBegin = bespeaklog.BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime));
                DateTime           dtEnd   = bespeaklog.BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime));
                if (DateTimeOperate.DateAccord(dtBegin, dtEnd, nowDate) || (set.SeatBespeak.NowDayBespeak && bespeaklog.SubmitTime == bespeaklog.BsepeakTime))
                {
                    //TODO:预约时间在开始时间和结束时间之间,执行预约确认操作
                    //TODO:预约确认时,判断当前座位上是否有人。
                    EnterOutLogInfo seatUsedInfo = seatManage.GetEnterOutLogInfoBySeatNum(bespeaklog.SeatNo);
                    if (seatUsedInfo != null && seatUsedInfo.EnterOutState != EnterOutLogType.Leave)
                    { //条件满足,说明座位正在使用。
                        seatUsedInfo.EnterOutState = EnterOutLogType.Leave;
                        seatUsedInfo.EnterOutType  = LogStatus.Valid;
                        seatUsedInfo.Remark        = string.Format("预约该座位的读者在手机网站签到入座,设置在座读者离开");
                        seatUsedInfo.Flag          = Operation.OtherReader;
                        int newId = -1;
                        if (seatManage.AddEnterOutLogInfo(seatUsedInfo, ref newId) == HandleResult.Successed)
                        {
                            List <WaitSeatLogInfo> waitInfoList = seatManage.GetWaitLogList(null, seatUsedInfo.EnterOutLogID, null, null, null);
                            if (waitInfoList.Count > 0)
                            {
                                WaitSeatLogInfo WaitSeatLogModel = waitInfoList[0];
                                WaitSeatLogModel.OperateType  = Operation.Reader;
                                WaitSeatLogModel.WaitingState = EnterOutLogType.WaitingCancel;
                                WaitSeatLogModel.NowState     = LogStatus.Valid;
                                if (!seatManage.UpdateWaitLog(WaitSeatLogModel))
                                {
                                    return("取消等待此座位的读者状态失败");
                                }
                            }
                        }
                        else
                        {
                            return("设置当前使用此座位的读者离开失败");
                        }
                    }
                    EnterOutLogInfo newEnterOutLog = new EnterOutLogInfo();//构造
                    newEnterOutLog.CardNo          = bespeaklog.CardNo;
                    newEnterOutLog.EnterOutLogNo   = SeatComm.RndNum();
                    newEnterOutLog.EnterOutState   = EnterOutLogType.BookingConfirmation;
                    newEnterOutLog.EnterOutType    = LogStatus.Valid;
                    newEnterOutLog.Flag            = Operation.Reader;
                    newEnterOutLog.ReadingRoomNo   = bespeaklog.ReadingRoomNo;
                    newEnterOutLog.ReadingRoomName = bespeaklog.ReadingRoomName;
                    newEnterOutLog.ShortSeatNo     = bespeaklog.ShortSeatNum;
                    newEnterOutLog.SeatNo          = bespeaklog.SeatNo;
                    newEnterOutLog.Remark          = string.Format("在手机预约网站预约签到,入座预约的{0} {1}号座位", bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum);
                    int          logid  = -1;
                    HandleResult result = seatManage.AddEnterOutLogInfo(newEnterOutLog, ref logid); //添加入座记录
                    if (result == HandleResult.Successed)
                    {
                        bespeaklog.BsepeakState = BookingStatus.Confinmed;
                        bespeaklog.CancelPerson = Operation.Reader;
                        bespeaklog.CancelTime   = nowDate;
                        bespeaklog.Remark       = string.Format("在手机预约网站预约签到,入座预约的{0} {1}号座位", bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum);
                        if (seatManage.UpdateBespeakLogInfo(bespeaklog) > 0)
                        {
                            return("");
                        }
                        else
                        {
                            return("系统错误,签到失败");
                        }
                    }
                    else
                    {
                        return("系统错误,签到失败");
                    }
                }
                else if (nowDate.CompareTo(dtBegin) < 0)
                {
                    //TODO:预约时间过早,请在dtBegin 到dtEnd刷卡确认。
                    return("对不起,您预约的座位尚未到达签到时间,请在" + dtBegin.ToShortTimeString() + "到" + dtEnd.ToShortTimeString() + "间进行签到");
                }
                else if (nowDate.CompareTo(dtEnd) < 0)
                {
                    return("对不起,您预约已超时");
                }
                else
                {
                    return("系统错误,签到失败");
                }
            }
            catch (Exception ex)
            {
                SeatManageComm.WriteLog.Write(string.Format("预约签到失败:{0}", ex.Message));
                return("系统错误,签到失败");
            }
        }
Exemplo n.º 28
0
        /// <summary>
        /// 等待座位
        /// </summary>
        /// <returns></returns>
        public bool WaitSeat(SeatButton seatBtn)
        {
            WaitSeatLogInfo lastWaitInfo = T_SM_SeatWaiting.GetListWaitLogByCardNo(clientObject.EnterOutLogData.EnterOutlog.CardNo, clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo);
            ReadingRoomInfo roomInfo     = clientObject.EnterOutLogData.Student.AtReadingRoom;


            if (!string.IsNullOrEmpty(clientObject.EnterOutLogData.EnterOutlog.SeatNo))
            {
                MessageWindow popWindow = new MessageWindow(SeatManage.EnumType.MessageType.WaitSeatWithSeat);
                CountDown.Pause();
                popWindow.ShowDialog();
                CountDown.Start();
                return(false);
            }

            if (lastWaitInfo != null && lastWaitInfo.SeatWaitTime.AddMinutes(roomInfo.Setting.NoManagement.OperatingInterval).CompareTo(ServiceDateTime.Now) >= 0)
            {
                clientObject.EnterOutLogData.Student.WaitSeatLog = lastWaitInfo;
                MessageWindow popWindow = new MessageWindow(SeatManage.EnumType.MessageType.WaitSeatFrequent);
                CountDown.Pause();
                popWindow.ShowDialog();
                CountDown.Start();
                return(false);
            }
            SeatManage.EnumType.SeatLockState lockseat = T_SM_Seat.LockSeat(seatBtn.SeatNo);
            if (lockseat == SeatManage.EnumType.SeatLockState.Locked)//座位成功加锁
            {
                clientObject.EnterOutLogData.WaitSeatLogModel = new WaitSeatLogInfo()
                {
                    SeatNo = seatBtn.ShortSeatNo
                };
                MessageWindow popWindow = new MessageWindow(SeatManage.EnumType.MessageType.WaitSeatConfirm);
                CountDown.Pause();
                popWindow.ShowDialog();
                CountDown.Start();
                if (popWindow.viewModel.OperateResule == SeatManage.EnumType.HandleResult.Successed)
                {
                    //初始化等待记录 记录ID需要待执行之后添加。
                    WaitSeatLogInfo waitInfo = new WaitSeatLogInfo();
                    waitInfo.CardNo       = clientObject.EnterOutLogData.EnterOutlog.CardNo;
                    waitInfo.NowState     = SeatManage.EnumType.LogStatus.Valid;
                    waitInfo.OperateType  = SeatManage.EnumType.Operation.Reader;
                    waitInfo.WaitingState = SeatManage.EnumType.EnterOutLogType.Waiting;

                    EnterOutLogInfo seatUsingEnterOutInfo = SeatManage.Bll.T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatBtn.SeatNo);
                    seatUsingEnterOutInfo.EnterOutState = SeatManage.EnumType.EnterOutLogType.ShortLeave;
                    seatUsingEnterOutInfo.EnterOutType  = SeatManage.EnumType.LogStatus.Valid;
                    seatUsingEnterOutInfo.Flag          = SeatManage.EnumType.Operation.OtherReader;
                    seatUsingEnterOutInfo.TerminalNum   = clientObject.ClientSetting.ClientNo;
                    seatUsingEnterOutInfo.Remark        = string.Format("在{0} {1}号座位,被读者{2}在终端{3}设置为暂离并等待该座位", seatUsingEnterOutInfo.ReadingRoomName, seatUsingEnterOutInfo.ShortSeatNo, waitInfo.CardNo, clientObject.ClientSetting.ClientNo);

                    clientObject.EnterOutLogData.EnterOutlog      = seatUsingEnterOutInfo; //要等待读者的暂离记录
                    clientObject.EnterOutLogData.WaitSeatLogModel = waitInfo;              //等待记录

                    return(true);
                }
                else
                {
                    T_SM_Seat.UnLockSeat(seatBtn.SeatNo);//确认窗口点击取消或者自动关闭,则解锁。
                }
            }
            else if (lockseat == SeatManage.EnumType.SeatLockState.UnLock)//没有成功加锁
            {
                MessageWindow popWindow = new MessageWindow(SeatManage.EnumType.MessageType.SeatIsLocked);
                CountDown.Pause();
                popWindow.ShowDialog();
                CountDown.Start();
            }
            return(false);
        }