string bespeakSureTime(ReadingRoomSetting set)
        {
            T_SM_ReadingRoom bllReadingRoom = new T_SM_ReadingRoom();
            DateTime         bespeakTime    = Convert.ToDateTime(bllReadingRoom.GetRoomOpenTimeByDate(set, date).BeginTime);

            if (spanSelect.Visible)
            {
                bespeakTime = Convert.ToDateTime(spanSelect.Items[spanSelect.SelectedIndex].Value);
            }
            else
            {
                bespeakTime = Convert.ToDateTime(timeSelect.Items[timeSelect.SelectedIndex].Value);
            }
            return(string.Format(bespeakTime.ToShortTimeString()));
        }
Example #2
0
        /// <summary>
        /// 获取阅览室列表
        /// </summary>
        public void GetRoomList()
        {
            _roomList = T_SM_ReadingRoom.GetReadingRooms(null, null, null);
            foreach (ReadingRoomInfo item in _roomList)
            {
                VM_UC_RoomStatus status = new VM_UC_RoomStatus();
                status.AllSeatCount = item.SeatList.Seats.Count(u => u.Value.IsSuspended == false);
                status.RoomName     = item.Name;
                status.RoomNo       = item.No;
                StateList.Add(item.No, status);
            }
            LibStatus.AllSeatCount = StateList.Sum(u => u.Value.AllSeatCount);
            LibStatus.RoomName     = _roomList[0].Libaray.Name;

            GetUsage();
            ShowTimeRun();
        }
 /// <summary>
 /// 获取最新设置
 /// </summary>
 public void GetSetting()
 {
     try
     {
         //获取全部阅览室信息和黑名单设置
         List <ReadingRoomInfo> rooms = T_SM_ReadingRoom.GetReadingRooms(null, null, null);
         regulationRulesSetting = T_SM_SystemSet.GetRegulationRulesSetting();
         roomList.Clear();
         foreach (ReadingRoomInfo room in rooms)
         {
             roomList.Add(room.No, room);
         }
     }
     catch (Exception e)
     {
         WriteLog.Write(string.Format("监控服务:获取阅览室设置时遇到错误:{0}", e.Message));
     }
 }
        string bespeakSureTimeSpan(ReadingRoomSetting set)
        {
            T_SM_ReadingRoom bllReadingRoom = new T_SM_ReadingRoom();
            DateTime         bespeakTime    = Convert.ToDateTime(bllReadingRoom.GetRoomOpenTimeByDate(set, date).BeginTime);

            if (spanSelect.Visible)
            {
                bespeakTime = Convert.ToDateTime(spanSelect.Items[spanSelect.SelectedIndex].Value);
            }
            else
            {
                bespeakTime = Convert.ToDateTime(timeSelect.Items[timeSelect.SelectedIndex].Value);
            }
            DateTime bespeakBeginTime = bespeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime));
            DateTime bespeakEndTime   = bespeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime));

            return(string.Format("{0}至{1}", bespeakBeginTime.ToShortTimeString(), bespeakEndTime.ToShortTimeString()));
        }
Example #5
0
        /// <summary>
        /// 选座座位
        /// </summary>
        /// <param name="seatBtn"></param>
        /// <returns></returns>
        public bool SelectSeat(UsuallySeatUC_ViewModel seatBtn)
        {
            ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(seatBtn.ReadingRoomNo);

            ClientObject.EnterOutLogData.Student.AtReadingRoom = roomInfo;//给读者所在的阅览室赋值。

            //验证读者身份是否允许选择该阅览室。
            if (!SelectSeatProven.ProvenReaderType(ClientObject.EnterOutLogData.Student, roomInfo.Setting))
            {
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.ReaderTypeInconformity);
                return(false);
            }
            //验证读者黑名单,选座次数。
            if (SelectSeatProven.ProvenReaderState(ClientObject.EnterOutLogData.Student, roomInfo, ClientObject.RegulationRulesSet.BlacklistSet, ClientObject.ClientSetting.DeviceSetting))
            {
                //ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = "";
                return(false);
            }
            SeatLockState lockseat = T_SM_Seat.LockSeat(seatBtn.SeatNo);

            if (lockseat != SeatLockState.Locked) //座位成功加锁
            {
                PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.SeatLocking);
                return(false);
            }

            ClientObject.EnterOutLogData.EnterOutlog.ShortSeatNo     = seatBtn.ShortSeatNo;
            ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = seatBtn.ReadingRoomName;
            PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.SelectSeatConfinmed);
            if (PopupWindowsObject.GetInstance().Window.ViewModel.OperateResule != HandleResult.Successed)
            {
                T_SM_Seat.UnLockSeat(seatBtn.SeatNo); //确认窗口点击取消或者自动关闭,则解锁。
                return(false);
            }
            ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = seatBtn.ReadingRoomName;
            ClientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo   = seatBtn.ReadingRoomNo;
            ClientObject.EnterOutLogData.EnterOutlog.SeatNo          = seatBtn.SeatNo;
            ClientObject.EnterOutLogData.EnterOutlog.ShortSeatNo     = seatBtn.ShortSeatNo;
            ClientObject.EnterOutLogData.EnterOutlog.TerminalNum     = ClientObject.ClientSetting.ClientNo;
            ClientObject.EnterOutLogData.FlowControl        = ClientOperation.SelectSeat; //操作为选择座位
            ClientObject.EnterOutLogData.EnterOutlog.Remark = string.Format("在终端{0}选择常坐座位,{1},{2}号座位", ClientObject.ClientSetting.ClientNo, ClientObject.EnterOutLogData.Student.AtReadingRoom.Name, seatBtn.ShortSeatNo);
            return(true);
        }
 /// <summary>
 /// 显示当前读者的详细进出记录
 /// </summary>
 /// <param name="cardNo"></param>
 private void ShowEnterOutLogMessage(string cardNo)
 {
     if (!string.IsNullOrEmpty(cardNo))
     {
         DateTime nowdt = ServiceDateTime.Now;
         List <EnterOutLogInfo> eollist = readerLogQuery.QueryEnterOugLogs(cardNo, nowdt);
         //List<BespeakLogInfo> blilist = readerLogQuery.QueryBespeakLogs(cardNo, nowdt);
         //List<WaitSeatLogInfo> wslilist = readerLogQuery.QueryWaitSeatLogs(cardNo, nowdt);
         lblCardNo.Text = cardNo;
         bool flag = false;
         for (int i = 0; i < eollist.Count; i++)
         {
             if (eollist[i].EnterOutType == SeatManage.EnumType.LogStatus.Valid && eollist[i].EnterOutState != SeatManage.EnumType.EnterOutLogType.Leave)
             {
                 ReadingRoomInfo room = T_SM_ReadingRoom.GetSingleRoomInfo(eollist[i].ReadingRoomNo);
                 lblReadingRoomName.Text = room.Name;
                 lblSeatNo.Text          = SeatComm.SeatNoToShortSeatNo(room.Setting.SeatNumAmount, eollist[i].SeatNo);
                 lblNowState.Text        = SeatComm.ConvertReaderState(eollist[i].EnterOutState);
                 flag = true;
                 break;
             }
         }
         if (!flag)
         {
             lblReadingRoomName.Text = "没有选择座位";
             lblNowState.Text        = "无座";
             lblSeatNo.Text          = "无";
         }
         List <Label> labelList = readerLogQuery.GetEnterOutLogLabels(eollist);
         panel1.Controls.Clear();
         for (int i = 0; i < labelList.Count; i++)
         {
             panel1.Controls.Add(labelList[i]);
         }
     }
 }
        /// <summary>
        /// 进出记录的消息
        /// </summary>
        /// <param name="log"></param>
        /// <returns></returns>
        private string EnterOutLogMessage(EnterOutLogInfo log)
        {
            ReadingRoomInfo room = null;

            try
            {
                room = clientObject.ReadingRoomList[log.ReadingRoomNo];
            }
            catch
            {
                room = T_SM_ReadingRoom.GetSingleRoomInfo(log.ReadingRoomNo);
            }
            string strMessage = "";

            if (room != null)
            {
                strMessage = string.Format("{0}  {1}", log.EnterOutTime.ToLongTimeString(), log.Remark);
            }
            else
            {
                strMessage = string.Format("{0}  {1}", log.EnterOutTime.ToLongTimeString(), log.Remark);
            }
            return(strMessage);
        }
        /// <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);
            }
        }
