Exemple #1
0
        /// <summary>
        /// 获取阅览室可预约的座位
        /// </summary>
        /// <param name="bespeakDate"></param>
        /// <param name="RoomId"></param>
        /// <returns></returns>
        public List <ClassModel.Seat> GetBookSeatList(DateTime bespeakDate, string RoomId)
        {
            List <ClassModel.Seat> canBespeakSeat = new List <Seat>();
            List <string>          roomNums       = new List <string>();

            roomNums.Add(RoomId);
            List <ReadingRoomInfo> rooms = seatManage.GetReadingRoomInfo(roomNums);
            {
                if (!timeCanBespeak(rooms[0].Setting.SeatBespeak, DateTime.Now))
                {
                    throw new SeatBespeakException.BespeakSeatFailed(string.Format("预约时间为:{0}到{1}", rooms[0].Setting.SeatBespeak.CanBespeatTimeSpace.BeginTime, rooms[0].Setting.SeatBespeak.CanBespeatTimeSpace.EndTime));
                }
            }
            SeatLayout bespeakSeatLayout = seatManage.GetBeseakSeatLayout(RoomId, bespeakDate);

            foreach (Seat seat in bespeakSeatLayout.Seats.Values)
            {
                if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime)
                {
                    if (seat.CanBeBespeak && seat.CanBespeakSpan.Count > 0 && !seat.IsSuspended)
                    {
                        canBespeakSeat.Add(seat);
                    }
                }
                else
                {
                    if (seat.CanBeBespeak && seat.SeatUsedState != EnumType.EnterOutLogType.BookingConfirmation && !seat.IsSuspended)
                    {
                        canBespeakSeat.Add(seat);
                    }
                }
            }
            return(canBespeakSeat);
        }
Exemple #2
0
 /// <summary>
 /// Updates the seat layout.
 /// </summary>
 /// <param name="from">From.</param>
 /// <param name="to">To.</param>
 public static void UpdateSeatLayout(SeatLayout from, ref SeatLayout to)
 {
     to.Rows = from.Rows;
     to.Columns = from.Columns;
     to.Layout = from.Layout;
     to.Active = from.Active;
 }
Exemple #3
0
        public void Part2Test()
        {
            // Given
            var layout = SeatLayout.Parse(Input.Get(11));

            // When
            var step1  = layout.StepPart2();
            var step2  = step1.StepPart2();
            var step3  = step2.StepPart2();
            var step4  = step3.StepPart2();
            var step5  = step4.StepPart2();
            var step6  = step5.StepPart2();
            var stable = layout.StabalizePart2();
            var count  = stable.Count(SeatLayoutTile.OccupiedSeat);

            // Then
            Assert.Equal(step1, SeatLayout.Parse(Input.Get(11, "Part2Step1")));
            Assert.Equal(step2, SeatLayout.Parse(Input.Get(11, "Part2Step2")));
            Assert.Equal(step3, SeatLayout.Parse(Input.Get(11, "Part2Step3")));
            Assert.Equal(step4, SeatLayout.Parse(Input.Get(11, "Part2Step4")));
            Assert.Equal(step5, SeatLayout.Parse(Input.Get(11, "Part2Step5")));
            Assert.Equal(step6, SeatLayout.Parse(Input.Get(11, "Part2Step6")));
            Assert.Equal(step6, step6.StepPart2());
            Assert.Equal(step6, stable);
            Assert.Equal(26, count);
        }
 public List <ClassModel.Seat> GetReadingRoomSeatList(string RoomId)
 {
     try
     {
         List <ClassModel.Seat> canBespeakSeat = new List <Seat>();
         List <string>          roomNums       = new List <string>();
         roomNums.Add(RoomId);
         List <ReadingRoomInfo> rooms             = seatManage.GetReadingRoomInfo(roomNums);
         SeatLayout             bespeakSeatLayout = seatManage.GetBeseakSeatLayout(RoomId, DateTime.Now);
         SeatLayout             useSeatLayout     = seatManage.GetRoomSeatLayOut(RoomId);
         foreach (KeyValuePair <string, Seat> uSeat in useSeatLayout.Seats)
         {
             if (uSeat.Value.SeatUsedState == EnterOutLogType.BespeakWaiting)
             {
                 continue;
             }
             if ((uSeat.Value.SeatUsedState == EnterOutLogType.Leave || uSeat.Value.SeatUsedState == EnterOutLogType.None) && !uSeat.Value.IsSuspended)
             {
                 canBespeakSeat.Add(uSeat.Value);
             }
         }
         return(canBespeakSeat);
     }
     catch (Exception ex)
     {
         throw new Exception("获取可选座位失败" + ex.Message);
     }
 }
Exemple #5
0
        /// <summary>
        /// 更新座位布局
        /// </summary>
        /// <param name="seatLayout"></param>
        /// <returns></returns>
        public static SeatManage.EnumType.HandleResult UpdateSeatLayout(SeatLayout seatLayout)
        {
            IWCFService.ISeatManageService SeatService = WcfAccessProxy.ServiceProxy.CreateChannelSeatManageService();
            bool error = false;

            try
            {
                return(SeatService.UpdateSeatLayout(seatLayout));
            }
            catch (Exception ex)
            {
                error = true;
                WriteLog.Write("查询阅览室失败:" + ex.Message);
                return(EnumType.HandleResult.Failed);
            }
            finally
            {
                ICommunicationObject ICommObjectService = SeatService as ICommunicationObject;
                try
                {
                    if (ICommObjectService.State == CommunicationState.Faulted)
                    {
                        ICommObjectService.Abort();
                    }
                    else
                    {
                        ICommObjectService.Close();
                    }
                }
                catch
                {
                    ICommObjectService.Abort();
                }
            }
        }
