/// <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);
        }
        /// <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);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 暂离
        /// </summary>
        public void ShortLeave()
        {
            int newLogId = -1;

            clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("在离开终端刷卡暂时离开,保留{0} {1}号座位{2}分钟",
                                                                            clientobject.EnterOutLogData.Student.AtReadingRoom.Name,
                                                                            clientobject.EnterOutLogData.Student.EnterOutLog.ShortSeatNo,
                                                                            NowReadingRoomState.GetSeatHoldTime(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatHoldTime, ServiceDateTime.Now));
            HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录

            if (result == HandleResult.Successed)
            {
                if (popMessage != null)
                {
                    popMessage(this, new PopMessage(TipType.ShortLeave, "暂离成功"));
                }
            }
            else
            {
                if (popMessage != null)
                {
                    popMessage(this, new PopMessage(TipType.Exception, "操作失败"));
                }
            }
        }
Пример #4
0
        /// <summary>
        /// 续时
        /// </summary>
        public void ContinuedTime()
        {
            clientobject.ReaderInfo.EnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.ContinuedTime;//设置读者状态为暂回来
            clientobject.ReaderInfo.EnterOutLog.Flag          = SeatManage.EnumType.Operation.Reader;
            int newLogId = -1;

            if (clientobject.ReaderInfo.CanContinuedTime > ServiceDateTime.Now)
            {
                HandleResult(string.Format("    在座时间过短,请在{0}后续时。", clientobject.ReaderInfo.CanContinuedTime.ToShortTimeString()), SeatManage.EnumType.HandleResult.Successed);
                return;
            }
            if (clientobject.ReaderInfo.ContinuedTimeCount != 0 && (clientobject.ReaderInfo.ContinuedTimeCount >= clientobject.ReaderInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes))
            {
                HandleResult("    续时次数不足,请重新选座。", SeatManage.EnumType.HandleResult.Successed);
                return;
            }
            clientobject.ReaderInfo.EnterOutLog.Remark      = string.Format("在续时终端刷卡延长{0},{1}号座位使用时间", clientobject.ReaderInfo.AtReadingRoom.Name, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo);
            clientobject.ReaderInfo.EnterOutLog.TerminalNum = clientobject.ClientSetting.ClientNo;
            SeatManage.EnumType.HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.ReaderInfo.EnterOutLog, ref newLogId);//插入进出记录
            if (result == SeatManage.EnumType.HandleResult.Successed)
            {
                HandleResult(string.Format("    续时成功,延长{0},{1}号座位使用时间。", clientobject.ReaderInfo.AtReadingRoom.Name, clientobject.ReaderInfo.EnterOutLog.ShortSeatNo), SeatManage.EnumType.HandleResult.Successed);
                return;
            }
            else
            {
                //TODO:错误提示
            }
        }
        /// <summary>
        /// 释放座位
        /// </summary>
        public void ReleaseSeat()
        {
            int newLogId = -1;

            Clientobject.EnterOutLogData.EnterOutlog.TerminalNum = Clientobject.ClientSetting.ClientNo;
            Clientobject.EnterOutLogData.EnterOutlog.Remark      = string.Format("在终端{0}刷卡释放{1} {2}号座位", Clientobject.ClientSetting.ClientNo, Clientobject.EnterOutLogData.EnterOutlog.ReadingRoomName, Clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
            PopupWindowsObject.GetInstance().Window.ShowMessage(EnterOutOperate.AddEnterOutLog(Clientobject.EnterOutLogData.EnterOutlog, ref newLogId) == HandleResult.Successed ? TipType.Leave : TipType.Exception);
        }
        /// <summary>
        /// 暂离
        /// </summary>
        public void ShortLeave()
        {
            Clientobject.EnterOutLogData.EnterOutlog.TerminalNum = Clientobject.ClientSetting.ClientNo;
            int newLogId = -1;

            Clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("在终端{0}刷卡暂时离开,保留{1} {2}号座位{3}分钟", Clientobject.ClientSetting.ClientNo, Clientobject.EnterOutLogData.Student.AtReadingRoom.Name, Clientobject.EnterOutLogData.Student.EnterOutLog.ShortSeatNo, NowReadingRoomState.GetSeatHoldTime(Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatHoldTime, ServiceDateTime.Now));
            PopupWindowsObject.GetInstance().Window.ShowMessage(EnterOutOperate.AddEnterOutLog(Clientobject.EnterOutLogData.EnterOutlog, ref newLogId) == HandleResult.Successed ? TipType.ShortLeave : TipType.Exception);
        }
        /// <summary>
        /// 刷卡结果处理
        /// </summary>
        private void PosCardHandle(string cardNo)
        {
            try
            {
                clientObject.ReaderInfo = EnterOutOperate.GetReaderInfo(cardNo);
                #region 判断当前读者状态
                EnterOutLogType nowReaderStatus = EnterOutLogType.Leave;
                if (clientObject.ReaderInfo.EnterOutLog != null && clientObject.ReaderInfo.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
                {
                    nowReaderStatus = clientObject.ReaderInfo.EnterOutLog.EnterOutState;
                }
                else if (clientObject.ReaderInfo.BespeakLog.Count > 0)
                {
                    nowReaderStatus = EnterOutLogType.BespeakWaiting;
                }
                else if (clientObject.ReaderInfo.WaitSeatLog != null)
                {
                    nowReaderStatus = EnterOutLogType.Waiting;
                }
                #endregion


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

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

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

                default:
                    HandelMessage("   没有座位,谢谢配合。", EnumSimpleTipFormIco.Small);
                    break;
                }
            }
            catch (Exception ex)
            {
                SeatManage.SeatManageComm.WriteLog.Write("操作遇到异常:" + ex.Message);
                HandelMessage("   处理遇到异常,可能是因为网络原因导致,详细信息请查看错误日志。", EnumSimpleTipFormIco.Cry);
            }
        }
        /// <summary>
        /// 开馆处理
        /// </summary>
        /// <param name="readingRooms"></param>
        private void OpenReadingRoom(ReadingRoomInfo room)
        {
            DateTime nowDateTime = ServiceDateTime.Now;

            try
            {
                //获取昨天的进出记录
                List <EnterOutLogInfo> eolList = T_SM_EnterOutLog.GetEnterOutLogByStatus(null, room.No, null, enterOutLogTypeList, LogStatus.Valid, "1900-1-1", ServiceDateTime.Now.ToShortDateString());
                foreach (EnterOutLogInfo eol in eolList)
                {
                    if ((eol.EnterOutState == EnterOutLogType.ShortLeave) && (eol.Flag == Operation.Admin || eol.Flag == Operation.OtherReader))
                    {
                        //获取昨天的等待记录
                        List <WaitSeatLogInfo> wsllist = T_SM_SeatWaiting.GetWaitSeatList(null, eol.EnterOutLogID, null, null, new List <EnterOutLogType> {
                            EnterOutLogType.Waiting
                        });
                        if (wsllist.Count > 0)
                        {
                            wsllist[0].WaitingState    = EnterOutLogType.WaitingCancel;
                            wsllist[0].StatsChangeTime = nowDateTime;
                            T_SM_SeatWaiting.UpdateWaitLog(wsllist[0]);
                        }
                    }
                    eol.EnterOutState = EnterOutLogType.Leave;
                    eol.EnterOutTime  = nowDateTime;
                    eol.Flag          = Operation.Service;
                    eol.Remark        = string.Format("在{0},{1}号座位,闭馆释放座位", eol.ReadingRoomName, eol.SeatNo.Substring(eol.SeatNo.Length - room.Setting.SeatNumAmount));
                    int logdi = 0;
                    EnterOutOperate.AddEnterOutLog(eol, ref logdi);
                    WriteLog.Write(string.Format("监控服务:读者{0},{1}", eol.CardNo, eol.Remark));
                }
                //预约记录处理
                TimeSpan span = nowDateTime - DateTime.Parse("2010-1-1");
                List <BespeakLogInfo> blilist = T_SM_SeatBespeak.GetBespeakList(null, room.No, nowDateTime.AddDays(-1), span.Days, new List <BookingStatus> {
                    BookingStatus.Waiting
                });
                if (blilist.Count <= 0)
                {
                    return;
                }
                foreach (BespeakLogInfo bli in blilist.Where(bli => bli.BsepeakTime.Date < nowDateTime.Date))
                {
                    bli.CancelTime   = bli.BsepeakTime.AddMinutes(int.Parse(room.Setting.SeatBespeak.ConfirmTime.EndTime));
                    bli.CancelPerson = Operation.Service;
                    bli.BsepeakState = BookingStatus.Cencaled;
                    bli.Remark       = string.Format("读者,在{0},{1}号座位,预约,闭馆取消预约", bli.ReadingRoomName, bli.SeatNo.Substring(bli.SeatNo.Length - room.Setting.SeatNumAmount));
                    T_SM_SeatBespeak.UpdateBespeakList(bli);
                    WriteLog.Write(string.Format("监控服务:读者{0},{1}", bli.CardNo, bli.Remark));
                }
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("监控服务:执行开馆处理遇到错误:{0}", ex.Message));
            }
        }
