/// <summary> /// 获取座位的可预约信息 /// </summary> /// <param name="seatNo"></param> /// <param name="roomNo"></param> /// <param name="bespeakTime"></param> /// <returns></returns> public string GetSeatBespeakInfo(string seatNo, string roomNo, string bespeakTime) { AJM_HandleResult result = new AJM_HandleResult(); try { if (string.IsNullOrEmpty(roomNo) || string.IsNullOrEmpty(bespeakTime)) { result.Result = false; result.Msg = "阅览室编号或预约时间不能为空!"; return(JSONSerializer.Serialize(result)); } //如果预约日期是当天,获取当天可用座位(排除已被预约座位) DateTime bespeakDate; if (!DateTime.TryParse(bespeakTime, out bespeakDate)) { result.Result = false; result.Msg = "日期格式不正确!"; return(JSONSerializer.Serialize(result)); } if (bespeakDate.Date < DateTime.Now.Date) { result.Result = false; result.Msg = "查询日期不能早于当天日期!"; return(JSONSerializer.Serialize(result)); } List <ReadingRoomInfo> readingRoomInfos = SeatManageDateService.GetReadingRoomInfo(new List <string> { roomNo }); if (readingRoomInfos.Count < 1) { result.Result = false; result.Msg = "阅览室不存在!"; return(JSONSerializer.Serialize(result)); } if (!readingRoomInfos[0].SeatList.Seats.ContainsKey(seatNo)) { result.Result = false; result.Msg = "该座位不存在!"; return(JSONSerializer.Serialize(result)); } if (readingRoomInfos[0].SeatList.Seats[seatNo].IsSuspended) { result.Result = false; result.Msg = "该座位暂停使用!"; return(JSONSerializer.Serialize(result)); } if (!readingRoomInfos[0].Setting.SeatBespeak.Used) { result.Result = false; result.Msg = "当前阅览室不提供预约!"; return(JSONSerializer.Serialize(result)); } if ((bespeakDate.Date - DateTime.Now.Date).Days > readingRoomInfos[0].Setting.SeatBespeak.BespeakBeforeDays) { result.Result = false; result.Msg = "您选择的日期尚未开放预约!"; return(JSONSerializer.Serialize(result)); } if (bespeakDate.Date == DateTime.Now.Date && !readingRoomInfos[0].Setting.SeatBespeak.NowDayBespeak) { result.Result = false; result.Msg = "当前阅览室未开放当天预约!"; return(JSONSerializer.Serialize(result)); } if ((bespeakDate.Date == DateTime.Now.Date) && readingRoomInfos[0].Setting.ReadingRoomOpenState(bespeakDate.Date) != EnumType.ReadingRoomStatus.Close) { result.Result = false; result.Msg = "对不起当前预约时间段阅览室未开放!"; return(JSONSerializer.Serialize(result)); } if (bespeakDate.Date != DateTime.Now.Date && !readingRoomInfos[0].Setting.IsCanBespeakSeat(bespeakDate)) { result.Result = false; result.Msg = "当前时间暂未开放预约!"; return(JSONSerializer.Serialize(result)); } if (bespeakDate.Date == DateTime.Now.Date) { Seat seat = SeatManageDateService.GetSeatInfoBySeatNum(seatNo); if (seat == null) { result.Result = false; result.Msg = "对不起,获取座位信息失败!"; return(JSONSerializer.Serialize(result)); } if (seat.SeatUsedState != EnterOutLogType.Leave) { result.Result = false; result.Msg = "对不起此座位已被其他人使用!"; return(JSONSerializer.Serialize(result)); } } if (SeatManageDateService.GetBespeakLogInfoBySeatNo(seatNo, bespeakDate.Date).Count > 0) { result.Result = false; result.Msg = "对不起此座位已被其他人预约!"; return(JSONSerializer.Serialize(result)); } AJM_SeatBespeakInfo ajmseat = new AJM_SeatBespeakInfo(); ajmseat.SeatNo = seatNo; ajmseat.SeatShortNo = readingRoomInfos[0].SeatList.Seats[seatNo].ShortSeatNo; ajmseat.RoomNo = readingRoomInfos[0].No; ajmseat.RoomName = readingRoomInfos[0].Name; ajmseat.BespeakDate = bespeakDate.ToShortDateString(); ajmseat.IsCanSelectTime = readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak; ajmseat.IsUsedSpan = readingRoomInfos[0].Setting.SeatBespeak.SpecifiedTime; ajmseat.CheckKeepTime = (int)readingRoomInfos[0].Setting.SeatBespeak.SeatKeepTime; ajmseat.CheckBeforeTime = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.BeginTime); ajmseat.CheckLastTime = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.EndTime); DateTime bookstartTime = readingRoomInfos[0].Setting.DateOpenTime(bespeakDate); if (bookstartTime > DateTime.Now) { ajmseat.IsCanNowBook = false; ajmseat.IsCanSelectTime = true; } if (readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak) { List <DateTime> timeSpans = readingRoomInfos[0].Setting.GetSelectTimeList(bespeakDate); foreach (var time in timeSpans) { ajmseat.TimeList.Add(time.ToShortTimeString()); } } else { ajmseat.TimeList.Add(readingRoomInfos[0].Setting.DateOpenTime(bespeakDate).ToShortTimeString()); } //if (ajmseat.IsCanSelectTime) //{ // List<DateTime> timeSpans = readingRoomInfos[0].Setting.GetSelectTimeList(besppeakDate); // foreach (var time in timeSpans) // { // ajmseat.TimeList.Add(time.ToShortTimeString()); // } //} //else //{ // ajmseat.TimeList.Add(readingRoomInfos[0].Setting.DateOpenTime(besppeakDate).ToShortTimeString()); //} result.Result = true; result.Msg = JSONSerializer.Serialize(ajmseat); return(JSONSerializer.Serialize(result)); } catch (Exception ex) { WriteLog.Write(string.Format("获取当前可预约座位列表遇到异常:{0}", ex.Message)); result.Result = false; result.Msg = "获取当前阅览室可预约座位执行越到异常!"; return(JSONSerializer.Serialize(result)); } }
/// <summary> /// 获取二维码座位信息 /// </summary> /// <param name="codeStr"></param> /// <returns></returns> public string QRcodeSeatInfo(string codeStr) { try { AJM_HandleResult result = new AJM_HandleResult(); string[] scanResultArray = codeStr.Split('?'); ScanCodeParamModel scancode = null; if (scanResultArray.Length >= 2) { string[] strParam = scanResultArray[1].Split('='); if (strParam.Length >= 2) { scancode = ScanCodeParamModel.Prase(strParam[1]);//兼容url的二维码。 } } else { scancode = ScanCodeParamModel.Prase(codeStr); } if (scancode == null) { result.Result = false; result.Msg = "二维码错误!"; return(JSONSerializer.Serialize(result)); } Seat seatInfo = SeatManageDateService.GetSeatInfoBySeatNum(scancode.SeatNum); if (seatInfo == null) { result.Result = false; result.Msg = "此座位不存在!"; return(JSONSerializer.Serialize(result)); } AJM_SeatStatus jm_Seat = new AJM_SeatStatus(); jm_Seat.SeatNo = seatInfo.SeatNo; jm_Seat.SeatShortNo = seatInfo.ShortSeatNo; jm_Seat.RoomName = seatInfo.ReadingRoom.Name; jm_Seat.RoomNo = seatInfo.ReadingRoom.No; jm_Seat.IsStopUse = seatInfo.IsSuspended; if (seatInfo.ReadingRoom.Setting.SeatBespeak.Used && !seatInfo.IsSuspended) { DateTime ndt = DateTime.Now; if (seatInfo.ReadingRoom.Setting.SeatBespeak.NowDayBespeak && seatInfo.SeatUsedState == EnterOutLogType.Leave) { jm_Seat.BespeakDate.Add(ndt.ToShortDateString(), seatInfo.ReadingRoom.Setting.GetBespeakTimeList(ndt).Select(t => t.ToShortTimeString()).ToList()); } for (int i = 1; i <= seatInfo.ReadingRoom.Setting.SeatBespeak.BespeakBeforeDays; i++) { List <BespeakLogInfo> list = SeatManageDateService.GetBespeakLogInfoBySeatNo(seatInfo.SeatNo, ndt.AddDays(i)); if (list.Count > 0 && !seatInfo.ReadingRoom.Setting.IsCanBespeakSeat(ndt.AddDays(i))) { continue; } jm_Seat.BespeakDate.Add(ndt.AddDays(i).ToShortDateString(), seatInfo.ReadingRoom.Setting.GetBespeakTimeList(ndt.AddDays(i)).Select(t => t.ToShortTimeString()).ToList()); } } result.Result = true; result.Msg = JSONSerializer.Serialize(jm_Seat); return(JSONSerializer.Serialize(result)); } catch (Exception ex) { WriteLog.Write("获取二维码信息遇到异常:" + ex.Message); AJM_HandleResult result = new AJM_HandleResult(); result.Result = false; result.Msg = "执行遇到异常!"; return(JSONSerializer.Serialize(result)); } }
/// <summary> /// 获取座位信息以及操作 /// </summary> /// <param name="seatNo"></param> /// <param name="roomNo"></param> /// <param name="studentNo"></param> /// <param name="isMessager"></param> /// <returns></returns> public string GetSeatNowStatus(string seatNo, string roomNo, string studentNo) { AJM_HandleResult result = new AJM_HandleResult(); AJM_SeatNowStatus seatStatus = new AJM_SeatNowStatus(); try { if (string.IsNullOrEmpty(studentNo)) { result.Result = false; result.Msg = "学号不能为空"; return(JSONSerializer.Serialize(result)); } List <ReadingRoomInfo> readingRoomInfos = SeatManageDateService.GetReadingRoomInfo(new List <string> { roomNo }); if (readingRoomInfos.Count < 1) { result.Result = false; result.Msg = "阅览室不存在!"; return(JSONSerializer.Serialize(result)); } seatStatus.RoomNo = readingRoomInfos[0].No; seatStatus.RoomName = readingRoomInfos[0].Name; if (!readingRoomInfos[0].SeatList.Seats.ContainsKey(seatNo)) { result.Result = false; result.Msg = "该座位不存在!"; return(JSONSerializer.Serialize(result)); } seatStatus.SeatNo = readingRoomInfos[0].SeatList.Seats[seatNo].SeatNo; seatStatus.SeatShortNo = readingRoomInfos[0].SeatList.Seats[seatNo].ShortSeatNo; Seat seat = SeatManageDateService.GetSeatInfoBySeatNum(seatNo); ReaderInfo readerInfo = SeatManageDateService.GetReader(studentNo, true); if (readerInfo == null) { result.Result = false; result.Msg = "未查询到该读者的当前状态"; return(JSONSerializer.Serialize(result)); } bool isSelfSeat = readerInfo.EnterOutLog != null && readerInfo.EnterOutLog.EnterOutState != EnterOutLogType.Leave && seat.SeatNo == readerInfo.EnterOutLog.SeatNo; bool isOnSeat = (readerInfo.EnterOutLog != null && readerInfo.EnterOutLog.EnterOutState != EnterOutLogType.Leave); if (readingRoomInfos[0].SeatList.Seats[seatNo].IsSuspended) { seatStatus.Status = "StopUsed"; } else { switch (seat.SeatUsedState) { case EnterOutLogType.ComeBack: case EnterOutLogType.ContinuedTime: case EnterOutLogType.ReselectSeat: case EnterOutLogType.SelectSeat: case EnterOutLogType.WaitingSuccess: case EnterOutLogType.BookingConfirmation: seatStatus.Status = ReaderStatus.Seating.ToString(); seatStatus.CanOperation = isSelfSeat ? "Leave;ShortLeave" : ""; break; case EnterOutLogType.ShortLeave: seatStatus.Status = ReaderStatus.Seating.ToString(); seatStatus.CanOperation = isSelfSeat ? "Leave" : ""; break; case EnterOutLogType.Leave: seatStatus.Status = ReaderStatus.Leave.ToString(); seatStatus.CanOperation = !isSelfSeat && isOnSeat ? "ChangeSeat" : ""; break; } if (readerInfo.WaitSeatLog != null && readerInfo.WaitSeatLog.SeatNo == seat.SeatNo) { seatStatus.Status = ReaderStatus.Waiting.ToString(); seatStatus.CanOperation = "CancelWait"; } if (readerInfo.BespeakLog.Count > 0 && readerInfo.BespeakLog[0].BsepeakTime.Date == DateTime.Now.Date && readerInfo.BespeakLog[0].SeatNo == seat.SeatNo) { seatStatus.Status = ReaderStatus.Booking.ToString(); seatStatus.CanOperation = "CancelBook"; } if (readingRoomInfos[0].Setting.SeatBespeak.Used) { if (readingRoomInfos[0].Setting.SeatBespeak.NowDayBespeak && seat.SeatUsedState == EnterOutLogType.Leave && SeatManageDateService.GetBespeakLogInfoBySeatNo(seatNo, DateTime.Now).Count < 1) { seatStatus.CanBookingDate.Add(DateTime.Now.ToShortDateString()); } for (int i = 1; i <= readingRoomInfos[0].Setting.SeatBespeak.BespeakBeforeDays; i++) { if (SeatManageDateService.GetBespeakLogInfoBySeatNo(seatNo, DateTime.Now.AddDays(i)).Count < 1) { seatStatus.CanBookingDate.Add(DateTime.Now.AddDays(i).ToShortDateString()); } } } } result.Result = true; result.Msg = JSONSerializer.Serialize(seatStatus); return(JSONSerializer.Serialize(result)); } catch (Exception ex) { WriteLog.Write(string.Format("获取读者当前状态发生异常:{0}", ex.Message)); result.Result = false; result.Msg = "获取用户状态执行异常!"; return(JSONSerializer.Serialize(result)); } }