Exemple #6
0
        /// <summary>
        /// 随机分配座位编号
        /// </summary>
        /// <param name="reandingRoom">阅览室编号</param>
        /// <returns></returns>
        public string RandomAllotSeat(string readingRoomNum)
        {
            SeatLayout    seatLayout = GetRoomSeatLayOut(readingRoomNum);
            List <string> seatList   = (from seat in seatLayout.Seats.Values where !seat.IsSuspended && seat.SeatUsedState == EnterOutLogType.Leave select seat.SeatNo).ToList();

            if (seatList.Count > 0)
            {
                Random rNum = new Random();
                return(seatList[rNum.Next(0, seatList.Count - 1)]);
            }
            else
            {
                return("");
            }

            //DataSet ds = t_sm_seat.RandomAllotSeat(readingRoomNum, GetServerDateTime());
            //if (ds.Tables[0].Rows.Count > 0)
            //{
            //    return ds.Tables[0].Rows[0]["SeatNo"].ToString();
            //}
            //else
            //{
            //    return "";
            //}
        }
        public void ToStringTest(string input, string _)
        {
            var layout = new SeatLayout(input);

            var result = layout.ToString();

            Assert.Equal(input, result);
        }
        public void GenTest2(string input, string expected)
        {
            var layout = new SeatLayout(input);

            var result = layout.Process2();

            Assert.Equal(expected, result);
        }
Exemple #9
0
        public void TestVehicles()
        {
            var databaseService = this.container.Resolve <IDatabaseService>();

            var layout = new SeatLayout {
                Rows = 10, Columns = 4, Layout = "A1:B1;A2:B2;A3,B3:C3,D3", Active = true
            };

            layout = databaseService.CreateSeatLayout(layout);

            var vehicle1 = new Vehicle {
                SeatLayoutId = layout.Id, VehicleType = "Premium Volvo", Manufacturer = "Volvo", DriveType = "Automatic", Model = "V2110", RegistrationNumber = "BA 2233", RegistrationState = "Dhaka Metro", RegistrationExpiry = new DateTime(2021, 9, 12), VIN = "V5263YY83784", Year = 2017, BaseStation = "Dhaka", TotalSeats = 24, Active = true
            };

            vehicle1 = databaseService.CreateVehicle(vehicle1);
            var vehicle2 = new Vehicle {
                SeatLayoutId = layout.Id, VehicleType = "Non A/C", Manufacturer = "Tata", DriveType = "Manual", Model = "TT334", RegistrationNumber = "BA 1211", RegistrationState = "Dhaka Metro", RegistrationExpiry = new DateTime(2022, 8, 12), VIN = "V5263YY86254", Year = 2017, BaseStation = "Dhaka", TotalSeats = 36, Active = true
            };

            vehicle2 = databaseService.CreateVehicle(vehicle2);

            var newVehicle1 = databaseService.GetVehicle(vehicle1.Id);

            Assert.IsTrue(newVehicle1 != null);
            Assert.AreEqual(newVehicle1.VehicleType, vehicle1.VehicleType);
            Assert.AreEqual(newVehicle1.DriveType, vehicle1.DriveType);
            Assert.AreEqual(newVehicle1.RegistrationExpiry, vehicle1.RegistrationExpiry);
            Assert.AreEqual(newVehicle1.TotalSeats, vehicle1.TotalSeats);

            var newVehicle2 = databaseService.GetVehicle(vehicle2.Id);

            Assert.IsTrue(newVehicle2 != null);
            Assert.AreEqual(newVehicle2.Manufacturer, vehicle2.Manufacturer);
            Assert.AreEqual(newVehicle2.RegistrationNumber, vehicle2.RegistrationNumber);
            Assert.AreEqual(newVehicle2.VIN, vehicle2.VIN);
            Assert.AreEqual(newVehicle2.Year, vehicle2.Year);

            newVehicle1.Model       = "VA 4566";
            newVehicle1.BaseStation = "Rajshahi";
            databaseService.UpdateVehicle(newVehicle1);

            var updatedVehicle1 = databaseService.GetVehicle(newVehicle1.Id);

            Assert.IsTrue(updatedVehicle1 != null);
            Assert.AreEqual(updatedVehicle1.Model, newVehicle1.Model);
            Assert.AreEqual(updatedVehicle1.BaseStation, newVehicle1.BaseStation);

            databaseService.DeleteVehicle(vehicle1.Id);
            databaseService.DeleteVehicle(vehicle2.Id);

            Assert.AreEqual(databaseService.GetVehicle(vehicle1.Id), null);
            Assert.AreEqual(databaseService.GetVehicle(newVehicle1.Id), null);
            Assert.AreEqual(databaseService.GetVehicle(updatedVehicle1.Id), null);
            Assert.AreEqual(databaseService.GetVehicle(vehicle2.Id), null);

            databaseService.DeleteSeatLayout(layout.Id);
        }
        public void SeenTest(string input, int x, int y, int eX, int eY)
        {
            var layout = new SeatLayout(input);

            var result = layout.SeenFrom(x, y);

            Assert.Equal(eX, result.X);
            Assert.Equal(eY, result.Y);
        }
Exemple #11
0
        public void LayoutEqualityReflexive()
        {
            // Given
            var layout1 = SeatLayout.Parse(Input.Get(11));
            var layout2 = SeatLayout.Parse(Input.Get(11));

            // Then
            Assert.True(layout1 == layout2);
        }
Exemple #12
0
        public async Task <IHttpActionResult> PutSeatLayout(SeatLayout seatLayout)
        {
            if (seatLayout == null)
            {
                return(BadRequest());
            }
            _unitOfWork.SeatLayout.Update(seatLayout);
            await _unitOfWork.Complete();

            return(Ok(seatLayout));
        }
Exemple #13
0
        public void Part2CountTest(int i, int x, int y, int count)
        {
            // Given
            var layout = SeatLayout.Parse(Input.Get(11, $"Part2Count{i}"));

            // When
            var actual = layout.CountAdjacentPart2(x, y);

            // Then
            Assert.Equal(count, actual);
        }