Example #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["LoginId"] == null)
            {
                Response.Redirect("../Login.aspx");
            }
            if (!IsPostBack)
            {
                BindReadingRoomList(Session[CookiesManager.LoginID].ToString());
                GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
            }

            cmd = Request.Form["subCmd"];
            if (cmd != null)
            {
                #region 座位相关操作
                switch (cmd)
                {
                case "search":    //查询座位
                    try
                    {
                        GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                    }
                    catch
                    {
                    }
                    break;

                case "ShortLeave":    //设置暂离
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState != EnterOutLogType.ShortLeave)
                            {
                                ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(enterOutLog.ReadingRoomNo);
                                enterOutLog.EnterOutState = EnterOutLogType.ShortLeave;
                                enterOutLog.Flag          = Operation.Admin;
                                enterOutLog.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置为暂离", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                int          newId  = -1;
                                HandleResult result = EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId);
                                if (result == HandleResult.Successed)
                                {
                                    Page.RegisterStartupScript("", "<script>alert('设置读者暂离成功');</script>");
                                    GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                }
                                else
                                {
                                    Page.RegisterStartupScript("", "<script>alert('设置读者暂离失败');</script>");
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                    break;

                case "ReleaseShortLeave":    //取消暂离
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState == EnterOutLogType.ShortLeave)
                            {
                                ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(enterOutLog.ReadingRoomNo);
                                enterOutLog.EnterOutState = EnterOutLogType.ComeBack;
                                enterOutLog.Flag          = Operation.Admin;
                                enterOutLog.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备取消暂离,恢复为在座", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                int          newId  = -1;
                                HandleResult result = EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId);
                                if (result == HandleResult.Successed)
                                {
                                    List <WaitSeatLogInfo> waitSeatLogs = T_SM_SeatWaiting.GetWaitSeatList("", enterOutLog.EnterOutLogID, null, null, null);
                                    WaitSeatLogInfo        waitSeatLog  = null;
                                    if (waitSeatLogs.Count > 0)
                                    {
                                        waitSeatLog              = waitSeatLogs[0];
                                        waitSeatLog.NowState     = LogStatus.Fail;
                                        waitSeatLog.OperateType  = Operation.OtherReader;
                                        waitSeatLog.WaitingState = EnterOutLogType.WaitingCancel;
                                        if (T_SM_SeatWaiting.UpdateWaitLog(waitSeatLog))
                                        {
                                            Page.RegisterStartupScript("", "<script>alert('取消读者暂离成功');</script>");
                                            GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                        }
                                        else
                                        {
                                            Page.RegisterStartupScript("", "<script>alert('取消读者暂离成功,取消读者等待失败');</script>");
                                            GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                        }
                                    }
                                    else
                                    {
                                        Page.RegisterStartupScript("", "<script>alert('取消读者暂离成功');</script>");
                                        GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                    }
                                }
                                else
                                {
                                    Page.RegisterStartupScript("", "<script>alert('取消读者暂离失败');</script>");
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                    break;

                case "Release":    //释放座位
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState != EnterOutLogType.Leave)
                            {
                                ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(enterOutLog.ReadingRoomNo);

                                enterOutLog.EnterOutState = EnterOutLogType.Leave;
                                enterOutLog.Flag          = Operation.Admin;
                                enterOutLog.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                int          newId  = -1;
                                HandleResult result = EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId);
                                if (result == HandleResult.Successed)
                                {
                                    RegulationRulesSetting rulesSet = T_SM_SystemSet.GetRegulationRulesSetting();
                                    if (roomInfo.Setting.IsRecordViolate)
                                    {
                                        if (roomInfo.Setting.BlackListSetting.Used)
                                        {
                                            if (roomInfo.Setting.BlackListSetting.ViolateRoule[ViolationRecordsType.LeaveByAdmin])
                                            {
                                                ViolationRecordsLogInfo violationRecords = new ViolationRecordsLogInfo();
                                                violationRecords.CardNo        = enterOutLog.CardNo;
                                                violationRecords.SeatID        = enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - roomInfo.Setting.SeatNumAmount, roomInfo.Setting.SeatNumAmount);
                                                violationRecords.ReadingRoomID = enterOutLog.ReadingRoomNo;
                                                violationRecords.EnterOutTime  = ServiceDateTime.Now.ToString();
                                                violationRecords.EnterFlag     = ViolationRecordsType.LeaveByAdmin;
                                                violationRecords.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                                violationRecords.BlacklistID   = "-1";
                                                T_SM_ViolateDiscipline.AddViolationRecords(violationRecords);
                                            }
                                        }
                                        else if (rulesSet.BlacklistSet.Used && rulesSet.BlacklistSet.ViolateRoule[ViolationRecordsType.LeaveByAdmin])
                                        {
                                            ViolationRecordsLogInfo violationRecords = new ViolationRecordsLogInfo();
                                            violationRecords.CardNo        = enterOutLog.CardNo;
                                            violationRecords.SeatID        = enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - roomInfo.Setting.SeatNumAmount, roomInfo.Setting.SeatNumAmount);
                                            violationRecords.ReadingRoomID = enterOutLog.ReadingRoomNo;
                                            violationRecords.EnterOutTime  = ServiceDateTime.Now.ToString();
                                            violationRecords.EnterFlag     = ViolationRecordsType.LeaveByAdmin;
                                            violationRecords.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);
                                            violationRecords.BlacklistID   = "-1";
                                            T_SM_ViolateDiscipline.AddViolationRecords(violationRecords);
                                        }
                                    }
                                    Page.RegisterStartupScript("", "<script>alert('设置读者离开成功');</script>");
                                    GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                }
                                else
                                {
                                    Page.RegisterStartupScript("", "<script>alert('设置读者离开失败');</script>");
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                    break;

                case "onTime":    //计时
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState != EnterOutLogType.ShortLeave)
                            {
                                DateTime markTime = ServiceDateTime.Now;
                                EnterOutOperate.UpdateMarkTime(enterOutLog.EnterOutLogID, markTime);
                                GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                            }
                        }
                    }
                    catch
                    {
                    }

                    break;

                case "offTime":    //取消计时
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && !string.IsNullOrEmpty(enterOutLog.MarkTime.ToString()) && enterOutLog.MarkTime.CompareTo(DateTime.Parse("1900/1/1")) != 0)
                            {
                                DateTime markTime = DateTime.Parse("1900-1-1");
                                EnterOutOperate.UpdateMarkTime(enterOutLog.EnterOutLogID, markTime);
                                GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                            }
                        }
                    }
                    catch
                    {
                    }

                    break;

                case "AddBlacklist":
                    try
                    {
                        string   seatStr = hidSeatNo.Value;
                        string[] noArr   = seatStr.Split(',');
                        string   seatNo  = "";
                        int      newId   = -1;
                        RegulationRulesSetting rulesSet = T_SM_SystemSet.GetRegulationRulesSetting();
                        for (int i = 0; i < noArr.Length; i++)
                        {
                            newId  = -1;
                            seatNo = noArr[i].Trim();
                            EnterOutLogInfo enterOutLog = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(seatNo);
                            if (enterOutLog != null && enterOutLog.EnterOutState != EnterOutLogType.Leave)
                            {
                                ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(enterOutLog.ReadingRoomNo);
                                if (roomInfo != null && roomInfo.Setting.BlackListSetting.Used)
                                {
                                    BlackListInfo blacklistModel = new BlackListInfo();
                                    blacklistModel.AddTime          = ServiceDateTime.Now;
                                    blacklistModel.ReadingRoomID    = roomInfo.No;
                                    blacklistModel.BlacklistState   = LogStatus.Valid;
                                    blacklistModel.CardNo           = enterOutLog.CardNo;
                                    blacklistModel.OutBlacklistMode = roomInfo.Setting.BlackListSetting.LeaveBlacklist;
                                    if (blacklistModel.OutBlacklistMode == LeaveBlacklistMode.AutomaticMode)
                                    {
                                        blacklistModel.ReMark  = string.Format("管理员{0}通过手持设备{0}把读者加入黑名单,记录黑名单{1}天", Session["LoginID"], roomInfo.Setting.BlackListSetting.LimitDays);
                                        blacklistModel.OutTime = blacklistModel.AddTime.AddDays(roomInfo.Setting.BlackListSetting.LimitDays);
                                    }
                                    else
                                    {
                                        blacklistModel.ReMark = string.Format("管理员{0}通过手持设备把读者加入黑名单,手动离开黑名单", Session["LoginID"]);
                                    }
                                    blacklistModel.ReadingRoomID = roomInfo.No;
                                    newId = T_SM_Blacklist.AddBlackList(blacklistModel);
                                }
                                else if (rulesSet.BlacklistSet.Used)
                                {
                                    BlackListInfo blacklistModel = new BlackListInfo();
                                    blacklistModel.AddTime          = ServiceDateTime.Now;
                                    blacklistModel.OutTime          = blacklistModel.AddTime.AddDays(rulesSet.BlacklistSet.LimitDays);
                                    blacklistModel.BlacklistState   = LogStatus.Valid;
                                    blacklistModel.CardNo           = enterOutLog.CardNo;
                                    blacklistModel.OutBlacklistMode = rulesSet.BlacklistSet.LeaveBlacklist;
                                    if (blacklistModel.OutBlacklistMode == LeaveBlacklistMode.AutomaticMode)
                                    {
                                        blacklistModel.ReMark  = string.Format("管理员{0}通过手持设备把读者加入黑名单,记录黑名单{1}天", Session["LoginID"], rulesSet.BlacklistSet.LimitDays);
                                        blacklistModel.OutTime = blacklistModel.AddTime.AddDays(rulesSet.BlacklistSet.LimitDays);
                                    }
                                    else
                                    {
                                        blacklistModel.ReMark = string.Format("管理员{0}通过手持设备把读者加入黑名单,手动离开黑名单", Session["LoginID"]);
                                    }
                                    blacklistModel.ReadingRoomID = roomInfo.No;
                                    newId = T_SM_Blacklist.AddBlackList(blacklistModel);
                                }
                                else
                                {
                                    Page.RegisterStartupScript("", "<script>alert('对不起,此阅览室以及图书馆没有启用黑名单功能');</script>");
                                    return;
                                }
                                if (newId > 0)
                                {
                                    enterOutLog.EnterOutState = EnterOutLogType.Leave;
                                    enterOutLog.Flag          = Operation.Admin;
                                    enterOutLog.Remark        = string.Format("在{0},{1}号座位,被管理员{2},通过手持设备设置离开", roomInfo.Name, enterOutLog.ShortSeatNo, Session["LoginID"]);

                                    HandleResult result = EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId);
                                    if (result == HandleResult.Successed)
                                    {
                                        Page.RegisterStartupScript("", "<script>alert('设置读者黑名单成功');</script>");
                                        GetSeatList(selectReadingRomm.Items[selectReadingRomm.SelectedIndex].Value, selectSeatState.Items[selectSeatState.SelectedIndex].Value);
                                    }
                                    else
                                    {
                                        Page.RegisterStartupScript("", "<script>alert('设置读者黑名单失败');</script>");
                                    }
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                    break;

                case "LoginOut":
                    HttpCookie aCookie;
                    string     cookieName;
                    int        limit = Request.Cookies.Count;
                    for (int i = 0; i < limit; i++)
                    {
                        cookieName      = Request.Cookies[i].Name;
                        aCookie         = new HttpCookie(cookieName);
                        aCookie.Expires = DateTime.Now.AddDays(-1);
                        Response.Cookies.Add(aCookie);
                    }
                    Response.Redirect("../Login.aspx");
                    break;
                }
                #endregion
            }
        }