Пример #9
0
 /// <summary>
 /// 选座验证操作。
 /// </summary>
 /// <param name="student">学生信息</param>
 /// <param name="room">选择的阅览室</param>
 /// <param name="clientconfig">客户端设置</param>
 /// <returns></returns>
 public static bool ProvenReaderState(ReaderInfo student, ReadingRoomInfo room, BlacklistSetting blacklistSet, ClientConfig clientconfig)
 {
     if (EnterOutOperate.CheckReaderChooseSeatTimes(student.CardNo, clientconfig.PosTimes))
     {
         SeatManage.SeatClient.Tip.Tip_Framework tipForm = new SeatManage.SeatClient.Tip.Tip_Framework(TipType.SelectSeatFrequent, 7);
         tipForm.ShowDialog();
         return(true);
     }
     else
     {
         if (room.Setting.UsedBlacklistLimit)
         {
             if (student.BlacklistLog.Count > 0)
             {
                 if (room.Setting.BlackListSetting.Used)
                 {
                     bool isBlack = false;
                     foreach (BlackListInfo blinfo in student.BlacklistLog)
                     {
                         if (blinfo.ReadingRoomID == room.No)
                         {
                             isBlack = true;
                             break;
                         }
                     }
                     if (isBlack)
                     {
                         Tip_Framework tip = new Tip_Framework(TipType.IsBlacklist, 7);
                         tip.ShowDialog();
                         return(true);
                     }
                     else
                     {
                         return(false);
                     }
                 }
                 else
                 {
                     Tip_Framework tip = new Tip_Framework(TipType.IsBlacklist, 7);
                     tip.ShowDialog();
                     return(true);
                 }
             }
             else
             {
                 return(false);
             }
         }
         else
         {
             return(false);
         }
     }
 }