Exemple #14
0
        /// <summary>
        /// Updates the seat layout.
        /// </summary>
        /// <param name="seatLayout">The seat layout.</param>
        /// <returns>The updated seat layout.</returns>
        public SeatLayout UpdateSeatLayout(SeatLayout seatLayout)
        {
            var existingSeatLayout = this.GetSeatLayout(seatLayout.Id);

            if (existingSeatLayout != null)
            {
                DataModelUpdater.UpdateSeatLayout(seatLayout, ref existingSeatLayout);
                this.context.Update(existingSeatLayout);
                this.context.SaveChanges();
            }

            return(existingSeatLayout);
        }
        public string GetSeatLayoutListJson()
        {
            List <SeatLayout>      list       = new List <SeatLayout>();
            ISeatManageService     seatManage = new WcfServiceForSeatManage.SeatManageDateService();
            List <ReadingRoomInfo> rooms      = seatManage.GetReadingRoomInfo(null);

            foreach (var item in rooms)
            {
                SeatLayout layOut = seatManage.GetRoomSeatLayOut(item.No);
                list.Add(layOut);
            }
            string s = Newtonsoft.Json.JsonConvert.SerializeObject(list);

            return(s);
        }
Exemple #16
0
        public override string Part1(string input)
        {
            var layout = new SeatLayout(input);

            var seen = new HashSet <string>();

            var status = layout.ToString();

            while (seen.Add(status))
            {
                status = layout.Process();
            }

            return(layout.OccupiedCount().ToString());
        }
        /// <summary>
        /// 根据阅览室编号、座位状态获取对应的座位
        /// </summary>
        /// <param name="roomNum">阅览室编号</param>
        /// <param name="seatState">座位状态</param>
        /// <returns></returns>
        public string GetRoomSeats(string roomNum, string seatState)
        {
            try
            {
                List <JM_Seat> jm_list  = new List <JM_Seat>();
                SeatLayout     seatList = seatDataService.GetRoomSeatLayOut(roomNum);

                //获取阅览室座位
                foreach (Seat seat in seatList.Seats.Values)
                {
                    JM_Seat jmSeat = new JM_Seat();
                    jmSeat.SeatNo         = seat.SeatNo;
                    jmSeat.ShortSeatNo    = seat.ShortSeatNo;
                    jmSeat.SeatState      = seat.SeatUsedState.ToString();
                    jmSeat.ReadingRoomNum = seat.ReadingRoomNum;
                    jmSeat.UserName       = seat.UserName;
                    jmSeat.UserCardNo     = seat.UserCardNo;
                    jmSeat.MarkTime       = seat.MarkTime.ToString();
                    jmSeat.BeginUsedTime  = seat.BeginUsedTime.ToString();
                    if (seat.SeatUsedState.ToString() == seatState)
                    {
                        jm_list.Add(jmSeat);
                    }
                }
                if (jm_list.Count > 0)
                {
                    JM_HandleResultObject result = new JM_HandleResultObject();
                    result.Result = true;
                    result.Msg    = jm_list;
                    return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result));
                }
                else
                {
                    JM_HandleResultObject result = new JM_HandleResultObject();
                    result.Result = false;
                    result.Msg    = string.Format("没有查询到{0}状态下的座位", seatState);
                    return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result));
                }
            }
            catch (Exception ex)
            {
                SeatManage.SeatManageComm.WriteLog.Write("根据阅览室编号获座位者信息遇到异常:" + ex.Message);
                JM_HandleResultObject result = new JM_HandleResultObject();
                result.Result = false;
                result.Msg    = "执行遇到异常!";
                return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result));
            }
        }
        /// <summary>
        /// 更新座位布局
        /// </summary>
        /// <param name="seatLayout"></param>
        /// <returns></returns>
        public static SeatManage.EnumType.HandleResult UpdateSeatLayout(SeatLayout seatLayout)
        {
            IWCFService.ISeatManageService SeatService = new WcfServiceForSeatManage.SeatManageDateService();
            bool error = false;

            try
            {
                return(SeatService.UpdateSeatLayout(seatLayout));
            }
            catch (Exception ex)
            {
                error = true;
                WriteLog.Write("查询阅览室失败:" + ex.Message);
                return(EnumType.HandleResult.Failed);
            }
        }
Exemple #19
0
        /// <summary>
        /// 获取阅览室中的座位分布以及使用情况
        /// </summary>
        /// <param name="roomNum">阅览室编号</param>
        /// <returns></returns>
        public static SeatLayout GetRoomSeatLayOut(string roomNum)
        {
            IWCFService.ISeatManageService seatService = new WcfServiceForSeatManage.SeatManageDateService();
            bool error = false;

            try
            {
                SeatLayout layout = seatService.GetRoomSeatLayOut(roomNum);
                return(layout);
            }
            catch (Exception ex)
            {
                error = true;
                WriteLog.Write("获取阅览室座位分布遇到错误:" + ex.Message);
                return(null);
            }
        }