Example #10
0
 /// <summary>
 /// 根据阅览室编号获取阅览室信息
 /// </summary>
 /// <param name="roomNum"></param>
 /// <returns></returns>
 private ReadingRoomInfo GetSingleRoomInfo(string roomNum)
 {
     return(T_SM_ReadingRoom.GetSingleRoomInfo(roomNum));
 }
Example #11
0
        /// <summary>
        /// 开始计算
        /// </summary>
        private void Statistics()
        {
            try
            {
                List <ReadingRoomInfo> rooms = T_SM_ReadingRoom.GetReadingRooms(null, null, null);
                DateTime sdt = SeatUsageDataOperating.GetLastRoomUsageStatisticsDate();
                if (sdt <= DateTime.Parse("2000-1-1"))
                {
                    return;
                }
                sdt = sdt.AddDays(1);
                while (true)
                {
                    //获取进出记录
                    List <EnterOutLogInfo>         enterOutLogList  = T_SM_EnterOutLog_bak.GetStatisticsLogsByDate(sdt);
                    List <BespeakLogInfo>          bespeakLogList   = T_SM_SeatBespeak.GetBespeakList(null, null, sdt, 0, null);
                    List <ViolationRecordsLogInfo> violationLogList = T_SM_ViolateDiscipline.GetViolationRecords(null, null, sdt.ToShortDateString(), sdt.Date.AddDays(1).AddSeconds(-1).ToString(), LogStatus.None, LogStatus.None);
                    //List<BlackListInfo> blacklistList = T_SM_Blacklist.GetAllBlackListInfo(null, LogStatus.None, sdt.ToShortDateString(), sdt.Date.AddDays(1).AddSeconds(-1).ToString());
                    if (enterOutLogList.Count <= 0 && bespeakLogList.Count <= 0 && violationLogList.Count <= 0 && sdt >= ServiceDateTime.Now.Date.AddDays(-1))
                    {
                        break;
                    }
                    Dictionary <string, SeatManage.ClassModel.RoomUsageStatistics> roomDir = rooms.ToDictionary(room => room.No, room => new SeatManage.ClassModel.RoomUsageStatistics());

                    //基本数据及排序处理
                    foreach (ReadingRoomInfo room in rooms)
                    {
                        roomDir[room.No].StatisticsDate  = sdt;
                        roomDir[room.No].ReadingRoomNo   = room.No;
                        roomDir[room.No].SeatAllCount    = room.SeatList.Seats.Count;
                        roomDir[room.No].OpenTime        = DateTime.Parse(room.Setting.GetRoomOpenTimeByDate(sdt).BeginTime);
                        roomDir[room.No].CloseTime       = DateTime.Parse(room.Setting.GetRoomOpenTimeByDate(sdt).EndTime);
                        roomDir[room.No].RoomUsageTime   = (int)(roomDir[room.No].CloseTime - roomDir[room.No].OpenTime).TotalMinutes;
                        roomDir[room.No].SeatUsageCount  = enterOutLogList.FindAll(u => u.ReadingRoomNo == room.No).GroupBy(u => u.SeatNo).Count();
                        roomDir[room.No].UsedReaderCount = enterOutLogList.FindAll(u => u.ReadingRoomNo == room.No).GroupBy(u => u.CardNo).Count();
                        roomDir[room.No].CanBesapeakSeat = room.Setting.SeatBespeak.BespeakArea.BespeakType == BespeakAreaType.Percentage ? (int)room.Setting.SeatBespeak.BespeakArea.Scale * room.SeatList.Seats.Count : room.SeatList.Seats.Count(u => u.Value.CanBeBespeak);
                        roomDir[room.No].BespeakedSeat   = bespeakLogList.FindAll(u => u.ReadingRoomNo == room.No).GroupBy(u => u.SeatNo).Count();
                    }
                    foreach (ViolationRecordsLogInfo vrl in violationLogList)
                    {
                        roomDir[vrl.ReadingRoomID].ViolationRecordCount++;
                        switch (vrl.EnterFlag)
                        {
                        case ViolationRecordsType.BookingTimeOut:
                            roomDir[vrl.ReadingRoomID].VRBookingTimeOut++;
                            break;

                        case ViolationRecordsType.LeaveByAdmin:
                            roomDir[vrl.ReadingRoomID].VRLeaveByAdmin++;
                            break;

                        case ViolationRecordsType.LeaveNotReadCard:
                            roomDir[vrl.ReadingRoomID].VRLeaveNotReadCard++;
                            break;

                        case ViolationRecordsType.SeatOutTime:
                            roomDir[vrl.ReadingRoomID].VRSeatOutTime++;
                            break;

                        case ViolationRecordsType.ShortLeaveByAdminOutTime:
                            roomDir[vrl.ReadingRoomID].VRShortLeaveByAdminOutTime++;
                            break;

                        case ViolationRecordsType.ShortLeaveByReaderOutTime:
                            roomDir[vrl.ReadingRoomID].VRShortLeaveByReaderOutTime++;
                            break;

                        case ViolationRecordsType.ShortLeaveByServiceOutTime:
                            roomDir[vrl.ReadingRoomID].VRShortLeaveByServiceOutTime++;
                            break;

                        case ViolationRecordsType.ShortLeaveOutTime:
                            roomDir[vrl.ReadingRoomID].VRShortLeaveOutTime++;
                            break;
                        }
                    }
                    //预约记录处理
                    foreach (BespeakLogInfo bli in bespeakLogList)
                    {
                        roomDir[bli.ReadingRoomNo].AllBespeakCount++;
                        if (bli.BsepeakTime.Date == bli.SubmitTime.Date)
                        {
                            switch (bli.BsepeakState)
                            {
                            case BookingStatus.Cencaled:
                                switch (bli.CancelPerson)
                                {
                                case Operation.Admin:
                                case Operation.Reader:
                                    roomDir[bli.ReadingRoomNo].NowDayBespeakCancel++;
                                    break;

                                case Operation.Service:
                                    roomDir[bli.ReadingRoomNo].NowDayBespeakOverTime++;
                                    break;
                                }
                                break;

                            case BookingStatus.Confinmed:
                                roomDir[bli.ReadingRoomNo].NowDayBespeakCheck++;
                                break;
                            }
                            roomDir[bli.ReadingRoomNo].NowDayBespeakCount++;
                        }
                        else
                        {
                            switch (bli.BsepeakState)
                            {
                            case BookingStatus.Cencaled:
                                switch (bli.CancelPerson)
                                {
                                case Operation.Admin:
                                case Operation.Reader:
                                    roomDir[bli.ReadingRoomNo].BespeakCancel++;
                                    break;

                                case Operation.Service:
                                    roomDir[bli.ReadingRoomNo].BespeakOverTime++;
                                    break;
                                }
                                break;

                            case BookingStatus.Confinmed:
                                roomDir[bli.ReadingRoomNo].BespeakCheck++;
                                break;
                            }
                            roomDir[bli.ReadingRoomNo].BespeakCount++;
                        }
                    }
                    foreach (EnterOutLogInfo eol in enterOutLogList)
                    {
                        //刷卡次数
                        if (!string.IsNullOrEmpty(eol.TerminalNum) && !(eol.EnterOutState == EnterOutLogType.ContinuedTime && eol.Flag == Operation.Service))
                        {
                            roomDir[eol.ReadingRoomNo].RushCardOperatingCount++;
                        }
                        //记录类型
                        switch (eol.EnterOutState)
                        {
                        case EnterOutLogType.BookingConfirmation:
                            roomDir[eol.ReadingRoomNo].CheckBespeakCount++;
                            if (string.IsNullOrEmpty(eol.TerminalNum))
                            {
                                roomDir[eol.ReadingRoomNo].CkeckBespeakInOtherClient++;
                            }
                            else
                            {
                                roomDir[eol.ReadingRoomNo].CheckBespeakInSeatClient++;
                            }
                            break;

                        case EnterOutLogType.ComeBack:
                            roomDir[eol.ReadingRoomNo].ComeBackCount++;
                            switch (eol.Flag)
                            {
                            case Operation.Admin:
                                roomDir[eol.ReadingRoomNo].ComeBackByAdmin++;
                                break;

                            case Operation.OtherReader:
                                roomDir[eol.ReadingRoomNo].ComeBackByOtherReader++;
                                break;

                            case Operation.Reader:
                                roomDir[eol.ReadingRoomNo].ComeBackByReader++;
                                if (string.IsNullOrEmpty(eol.TerminalNum))
                                {
                                    roomDir[eol.ReadingRoomNo].ComeBackInOtherClient++;
                                }
                                else
                                {
                                    roomDir[eol.ReadingRoomNo].ComeBackInSeatClient++;
                                }
                                break;
                            }
                            EnterOutLogInfo slEOL = enterOutLogList.FindLast(u => u.EnterOutState == EnterOutLogType.ShortLeave && u.EnterOutLogNo == eol.EnterOutLogNo && u.EnterOutTime < eol.EnterOutTime);
                            if (slEOL != null)
                            {
                                roomDir[eol.ReadingRoomNo].ShortLeaveTime += (int)(slEOL.EnterOutTime - eol.EnterOutTime).TotalMinutes;
                            }
                            break;

                        case EnterOutLogType.ContinuedTime:
                            roomDir[eol.ReadingRoomNo].ContinueTimeCount++;
                            switch (eol.Flag)
                            {
                            case Operation.Service:
                                roomDir[eol.ReadingRoomNo].ContinueTimeByService++;
                                break;

                            case Operation.Reader:
                                roomDir[eol.ReadingRoomNo].ContinueTimeByReader++;
                                if (string.IsNullOrEmpty(eol.TerminalNum))
                                {
                                    roomDir[eol.ReadingRoomNo].ContinueTimeInOtherClient++;
                                }
                                else
                                {
                                    roomDir[eol.ReadingRoomNo].ContinueTimeInSeatClient++;
                                }
                                break;
                            }
                            break;

                        case EnterOutLogType.Leave:
                            roomDir[eol.ReadingRoomNo].LeaveCount++;
                            roomDir[eol.ReadingRoomNo].ReaderUsageCount++;
                            switch (eol.Flag)
                            {
                            case Operation.Service:
                                roomDir[eol.ReadingRoomNo].LeaveByService++;
                                break;

                            case Operation.Admin:
                                roomDir[eol.ReadingRoomNo].LeaveByAdmin++;
                                break;

                            case Operation.Reader:
                                roomDir[eol.ReadingRoomNo].LeaveByReader++;
                                if (string.IsNullOrEmpty(eol.TerminalNum))
                                {
                                    roomDir[eol.ReadingRoomNo].LeaveInOtherClient++;
                                }
                                else
                                {
                                    roomDir[eol.ReadingRoomNo].LeaveInSeatClient++;
                                }
                                break;
                            }
                            EnterOutLogInfo enterEOL = enterOutLogList.Find(u => (u.EnterOutState == EnterOutLogType.BookingConfirmation || u.EnterOutState == EnterOutLogType.ReselectSeat || u.EnterOutState == EnterOutLogType.SelectSeat || u.EnterOutState == EnterOutLogType.WaitingSuccess) && u.EnterOutLogNo == eol.EnterOutLogNo);
                            if (enterEOL != null)
                            {
                                roomDir[eol.ReadingRoomNo].SeatUsageTime += (int)(eol.EnterOutTime - enterEOL.EnterOutTime).TotalMinutes;
                            }
                            break;

                        case EnterOutLogType.ReselectSeat:
                            roomDir[eol.ReadingRoomNo].ReselectSeatCount++;
                            if (string.IsNullOrEmpty(eol.TerminalNum))
                            {
                                roomDir[eol.ReadingRoomNo].ReselectSeatInOtherClient++;
                            }
                            else
                            {
                                roomDir[eol.ReadingRoomNo].ReselectSeatInSeatClient++;
                            }
                            break;

                        case EnterOutLogType.SelectSeat:
                            roomDir[eol.ReadingRoomNo].SelectSeatCount++;
                            switch (eol.Flag)
                            {
                            case Operation.Admin:
                                roomDir[eol.ReadingRoomNo].SelectSeatByAdmin++;
                                break;

                            case Operation.Reader:
                                roomDir[eol.ReadingRoomNo].SelectSeatByReader++;
                                if (string.IsNullOrEmpty(eol.TerminalNum))
                                {
                                    roomDir[eol.ReadingRoomNo].SelectSeatInOtherClient++;
                                }
                                else
                                {
                                    roomDir[eol.ReadingRoomNo].SelectSeatInSeatClient++;
                                }
                                break;
                            }
                            break;

                        case EnterOutLogType.ShortLeave:
                            roomDir[eol.ReadingRoomNo].ShortLeaveCount++;
                            switch (eol.Flag)
                            {
                            case Operation.OtherReader:
                                roomDir[eol.ReadingRoomNo].ShortLeaveByOtherReader++;
                                break;

                            case Operation.Service:
                                roomDir[eol.ReadingRoomNo].ShortLeaveByService++;
                                break;

                            case Operation.Admin:
                                roomDir[eol.ReadingRoomNo].ShortLeaveByAdmin++;
                                break;

                            case Operation.Reader:
                                roomDir[eol.ReadingRoomNo].ShortLeaveByReader++;
                                if (string.IsNullOrEmpty(eol.TerminalNum))
                                {
                                    roomDir[eol.ReadingRoomNo].ShortLeaveInOtherClient++;
                                }
                                else
                                {
                                    roomDir[eol.ReadingRoomNo].ShortLeaveInSeatClient++;
                                }
                                break;
                            }
                            break;

                        case EnterOutLogType.WaitingSuccess:
                            roomDir[eol.ReadingRoomNo].WaitSeatCount++;
                            break;
                        }
                    }
                    foreach (SeatManage.ClassModel.RoomUsageStatistics roomUS in roomDir.Values.Where(roomUS => !SeatUsageDataOperating.AddRoomUsageStatistics(roomUS)))
                    {
                        WriteLog.Write(string.Format("数据统计服务:添加阅览室:{0} {1} 数据统计出错", roomUS.ReadingRoomNo, roomUS.StatisticsDate));
                        throw new Exception(string.Format("数据统计服务:添加阅览室:{0} {1} 数据统计出错", roomUS.ReadingRoomNo, roomUS.StatisticsDate));
                    }
                    sdt = sdt.AddDays(1);
                    if (sdt >= ServiceDateTime.Now.Date)
                    {
                        break;
                    }
                    roomDir = null;
                }
                WriteLog.Write("数据统计服务:统计阅览室完成使用情况完成");
            }

            catch (Exception ex)
            {
                WriteLog.Write(string.Format("数据统计服务:统计阅览室使用情况失败:{0}", ex.Message));
            }
        }
        void BindUIElement(string seatNo, string seatShortNo, DateTime date, string timeSP)
        {
            if (!IsPostBack)
            {
                T_SM_ReadingRoom bllReadingRoom = new T_SM_ReadingRoom();
                bookMode.Items.Add(new ListItem("立即预约", "0"));
                if (ReadingRoomList[roomNo].Setting.SeatBespeak.SpecifiedTime && ReadingRoomList[roomNo].Setting.SeatBespeak.CanBookMultiSpan)
                {
                    if (!string.IsNullOrEmpty(timeSP))
                    {
                        string[] sps = timeSP.Split(';');
                        foreach (string s in sps)
                        {
                            if (!string.IsNullOrEmpty(s))
                            {
                                if (DateTime.Parse(s) <= date)
                                {
                                    continue;
                                }
                                spanSelect.Items.Add(new ListItem(s, s));
                            }
                        }
                    }
                }
                else
                {
                    foreach (DateTime dt in ReadingRoomList[roomNo].Setting.SeatBespeak.SpecifiedTimeList)
                    {
                        if (dt <= date)
                        {
                            continue;
                        }
                        spanSelect.Items.Add(new ListItem(dt.ToShortTimeString(), dt.ToShortTimeString()));
                    }
                }
                if (ReadingRoomList[roomNo].Setting.SeatBespeak.SpecifiedBespeak && spanSelect.Items.Count > 0)
                {
                    bookMode.Items.Add(new ListItem("指定时段", "1"));
                }
                bookMode.SelectedIndex = 0;
                DateTime minTime = DateTime.Parse(date.ToShortDateString() + " " + bllReadingRoom.GetRoomOpenTimeByDate(ReadingRoomList[roomNo].Setting, date.ToShortDateString()).BeginTime);
                if (minTime < DateTime.Now)
                {
                    minTime = DateTime.Now.AddMinutes(10 - DateTime.Now.Minute % 10);
                }
                while (true)
                {
                    minTime = minTime.AddMinutes(10);
                    if (minTime.Date > date.Date)
                    {
                        break;
                    }
                    if (NowReadingRoomState.ReadingRoomOpenState(ReadingRoomList[roomNo].Setting.RoomOpenSet, minTime) == ReadingRoomStatus.Close)
                    {
                        continue;
                    }
                    timeSelect.Items.Add(new ListItem(minTime.ToShortTimeString(), minTime.ToShortTimeString()));
                }
            }

            timeSelect.Visible    = false;
            timeSelect_sp.Visible = false;
            spanSelect.Visible    = false;
            spanSelect_sp.Visible = false;

            if (bookMode.SelectedIndex == 1)
            {
                if (ReadingRoomList[roomNo].Setting.SeatBespeak.SpecifiedTime)
                {
                    spanSelect.Visible    = true;
                    spanSelect_sp.Visible = true;
                }
                else
                {
                    timeSelect.Visible    = true;
                    timeSelect_sp.Visible = true;
                }
            }

            lblBookDate.InnerText        = date.ToShortDateString();
            lblSeatNo.InnerText          = seatShortNo;
            lblReadingRoomName.InnerText = ReadingRoomList[roomNo].Name;
            lblBookTime.InnerText        = bespeakSureTime(ReadingRoomList[roomNo].Setting);
            lbbookspan.InnerText         = bespeakSureTimeSpan(ReadingRoomList[roomNo].Setting);
            lblSeatNo_Booked.InnerText   = seatShortNo;
            //判断自己是否已经预约座位
            //this.LoginUserInfo = handler1.GetReaderInfo(this.UserSchoolInfo,this.LoginUserInfo.CardNo);
            //List<SeatManage.ClassModel.BespeakLogInfo> readerBespeaklist =this.LoginUserInfo.BespeakLog;
            //if (readerBespeaklist.Count > 0)
            //{
            //    page1.Style.Add("display", "none");
            //    page2.Style.Add("display", "none");
            //    page3.Style.Add("display", "block");
            //    MessageTip.InnerText = "您选择的日期已经预约了座位,请先取消原来的预约。";
            //    return;
            //}
        }
