/// <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); } } }
/// <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, "操作失败")); } } }
/// <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)); } }
/// <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); } } }
/// <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(); }
/// <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); }
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)); } }
/// <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(); } } } }
/// <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()); } }
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:错误提示 } }
/// <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)); } }
/// <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:错误提示 } }