Пример #10
0
        /// <summary>
        /// 激活预约操作
        /// </summary>
        /// <param name="cardNo"></param>
        void activeBespeak(string cardNo)
        {
            if (string.IsNullOrEmpty(cardNo))
            {
                return;
            }
            ReaderInfo reader = EnterOutOperate.GetSimpleReaderInfo(cardNo);
            UserInfo   user   = Users_ALL.GetUserInfo(cardNo);

            if (user != null)
            {
                if (user.IsUsing == SeatManage.EnumType.LogStatus.Valid)      //判断用户状态是否启用。
                {
                    ActivationClose formBespeakClose = new ActivationClose(); //启用中,则提示取消
                    this.countdown.Pause();
                    formBespeakClose.ShowDialog();
                    this.countdown.Start();
                    if (formBespeakClose.IsSure)
                    {
                        user.IsUsing = SeatManage.EnumType.LogStatus.Fail;//
                        user.Remark  = "终端刷卡注销";
                        Users_ALL.UpdateUserOnlyInfo(user);
                    }
                }
                else
                {//如果读者用户状态是失效,则重新激活。
                    user.IsUsing  = SeatManage.EnumType.LogStatus.Valid;
                    user.Password = MD5Algorithm.GetMD5Str32(cardNo);
                    user.Remark   = "终端刷卡重新激活";
                    if (Users_ALL.UpdateUserOnlyInfo(user))
                    {
                        ActivationSuccess successFrom = new ActivationSuccess(user.LoginId, cardNo);
                        successFrom.ShowDialog();
                    }
                }
            }
            else
            {
                UserInfo newUser = new UserInfo();
                newUser.IsUsing  = SeatManage.EnumType.LogStatus.Valid;
                newUser.LoginId  = cardNo;
                newUser.Password = MD5Algorithm.GetMD5Str32(cardNo);
                newUser.UserType = SeatManage.EnumType.UserType.Reader;
                newUser.UserName = reader == null ? "" : reader.Name;
                newUser.Remark   = "在终端刷卡激活";
                if (Users_ALL.AddNewUser(newUser))
                {
                    ActivationSuccess successFrom = new ActivationSuccess(newUser.LoginId, cardNo);
                    successFrom.ShowDialog();
                }
            }
            this.countdown.Stop();
            this.Close();
        }