Example #13
0
        /// <summary>
        /// 开始计算
        /// </summary>
        private void Statistics()
        {
            try
            {
                List <ReadingRoomInfo> rooms = T_SM_ReadingRoom.GetReadingRooms(null, null, null);
                DateTime sdt = SeatUsageDataOperating.GetLastRoomFlowStatisticsDate();
                if (sdt <= DateTime.Parse("2000-1-1"))
                {
                    return;
                }
                sdt = sdt.AddDays(1);
                while (true)
                {
                    //获取进出记录
                    List <EnterOutLogInfo> enterOutLogList = T_SM_EnterOutLog_bak.GetStatisticsLogsByDate(sdt);
                    if (enterOutLogList.Count <= 0 && sdt >= ServiceDateTime.Now.Date.AddDays(-1))
                    {
                        break;
                    }
                    Dictionary <string, SeatManage.ClassModel.RoomFlowStatistics> roomDir = rooms.ToDictionary(room => room.No, room => new SeatManage.ClassModel.RoomFlowStatistics());

                    //基本数据及排序处理
                    foreach (ReadingRoomInfo room in rooms)
                    {
                        roomDir[room.No].StatisticsDate = sdt;
                        roomDir[room.No].ReadingRoomNo  = room.No;
                        for (int i = 0; i < 24; i++)
                        {
                            roomDir[room.No].BespeakCheckFlowDic.Add(i, 0);
                            roomDir[room.No].ComeBackFlowDic.Add(i, 0);
                            roomDir[room.No].ContinueFlowDic.Add(i, 0);
                            roomDir[room.No].EnterFlowDic.Add(i, 0);
                            roomDir[room.No].LeaveFlowDic.Add(i, 0);
                            roomDir[room.No].OnSeatDic.Add(i, 0);
                            roomDir[room.No].OutFlowDic.Add(i, 0);
                            roomDir[room.No].ReselectFlowDic.Add(i, 0);
                            roomDir[room.No].SelectFlowDic.Add(i, 0);
                            roomDir[room.No].ShortLeaveFlowDic.Add(i, 0);
                            roomDir[room.No].WaitSelectFlowDic.Add(i, 0);
                        }
                    }
                    foreach (EnterOutLogInfo eol in enterOutLogList)
                    {
                        //记录类型
                        switch (eol.EnterOutState)
                        {
                        case EnterOutLogType.BookingConfirmation:
                            roomDir[eol.ReadingRoomNo].BespeakCheckFlowDic[eol.EnterOutTime.Hour]++;
                            roomDir[eol.ReadingRoomNo].EnterFlowDic[eol.EnterOutTime.Hour]++;
                            break;

                        case EnterOutLogType.ComeBack:
                            roomDir[eol.ReadingRoomNo].ComeBackFlowDic[eol.EnterOutTime.Hour]++;
                            break;

                        case EnterOutLogType.ContinuedTime:
                            roomDir[eol.ReadingRoomNo].ContinueFlowDic[eol.EnterOutTime.Hour]++;
                            break;

                        case EnterOutLogType.Leave:
                            roomDir[eol.ReadingRoomNo].LeaveFlowDic[eol.EnterOutTime.Hour]++;
                            roomDir[eol.ReadingRoomNo].OutFlowDic[eol.EnterOutTime.Hour]++;
                            break;

                        case EnterOutLogType.ReselectSeat:
                            roomDir[eol.ReadingRoomNo].ReselectFlowDic[eol.EnterOutTime.Hour]++;
                            roomDir[eol.ReadingRoomNo].EnterFlowDic[eol.EnterOutTime.Hour]++;
                            break;

                        case EnterOutLogType.SelectSeat:
                            roomDir[eol.ReadingRoomNo].SelectFlowDic[eol.EnterOutTime.Hour]++;
                            roomDir[eol.ReadingRoomNo].EnterFlowDic[eol.EnterOutTime.Hour]++;
                            break;

                        case EnterOutLogType.ShortLeave:
                            roomDir[eol.ReadingRoomNo].ShortLeaveFlowDic[eol.EnterOutTime.Hour]++;
                            break;

                        case EnterOutLogType.WaitingSuccess:
                            roomDir[eol.ReadingRoomNo].WaitSelectFlowDic[eol.EnterOutTime.Hour]++;
                            roomDir[eol.ReadingRoomNo].EnterFlowDic[eol.EnterOutTime.Hour]++;
                            break;
                        }
                    }
                    foreach (SeatManage.ClassModel.RoomFlowStatistics roomFS in roomDir.Values)
                    {
                        foreach (KeyValuePair <int, int> item in roomFS.BespeakCheckFlowDic)
                        {
                            roomFS.BespeakCheckFlow += item.Key + ":" + item.Value + ";";
                        }
                        foreach (KeyValuePair <int, int> item in roomFS.ComeBackFlowDic)
                        {
                            roomFS.ComeBackFlow += item.Key + ":" + item.Value + ";";
                        }
                        foreach (KeyValuePair <int, int> item in roomFS.ContinueFlowDic)
                        {
                            roomFS.ContinueFlow += item.Key + ":" + item.Value + ";";
                        }
                        foreach (KeyValuePair <int, int> item in roomFS.EnterFlowDic)
                        {
                            roomFS.EnterFlow += item.Key + ":" + item.Value + ";";
                        }
                        foreach (KeyValuePair <int, int> item in roomFS.LeaveFlowDic)
                        {
                            roomFS.LeaveFlow += item.Key + ":" + item.Value + ";";
                        }

                        foreach (KeyValuePair <int, int> item in roomFS.OutFlowDic)
                        {
                            roomFS.OutFlow += item.Key + ":" + item.Value + ";";
                        }
                        foreach (KeyValuePair <int, int> item in roomFS.ReselectFlowDic)
                        {
                            roomFS.ReselectFlow += item.Key + ":" + item.Value + ";";
                        }
                        foreach (KeyValuePair <int, int> item in roomFS.SelectFlowDic)
                        {
                            roomFS.SelectFlow += item.Key + ":" + item.Value + ";";
                        }
                        foreach (KeyValuePair <int, int> item in roomFS.ShortLeaveFlowDic)
                        {
                            roomFS.ShortLeaveFlow += item.Key + ":" + item.Value + ";";
                        }
                        foreach (KeyValuePair <int, int> item in roomFS.WaitSelectFlowDic)
                        {
                            roomFS.WaitSelectFlow += item.Key + ":" + item.Value + ";";
                        }
                        //计算在座人数
                        for (int i = 0; i < 24; i++)
                        {
                            roomFS.OnSeatDic[i] = i > 0 ? roomFS.OnSeatDic[i - 1] + roomFS.EnterFlowDic[i] - roomFS.OutFlowDic[i] : roomFS.EnterFlowDic[i] - roomFS.OutFlowDic[i];
                        }
                        foreach (KeyValuePair <int, int> item in roomFS.OnSeatDic)
                        {
                            roomFS.OnSeat += item.Key + ":" + item.Value + ";";
                        }
                        if (!SeatUsageDataOperating.AddRoomFlowStatistics(roomFS))
                        {
                            WriteLog.Write(string.Format("数据统计服务:添加阅览室:{0} {1} 人流量统计出错", roomFS.ReadingRoomNo, roomFS.StatisticsDate));
                            throw new Exception(string.Format("数据统计服务:添加阅览室:{0} {1} 人流量统计出错", roomFS.ReadingRoomNo, roomFS.StatisticsDate));
                        }
                    }

                    sdt = sdt.AddDays(1);
                    if (sdt >= ServiceDateTime.Now.Date)
                    {
                        break;
                    }
                    roomDir = null;
                }
                WriteLog.Write("数据统计服务:统计阅览室完成人流量完成");
            }

            catch (Exception ex)
            {
                WriteLog.Write(string.Format("数据统计服务:统计阅览室人流量失败:{0}", ex.Message));
            }
        }
        /// <summary>
        /// Ñ¡Ôñ×ùλ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void roomButton_Click(object sender, EventArgs e)
        {
            SeatManage.MyUserControl.ReadingRoomButton room = sender as ReadingRoomButton;
            this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = room.RoomNum;
            ReadingRoomInfo roomInfo = T_SM_ReadingRoom.GetSingleRoomInfo(room.RoomNum);

            if (room.SeatUsingStatus == ReadingRoomUsingStatus.Full && (!roomInfo.Setting.NoManagement.Used))
            {
                Tip_Framework tipForm = new Tip_Framework(TipType.ReadingRoomFull, 9);
                formClose.Pause();
                tipForm.ShowDialog();
                formClose.Start();
                return;
            }


            clientObject.EnterOutLogData.Student.AtReadingRoom = roomInfo;//¸ø¶ÁÕßËùÔÚµÄÔÄÀÀÊÒ¸³Öµ¡£

            //ÑéÖ¤¶ÁÕßÉí·ÝÊÇ·ñÔÊÐíÑ¡Ôñ¸ÃÔÄÀÀÊÒ¡£
            if (!SelectSeatProven.ProvenReaderType(clientObject.EnterOutLogData.Student, roomInfo.Setting))
            {
                Tip_Framework tipForm = new Tip_Framework(TipType.ReaderTypeInconformity, 9);
                formClose.Pause();
                tipForm.ShowDialog();
                formClose.Start();
                return;
            }
            //ÑéÖ¤¶ÁÕߺÚÃûµ¥£¬Ñ¡×ù´ÎÊý¡£
            if (SelectSeatProven.ProvenReaderState(clientObject.EnterOutLogData.Student, roomInfo, clientObject.RegulationRulesSet.BlacklistSet, clientObject.ClientSetting.DeviceSetting))
            {
                this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = "";
                return;
            }
            //TODO:ÑéÖ¤ÖÕ¶ËÑ¡×ù·½Ê½
            if (room.SeatUsingStatus == ReadingRoomUsingStatus.Full && roomInfo.Setting.NoManagement.Used)
            {
                this._RoomSelectSeatMethod = SelectSeatMode.ManualMode;
                this.clientObject.EnterOutLogData.FlowControl = ClientOperation.SelectSeat;
                this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = room.RoomNum;
                this.Close();
            }
            else
            {
                SelectSeatMode selectSeatMethod = SelectSeatProven.ProvenSelectSeatMethod(clientObject.ClientSetting.DeviceSetting, roomInfo.Setting.SeatChooseMethod);

                if (selectSeatMethod == SelectSeatMode.OptionalMode)
                {
                    ChooseSeatState frmChooseSeatState = new ChooseSeatState();
                    frmChooseSeatState.ShowDialog();
                    _RoomSelectSeatMethod = frmChooseSeatState.RoomSelectSeatMethod;
                    if (frmChooseSeatState.RoomSelectSeatMethod != SelectSeatMode.None)
                    {
                        this.clientObject.EnterOutLogData.FlowControl = ClientOperation.SelectSeat;
                        this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = room.RoomNum;
                        this.Close();
                    }
                    else
                    {
                        this.clientObject.EnterOutLogData.FlowControl = ClientOperation.None;
                        this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = "";
                    }
                }
                else
                {
                    this._RoomSelectSeatMethod = selectSeatMethod;
                    this.clientObject.EnterOutLogData.FlowControl = ClientOperation.SelectSeat;
                    this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = room.RoomNum;
                    this.Close();
                }
            }
        }