/// <summary> /// 获取阅览室可预约的座位 /// </summary> /// <param name="roomNo">阅览室编号</param> /// <param name="bespeakTime"></param> /// <returns></returns> public string GetRoomBesapeakState(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 besppeakDate; if (!DateTime.TryParse(bespeakTime, out besppeakDate)) { result.Result = false; result.Msg = "日期格式不正确!"; return(JSONSerializer.Serialize(result)); } if (besppeakDate.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].Setting.SeatBespeak.Used) { result.Result = false; result.Msg = "当前阅览室不提供预约!"; return(JSONSerializer.Serialize(result)); } if ((besppeakDate.Date - DateTime.Now.Date).Days > readingRoomInfos[0].Setting.SeatBespeak.BespeakBeforeDays) { result.Result = false; result.Msg = "您选择的日期尚未开放预约!"; return(JSONSerializer.Serialize(result)); } if (besppeakDate.Date == DateTime.Now.Date && !readingRoomInfos[0].Setting.SeatBespeak.NowDayBespeak) { result.Result = false; result.Msg = "当前阅览室未开放当天预约!"; return(JSONSerializer.Serialize(result)); } if (besppeakDate.Date != DateTime.Now.Date && !readingRoomInfos[0].Setting.IsCanBespeakSeat(besppeakDate)) { result.Result = false; result.Msg = "当前时间暂未开放预约!"; return(JSONSerializer.Serialize(result)); } List <AJM_BespeakSeat> ajmSeats = new List <AJM_BespeakSeat>(); //获取当天可预约座位 if (besppeakDate.Date == DateTime.Now.Date) { SeatLayout seatLayout = SeatManageDateService.GetRoomSeatLayOut(roomNo); foreach (Seat seat in seatLayout.Seats.Values) { if (!seat.IsSuspended && seat.SeatUsedState == EnterOutLogType.Leave) { AJM_BespeakSeat ajmSeat = new AJM_BespeakSeat(); ajmSeat.SeatNo = seat.SeatNo; ajmSeat.SeatShortNo = seat.ShortSeatNo; ajmSeats.Add(ajmSeat); } } } else { //获取选择日期提供预约的座位 SeatLayout seats = SeatManageDateService.GetBeseakSeatLayout(roomNo, besppeakDate); foreach (Seat seat in seats.Seats.Values) { if (seat.CanBeBespeak && seat.SeatUsedState != EnterOutLogType.BookingConfirmation && !seat.IsSuspended) { AJM_BespeakSeat ajmSeat = new AJM_BespeakSeat(); ajmSeat.SeatNo = seat.SeatNo; ajmSeat.SeatShortNo = seat.ShortSeatNo; ajmSeats.Add(ajmSeat); } } } if (ajmSeats.Count < 1) { result.Result = false; result.Msg = "当前时间没有可预约的座位!"; return(JSONSerializer.Serialize(result)); } AJM_BesapeakRoom ajmroom = new AJM_BesapeakRoom(); ajmroom.RoomNo = readingRoomInfos[0].No; ajmroom.RoomName = readingRoomInfos[0].Name; ajmroom.BespeakDate = besppeakDate.ToShortDateString(); ajmroom.SeatList = ajmSeats; ajmroom.IsCanSelectTime = readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak || besppeakDate.Date != DateTime.Now.Date; ajmroom.CheckBeforeTime = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.BeginTime); ajmroom.CheckLastTime = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.EndTime); ajmroom.CheckKeepTime = (int)readingRoomInfos[0].Setting.SeatBespeak.SeatKeepTime; //if (!ajmroom.IsCanSelectTime) //{ // ajmroom.CheckBeforeTime = 0; // ajmroom.CheckLastTime = (int)readingRoomInfos[0].Setting.SeatBespeak.SeatKeepTime; //} if (readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak) { List <DateTime> timeSpans = readingRoomInfos[0].Setting.GetSelectTimeList(besppeakDate); foreach (var time in timeSpans) { ajmroom.TimeList.Add(time.ToShortTimeString()); } } else { ajmroom.TimeList.Add(readingRoomInfos[0].Setting.DateOpenTime(besppeakDate).ToShortTimeString()); } result.Result = true; result.Msg = JSONSerializer.Serialize(ajmroom); return(JSONSerializer.Serialize(result)); } catch (Exception ex) { WriteLog.Write(string.Format("获取当前可预约座位列表遇到异常:{0}", ex.Message)); result.Result = false; result.Msg = "获取当前阅览室可预约座位执行越到异常!"; return(JSONSerializer.Serialize(result)); } }