Пример #11
0
        /// <summary>
        /// 获取座位使用情况
        /// </summary>
        public void GetUsingState()
        {
            LastSeatCount = AllSeatCount;
            Layout        = EnterOutOperate.GetRoomSeatLayOut(ReadingRoomNo);
            foreach (KeyValuePair <string, Seat> seat in Layout.Seats)
            {
                _seatLayoutList[seat.Key].IsBespeak    = false;
                _seatLayoutList[seat.Key].IsShortLeave = false;
                _seatLayoutList[seat.Key].IsUsing      = false;
                //_seatLayoutList[seat.Key].IsWaiting = false;
                switch (seat.Value.SeatUsedState)
                {
                case EnterOutLogType.Leave:
                    _seatLayoutList[seat.Key].IsUsing      = false;
                    _seatLayoutList[seat.Key].IsBespeak    = false;
                    _seatLayoutList[seat.Key].IsShortLeave = false;
                    _seatLayoutList[seat.Key].IsWaiting    = false;
                    break;

                case EnterOutLogType.SelectSeat:
                case EnterOutLogType.ReselectSeat:
                case EnterOutLogType.ComeBack:
                case EnterOutLogType.ContinuedTime:
                case EnterOutLogType.BookingConfirmation:
                case EnterOutLogType.WaitingSuccess:
                    _seatLayoutList[seat.Key].IsUsing      = true;
                    _seatLayoutList[seat.Key].IsBespeak    = false;
                    _seatLayoutList[seat.Key].IsShortLeave = false;
                    _seatLayoutList[seat.Key].IsWaiting    = false;
                    LastSeatCount--;
                    break;

                case EnterOutLogType.ShortLeave:
                    _seatLayoutList[seat.Key].IsUsing      = true;
                    _seatLayoutList[seat.Key].IsShortLeave = true;
                    _seatLayoutList[seat.Key].IsBespeak    = false;
                    _seatLayoutList[seat.Key].IsWaiting    = false;
                    LastSeatCount--;
                    break;

                case EnterOutLogType.BespeakWaiting:
                    _seatLayoutList[seat.Key].IsUsing      = false;
                    _seatLayoutList[seat.Key].IsBespeak    = true;
                    _seatLayoutList[seat.Key].IsShortLeave = false;
                    _seatLayoutList[seat.Key].IsWaiting    = false;
                    if (!_seatLayoutList[seat.Key].IsCanSelectBespeakSeat)
                    {
                        LastSeatCount--;
                    }
                    break;
                }
            }
        }
        /// <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);
            }
        }
        /// <summary>
        /// 获取使用状态
        /// </summary>
        public void GetUsage()
        {
            ReaderStatusInfo.ReaderInfo = ClientObject.EnterOutLogData.Student;
            DateTime nowDateTime = ServiceDateTime.Now;
            Dictionary <string, ReadingRoomSeatUsedState> roomStateList = EnterOutOperate.GetReadingRoomSeatUsingStateV2(ClientObject.ClientSetting.DeviceSetting.Rooms);

            foreach (KeyValuePair <string, ReadingRoomInfo> item in ClientObject.ReadingRoomList)
            {
                roomStateList[item.Key].SeatAmountAll = StateList[item.Key].AllSeatCount;
                StateList[item.Key].UsedSeatCount     = roomStateList[item.Key].SeatAmountUsed;
                StateList[item.Key].BookingSeatCount  = roomStateList[item.Key].SeatBookingCount;
                StateList[item.Key].Usage             = roomStateList[item.Key].RoomSeatUsingState;
                StateList[item.Key].Status            = NowReadingRoomState.ReadingRoomOpenState(item.Value.Setting.RoomOpenSet, nowDateTime);
            }
        }
        /// <summary>
        /// 续时
        /// </summary>
        public void ContinuedTime()
        {
            int newLogId = -1;

            //if (Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.RoomOpenSet.UninterruptibleModel)
            //{
            //    PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ContinuedTime);

            //}
            //else
            //{
            //    if (Clientobject.EnterOutLogData.Student.CanContinuedTime.AddMinutes(Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.CanDelayTime) >= DateTime.Parse(Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.RoomOpenSet.DefaultOpenTime.EndTime))
            //    {
            //        PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ContinuedTimeWithout);
            //        return;
            //    }
            //}
            if (Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.CanNotContinuedWithBookNetFixed && Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatBespeak.Used && Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatBespeak.SpecifiedBespeak && Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatBespeak.SpecifiedTime)
            {
                List <BespeakLogInfo> bookList = T_SM_SeatBespeak.GetBespeakLogInfoBySeatNo(Clientobject.EnterOutLogData.EnterOutlog.SeatNo, ServiceDateTime.Now);
                if (bookList.Any(log => Clientobject.EnterOutLogData.Student.CanContinuedTime.AddMinutes(Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.CanDelayTime) == log.BsepeakTime))
                {
                    PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ContinueWithBookLog);
                    return;
                }
            }
            if (Clientobject.EnterOutLogData.Student.CanContinuedTime.AddMinutes(Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.CanDelayTime) >= DateTime.Parse(Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.RoomOpenSet.DefaultOpenTime.EndTime))
            {
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ContinuedTimeWithout);
                return;
            }
            if (Clientobject.EnterOutLogData.Student.CanContinuedTime > ServiceDateTime.Now)
            {
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ContinuedTimeNotTime);
                return;
            }
            if (Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes != 0 && (Clientobject.EnterOutLogData.Student.ContinuedTimeCount >= Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes))
            {
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ContinuedTimeNoCount);
                return;
            }

            Clientobject.EnterOutLogData.EnterOutlog.Remark      = string.Format("在终端{0}刷卡延长{1} {2}号座位使用时间", Clientobject.ClientSetting.ClientNo, Clientobject.EnterOutLogData.Student.AtReadingRoom.Name, Clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
            Clientobject.EnterOutLogData.EnterOutlog.TerminalNum = Clientobject.ClientSetting.ClientNo;
            HandleResult result = EnterOutOperate.AddEnterOutLog(Clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录

            PopupWindowsObject.GetInstance().Window.ShowMessage(result == HandleResult.Successed ? TipType.ContinuedTime : TipType.Exception);
        }
Пример #15
0
        protected void btnDelayTime_OnClick(object sender, EventArgs e)
        {
            SeatManage.ClassModel.ReaderInfo reader = EnterOutOperate.GetReaderInfo(this.LoginId);
            reader.EnterOutLog.Remark        = "通过预约网站延长座位使用时间";
            reader.EnterOutLog.EnterOutState = EnterOutLogType.ContinuedTime;
            string result = EnterOutOperate.DelaySeatUsedTime(reader);

            if (!string.IsNullOrEmpty(result))
            {
                lblMsg.Text = result;
            }
            else
            {
                lblMsg.Text = "操作成功";
            }
        }
        /// <summary>
        /// 闭馆处理
        /// </summary>
        /// <param name="readingRooms"></param>
        private void CloseReadingRoom(ReadingRoomInfo room)
        {
            DateTime nowDateTime = ServiceDateTime.Now;

            //添加记录状态
            try
            {
                //获取今天的进出记录
                List <EnterOutLogInfo> eolList = T_SM_EnterOutLog.GetEnterOutLogByStatus(null, room.No, null, enterOutLogTypeList, LogStatus.Valid, nowDateTime.ToShortDateString(), null);
                foreach (EnterOutLogInfo eol in eolList)
                {
                    if ((eol.EnterOutState == EnterOutLogType.ShortLeave) && (eol.Flag == Operation.Admin || eol.Flag == Operation.OtherReader))
                    {
                        //获取今天的的等待记录
                        List <WaitSeatLogInfo> wsllist = T_SM_SeatWaiting.GetWaitSeatList(null, eol.EnterOutLogID, null, null, new List <EnterOutLogType> {
                            EnterOutLogType.Waiting
                        });
                        if (wsllist.Count > 0)
                        {
                            wsllist[0].WaitingState    = EnterOutLogType.WaitingCancel;
                            wsllist[0].StatsChangeTime = nowDateTime;
                            T_SM_SeatWaiting.UpdateWaitLog(wsllist[0]);
                        }
                    }
                    eol.EnterOutState = EnterOutLogType.Leave;
                    eol.EnterOutTime  = nowDateTime;
                    eol.Flag          = Operation.Service;
                    eol.Remark        = string.Format("在{0},{1}号座位,闭馆释放座位", eol.ReadingRoomName, eol.SeatNo.Substring(eol.SeatNo.Length - room.Setting.SeatNumAmount));
                    int logdi = 0;
                    EnterOutOperate.AddEnterOutLog(eol, ref logdi);


                    //PushMsgInfo msg = new PushMsgInfo();
                    //msg.Title = "您好,您的座位已被释放";
                    //msg.MsgType = MsgPushType.ToTime;
                    //msg.StudentNum = eol.CardNo;
                    //msg.Message = eol.Remark;
                    //SeatManage.Bll.T_SM_ReaderNotice.SendPushMsg(msg);

                    WriteLog.Write(string.Format("监控服务:读者{0},{1}", eol.CardNo, eol.Remark));
                }
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("监控服务:执行闭馆处理遇到错误:{0}", ex.Message));
            }
        }
