Exemplo n.º 1
0
        //<summary>
        //获取多个阅览室座位使用状态V4
        //</summary>
        //<param name="roomNums">阅览室编号列表</param>
        //<param name="date"></param>
        //<returns></returns>
        public Dictionary <string, ReadingRoomSeatUsedState> GetRoomSeatUsedStateV4(List <string> roomNums)
        {
            //List<ReadingRoomInfo> rooms = GetReadingRoomInfo(roomNums);
            //List<EnterOutLogInfo> roomEnterOutLoglist = GetRoomUsingSeatEnterOutLogInfoV2(roomNums);
            //List<BespeakLogInfo> roomBespeakLogs = GetBespeakLogInfoByRoomsNum(roomNums, GetServerDateTime());
            //Dictionary<string, ReadingRoomSeatUsedState> list = new Dictionary<string, ReadingRoomSeatUsedState>();
            //for (int i = 0; i < roomNums.Count; i++)
            //{
            //    ReadingRoomSeatUsedState usedState = new ReadingRoomSeatUsedState();
            //    //usedState.PersonTimes = GetTodaySeatPerson(rooms[i].No);
            //    //usedState.SeatAmountAll = rooms[i].SeatList.Seats.Count(u => u.Value.IsSuspended != true);
            //    usedState.SeatAmountUsed = roomEnterOutLoglist.FindAll(u => u.ReadingRoomNo == roomNums[i]).Count;
            //    usedState.SeatBookingCount = roomBespeakLogs.FindAll(u => u.ReadingRoomNo == roomNums[i]).Count;
            //    list.Add(roomNums[i], usedState);
            //}
            //return list;

            Dictionary <string, int> roomEnterOutLogCount      = GetRoomUsingSeatCount(roomNums);
            Dictionary <string, int> bookingCount              = GetBookingCount(roomNums, GetServerDateTime());
            Dictionary <string, ReadingRoomSeatUsedState> list = new Dictionary <string, ReadingRoomSeatUsedState>();

            for (int i = 0; i < roomNums.Count; i++)
            {
                ReadingRoomSeatUsedState usedState = new ReadingRoomSeatUsedState();
                usedState.SeatAmountUsed   = roomEnterOutLogCount[roomNums[i]];
                usedState.SeatBookingCount = bookingCount[roomNums[i]];
                //usedState.SeatTemUseCount = roomEnterOutLoglist.FindAll(u => u.ReadingRoomNo == roomNums[i] && roomBespeakLogs.Exists(p => p.SeatNo == u.SeatNo)).Count;
                list.Add(roomNums[i], usedState);
            }
            return(list);
        }