Exemple #20
0
 /// <summary>
 /// 根据阅览室编号获取当前座位使用情况的布局图(包括预约)。
 /// </summary>
 /// <param name="roomNum">阅览室编号</param>
 /// <returns></returns>
 public string GetSeatsUsedInfoByRoomNum(string roomNum)
 {
     try
     {
         if (string.IsNullOrEmpty(roomNum))
         {
             JM_HandleResult result = new JM_HandleResult();
             result.Result = false;
             result.Msg    = "阅览室编号不能为空!";
             return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result));
         }
         List <JM_Seat> seats             = new List <JM_Seat>();
         SeatLayout     bespeakSeatLayout = seatDataService.GetRoomSeatLayOut(roomNum);
         foreach (Seat seat in bespeakSeatLayout.Seats.Values)
         {
             if (!seat.IsSuspended)
             {
                 JM_Seat jm_seat = new JM_Seat();
                 jm_seat.CanBeBespeak    = true;
                 jm_seat.HavePower       = seat.HavePower;
                 jm_seat.IsSuspended     = seat.IsSuspended;
                 jm_seat.ReadingRoomNum  = seat.ReadingRoom.No;
                 jm_seat.ReadingRoomName = seat.ReadingRoom.Name;
                 jm_seat.SeatNo          = seat.SeatNo;
                 jm_seat.SeatUsedState   = seat.SeatUsedState.ToString();
                 jm_seat.ShortSeatNo     = seat.ShortSeatNo;
                 jm_seat.BaseHeight      = seat.BaseHeight;
                 jm_seat.BaseWidth       = seat.BaseWidth;
                 jm_seat.PositionX       = seat.PositionX;
                 jm_seat.PositionY       = seat.PositionY;
                 jm_seat.RotationAngle   = seat.RotationAngle;
                 seats.Add(jm_seat);
             }
         }
         return(SeatManageComm.JSONSerializer.Serialize(seats));
     }
     catch (Exception ex)
     {
         SeatManage.SeatManageComm.WriteLog.Write("获取阅览室座位使用情况布局图遇到异常:" + ex.Message);
         JM_HandleResult result = new JM_HandleResult();
         result.Result = false;
         result.Msg    = "执行遇到异常!";
         return(SeatManage.SeatManageComm.JSONSerializer.Serialize(result));
     }
 }
Exemple #21
0
        private ReadingRoomSeatUsedState_Ex DataRowToReadingRoomSeatUsedState(DataRow dr)
        {
            ReadingRoomSeatUsedState_Ex state = new ReadingRoomSeatUsedState_Ex();

            state.ReadingRoom      = new ReadingRoomInfo();
            state.ReadingRoom.No   = dr["ReadingRoomNo"].ToString();
            state.ReadingRoom.Name = dr["ReadingRoomName"].ToString();
            if (!String.IsNullOrEmpty(dr["ReadingSetting"].ToString()))
            {
                state.ReadingRoom.Setting = new ReadingRoomSetting(dr["ReadingSetting"].ToString());
            }
            else
            {
                state.ReadingRoom.Setting = new ReadingRoomSetting();
            }
            if (!string.IsNullOrEmpty(dr["RoomSeat"].ToString()))
            {
                state.ReadingRoom.SeatList = SeatLayout.GetSeatLayout(dr["RoomSeat"].ToString());
            }
            else
            {
                state.ReadingRoom.SeatList = new SeatLayout();
            }
            state.ReadingRoom.Libaray.No          = dr["LibraryNo"].ToString();
            state.ReadingRoom.Libaray.Name        = dr["LibraryName"].ToString();
            state.ReadingRoom.Libaray.School.No   = dr["SchoolNo"].ToString();
            state.ReadingRoom.Libaray.School.Name = dr["SchoolName"].ToString();
            state.ReadingRoom.Libaray.AreaList    = state.ReadingRoom.Libaray.ToList(dr["AreaInfo"].ToString());
            if (dr["AreaName"] != null && !string.IsNullOrEmpty(dr["AreaName"].ToString()))
            {
                foreach (AreaInfo item in state.ReadingRoom.Libaray.AreaList)
                {
                    if (dr["AreaName"].ToString() == item.AreaName)
                    {
                        state.ReadingRoom.Area = item;
                        break;
                    }
                }
            }
            state.SeatAmountUsed   = int.Parse(dr["UsingCount"].ToString());
            state.SeatBookingCount = int.Parse(dr["BespeakCount"].ToString());
            return(state);
        }