Пример #17
0
        /// <summary>
        /// 获取使用状态
        /// </summary>
        public void GetUsage()
        {
            DateTime nowDateTime = ServiceDateTime.Now;
            Dictionary <string, ReadingRoomSeatUsedState> roomStateList = EnterOutOperate.GetReadingRoomSeatUsingStateV2(_roomList.Select(item => item.No).ToList());

            foreach (ReadingRoomInfo item in _roomList)
            {
                roomStateList[item.No].SeatAmountAll = StateList[item.No].AllSeatCount;
                StateList[item.No].UsingCount        = roomStateList[item.No].SeatAmountUsed;
                StateList[item.No].BookingCount      = roomStateList[item.No].SeatBookingCount;
                StateList[item.No].UsingStatus       = roomStateList[item.No].RoomSeatUsingState;
                StateList[item.No].RoomStatus        = NowReadingRoomState.ReadingRoomOpenState(item.Setting.RoomOpenSet, nowDateTime);
            }
            LibStatus.AllSeatCount = StateList.Where(u => u.Value.RoomStatus != SeatManage.EnumType.ReadingRoomStatus.Close).Sum(u => u.Value.AllSeatCount);
            LibStatus.BookingCount = StateList.Sum(u => u.Value.BookingCount);
            LibStatus.UsingCount   = StateList.Sum(u => u.Value.UsingCount);
        }
        /// <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();
                    }
                }

            }
        }