Exemplo n.º 2
0
        public string SeatUsedInfo(string ReadingRoomNo)
        {
            try
            {
                if (!Verifylicensing())
                {
                    return("非法操作,此接口未进行授权!");
                }
                if (!checkReadingRoomNo(ReadingRoomNo))
                {
                    return("阅览室编号错误");
                }

                ReadingRoomInfo          room     = GetSingleRoomInfo(ReadingRoomNo);
                ReadingRoomSeatUsedState roomSeat = NowReadingRoomState.GetRoomSeatUsedState(ReadingRoomNo);
                int    allSeat       = roomSeat.SeatAmountAll;  //总座位数
                int    NotSeatPeople = roomSeat.SeatAmountFree; //剩余座位数
                int    usedSeat      = roomSeat.SeatAmountUsed;
                string result        = string.Format("<SeatUsedInfo><RoomName No='{0}' SchoolName='{1}' LibraryName='{2}'>{3}</RoomName><Seat UsedSum='{4}' AllSum='{5}' freeSeat='{6}' /></SeatUsedInfo>", ReadingRoomNo, room.Libaray.School.Name, room.Libaray.Name, room.Name, usedSeat, allSeat, NotSeatPeople);
                return(result);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取多个阅览室座位使用状态V2
        /// </summary>
        /// <param name="roomNums">阅览室编号列表</param>
        /// <param name="date"></param>
        /// <returns></returns>
        public Dictionary <string, ReadingRoomSeatUsedState> GetRoomSeatUsedStateV2(List <string> roomNums)
        {
            List <ReadingRoomInfo> rooms = GetReadingRoomInfo(roomNums);
            List <EnterOutLogInfo> roomEnterOutLoglist         = GetRoomUsingSeatEnterOutLogInfo(roomNums);
            List <BespeakLogInfo>  roomBespeakLogs             = GetBespeakLogInfoByRoomsNum(roomNums, GetServerDateTime());
            Dictionary <string, ReadingRoomSeatUsedState> list = new Dictionary <string, ReadingRoomSeatUsedState>();

            for (int i = 0; i < rooms.Count; i++)
            {
                ReadingRoomSeatUsedState usedState = new ReadingRoomSeatUsedState();
                usedState.PersonTimes   = GetTodaySeatPerson(rooms[i].No);
                usedState.SeatAmountAll = rooms[i].SeatList.Seats.Count(u => u.Value.IsSuspended != true);
                List <EnterOutLogInfo> enterOutLoglist = roomEnterOutLoglist.FindAll(u => u.ReadingRoomNo == rooms[i].No);
                List <BespeakLogInfo>  bespeakLogs     = roomBespeakLogs.FindAll(u => u.ReadingRoomNo == rooms[i].No);
                usedState.SeatAmountShortLeave = enterOutLoglist.Count(u => u.EnterOutState == SeatManage.EnumType.EnterOutLogType.ShortLeave);
                for (int j = 0; j < enterOutLoglist.Count; j++)
                {
                    if (bespeakLogs.Find(u => u.SeatNo == enterOutLoglist[j].SeatNo) != null)
                    {
                        usedState.SeatTemUseCount += 1;
                        break;
                    }
                }
                usedState.SeatBookingCount = bespeakLogs.Count;
                usedState.SeatAmountUsed   = enterOutLoglist.Count;
                list.Add(rooms[i].No, usedState);
            }
            return(list);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 获取多个阅览室座位使用状态V4
        /// </summary>
        /// <param name="roomNums">阅览室编号列表</param>
        /// <param name="date"></param>
        /// <returns></returns>
        public Dictionary <string, ReadingRoomSeatUsedState> GetRoomSeatUsedStateV5(List <string> roomNums)
        {
            Dictionary <string, int> roomEnterOutLogCount      = GetRoomUsingSeatCount(roomNums);
            Dictionary <string, int> bookingCount              = GetBookingCount(roomNums, GetServerDateTime());
            Dictionary <string, ReadingRoomSeatUsedState> list = new Dictionary <string, ReadingRoomSeatUsedState>();

            for (int i = 0; i < roomNums.Count; i++)
            {
                ReadingRoomSeatUsedState usedState = new ReadingRoomSeatUsedState();
                usedState.SeatAmountUsed   = roomEnterOutLogCount[roomNums[i]];
                usedState.SeatBookingCount = bookingCount[roomNums[i]];
                //usedState.SeatTemUseCount = roomEnterOutLoglist.FindAll(u => u.ReadingRoomNo == roomNums[i] && roomBespeakLogs.Exists(p => p.SeatNo == u.SeatNo)).Count;
                list.Add(roomNums[i], usedState);
            }
            return(list);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 获取多个阅览室座位使用状态
        /// </summary>
        /// <param name="roomNums">阅览室编号列表</param>
        /// <param name="date"></param>
        /// <returns></returns>
        public Dictionary <string, ReadingRoomSeatUsedState> GetRoomSeatUsedState(List <string> roomNums)
        {
            List <ReadingRoomInfo> rooms = GetReadingRoomInfo(roomNums);
            Dictionary <string, ReadingRoomSeatUsedState> list = new Dictionary <string, ReadingRoomSeatUsedState>();

            for (int i = 0; i < rooms.Count; i++)
            {
                ReadingRoomSeatUsedState usedState = new ReadingRoomSeatUsedState();
                usedState.LibraryNum  = rooms[i].Libaray.No;
                usedState.LibraryName = string.Format("{0} {1}", rooms[i].Libaray.School.Name, rooms[i].Libaray.Name);
                usedState.RoomName    = rooms[i].Name;
                usedState.RoomNum     = rooms[i].No;
                usedState.PersonTimes = GetTodaySeatPerson(rooms[i].No);
                //usedState.SeatAmountAll = GetSeatAmountAll(rooms[i].No);
                usedState.SeatAmountAll = rooms[i].SeatList.Seats.Count(u => u.Value.IsSuspended != true);
                //foreach (KeyValuePair<string, Seat> seat in rooms[i].SeatList.Seats)
                //{
                //    if (seat.Value.IsSuspended)
                //    {
                //        usedState.SeatAmountAll--;
                //    }
                //}
                List <EnterOutLogInfo> enterOutLoglist = GetUsingSeatEnterOutLogInfo(rooms[i].No);
                List <BespeakLogInfo>  bespeakLogs     = GetBespeakLogInfoByRoomNum(rooms[i].No, GetServerDateTime());
                for (int j = 0; j < enterOutLoglist.Count; j++)
                {
                    if (enterOutLoglist[j].EnterOutState == SeatManage.EnumType.EnterOutLogType.ShortLeave)
                    {
                        usedState.SeatAmountShortLeave += 1;
                    }
                    for (int k = 0; k < bespeakLogs.Count; k++)
                    {
                        if (enterOutLoglist[j].SeatNo == bespeakLogs[k].SeatNo)
                        {
                            usedState.SeatTemUseCount += 1;
                            break;
                        }
                    }
                }
                //usedState.SeatTemUseCount = enterOutLoglist.FindAll(u => u.ReadingRoomNo == roomNums[i] && bespeakLogs.Exists(p => p.SeatNo == u.SeatNo)).Count;
                usedState.SeatBookingCount = bespeakLogs.Count;
                usedState.SeatAmountUsed   = enterOutLoglist.Count;
                //usedState.SeatAmountFree = usedState.SeatAmountAll - usedState.SeatAmountUsed - usedState.SeatBookingCount + usedState.SeatTemUseCount;
                list.Add(rooms[i].No, usedState);
            }
            return(list);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 获取多个阅览室座位使用状态V3
        /// </summary>
        /// <param name="roomNums">阅览室编号列表</param>
        /// <param name="date"></param>
        /// <returns></returns>
        public Dictionary <string, ReadingRoomSeatUsedState> GetRoomSeatUsedStateV3(List <string> roomNums)
        {
            Dictionary <string, ReadingRoomSeatUsedState> stateList = new Dictionary <string, ReadingRoomSeatUsedState>();
            List <ReadingRoomInfo> readingRooms = new List <ReadingRoomInfo>();

            try
            {
                if (roomNums != null && roomNums.Count > 0)
                {
                    for (int i = 0; i < roomNums.Count; i++)
                    {
                        StringBuilder strWhere = new StringBuilder();
                        strWhere.Append(string.Format(" ReadingRoomNo = '{0}'", roomNums[i]));
                        DataSet ds = viewReadingRoomState_DAL.GetList(strWhere.ToString(), null);
                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            ReadingRoomSeatUsedState_Ex roomState = DataRowToReadingRoomSeatUsedState(ds.Tables[0].Rows[0]);
                            ReadingRoomSeatUsedState    state     = new ReadingRoomSeatUsedState();
                            state.SeatAmountAll    = roomState.ReadingRoom.SeatList.Seats.Count(u => u.Value.IsSuspended != true);
                            state.SeatAmountUsed   = roomState.SeatAmountUsed;
                            state.SeatBookingCount = roomState.SeatBookingCount;
                            stateList.Add(roomState.ReadingRoom.No, state);
                        }
                    }
                }
                else
                {
                    DataSet ds = viewReadingRoomState_DAL.GetList("", null);
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        ReadingRoomSeatUsedState_Ex roomState = DataRowToReadingRoomSeatUsedState(ds.Tables[0].Rows[i]);
                        ReadingRoomSeatUsedState    state     = new ReadingRoomSeatUsedState();
                        state.SeatAmountAll    = roomState.ReadingRoom.SeatList.Seats.Count(u => u.Value.IsSuspended != true);
                        state.SeatAmountUsed   = roomState.SeatAmountUsed;
                        state.SeatBookingCount = roomState.SeatBookingCount;
                        stateList.Add(roomState.ReadingRoom.No, state);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("获取阅览室信息失败:{0}", ex.Message));
            }
            return(stateList);
        }
 /// <summary>
 /// 判断读者是否可以进入阅览室
 /// </summary>
 /// <param name="cardNo"></param>
 /// <param name="roomNum"></param>
 /// <returns></returns>
 public string VerifyCanDoIt(string cardNo, string roomNum)
 {
     try
     {
         JM_HandleResult result = new JM_HandleResult();
         result.Result = true;
         result.Msg    = "";
         if (string.IsNullOrEmpty(cardNo))
         {
             result.Result = false;
             result.Msg    = "对不起,输入的学号不能为空。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         List <ReadingRoomInfo> rooms = seatDataService.GetReadingRooms(new List <string>()
         {
             roomNum
         }, null, null);
         if (rooms.Count < 1)
         {
             result.Result = false;
             result.Msg    = "对不起,此阅览室不存在。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         //判断阅览室是否开放
         if (ReadingRoomOpenState(rooms[0].Setting.RoomOpenSet, seatDataService.GetServerDateTime()) == ReadingRoomStatus.Close)
         {
             result.Result = false;
             result.Msg    = "对不起,此阅览室尚未开放。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         //判断阅览室是否已满
         ReadingRoomSeatUsedState roomStatus = GetRoomSeatUsedState(roomNum);
         if (roomStatus != null && roomStatus.SeatAmountFree <= 0 && !rooms[0].Setting.NoManagement.Used)
         {
             result.Result = false;
             result.Msg    = "对不起,此阅览室座位已满。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         //判断黑名单
         if (!string.IsNullOrEmpty(checkBlacklist(cardNo, rooms[0])))
         {
             result.Result = false;
             result.Msg    = "对不起,您在黑名单中存在记录。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         //判断选座次数
         if (rooms[0].Setting.PosTimes.IsUsed && seatDataService.GetReaderChooseSeatTimes(cardNo, rooms[0].Setting.PosTimes.Minutes) >= rooms[0].Setting.PosTimes.Times)
         {
             result.Result = false;
             result.Msg    = "操作失败,选座频繁。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         //判断读者类型
         ReaderInfo reader = seatDataService.GetReader(cardNo, false);
         if (reader == null)
         {
             reader            = new ReaderInfo();
             reader.CardNo     = cardNo;
             reader.ReaderType = "未指定";
         }
         if (!ProvenReaderType(reader, rooms[0].Setting))
         {
             result.Result = false;
             result.Msg    = "对不起,您的用户类型'" + reader.ReaderType + "'不允许在此阅览室选座。";
             return(SeatManageComm.JSONSerializer.Serialize(result));
         }
         return(SeatManageComm.JSONSerializer.Serialize(result));
     }
     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));
     }
 }