Exemple #22
0
        ///// <summary>
        ///// 批量删除数据
        ///// </summary>
        //public bool DeleteList(string ReadingRoomNolist )
        //{
        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("delete from T_SM_ReadingRoom ");
        //    strSql.Append(" where ReadingRoomNo in ("+ReadingRoomNolist + ")  ");
        //    int rows=DbHelperSQL.ExecuteSql(strSql.ToString());
        //    if (rows > 0)
        //    {
        //        return true;
        //    }
        //    else
        //    {
        //        return false;
        //    }
        //}


        ///// <summary>
        ///// 得到一个对象实体
        ///// </summary>
        //public SeatManage.Model.T_SM_ReadingRoom GetModel(string ReadingRoomNo)
        //{

        //    StringBuilder strSql=new StringBuilder();
        //    strSql.Append("select  top 1 ReadingRoomNo,ReadingRoomName,LibraryNo,ReadingSetting,RoomSeat from T_SM_ReadingRoom ");
        //    strSql.Append(" where ReadingRoomNo=@ReadingRoomNo ");
        //    SqlParameter[] parameters = {
        //            new SqlParameter("@ReadingRoomNo", SqlDbType.NVarChar,50)};
        //    parameters[0].Value = ReadingRoomNo;

        //    SeatManage.Model.T_SM_ReadingRoom model=new SeatManage.Model.T_SM_ReadingRoom();
        //    DataSet ds=DbHelperSQL.Query(strSql.ToString(),parameters);
        //    if(ds.Tables[0].Rows.Count>0)
        //    {
        //        if(ds.Tables[0].Rows[0]["ReadingRoomNo"]!=null && ds.Tables[0].Rows[0]["ReadingRoomNo"].ToString()!="")
        //        {
        //            model.ReadingRoomNo=ds.Tables[0].Rows[0]["ReadingRoomNo"].ToString();
        //        }
        //        if(ds.Tables[0].Rows[0]["ReadingRoomName"]!=null && ds.Tables[0].Rows[0]["ReadingRoomName"].ToString()!="")
        //        {
        //            model.ReadingRoomName=ds.Tables[0].Rows[0]["ReadingRoomName"].ToString();
        //        }
        //        if(ds.Tables[0].Rows[0]["LibraryNo"]!=null && ds.Tables[0].Rows[0]["LibraryNo"].ToString()!="")
        //        {
        //            model.LibraryNo=int.Parse(ds.Tables[0].Rows[0]["LibraryNo"].ToString());
        //        }
        //        if(ds.Tables[0].Rows[0]["ReadingSetting"]!=null && ds.Tables[0].Rows[0]["ReadingSetting"].ToString()!="")
        //        {
        //            model.ReadingSetting=ds.Tables[0].Rows[0]["ReadingSetting"].ToString();
        //        }
        //        if(ds.Tables[0].Rows[0]["RoomSeat"]!=null && ds.Tables[0].Rows[0]["RoomSeat"].ToString()!="")
        //        {
        //            model.RoomSeat=ds.Tables[0].Rows[0]["RoomSeat"].ToString();
        //        }
        //        return model;
        //    }
        //    else
        //    {
        //        return null;
        //    }
        //}


        /*
         * /// <summary>
         * /// 分页获取数据列表
         * /// </summary>
         * public DataSet GetList(int PageSize,int PageIndex,string strWhere)
         * {
         *  SqlParameter[] parameters = {
         *          new SqlParameter("@tblName", SqlDbType.VarChar, 255),
         *          new SqlParameter("@fldName", SqlDbType.VarChar, 255),
         *          new SqlParameter("@PageSize", SqlDbType.Int),
         *          new SqlParameter("@PageIndex", SqlDbType.Int),
         *          new SqlParameter("@IsReCount", SqlDbType.Bit),
         *          new SqlParameter("@OrderType", SqlDbType.Bit),
         *          new SqlParameter("@strWhere", SqlDbType.VarChar,1000),
         *          };
         *  parameters[0].Value = "T_SM_ReadingRoom";
         *  parameters[1].Value = "ReadingRoomNo";
         *  parameters[2].Value = PageSize;
         *  parameters[3].Value = PageIndex;
         *  parameters[4].Value = 0;
         *  parameters[5].Value = 0;
         *  parameters[6].Value = strWhere;
         *  return DbHelperSQL.RunProcedure("UP_GetRecordByPage",parameters,"ds");
         * }*/


        public ReadingRoomInfo DataRowToReadingRoomInfo(DataRow dr)
        {
            ReadingRoomInfo roomInfo = new ReadingRoomInfo();

            roomInfo.No   = dr["ReadingRoomNo"].ToString();
            roomInfo.Name = dr["ReadingRoomName"].ToString();
            if (!String.IsNullOrEmpty(dr["ReadingSetting"].ToString()))
            {
                roomInfo.Setting = new ReadingRoomSetting(dr["ReadingSetting"].ToString());
            }
            else
            {
                roomInfo.Setting = new ReadingRoomSetting();
            }
            if (!string.IsNullOrEmpty(dr["RoomSeat"].ToString()))
            {
                roomInfo.SeatList = SeatLayout.GetSeatLayout(dr["RoomSeat"].ToString());
            }
            else
            {
                roomInfo.SeatList = new SeatLayout();
            }
            roomInfo.Libaray.No          = dr["LibraryNo"].ToString();
            roomInfo.Libaray.Name        = dr["LibraryName"].ToString();
            roomInfo.Libaray.School.No   = dr["SchoolNo"].ToString();
            roomInfo.Libaray.School.Name = dr["SchoolName"].ToString();
            roomInfo.Libaray.AreaList    = roomInfo.Libaray.ToList(dr["AreaInfo"].ToString());
            if (dr["AreaName"] != null && !string.IsNullOrEmpty(dr["AreaName"].ToString()))
            {
                foreach (AreaInfo item in roomInfo.Libaray.AreaList)
                {
                    if (dr["AreaName"].ToString() == item.AreaName)
                    {
                        roomInfo.Area = item;
                        break;
                    }
                }
            }
            return(roomInfo);
        }
Exemple #23
0
        public void TestSeatLayouts()
        {
            var databaseService = this.container.Resolve <IDatabaseService>();

            var layout1 = new SeatLayout {
                Rows = 10, Columns = 4, Layout = "A1:B1;A2:B2;A3,B3:C3,D3", Active = true
            };

            layout1 = databaseService.CreateSeatLayout(layout1);
            var layout2 = new SeatLayout {
                Rows = 8, Columns = 4, Layout = "A1,B1:C1,C2;", Active = true
            };

            layout2 = databaseService.CreateSeatLayout(layout2);

            var newLayout1 = databaseService.GetSeatLayout(layout1.Id);

            Assert.IsTrue(newLayout1 != null);
            Assert.AreEqual(newLayout1.Rows, layout1.Rows);
            Assert.AreEqual(newLayout1.Columns, layout1.Columns);

            newLayout1.Layout = "A1,B1:C1,D1;A2,B2:C2,D2;";
            newLayout1.Active = false;
            newLayout1        = databaseService.UpdateSeatLayout(newLayout1);

            var updatedLayout1 = databaseService.GetSeatLayout(newLayout1.Id);

            Assert.IsTrue(updatedLayout1 != null);
            Assert.AreEqual(updatedLayout1.Layout, newLayout1.Layout);
            Assert.AreEqual(updatedLayout1.Active, newLayout1.Active);
            Assert.AreEqual(updatedLayout1.Rows, newLayout1.Rows);

            databaseService.DeleteSeatLayout(layout1.Id);
            databaseService.DeleteSeatLayout(layout2.Id);
            Assert.AreEqual(databaseService.GetSeatLayout(layout1.Id), null);
            Assert.AreEqual(databaseService.GetSeatLayout(newLayout1.Id), null);
            Assert.AreEqual(databaseService.GetSeatLayout(updatedLayout1.Id), null);
            Assert.AreEqual(databaseService.GetSeatLayout(layout2.Id), null);
        }