Пример #19
0
        /// <summary>
        /// 续时
        /// </summary>
        public void ContinuedTime()
        {
            int newLogId = -1;

            if (clientobject.EnterOutLogData.Student.CanContinuedTime.AddMinutes(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.CanDelayTime) >= DateTime.Parse(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.RoomOpenSet.DefaultOpenTime.EndTime))
            {
                if (popMessage != null)
                {
                    popMessage(this, new PopMessage(TipType.ContinuedTimeWithout, "无需续时"));
                }
                return;
            }
            if (clientobject.EnterOutLogData.Student.CanContinuedTime > ServiceDateTime.Now)
            {
                if (popMessage != null)
                {
                    popMessage(this, new PopMessage(TipType.ContinuedTimeNotTime, "还没到达可续时时间"));
                }
                return;
            }
            if (clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes != 0 && (clientobject.EnterOutLogData.Student.ContinuedTimeCount >= clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes))
            {
                PopupWindow popWindow = new PopupWindow(TipType.ContinuedTimeNoCount);
                popWindow.Show();
                return;
            }
            clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("在离开终端刷卡延长{0} {1}号座位使用时间", clientobject.EnterOutLogData.Student.AtReadingRoom.Name, clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
            HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录

            if (result == HandleResult.Successed)
            {
                if (popMessage != null)
                {
                    popMessage(this, new PopMessage(TipType.ContinuedTime, "续时成功"));
                }
            }
            else
            {
                if (popMessage != null)
                {
                    popMessage(this, new PopMessage(TipType.Exception, "操作失败"));
                }
            }
        }
        /// <summary>
        /// 续时
        /// </summary>
        public void ContinuedTime()
        {
            int newLogId = -1;

            if (clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.RoomOpenSet.UninterruptibleModel)
            {
                MessageWindow popWindow = new MessageWindow(MessageType.ContinueWhenSuccess);
            }
            else
            {
                if (clientobject.EnterOutLogData.Student.CanContinuedTime.AddMinutes(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.CanDelayTime) >= DateTime.Parse(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.RoomOpenSet.DefaultOpenTime.EndTime))
                {
                    MessageWindow popWindow = new MessageWindow(MessageType.ContinueWhenNotNeed);
                    popWindow.ShowDialog();
                    return;
                }
            }
            if (clientobject.EnterOutLogData.Student.CanContinuedTime > ServiceDateTime.Now)
            {
                MessageWindow popWindow = new MessageWindow(MessageType.ContinueWhenNotSpan);
                popWindow.ShowDialog();
                return;
            }
            if (clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes != 0 && (clientobject.EnterOutLogData.Student.ContinuedTimeCount >= clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes))
            {
                MessageWindow popWindow = new MessageWindow(MessageType.ContinueWhenNoCount);
                popWindow.ShowDialog();
                return;
            }
            clientobject.EnterOutLogData.EnterOutlog.Remark      = string.Format("在终端{0}刷卡延长{1} {2}号座位使用时间", clientobject.ClientSetting.ClientNo, clientobject.EnterOutLogData.Student.AtReadingRoom.Name, clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
            clientobject.EnterOutLogData.EnterOutlog.TerminalNum = clientobject.ClientSetting.ClientNo;
            HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录

            if (result == HandleResult.Successed)
            {
                MessageWindow popWindow = new MessageWindow(MessageType.ContinueWhenSuccess);
                popWindow.ShowDialog();
            }
            else
            {
                MessageWindow popWindow = new MessageWindow(MessageType.Exception);
                popWindow.ShowDialog();
            }
        }
 /// <summary>
 /// 释放座位
 /// </summary>
 public void ReleaseSeat()
 {
     int newLogId = -1;
     clientobject.EnterOutLogData.EnterOutlog.TerminalNum = clientobject.ClientSetting.ClientNo;
     clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("在终端{0}刷卡释放{1} {2}号座位",
         clientobject.ClientSetting.ClientNo,
         clientobject.EnterOutLogData.EnterOutlog.ReadingRoomName,
         clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
     HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录
     if (result == HandleResult.Successed)
     {
         MessageWindow popWindow = new MessageWindow(MessageType.Leave);
         popWindow.ShowDialog();
     }
     else
     {
         MessageWindow popWindow = new MessageWindow(MessageType.Exception);
         popWindow.ShowDialog();
     }
 }
 public RoomSeatWindow_ViewModel()
 {
     WindowHeight    = clientObject.ClientSetting.DeviceSetting.SystemResoultion.WindowSize.Size.Y;
     WindowWidth     = clientObject.ClientSetting.DeviceSetting.SystemResoultion.WindowSize.Size.X;
     WindowLeft      = clientObject.ClientSetting.DeviceSetting.SystemResoultion.WindowSize.Location.X;
     WindowTop       = clientObject.ClientSetting.DeviceSetting.SystemResoultion.WindowSize.Location.Y;
     ReadingRoomName = clientObject.EnterOutLogData.Student.AtReadingRoom.Name;
     if (clientObject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatChooseMethod.DefaultChooseMethod == SeatManage.EnumType.SelectSeatMode.OptionalMode)
     {
         RandomBtn = "Visible";
     }
     if (clientObject.ClientSetting.DeviceSetting.UsingEnterNoForSeat)
     {
         KeybroadBtn = "Visible";
     }
     Layout = EnterOutOperate.GetRoomSeatLayOut(clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo);
     if (DrowSeatLayout != null)
     {
         DrowSeatLayout(this, new EventArgs());
     }
 }
Пример #23
0
 protected void btnLeave_OnClick(object sender, EventArgs e)
 {
     try
     {
         SeatManage.ClassModel.ReaderInfo reader = EnterOutOperate.GetReaderInfo(this.LoginId);
         int newLogId = -1;
         reader.EnterOutLog.EnterOutState = EnterOutLogType.Leave;
         reader.EnterOutLog.Flag          = Operation.Reader;
         reader.EnterOutLog.Remark        = "通过预约网站释放座位";
         HandleResult reault = EnterOutOperate.AddEnterOutLog(reader.EnterOutLog, ref newLogId);
         if (reault == HandleResult.Successed)
         {
             lblMsg.Text = "操作成功";
             DateBind();
         }
     }
     catch (Exception ex)
     {
         lblMsg.Text = "未知错误,操作失败";
     }
 }
 /// <summary>
 /// 暂离
 /// </summary>
 public void ShortLeave()
 {
     clientobject.EnterOutLogData.EnterOutlog.TerminalNum = clientobject.ClientSetting.ClientNo;
     int newLogId = -1;
     clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("在终端{0}刷卡暂时离开,保留{1} {2}号座位{3}分钟",
         clientobject.ClientSetting.ClientNo,
         clientobject.EnterOutLogData.Student.AtReadingRoom.Name,
         clientobject.EnterOutLogData.Student.EnterOutLog.ShortSeatNo,
         NowReadingRoomState.GetSeatHoldTime(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatHoldTime, ServiceDateTime.Now));
     HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录
     if (result == HandleResult.Successed)
     {
         MessageWindow popWindow = new MessageWindow(MessageType.ShortLeave);
         popWindow.ShowDialog();
     }
     else
     {
         MessageWindow popWindow = new MessageWindow(MessageType.Exception);
         popWindow.ShowDialog();
     }
 }
        /// <summary>
        /// 释放座位
        /// </summary>
        public void ReleaseSeat()
        {
            int newLogId = -1;

            clientobject.EnterOutLogData.EnterOutlog.TerminalNum = clientobject.ClientSetting.ClientNo;
            clientobject.EnterOutLogData.EnterOutlog.Remark      = string.Format("在终端{0}刷卡释放{1} {2}号座位",
                                                                                 clientobject.ClientSetting.ClientNo,
                                                                                 clientobject.EnterOutLogData.EnterOutlog.ReadingRoomName,
                                                                                 clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
            HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录

            if (result == HandleResult.Successed)
            {
                Tip_Framework topform = new Tip_Framework(TipType.Leave, 9);
                topform.ShowDialog();
            }
            else
            {
                //TODO:错误提示
            }
        }
        /// <summary>
        /// 暂离
        /// </summary>
        public void ShortLeave()
        {
            clientobject.EnterOutLogData.EnterOutlog.TerminalNum = clientobject.ClientSetting.ClientNo;
            int newLogId = -1;

            clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("在终端{0}刷卡暂时离开,保留{1} {2}号座位{3}分钟",
                                                                            clientobject.ClientSetting.ClientNo,
                                                                            clientobject.EnterOutLogData.Student.AtReadingRoom.Name,
                                                                            clientobject.EnterOutLogData.Student.EnterOutLog.ShortSeatNo,
                                                                            NowReadingRoomState.GetSeatHoldTime(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatHoldTime, ServiceDateTime.Now));
            HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录

            if (result == HandleResult.Successed)
            {
                Tip_Framework topform = new Tip_Framework(TipType.ShortLeave, 9);
                topform.ShowDialog();
            }
            else
            {
                //TODO:错误提示
            }
        }
Пример #27
0
        /// <summary>
        /// 暂时离开
        /// </summary>
        public void ShortLeave()
        {
            clientobject.ReaderInfo.EnterOutLog.TerminalNum   = clientobject.ClientSetting.ClientNo;
            clientobject.ReaderInfo.EnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.ShortLeave;
            int newLogId = -1;

            clientobject.ReaderInfo.EnterOutLog.Remark = string.Format("在暂离终端刷卡暂离,保留{1} {2}号座位{3}分钟",
                                                                       clientobject.ClientSetting.ClientNo,
                                                                       clientobject.ReaderInfo.AtReadingRoom.Name,
                                                                       clientobject.ReaderInfo.EnterOutLog.ShortSeatNo,
                                                                       NowReadingRoomState.GetSeatHoldTime(clientobject.ReaderInfo.AtReadingRoom.Setting.SeatHoldTime, ServiceDateTime.Now));
            try
            {
                SeatManage.EnumType.HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.ReaderInfo.EnterOutLog, ref newLogId);//插入进出记录
                if (result == SeatManage.EnumType.HandleResult.Successed)
                {
                    if (HandleResult != null)
                    {
                        HandleResult(string.Format("   谢谢配合,请在{0}分钟内回来刷卡。", NowReadingRoomState.GetSeatHoldTime(clientobject.ReaderInfo.AtReadingRoom.Setting.SeatHoldTime, ServiceDateTime.Now)), SeatManage.EnumType.HandleResult.Successed);
                    }
                }
                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);
                }
            }
        }
        /// <summary>
        /// 在座超时处理
        /// </summary>
        /// <param name="leavetype">处理类型</param>
        /// <param name="eol">进出记录</param>
        private static void SeatOverTimeOperator(ReadingRoomSetting roomSetting, EnterOutLogInfo eol, DateTime nowDateTime)
        {
            try
            {
                int logdi = 0;
                //在座超时处理
                switch (roomSetting.SeatUsedTimeLimit.OverTimeHandle)
                {
                case EnterOutLogType.Leave:
                    eol.EnterOutState = EnterOutLogType.Leave;
                    eol.EnterOutTime  = nowDateTime;
                    eol.Flag          = Operation.Service;
                    eol.Remark        = string.Format("在{0},{1}号座位,在座超时,监控服务释放座位", eol.ReadingRoomName, eol.SeatNo.Substring(eol.SeatNo.Length - roomSetting.SeatNumAmount));
                    EnterOutOperate.AddEnterOutLog(eol, ref logdi);
                    WriteLog.Write(string.Format("监控服务:读者{0},{1}", eol.CardNo, eol.Remark));
                    //违规处理
                    if (roomSetting.IsRecordViolate)
                    {
                        AddViolationRecordByEnterOutLog(eol, ViolationRecordsType.SeatOutTime, string.Format("读者在{0},{1}号座位,在座超时", eol.ReadingRoomName, eol.SeatNo.Substring(eol.SeatNo.Length - roomSetting.SeatNumAmount)), roomSetting, nowDateTime);
                    }
                    break;

                case EnterOutLogType.ShortLeave:
                    eol.EnterOutState = EnterOutLogType.ShortLeave;
                    eol.EnterOutTime  = nowDateTime;
                    eol.Flag          = Operation.Service;
                    eol.Remark        = string.Format("在{0},{1}号座位,在座超时,监控服务设置暂离", eol.ReadingRoomName, eol.SeatNo.Substring(eol.SeatNo.Length - roomSetting.SeatNumAmount));
                    EnterOutOperate.AddEnterOutLog(eol, ref logdi);
                    WriteLog.Write(string.Format("监控服务:读者{0},{1}", eol.CardNo, eol.Remark));
                    break;
                }
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("监控服务:处理读者在座超时发生错误:" + ex.Message));
            }
        }
