/// <summary> /// 分区域排列 /// </summary> public void GetRoomArea() { try { //添加区域 List <LibraryInfo> linList = T_SM_Library.GetLibraryInfoList(null, null, null); foreach (AreaInfo area in from lib in linList from area in lib.AreaList where !ReadingRoomUsage.ContainsKey(area.AreaName) select area) { ReadingRoomUsage.Add(area.AreaName, new List <ReadingRoomUC_ViewModel>()); } if (!ReadingRoomUsage.ContainsKey("阅览室")) { ReadingRoomUsage.Add("阅览室", new List <ReadingRoomUC_ViewModel>()); } foreach (KeyValuePair <string, ReadingRoomInfo> item in ClientObject.ReadingRoomList) { if (item.Value.Area.AreaName == "") { item.Value.Area.AreaName = "阅览室"; } ReadingRoomUC_ViewModel viewModel = new ReadingRoomUC_ViewModel(); viewModel.ReadingRoomName = item.Value.Name; viewModel.ReadingRoomNo = item.Value.No; viewModel.IsBook = item.Value.Setting.SeatBespeak.Used; viewModel.AllSeatCount = item.Value.SeatList.Seats.Count(u => u.Value.IsSuspended == false); StateList.Add(viewModel.ReadingRoomNo, viewModel); ReadingRoomUsage[item.Value.Area.AreaName].Add(StateList[viewModel.ReadingRoomNo]); } List <string> deleteArea = (from item in ReadingRoomUsage where item.Value.Count < 1 select item.Key).ToList(); foreach (string a in deleteArea) { ReadingRoomUsage.Remove(a); } } catch (Exception ex) { WriteLog.Write("加载阅览室遇到异常" + ex.Message); PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.Exception); } }
/// <summary> /// 进入阅览室前判断 /// </summary> /// <param name="roomNo"></param> public void EnterReadingRoom(ReadingRoomUC_ViewModel vm_Room) { try { //ClientObject.EnterOutLogData.FlowControl = ClientOperation.Back; ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = vm_Room.ReadingRoomNo; ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(vm_Room.ReadingRoomNo); if (vm_Room.Status == ReadingRoomStatus.Close || vm_Room.Status == ReadingRoomStatus.BeforeClose) { ClientObject.EnterOutLogData.Student.AtReadingRoom = roomInfo; PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ReadingRoomClosing); ClientObject.EnterOutLogData.Student.AtReadingRoom = null; return; } if (vm_Room.Usage == ReadingRoomUsingStatus.Full && (!roomInfo.Setting.NoManagement.Used)) { PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ReadingRoomFull); return; } ClientObject.EnterOutLogData.Student.AtReadingRoom = roomInfo;//给读者所在的阅览室赋值。 //验证读者身份是否允许选择该阅览室。 if (!SelectSeatProven.ProvenReaderType(ClientObject.EnterOutLogData.Student, roomInfo.Setting)) { PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ReaderTypeInconformity); return; } //验证读者黑名单,选座次数。 if (SelectSeatProven.ProvenReaderState(ClientObject.EnterOutLogData.Student, roomInfo, ClientObject.RegulationRulesSet.BlacklistSet, ClientObject.ClientSetting.DeviceSetting)) { ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = ""; return; } //TODO:验证终端选座方式 if (vm_Room.Usage == ReadingRoomUsingStatus.Full && roomInfo.Setting.NoManagement.Used) { ClientObject.EnterOutLogData.FlowControl = ClientOperation.SelectSeat; ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = roomInfo.No; ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = roomInfo.Name; //ReadingRoomWindowObject.GetInstance().Window.Hide(); RoomSeatWindowObject.GetInstance(roomInfo.No).Window[roomInfo.No].ShowMessage(); } else { SelectSeatMode selectSeatMethod = SelectSeatProven.ProvenSelectSeatMethod(ClientObject.ClientSetting.DeviceSetting, roomInfo.Setting.SeatChooseMethod); if (selectSeatMethod == SelectSeatMode.OptionalMode || selectSeatMethod == SelectSeatMode.ManualMode) { ClientObject.EnterOutLogData.FlowControl = ClientOperation.SelectSeat; ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = roomInfo.No; ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = roomInfo.Name; //ReadingRoomWindowObject.GetInstance().Window.Hide(); RoomSeatWindowObject.GetInstance(roomInfo.No).Window[roomInfo.No].ShowMessage(); } else { ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = roomInfo.No; ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = roomInfo.Name; string tempSeatNo = T_SM_Seat.RandomAllotSeat(ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo); if (T_SM_Seat.LockSeat(tempSeatNo) != SeatLockState.Locked)//座位锁定失败,则提示 { ClientObject.EnterOutLogData.EnterOutlog.SeatNo = ""; PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.SeatLocking); return; } 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; ClientObject.EnterOutLogData.EnterOutlog.ShortSeatNo = SeatComm.SeatNoToShortSeatNo(ClientObject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatNumAmount, ClientObject.EnterOutLogData.EnterOutlog.SeatNo); ClientObject.EnterOutLogData.FlowControl = ClientOperation.SelectSeat; //操作为选择座位 } } //RoomSeatWindowObject.GetInstance(roomInfo.No).Window[roomInfo.No] = null; } catch (Exception ex) { WriteLog.Write("加载阅览室遇到异常" + ex.Message); PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.Exception); } }