Exemple #24
0
        /// <summary>
        /// 更新阅览室座位布局
        /// </summary>
        /// <param name="seatLayout"></param>
        /// <returns></returns>
        public SeatManage.EnumType.HandleResult UpdateSeatLayout(SeatLayout seatLayout)
        {
            try
            {
                List <string> roomNums = new List <string>();
                roomNums.Add(seatLayout.RoomNo);
                List <ReadingRoomInfo> roomInfos = GetReadingRoomInfo(roomNums);
                if (roomInfos.Count > 0)
                {
                    string         delSeatWhere = string.Format(" ReadingRoomNo=@ReadingRoomNo");
                    SqlParameter[] parameters   =
                    {
                        new SqlParameter("@ReadingRoomNo", SqlDbType.NVarChar, 50)
                    };
                    parameters[0].Value = seatLayout.RoomNo;
                    //删除原来的座位
                    t_sm_seat.Delete(delSeatWhere.ToString(), parameters);

                    //添加新的座位
                    foreach (Seat seat in seatLayout.Seats.Values)
                    {
                        seat.ReadingRoomNum = seatLayout.RoomNo;
                        t_sm_seat.Add(seat);
                    }

                    roomInfos[0].SeatList = seatLayout;
                    t_sm_readingRoom_DAL.Update(roomInfos[0]);
                    return(SeatManage.EnumType.HandleResult.Successed);
                }
                else
                {
                    throw new Exception("阅览室编号不存在");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #25
0
        /// <summary>
        /// 获取当天预约座位列表
        /// </summary>
        /// <param name="RoomId"></param>
        /// <returns></returns>
        public List <Seat> GetNowBookSeatList(string RoomId)
        {
            List <ClassModel.Seat> canBespeakSeat = new List <Seat>();
            List <string>          roomNums       = new List <string>();

            roomNums.Add(RoomId);
            List <ReadingRoomInfo> rooms             = seatManage.GetReadingRooms(roomNums, null, null);
            SeatLayout             bespeakSeatLayout = seatManage.GetBeseakSeatLayout(RoomId, DateTime.Now);
            SeatLayout             useSeatLayout     = seatManage.GetRoomSeatLayOut(RoomId);

            foreach (KeyValuePair <string, Seat> uSeat in useSeatLayout.Seats)
            {
                if (uSeat.Value.SeatUsedState == EnterOutLogType.BespeakWaiting)
                {
                    if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime)
                    {
                        if (!bespeakSeatLayout.Seats[uSeat.Key].IsSuspended)
                        {
                            canBespeakSeat.Add(bespeakSeatLayout.Seats[uSeat.Key]);
                        }
                    }
                    continue;
                }
                if ((uSeat.Value.SeatUsedState == EnterOutLogType.Leave || uSeat.Value.SeatUsedState == EnterOutLogType.None) && !uSeat.Value.IsSuspended)
                {
                    if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime)
                    {
                        canBespeakSeat.Add(bespeakSeatLayout.Seats[uSeat.Key]);
                    }
                    else
                    {
                        canBespeakSeat.Add(uSeat.Value);
                    }
                }
            }
            return(canBespeakSeat);
        }
Exemple #26
0
        /// <summary>
        /// 获取阅览室中的座位分布以及使用情况
        /// </summary>
        /// <param name="roomNum">阅览室编号</param>
        /// <returns></returns>
        public static SeatLayout GetRoomSeatLayOut(string roomNum)
        {
            IWCFService.ISeatManageService seatService = WcfAccessProxy.ServiceProxy.CreateChannelSeatManageService();
            bool error = false;

            try
            {
                SeatLayout layout = seatService.GetRoomSeatLayOut(roomNum);
                return(layout);
            }
            catch (Exception ex)
            {
                error = true;
                WriteLog.Write("获取阅览室座位分布遇到错误:" + ex.Message);
                return(null);
            }
            finally
            {
                ICommunicationObject ICommObjectService = seatService as ICommunicationObject;
                try
                {
                    if (ICommObjectService.State == CommunicationState.Faulted)
                    {
                        ICommObjectService.Abort();
                    }
                    else
                    {
                        ICommObjectService.Close();
                    }
                }
                catch
                {
                    ICommObjectService.Abort();
                }
            }
        }
Exemple #27
0
        /// <summary>
        /// 布局座位列表
        /// </summary>
        /// <param name="roomNum"></param>
        protected void GetSeatList(string roomNum, string state)
        {
            SeatLayout    _SeatLayout = EnterOutOperate.GetRoomSeatLayOut(roomNum);
            StringBuilder seatHtml    = new StringBuilder();

            foreach (Seat seat in _SeatLayout.Seats.Values)
            {
                if (seat.IsSuspended)
                {
                    continue;
                }
                string seatStyle  = "";//座位样式
                string tipContent = "";
                string used       = "";
                string onTime     = "";
                switch (seat.SeatUsedState)
                {
                case EnterOutLogType.Leave:
                    seatStyle  = "RealSeatFree";
                    tipContent = "座位空闲";
                    used       = "空闲";
                    onTime     = "0";
                    break;

                case EnterOutLogType.SelectSeat:
                case EnterOutLogType.ReselectSeat:
                case EnterOutLogType.ComeBack:
                case EnterOutLogType.ContinuedTime:
                case EnterOutLogType.BookingConfirmation:
                    string time = String.Format("{0:HH:mm:ss}", seat.BeginUsedTime);
                    used = "在座";
                    if (!string.IsNullOrEmpty(seat.MarkTime.ToString()) && seat.MarkTime.CompareTo(DateTime.Parse("1900/1/1")) != 0)
                    {
                        onTime = "1";
                        TimeSpan ts     = ServiceDateTime.Now.Subtract(seat.MarkTime);
                        string   ontime = ts.Hours + "小时" + ts.Minutes + "分钟" + ts.Seconds + "秒";
                        seatStyle  = "RealSeatOnTime";
                        tipContent = string.Format("学号:{0}<br />姓名:{1}<br />入座时间:{2}<br />已计时:{3}", seat.UserCardNo, seat.UserName, time, ontime);
                    }
                    else
                    {
                        onTime     = "0";
                        seatStyle  = "RealSeatBusy";
                        tipContent = string.Format("学号:{0}<br />姓名:{1}<br />入座时间:{2}", seat.UserCardNo, seat.UserName, time);
                    }
                    break;

                case EnterOutLogType.ShortLeave:
                    onTime     = "0";
                    seatStyle  = "RealSeatLeave";
                    time       = String.Format("{0:HH:mm:ss}", seat.BeginUsedTime);
                    tipContent = string.Format("学号:{0}<br />姓名:{1}<br />暂离时间:{2}", seat.UserCardNo, seat.UserName, time);
                    used       = "暂离";
                    break;

                case EnterOutLogType.BespeakWaiting:
                    onTime     = "0";
                    seatStyle  = "RealSeatBusy";
                    tipContent = "等待预约读者确认入座";
                    used       = "在座";
                    break;
                }
                switch (state)
                {
                case "seated":
                    if (used == "在座")
                    {
                        //seatHtml.AppendFormat("<div data-inline='true' class='{0}' data-transition='none' data-role='button' onclick='tipShow(this,\"{1}\");checkSeat({2})'><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})' Style=\"position:static\" /><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used);
                        seatHtml.AppendFormat("<div class='{0}' onclick='tipShowPad(this,\"{1}\");checkSeat({2})' style='float: left; width: 75px;height: 70px;background-image: url('../Images/Pad/pink.png');background-repeat: no-repeat;vertical-align: middle;'><br/><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})' Style=\"position:static\" /><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used);
                    }
                    break;

                case "shortLeave":
                    if (used == "暂离")
                    {
                        seatHtml.AppendFormat("<div  class='{0}' onclick='tipShowPad(this,\"{1}\");checkSeat({2})' style='float: left; width: 75px;height: 70px;background-image: url('../Images/Pad/blue.png');background-repeat: no-repeat;vertical-align: middle;'><br/><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})'  Style=\"position:static\"/><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used);
                    }
                    break;

                case "onTime":
                    if (onTime == "1")
                    {
                        seatHtml.AppendFormat("<div class='{0}' onclick='tipShowPad(this,\"{1}\");checkSeat({2})' style='float: left; width: 75px;height: 70px;vertical-align: middle;background-image: url('../Images/Pad/onTime.png');background-repeat: no-repeat;'><br/><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})' Style=\"position:static\" /><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used);
                    }
                    break;

                case "allSeat":
                    seatHtml.AppendFormat("<div class='{0}' onclick='tipShowPad(this,\"{1}\");checkSeat({2})' style='float: left; width: 75px;height: 70px;background-image: url('../Images/Pad/gray.png');background-repeat: no-repeat;vertical-align: middle;'><br/><input id='{3}' type='checkbox' name='ckbSeat' value='{4}' onclick='checkSeat({5})' Style=\"position:static\"/><span Style=\"font-size: 90%;\">{6}</span><br /><span Style=\"font-size: 90%;\">{7}</span></div>", seatStyle, tipContent, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.SeatNo, seat.ShortSeatNo, used);
                    break;
                }
            }
            seatContent.InnerHtml = seatHtml.ToString();
        }
        public SeatsInfo getTripDetails(String tripId, String URL, String ConsumerKey, String ConsumerSecret)
        {
            SeatsInfo objSeatsLayout = null;
            try
            {
                String strResponse = objService.getTripDetails(tripId, URL, ConsumerKey, ConsumerSecret);
                DataSet ds = convertJsonStringToDataSet(strResponse);

                if (ds != null && ds.Tables.Count > 0 && ds.Tables["seats"].Rows.Count > 0)
                {
                    objSeatsLayout = new SeatsInfo();
                    objSeatsLayout.Seats = new List<SeatLayout>();
                    #region Loop each seat and add seat details to objSeatsLayout

                    foreach (DataRow item in ds.Tables["seats"].Rows)
                    {
                        SeatLayout objSeat = new SeatLayout();

                        objSeat.column = Int16.Parse(item["column"].ToString());
                        objSeat.fare = item["fare"].ToString();
                        objSeat.id = tripId;
                        objSeat.isAvailableSeat = item["available"].ToString();
                        objSeat.isLadiesSeat = item["ladiesSeat"].ToString();
                        objSeat.length = Int16.Parse(item["length"].ToString());
                        objSeat.number = item["name"].ToString();
                        objSeat.row = Int16.Parse(item["row"].ToString());
                        objSeat.width = Int16.Parse(item["width"].ToString());
                        objSeat.zIndex = Int16.Parse(item["zIndex"].ToString());

                        objSeatsLayout.Seats.Add(objSeat);
                    }
                    #endregion
                }
            }
            catch (Exception ex)
            {
                // to do
            }
            return objSeatsLayout;
        }
Exemple #29
0
        /// <summary>
        /// 获取座位使用状态
        /// </summary>
        /// <param name="seatNum"></param>
        /// <param name="readingRoomNum"></param>
        /// <returns></returns>
        public SeatBookUsingInfo GetSeatBookUsingStatus(string seatNum, string readingRoomNum)
        {
            SeatBookUsingInfo      seatInfo = new SeatBookUsingInfo();
            List <ReadingRoomInfo> rooms    = seatManage.GetReadingRoomInfo(new List <string>()
            {
                readingRoomNum
            });

            if (rooms.Count > 0)
            {
                seatInfo.InReadingRoom = rooms[0];
            }
            else
            {
                throw new SeatBespeakException.BespeakSeatFailed("此阅览室不存在!");
            }
            seatInfo.SeatInfo = seatManage.GetSeatInfoBySeatNum(seatNum);
            if (seatInfo.SeatInfo == null)
            {
                throw new SeatBespeakException.BespeakSeatFailed("此座位不存在!");
            }
            //获取可预约座位
            if (seatInfo.InReadingRoom.Setting.SeatBespeak.Used)
            {
                if (seatInfo.InReadingRoom.Setting.SeatBespeak.NowDayBespeak)
                {
                    //当天预约信息
                    SeatLayout bespeakSeatLayout = seatManage.GetBeseakSeatLayout(readingRoomNum, DateTime.Now);
                    SeatLayout useSeatLayout     = seatManage.GetRoomSeatLayOut(readingRoomNum);
                    foreach (KeyValuePair <string, Seat> uSeat in useSeatLayout.Seats)
                    {
                        if (uSeat.Value.SeatUsedState == EnterOutLogType.BespeakWaiting)
                        {
                            if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime)
                            {
                                if (!bespeakSeatLayout.Seats[uSeat.Key].IsSuspended)
                                {
                                    if (bespeakSeatLayout.Seats[uSeat.Key].SeatNo == seatNum)
                                    {
                                        seatInfo.BookSeatInfo.Add(DateTime.Now, bespeakSeatLayout.Seats[uSeat.Key]);
                                        break;
                                    }
                                }
                            }
                            continue;
                        }
                        if ((uSeat.Value.SeatUsedState == EnterOutLogType.Leave || uSeat.Value.SeatUsedState == EnterOutLogType.None) && !uSeat.Value.IsSuspended)
                        {
                            if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime)
                            {
                                if (bespeakSeatLayout.Seats[uSeat.Key].SeatNo == seatNum)
                                {
                                    seatInfo.BookSeatInfo.Add(DateTime.Now, bespeakSeatLayout.Seats[uSeat.Key]);
                                    break;
                                }
                            }
                            else
                            {
                                if (uSeat.Value.SeatNo == seatNum)
                                {
                                    seatInfo.BookSeatInfo.Add(DateTime.Now, uSeat.Value);
                                    break;
                                }
                            }
                        }
                    }
                }
                //隔天预约信息
                for (int i = 1; i <= seatInfo.InReadingRoom.Setting.SeatBespeak.BespeakBeforeDays; i++)
                {
                    SeatLayout bespeakSeatLayout = seatManage.GetBeseakSeatLayout(readingRoomNum, DateTime.Now.AddDays(i));
                    foreach (Seat seat in bespeakSeatLayout.Seats.Values)
                    {
                        if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime)
                        {
                            if (seat.CanBeBespeak && seat.CanBespeakSpan.Count > 0 && !seat.IsSuspended)
                            {
                                if (seat.SeatNo == seatNum)
                                {
                                    seatInfo.BookSeatInfo.Add(DateTime.Now.AddDays(i), seat);
                                    break;
                                }
                            }
                        }
                        else
                        {
                            if (seat.CanBeBespeak && seat.SeatUsedState != EnumType.EnterOutLogType.BookingConfirmation && !seat.IsSuspended)
                            {
                                if (seat.SeatNo == seatNum)
                                {
                                    seatInfo.BookSeatInfo.Add(DateTime.Now.AddDays(i), seat);
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            return(seatInfo);
        }
        /// <summary>
        /// 根据阅览室编号获取阅览室布局
        /// </summary>
        /// <param name="roomNum">阅览室编号</param>
        /// <returns></returns>
        public string GetRoomSeatLayout(string roomNum)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(roomNum))
                {
                    result.Result = false;
                    result.Msg    = "阅览室编号不能为空!";
                    return(JSONSerializer.Serialize(result));
                }
                AJM_SeatLayout         ajmSeatLayout = new AJM_SeatLayout();
                List <ReadingRoomInfo> roomInfos     = SeatManageDateService.GetReadingRoomInfo(new List <string> {
                    roomNum
                });
                if (roomInfos.Count < 0)
                {
                    result.Result = false;
                    result.Msg    = string.Format("编号为{0}的阅览室不存在!", roomNum);
                    return(JSONSerializer.Serialize(result));
                }
                SeatLayout seatLayout = roomInfos[0].SeatList;

                ajmSeatLayout.ColumsCount = seatLayout.SeatCol;
                ajmSeatLayout.RowsCount   = seatLayout.SeatRow;
                ajmSeatLayout.IsUpdate    = false;
                foreach (var seat in seatLayout.Seats.Values)
                {
                    AJM_Element ajmElement = new AJM_Element();
                    ajmElement.Angle       = seat.RotationAngle;
                    ajmElement.BaseHeight  = seat.BaseHeight;
                    ajmElement.BaseWidth   = seat.BaseWidth;
                    ajmElement.SeatNo      = seat.SeatNo;
                    ajmElement.ElementType = "Seat";
                    ajmElement.HasPower    = seat.HavePower;
                    ajmElement.X           = seat.PositionX;
                    ajmElement.Y           = seat.PositionY;
                    ajmElement.Remark      = seat.ShortSeatNo;
                    ajmSeatLayout.ElementList.Add(ajmElement);
                }
                foreach (AJM_Element ajmElement in seatLayout.Notes.Select(note => new AJM_Element
                {
                    Angle = note.RotationAngle,
                    BaseHeight = note.BaseHeight,
                    BaseWidth = note.BaseWidth,
                    ElementType = note.Type.ToString(),
                    X = note.PositionX,
                    Y = note.PositionY,
                    Remark = note.Remark
                }))
                {
                    ajmSeatLayout.ElementList.Add(ajmElement);
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmSeatLayout);
                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="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));
            }
        }