Пример #29
0
        /// <summary>
        /// 释放座位
        /// </summary>
        public void Leave()
        {
            int newLogId = -1;

            clientobject.ReaderInfo.EnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.Leave;
            clientobject.ReaderInfo.EnterOutLog.TerminalNum   = clientobject.ClientSetting.ClientNo;
            clientobject.ReaderInfo.EnterOutLog.Remark        = string.Format("在离开终端刷卡释放{0} {1}号座位",
                                                                              clientobject.ReaderInfo.EnterOutLog.ReadingRoomName,
                                                                              clientobject.ReaderInfo.EnterOutLog.ShortSeatNo);
            try
            {
                SeatManage.EnumType.HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.ReaderInfo.EnterOutLog, ref newLogId);//插入进出记录
                if (result == SeatManage.EnumType.HandleResult.Successed)
                {
                    if (HandleResult != null)
                    {
                        HandleResult("    成功释放座位!", SeatManage.EnumType.HandleResult.Successed);
                    }
                }
                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);
                }
            }
        }
        /// <summary>
        /// 续时
        /// </summary>
        public void ContinuedTime()
        {
            int newLogId = -1;

            if (clientobject.EnterOutLogData.Student.CanContinuedTime == DateTime.Parse(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.RoomOpenSet.DefaultOpenTime.EndTime))
            {
                Tip_Framework tipForm = new Tip_Framework(TipType.ContinuedTimeWithout, 9);
                tipForm.ShowDialog();
                return;
            }
            if (clientobject.EnterOutLogData.Student.CanContinuedTime > ServiceDateTime.Now)
            {
                Tip_Framework tipForm = new Tip_Framework(TipType.ContinuedTimeNotTime, 9);
                tipForm.ShowDialog();
                return;
            }
            if (clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes != 0 && (clientobject.EnterOutLogData.Student.ContinuedTimeCount >= clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatUsedTimeLimit.ContinuedTimes))
            {
                Tip_Framework tipForm = new Tip_Framework(TipType.ContinuedTimeNoCount, 9);
                tipForm.ShowDialog();
                return;
            }
            clientobject.EnterOutLogData.EnterOutlog.Remark      = string.Format("在终端{0}刷卡延长{1} {2}号座位使用时间", clientobject.ClientSetting.ClientNo, clientobject.EnterOutLogData.Student.AtReadingRoom.Name, clientobject.EnterOutLogData.EnterOutlog.ShortSeatNo);
            clientobject.EnterOutLogData.EnterOutlog.TerminalNum = clientobject.ClientSetting.ClientNo;
            HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录

            if (result == HandleResult.Successed)
            {
                Tip_Framework tipForm = new Tip_Framework(TipType.ContinuedTime, 9);
                tipForm.ShowDialog();
            }
            else
            {
                //TODO:错误提示
            }
        }