/// <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> public void ChooseSeat() { //进出记录相关属性赋值。 clientobject.EnterOutLogData.EnterOutlog.EnterOutLogNo = SeatManage.SeatManageComm.SeatComm.RndNum(); clientobject.EnterOutLogData.EnterOutlog.EnterOutState = SeatManage.EnumType.EnterOutLogType.SelectSeat; clientobject.EnterOutLogData.EnterOutlog.Flag = SeatManage.EnumType.Operation.Reader; clientobject.EnterOutLogData.EnterOutlog.EnterOutType = SeatManage.EnumType.LogStatus.Valid; ReadingRoom frmReadingRoom = new ReadingRoom(); WPF_Seat.SeatForm seat = WPF_Seat.SeatForm.GetInstance(); //while (true) //{ frmReadingRoom.ShowDialog(); if (clientobject.EnterOutLogData.FlowControl == SeatManage.EnumType.ClientOperation.Exit)//阅览室选座操作为退出,结束选座流程 { frmReadingRoom.Close(); return; } switch (frmReadingRoom.RoomSelectSeatMethod) { case SelectSeatMode.AutomaticMode: string tempSeatNo = T_SM_Seat.RandomAllotSeat(clientobject.EnterOutLogData.EnterOutlog.ReadingRoomNo); SeatManage.EnumType.SeatLockState lockseat = T_SM_Seat.LockSeat(tempSeatNo); if (lockseat == SeatLockState.Locked) //座位锁定失败,则提示 { clientobject.EnterOutLogData.EnterOutlog.Remark = string.Format("在终端{0}刷卡,自动选择{1} {2}号座位", clientobject.ClientSetting.ClientNo, clientobject.EnterOutLogData.Student.AtReadingRoom.Name, tempSeatNo.Substring(tempSeatNo.Length - clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatNumAmount)); clientobject.EnterOutLogData.EnterOutlog.SeatNo = tempSeatNo; clientobject.EnterOutLogData.EnterOutlog.TerminalNum = clientobject.ClientSetting.ClientNo; } else { clientobject.EnterOutLogData.EnterOutlog.SeatNo = ""; SeatManage.SeatClient.Tip.Tip_Framework tip = new SeatManage.SeatClient.Tip.Tip_Framework(SeatManage.EnumType.TipType.SeatLocking, 8); //显示提示窗体 tip.ShowDialog(); } break; case SelectSeatMode.ManualMode: seat.DrowSeatUsedInfo(); seat.ShowDialog(); //座位选择的操作为退出,结束选座流程;操作为选座,跳出循环;否则操作为back,继续执行循环操作 break; //} if (clientobject.EnterOutLogData.FlowControl == SeatManage.EnumType.ClientOperation.Exit) { frmReadingRoom.Close(); return; } else if (clientobject.EnterOutLogData.FlowControl == SeatManage.EnumType.ClientOperation.SelectSeat) { frmReadingRoom.Close(); break; } } if (string.IsNullOrEmpty(clientobject.EnterOutLogData.EnterOutlog.ReadingRoomNo) || string.IsNullOrEmpty(clientobject.EnterOutLogData.EnterOutlog.SeatNo)) { //如果阅览室编号或者座位号为空,则不执行插入操作。 frmReadingRoom.Close(); return; } int newLogId = -1; HandleResult result = EnterOutOperate.AddEnterOutLog(clientobject.EnterOutLogData.EnterOutlog, ref newLogId);//插入进出记录 frmReadingRoom.Dispose(); if (result == HandleResult.Successed) { T_SM_Seat.UnLockSeat(clientobject.EnterOutLogData.EnterOutlog.SeatNo);//记录插入成功,解锁座位 if (clientobject.EnterOutLogData.WaitSeatLogModel != null) { //等待记录的实体不为空,说明当前读者操作为等待座位。 //TODO:添加等待记录 clientobject.EnterOutLogData.WaitSeatLogModel.EnterOutLogID = newLogId; T_SM_SeatWaiting.AddWaitSeatLog(clientobject.EnterOutLogData.WaitSeatLogModel); PrintData data = new PrintData(); data.CardNo = clientobject.EnterOutLogData.WaitSeatLogModel.CardNo; data.EnterTime = ServiceDateTime.Now; data.ReaderName = clientobject.EnterOutLogData.Student.Name; data.ReadingRoomName = clientobject.EnterOutLogData.Student.AtReadingRoom.Name; data.SeatNo = SeatComm.SeatNoToShortSeatNo(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatNumAmount, clientobject.EnterOutLogData.EnterOutlog.SeatNo); data.SecCardNo = clientobject.EnterOutLogData.EnterOutlog.CardNo; double timelength = NowReadingRoomState.GetSeatHoldTime(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatHoldTime, data.EnterTime); data.WaitEndDateTime = data.EnterTime.AddMinutes(timelength); printer.Print(PrintStatus.Wait, data, clientobject.ClientSetting.ClientNo); Tip_Framework topform = new Tip_Framework(TipType.WaitSeatSuccess, 9); topform.OperateResule = result; topform.ShowDialog(); } else { PrintData data = new PrintData(); data.CardNo = clientobject.EnterOutLogData.EnterOutlog.CardNo; data.EnterTime = ServiceDateTime.Now; data.ReaderName = clientobject.EnterOutLogData.Student.Name; data.ReadingRoomName = clientobject.EnterOutLogData.Student.AtReadingRoom.Name; data.SeatNo = SeatComm.SeatNoToShortSeatNo(clientobject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatNumAmount, clientobject.EnterOutLogData.EnterOutlog.SeatNo); if (clientobject.ClientSetting.DeviceSetting.UsingPrintSlip) { printer.Print(PrintStatus.General, data, clientobject.ClientSetting.ClientNo); } //提示选座成功 Tip_Framework topform = new Tip_Framework(TipType.SelectSeatResult, 9); topform.OperateResule = result; topform.ShowDialog(); } } }