Example #1
0
        public string GetBlacklist(string CardNo)
        {
            if (!Verifylicensing())
            {
                return("非法操作,此接口未进行授权!");
            }
            //SeatManage.SeatManageComm.WriteLog.Write("传入卡号:" + CardNo);
            StringBuilder message    = new StringBuilder();
            string        ReaderNo   = CardNo;
            string        ReaderName = "";
            string        Error      = "";

            message.Append("<ReaderInfo>");
            message.Append("<ReaderNo>{0}</ReaderNo>");
            message.Append("<ReaderName>{1}</ReaderName>");
            message.Append("<Error>{2}</Error>");
            message.Append("</ReaderInfo>");
            try
            {
                if (string.IsNullOrEmpty(CardNo))
                {
                    throw new Exception("输入的学号为空!");
                }
                SeatManage.ClassModel.AccessSetting accset = SeatManage.Bll.T_SM_SystemSet.GetAccessSetting();
                if (accset == null)
                {
                    throw new Exception("获取通道机设置失败!");
                }
                SeatManage.ClassModel.ReaderInfo reader = SeatManage.Bll.EnterOutOperate.GetReaderInfo(CardNo);
                if (reader == null)
                {
                    throw new Exception("获取不到此学生的信息!");
                }
                ReaderNo   = reader.CardNo;
                ReaderName = reader.Name;
                if (reader.BlacklistLog.Count > 0 && accset.IsLimitBlackList)
                {
                    foreach (SeatManage.ClassModel.BlackListInfo blinfo in reader.BlacklistLog)
                    {
                        message.Append("<BlistlistInfo>");
                        message.AppendFormat("<ReadingRoomNo>{0}</ReadingRoomNo>", blinfo.ReadingRoomID);
                        message.AppendFormat("<ReadingRoomName>{0}</ReadingRoomName>", blinfo.ReadingRoomName);
                        message.AppendFormat("<AddTime>{0}</AddTime>", blinfo.AddTime.ToString());
                        message.AppendFormat("<OutTime>{0}</OutTime>", blinfo.OutTime.ToString());
                        message.AppendFormat("<Remark>{0}</Remark>", blinfo.ReMark);
                        message.Append("</BlistlistInfo>");
                    }
                }
            }
            catch (Exception e)
            {
                Error = e.Message;
            }
            return(string.Format(message.ToString(), ReaderNo, ReaderName, Error));
        }
Example #2
0
        protected void btnDelayTime_OnClick(object sender, EventArgs e)
        {
            SeatManage.ClassModel.ReaderInfo reader = EnterOutOperate.GetReaderInfo(this.LoginId);
            reader.EnterOutLog.Remark        = "通过预约网站延长座位使用时间";
            reader.EnterOutLog.EnterOutState = EnterOutLogType.ContinuedTime;
            string result = EnterOutOperate.DelaySeatUsedTime(reader);

            if (!string.IsNullOrEmpty(result))
            {
                lblMsg.Text = result;
            }
            else
            {
                lblMsg.Text = "操作成功";
            }
        }
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool UpdateByCardId(SeatManage.ClassModel.ReaderInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update T_SM_Reader set ");
            strSql.Append("CardNo=@CardNo,");
            strSql.Append("ReaderName=@ReaderName,");
            strSql.Append("Sex=@Sex,");
            strSql.Append("ReaderTypeName=@ReaderTypeName,");
            strSql.Append("ReaderDeptName=@ReaderDeptName,");
            strSql.Append("ReaderProName=@ReaderProName,");
            strSql.Append("Flag=@Flag");
            strSql.Append(" where CardId=@CardId ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@CardNo",         SqlDbType.NVarChar, 20),
                new SqlParameter("@ReaderName",     SqlDbType.NVarChar, 30),
                new SqlParameter("@Sex",            SqlDbType.NVarChar,  1),
                new SqlParameter("@ReaderTypeName", SqlDbType.NVarChar, 30),
                new SqlParameter("@ReaderDeptName", SqlDbType.NVarChar, 30),
                new SqlParameter("@ReaderProName",  SqlDbType.NVarChar, 30),
                new SqlParameter("@Flag",           SqlDbType.NVarChar, 10),
                new SqlParameter("@CardID",         SqlDbType.NVarChar, 20)
            };
            parameters[0].Value = model.CardNo;
            parameters[1].Value = model.Name;
            parameters[2].Value = model.Sex;
            parameters[3].Value = model.ReaderType;
            parameters[4].Value = model.Dept;
            parameters[5].Value = model.Pro;
            parameters[6].Value = model.Flag;
            parameters[7].Value = model.CardID;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #4
0
 protected void btnLeave_OnClick(object sender, EventArgs e)
 {
     try
     {
         SeatManage.ClassModel.ReaderInfo reader = EnterOutOperate.GetReaderInfo(this.LoginId);
         int newLogId = -1;
         reader.EnterOutLog.EnterOutState = EnterOutLogType.Leave;
         reader.EnterOutLog.Flag          = Operation.Reader;
         reader.EnterOutLog.Remark        = "通过预约网站释放座位";
         HandleResult reault = EnterOutOperate.AddEnterOutLog(reader.EnterOutLog, ref newLogId);
         if (reault == HandleResult.Successed)
         {
             lblMsg.Text = "操作成功";
             DateBind();
         }
     }
     catch (Exception ex)
     {
         lblMsg.Text = "未知错误,操作失败";
     }
 }
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public bool Add(SeatManage.ClassModel.ReaderInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into T_SM_Reader(");
            strSql.Append("CardNo,CardID,ReaderName,Sex,ReaderTypeName,ReaderDeptName,ReaderProName,Flag)");
            strSql.Append(" values (");
            strSql.Append("@CardNo,@CardID,@ReaderName,@Sex,@ReaderTypeName,@ReaderDeptName,@ReaderProName,@Flag)");
            SqlParameter[] parameters =
            {
                new SqlParameter("@CardNo",         SqlDbType.NVarChar,  20),
                new SqlParameter("@CardID",         SqlDbType.NVarChar,  20),
                new SqlParameter("@ReaderName",     SqlDbType.NVarChar,  30),
                new SqlParameter("@Sex",            SqlDbType.NVarChar,   1),
                new SqlParameter("@ReaderTypeName", SqlDbType.NVarChar, 300),
                new SqlParameter("@ReaderDeptName", SqlDbType.NVarChar, 300),
                new SqlParameter("@ReaderProName",  SqlDbType.NVarChar, 300),
                new SqlParameter("@Flag",           SqlDbType.NVarChar, 10)
            };
            parameters[0].Value = model.CardNo;
            parameters[1].Value = model.CardID;
            parameters[2].Value = model.Name;
            parameters[3].Value = model.Sex;
            parameters[4].Value = model.ReaderType;
            parameters[5].Value = model.Dept;
            parameters[6].Value = model.Pro;
            parameters[7].Value = model.Flag;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #6
0
        private void DateBind()
        {
            SeatManage.ClassModel.ReaderInfo reader = EnterOutOperate.GetReaderInfo(this.LoginId);
            if (reader.AtReadingRoom == null)
            {
                lblSeatInfo.Text      = "无";
                btnDelayTime.Enabled  = false;
                btnLeave.Enabled      = false;
                btnShortLeave.Enabled = false;
                return;
            }

            SeatManage.ClassModel.ReadingRoomSetting roomSet = reader.AtReadingRoom.Setting;
            if (roomSet.SeatUsedTimeLimit.Used && roomSet.SeatUsedTimeLimit.IsCanContinuedTime)
            {
                btnDelayTime.Enabled = roomSet.SeatBespeak.AllowDelayTime;
            }
            else
            {
                btnDelayTime.Enabled = false;
            }
            btnLeave.Enabled      = roomSet.SeatBespeak.AllowLeave;
            btnShortLeave.Enabled = roomSet.SeatBespeak.AllowShortLeave;


            if (reader.EnterOutLog != null && reader.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
            {
                switch (reader.EnterOutLog.EnterOutState)
                {
                case EnterOutLogType.ShortLeave:
                    lblSeatInfo.Text      = string.Format("{0} {1}", reader.EnterOutLog.ReadingRoomName, reader.EnterOutLog.ShortSeatNo);
                    lblState.Text         = "暂离";
                    lblHoldTime.Text      = reader.EnterOutLog.EnterOutTime.ToString();
                    btnShortLeave.Enabled = false;
                    btnDelayTime.Enabled  = false;
                    break;

                case EnterOutLogType.BookingConfirmation:
                case EnterOutLogType.SelectSeat:
                case EnterOutLogType.ContinuedTime:
                case EnterOutLogType.ComeBack:
                case EnterOutLogType.ReselectSeat:
                case EnterOutLogType.WaitingSuccess:
                    lblSeatInfo.Text = string.Format("{0} {1}", reader.EnterOutLog.ReadingRoomName, reader.EnterOutLog.ShortSeatNo);
                    lblState.Text    = "在座";
                    lblHoldTime.Text = reader.EnterOutLog.EnterOutTime.ToString();
                    break;

                default:
                    btnDelayTime.Enabled  = false;
                    btnLeave.Enabled      = false;
                    btnShortLeave.Enabled = false;
                    break;
                }
            }
            else
            {
                lblSeatInfo.Text      = "无";
                btnDelayTime.Enabled  = false;
                btnLeave.Enabled      = false;
                btnShortLeave.Enabled = false;
            }
        }
Example #7
0
        public string StuState(string StuNo)
        {
            if (!Verifylicensing())
            {
                return("非法操作,此接口未进行授权!");
            }
            string result = "";

            SeatManage.Bll.T_SM_Reader       reader      = new SeatManage.Bll.T_SM_Reader();
            SeatManage.ClassModel.ReaderInfo readerModel = new SeatManage.ClassModel.ReaderInfo();
            readerModel = reader.GetReader(StuNo);
            string state           = "";
            string seatNo          = "";
            string readingRoomName = "";

            if (!string.IsNullOrEmpty(readerModel.CardNo))
            {
                if (readerModel.EnterOutLog != null)
                {
                    switch (readerModel.EnterOutLog.EnterOutState)
                    {
                    case SeatManage.EnumType.EnterOutLogType.ComeBack:
                    case SeatManage.EnumType.EnterOutLogType.ContinuedTime:
                    case SeatManage.EnumType.EnterOutLogType.ReselectSeat:
                    case SeatManage.EnumType.EnterOutLogType.SelectSeat:
                    case SeatManage.EnumType.EnterOutLogType.WaitingCancel:
                    case SeatManage.EnumType.EnterOutLogType.WaitingSuccess:
                    case SeatManage.EnumType.EnterOutLogType.BookingConfirmation:
                        state  = "在座";
                        seatNo = readerModel.EnterOutLog.SeatNo;
                        string rrId = readerModel.EnterOutLog.ReadingRoomNo;
                        readingRoomName = readerModel.EnterOutLog.ReadingRoomName;
                        break;

                    case SeatManage.EnumType.EnterOutLogType.Leave:
                    case SeatManage.EnumType.EnterOutLogType.None:
                    case SeatManage.EnumType.EnterOutLogType.BookingCancel:
                        state = "无座";
                        break;

                    case SeatManage.EnumType.EnterOutLogType.ShortLeave:
                        state           = "暂离";
                        seatNo          = readerModel.EnterOutLog.SeatNo;
                        readingRoomName = readerModel.EnterOutLog.ReadingRoomName;
                        break;

                    case SeatManage.EnumType.EnterOutLogType.Waiting:
                        state           = "等待座位";
                        seatNo          = readerModel.EnterOutLog.SeatNo;
                        readingRoomName = readerModel.EnterOutLog.ReadingRoomName;
                        break;

                    case SeatManage.EnumType.EnterOutLogType.BespeakWaiting:
                        state           = "存在未确认预约座位";
                        seatNo          = readerModel.EnterOutLog.SeatNo;
                        readingRoomName = readerModel.EnterOutLog.ReadingRoomName;
                        break;
                    }
                }
                result = string.Format("<ReaderInfo><Reader Name='{0}' CardNo='{1}' RoomName='{2}'  SeatNo='{3}' Status='{4}'></Reader></ReaderInfo>", readerModel.Name, readerModel.CardNo, readingRoomName, seatNo, state);
            }
            else
            {
                result = "<ReaderInfo><Reader Name='' CardNo='' RoomName=''  SeatNo='' Status=''></Reader></ReaderInfo>";
            }
            return(result);
        }
Example #8
0
        public string EnterLib(string CardNo)
        {
            string[] strs = CardNo.Split(',');
            CardNo = strs[0];
            if (!Verifylicensing())
            {
                return("非法操作,此接口未进行授权!");
            }
            //SeatManage.SeatManageComm.WriteLog.Write("传入卡号:" + strs[0]);
            //SeatManage.SeatManageComm.WriteLog.Write("传入图书馆号:" + strs[1]);
            StringBuilder message      = new StringBuilder();
            string        ReaderNo     = CardNo;
            string        ReaderName   = "";
            string        NowStatus    = "";
            string        BeforeStatus = "";
            string        Error        = "";

            message.Append("<ReaderInfo>");
            message.Append("<ReaderNo>{0}</ReaderNo>");
            message.Append("<ReaderName>{1}</ReaderName>");
            message.Append("<NowStatus>{2}</NowStatus>");
            message.Append("<BeforeStatus>{3}</BeforeStatus>");
            message.Append("<Error>{4}</Error>");
            message.Append("</ReaderInfo>");
            try
            {
                if (string.IsNullOrEmpty(CardNo))
                {
                    throw new Exception("输入的学号为空!");
                }
                SeatManage.ClassModel.AccessSetting accset = SeatManage.Bll.T_SM_SystemSet.GetAccessSetting();
                if (accset == null)
                {
                    throw new Exception("获取通道机设置失败!");
                }
                SeatManage.ClassModel.ReaderInfo reader = SeatManage.Bll.EnterOutOperate.GetReaderInfo(CardNo);
                if (reader == null)
                {
                    throw new Exception("获取不到此学生的信息!");
                }
                if (strs.Length > 1 && reader.AtReadingRoom != null && strs[1] != "00" && reader.AtReadingRoom.Libaray.No != strs[1])
                {
                    throw new Exception("学生在此图书馆未选座位!");
                }
                ReaderNo   = reader.CardNo;
                ReaderName = reader.Name;
                if (reader.EnterOutLog == null)
                {
                    NowStatus    = ((int)SeatManage.EnumType.EnterOutLogType.Leave).ToString();
                    BeforeStatus = ((int)SeatManage.EnumType.EnterOutLogType.Leave).ToString();
                }
                else
                {
                    NowStatus    = ((int)reader.EnterOutLog.EnterOutState).ToString();
                    BeforeStatus = ((int)reader.EnterOutLog.EnterOutState).ToString();
                }
                if (accset.IsUsed && accset.EnterLib)
                {
                    if (reader.EnterOutLog != null && reader.EnterOutLog.EnterOutState != SeatManage.EnumType.EnterOutLogType.Leave)
                    {
                        switch (reader.EnterOutLog.EnterOutState)
                        {
                        case SeatManage.EnumType.EnterOutLogType.BookingConfirmation:
                        case SeatManage.EnumType.EnterOutLogType.ComeBack:
                        case SeatManage.EnumType.EnterOutLogType.ContinuedTime:
                        case SeatManage.EnumType.EnterOutLogType.ReselectSeat:
                        case SeatManage.EnumType.EnterOutLogType.SelectSeat:
                        case SeatManage.EnumType.EnterOutLogType.WaitingSuccess:
                            if (accset.IsReleaseOnSeat && reader.EnterOutLog.EnterOutTime.AddMinutes(accset.LeaveTimeSpan) < SeatManage.Bll.ServiceDateTime.Now)
                            {
                                SeatManage.ClassModel.EnterOutLogInfo enterOutLog = reader.EnterOutLog;
                                enterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.Leave;
                                enterOutLog.TerminalNum   = "";
                                enterOutLog.Remark        = string.Format("读者离开图书馆未刷卡,再次通过通道机进入,系统自动释放{0} {1}号座位", reader.AtReadingRoom.Name, enterOutLog.ShortSeatNo);
                                enterOutLog.EnterOutTime  = SeatManage.Bll.ServiceDateTime.Now;
                                enterOutLog.Flag          = SeatManage.EnumType.Operation.Service;
                                int newId = 0;
                                if (SeatManage.Bll.EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId) == SeatManage.EnumType.HandleResult.Failed)
                                {
                                    throw new Exception("更新进出记录失败!");
                                }
                                NowStatus = ((int)SeatManage.EnumType.EnterOutLogType.Leave).ToString();
                                if (accset.AddViolationRecords)
                                {
                                    SeatManage.ClassModel.ViolationRecordsLogInfo vrInfo = new SeatManage.ClassModel.ViolationRecordsLogInfo();
                                    vrInfo.CardNo        = enterOutLog.CardNo;
                                    vrInfo.EnterFlag     = SeatManage.EnumType.ViolationRecordsType.LeaveNotReadCard;
                                    vrInfo.EnterOutTime  = enterOutLog.EnterOutTime.ToString();
                                    vrInfo.Flag          = SeatManage.EnumType.LogStatus.Valid;
                                    vrInfo.ReadingRoomID = enterOutLog.ReadingRoomNo;
                                    vrInfo.SeatID        = enterOutLog.SeatNo;
                                    vrInfo.Remark        = string.Format("读者{0}离开图书馆未刷卡,再次通过通道机,记录违规", ReaderNo);
                                    if (!SeatManage.Bll.T_SM_ViolateDiscipline.AddViolationRecords(vrInfo))
                                    {
                                        throw new Exception("添加违规记录失败!");
                                    }
                                }
                            }
                            break;

                        case SeatManage.EnumType.EnterOutLogType.ShortLeave:
                            if (accset.IsComeBack)
                            {
                                DateTime NowTime = SeatManage.Bll.ServiceDateTime.Now;
                                SeatManage.ClassModel.EnterOutLogInfo enterOutLog = reader.EnterOutLog;
                                System.TimeSpan shortleavetimelong = NowTime - enterOutLog.EnterOutTime;
                                enterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.ComeBack;
                                enterOutLog.TerminalNum   = "";
                                enterOutLog.Remark        = string.Format("在通道机刷卡暂离回来,暂离时长{0}分钟,继续使用{1} {2}号座位", shortleavetimelong.TotalMinutes.ToString().Split('.')[0], enterOutLog.ReadingRoomName, enterOutLog.ShortSeatNo);
                                enterOutLog.EnterOutTime  = NowTime;
                                enterOutLog.Flag          = SeatManage.EnumType.Operation.Service;
                                int newId = 0;
                                if (SeatManage.Bll.EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId) == SeatManage.EnumType.HandleResult.Failed)
                                {
                                    throw new Exception("更新进出记录失败!");
                                }
                                List <SeatManage.ClassModel.WaitSeatLogInfo> waitSeatLogs = SeatManage.Bll.T_SM_SeatWaiting.GetWaitSeatList("", enterOutLog.EnterOutLogID, null, null, null);
                                if (waitSeatLogs.Count > 0)
                                {
                                    SeatManage.ClassModel.WaitSeatLogInfo waitSeatLog = waitSeatLogs[0];
                                    waitSeatLog.NowState     = SeatManage.EnumType.LogStatus.Fail;
                                    waitSeatLog.OperateType  = SeatManage.EnumType.Operation.OtherReader;
                                    waitSeatLog.WaitingState = SeatManage.EnumType.EnterOutLogType.WaitingCancel;
                                    if (!SeatManage.Bll.T_SM_SeatWaiting.UpdateWaitLog(waitSeatLog))
                                    {
                                        throw new Exception("修改等待记录失败!");
                                    }
                                }
                                NowStatus = ((int)SeatManage.EnumType.EnterOutLogType.ComeBack).ToString();
                            }
                            break;
                        }
                    }
                    else
                    {
                        DateTime nowDate = SeatManage.Bll.ServiceDateTime.Now;
                        if (accset.IsBookingConfinmed && reader.BespeakLog.Count > 0)
                        {
                            SeatManage.ClassModel.BespeakLogInfo     bespeaklog = reader.BespeakLog[0];
                            SeatManage.ClassModel.ReadingRoomSetting set        = reader.AtReadingRoom.Setting;
                            DateTime dtBegin = bespeaklog.BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime));
                            DateTime dtEnd   = bespeaklog.BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime));
                            if (SeatManage.SeatManageComm.DateTimeOperate.DateAccord(dtBegin, dtEnd, nowDate) || (set.SeatBespeak.NowDayBespeak && bespeaklog.SubmitTime == bespeaklog.BsepeakTime))
                            {
                                SeatManage.ClassModel.EnterOutLogInfo seatUsedInfo = SeatManage.Bll.T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(bespeaklog.SeatNo);
                                if (seatUsedInfo != null && seatUsedInfo.EnterOutState != SeatManage.EnumType.EnterOutLogType.Leave)
                                { //条件满足,说明座位正在使用。
                                    seatUsedInfo.EnterOutState = SeatManage.EnumType.EnterOutLogType.Leave;
                                    seatUsedInfo.EnterOutType  = SeatManage.EnumType.LogStatus.Valid;
                                    seatUsedInfo.Remark        = string.Format("预约该座位的读者在通道机刷卡确认入座,设置在座读者离开");
                                    seatUsedInfo.Flag          = SeatManage.EnumType.Operation.OtherReader;
                                    int newId = -1;
                                    SeatManage.Bll.EnterOutOperate.AddEnterOutLog(seatUsedInfo, ref newId);
                                }
                                SeatManage.ClassModel.EnterOutLogInfo newEnterOutLog = new SeatManage.ClassModel.EnterOutLogInfo();//构造
                                newEnterOutLog.CardNo        = bespeaklog.CardNo;
                                newEnterOutLog.EnterOutLogNo = SeatManage.SeatManageComm.SeatComm.RndNum();
                                newEnterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.BookingConfirmation;
                                newEnterOutLog.EnterOutType  = SeatManage.EnumType.LogStatus.Valid;
                                newEnterOutLog.Flag          = SeatManage.EnumType.Operation.Reader;
                                newEnterOutLog.ReadingRoomNo = bespeaklog.ReadingRoomNo;
                                newEnterOutLog.SeatNo        = bespeaklog.SeatNo;
                                newEnterOutLog.Remark        = string.Format("在通道机刷卡,入座预约的{0} {1}号座位", bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum);
                                NowStatus = ((int)SeatManage.EnumType.EnterOutLogType.BookingConfirmation).ToString();
                                int logid = -1;
                                SeatManage.EnumType.HandleResult result = SeatManage.Bll.EnterOutOperate.AddEnterOutLog(newEnterOutLog, ref logid); //添加入座记录
                                if (result == SeatManage.EnumType.HandleResult.Successed)
                                {
                                    bespeaklog.BsepeakState = SeatManage.EnumType.BookingStatus.Confinmed;
                                    bespeaklog.CancelPerson = SeatManage.EnumType.Operation.Reader;
                                    bespeaklog.CancelTime   = nowDate;
                                    bespeaklog.Remark       = string.Format("在通道机刷卡,入座预约的{0} {1}号座位", bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum);
                                    SeatManage.Bll.T_SM_SeatBespeak.UpdateBespeakList(bespeaklog);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Error = e.Message;
            }
            return(string.Format(message.ToString(), ReaderNo, ReaderName, NowStatus, BeforeStatus, Error));
        }
Example #9
0
        public string OutLib(string CardNo)
        {
            string[] strs = CardNo.Split(',');
            CardNo = strs[0];
            if (!Verifylicensing())
            {
                return("非法操作,此接口未进行授权!");
            }
            //SeatManage.SeatManageComm.WriteLog.Write("传入卡号:" + CardNo);
            StringBuilder message      = new StringBuilder();
            string        ReaderNo     = CardNo;
            string        ReaderName   = "";
            string        NowStatus    = "";
            string        BeforeStatus = "";
            string        Error        = "";

            message.Append("<ReaderInfo>");
            message.Append("<ReaderNo>{0}</ReaderNo>");
            message.Append("<ReaderName>{1}</ReaderName>");
            message.Append("<NowStatus>{2}</NowStatus>");
            message.Append("<BeforeStatus>{3}</BeforeStatus>");
            message.Append("<Error>{4}</Error>");
            message.Append("</ReaderInfo>");
            try
            {
                if (string.IsNullOrEmpty(CardNo))
                {
                    throw new Exception("输入的学号为空!");
                }
                SeatManage.ClassModel.AccessSetting accset = SeatManage.Bll.T_SM_SystemSet.GetAccessSetting();
                if (accset == null)
                {
                    throw new Exception("获取通道机设置失败!");
                }
                SeatManage.ClassModel.ReaderInfo reader = SeatManage.Bll.EnterOutOperate.GetReaderInfo(CardNo);
                if (reader == null)
                {
                    throw new Exception("获取不到此学生的信息!");
                }
                if (strs.Length > 1 && reader.AtReadingRoom != null && strs[1] != "00" && reader.AtReadingRoom.Libaray.No != strs[1])
                {
                    throw new Exception("学生在此图书馆未选座位!");
                }
                ReaderNo   = reader.CardNo;
                ReaderName = reader.Name;
                if (reader.EnterOutLog == null)
                {
                    NowStatus    = ((int)SeatManage.EnumType.EnterOutLogType.Leave).ToString();
                    BeforeStatus = ((int)SeatManage.EnumType.EnterOutLogType.Leave).ToString();
                }
                else
                {
                    NowStatus    = ((int)reader.EnterOutLog.EnterOutState).ToString();
                    BeforeStatus = ((int)reader.EnterOutLog.EnterOutState).ToString();
                }
                if (accset.IsUsed && accset.OutLib && reader.EnterOutLog != null)
                {
                    switch (reader.EnterOutLog.EnterOutState)
                    {
                    case SeatManage.EnumType.EnterOutLogType.BookingConfirmation:
                    case SeatManage.EnumType.EnterOutLogType.ComeBack:
                    case SeatManage.EnumType.EnterOutLogType.ContinuedTime:
                    case SeatManage.EnumType.EnterOutLogType.ReselectSeat:
                    case SeatManage.EnumType.EnterOutLogType.SelectSeat:
                    case SeatManage.EnumType.EnterOutLogType.WaitingSuccess:
                        if (accset.LeaveMode == SeatManage.EnumType.EnterOutLogType.Leave)
                        {
                            SeatManage.ClassModel.EnterOutLogInfo enterOutLog = reader.EnterOutLog;
                            enterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.Leave;
                            enterOutLog.TerminalNum   = "";
                            enterOutLog.Remark        = string.Format("读者离开图书馆,通过通道机,系统自动释放{0} {1}号座位", reader.AtReadingRoom.Name, enterOutLog.ShortSeatNo);
                            enterOutLog.EnterOutTime  = SeatManage.Bll.ServiceDateTime.Now;
                            enterOutLog.Flag          = SeatManage.EnumType.Operation.Service;
                            int newId = 0;
                            if (SeatManage.Bll.EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId) == SeatManage.EnumType.HandleResult.Failed)
                            {
                                throw new Exception("更新进出记录失败!");
                            }
                            NowStatus = ((int)SeatManage.EnumType.EnterOutLogType.Leave).ToString();
                        }
                        else if (accset.LeaveMode == SeatManage.EnumType.EnterOutLogType.ShortLeave)
                        {
                            SeatManage.ClassModel.EnterOutLogInfo enterOutLog = reader.EnterOutLog;
                            enterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.ShortLeave;
                            enterOutLog.TerminalNum   = "";
                            enterOutLog.Remark        = string.Format("读者离开图书馆,通过通道机,设置读者为暂离,保留{0} {1}号座位{2}分钟", reader.AtReadingRoom.Name, enterOutLog.ShortSeatNo, SeatManage.Bll.NowReadingRoomState.GetSeatHoldTime(reader.AtReadingRoom.Setting.SeatHoldTime, SeatManage.Bll.ServiceDateTime.Now));
                            enterOutLog.EnterOutTime  = SeatManage.Bll.ServiceDateTime.Now;
                            enterOutLog.Flag          = SeatManage.EnumType.Operation.Service;
                            int newId = 0;
                            if (SeatManage.Bll.EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId) == SeatManage.EnumType.HandleResult.Failed)
                            {
                                throw new Exception("更新进出记录失败!");
                            }
                            NowStatus = ((int)SeatManage.EnumType.EnterOutLogType.ShortLeave).ToString();
                        }
                        break;

                    case SeatManage.EnumType.EnterOutLogType.ShortLeave:
                        //if (accset.LeaveMode == SeatManage.EnumType.EnterOutLogType.Leave)
                        //{
                        //    SeatManage.ClassModel.EnterOutLogInfo enterOutLog = reader.EnterOutLog;
                        //    enterOutLog.EnterOutState = SeatManage.EnumType.EnterOutLogType.Leave;
                        //    enterOutLog.TerminalNum = "";
                        //    enterOutLog.Remark = string.Format("读者离开图书馆,通过通道机,系统自动释放{0} {1}号座位", reader.AtReadingRoom.Name, enterOutLog.ShortSeatNo);
                        //    enterOutLog.EnterOutTime = SeatManage.Bll.ServiceDateTime.Now;
                        //    enterOutLog.Flag = SeatManage.EnumType.Operation.Service;
                        //    int newId = 0;
                        //    if (SeatManage.Bll.EnterOutOperate.AddEnterOutLog(enterOutLog, ref newId) == SeatManage.EnumType.HandleResult.Failed)
                        //    {
                        //        throw new Exception("更新进出记录失败!");
                        //    }
                        //    NowStatus = ((int)SeatManage.EnumType.EnterOutLogType.Leave).ToString();
                        //}
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Error = e.Message;
            }
            return(string.Format(message.ToString(), ReaderNo, ReaderName, NowStatus, BeforeStatus, Error));
        }
Example #10
0
 public string FreeSeat(AMS.Model.AMS_School school, SeatManage.ClassModel.ReaderInfo reader)
 {
     SMS.BespeakServerProxy.BespeakServerProxy bespeakProxy = new SMS.BespeakServerProxy.BespeakServerProxy(school.ConnectionString);
     return(bespeakProxy.FreeSeat(reader.CardNo));
 }
        /// <summary>
        /// 绑定UI元素
        /// </summary>
        /// <param name="seatNo"></param>
        /// <param name="seatShortNo"></param>GetBespeakLogInfoBySeatNo
        void BindUIElement(string seatNo, string seatShortNo, DateTime date)
        {
            SeatManage.ClassModel.ReadingRoomInfo room           = SeatManage.Bll.T_SM_ReadingRoom.GetSingleRoomInfo(roomNo);
            SeatManage.Bll.T_SM_ReadingRoom       bllReadingRoom = new SeatManage.Bll.T_SM_ReadingRoom();
            if (room.Setting.SeatBespeak.SpecifiedTime && room.Setting.SeatBespeak.CanBookMultiSpan)
            {
                foreach (DateTime dt in timeSpan)
                {
                    DropDownList_Time.Items.Add(new FineUI.ListItem(dt.ToShortTimeString(), dt.ToShortTimeString()));
                }
            }
            else
            {
                foreach (DateTime dt in room.Setting.SeatBespeak.SpecifiedTimeList)
                {
                    DropDownList_Time.Items.Add(new FineUI.ListItem(dt.ToShortTimeString(), dt.ToShortTimeString()));
                }
            }
            DateTime minTime = DateTime.Parse(date.ToShortDateString() + " " + bllReadingRoom.GetRoomOpenTimeByDate(room.Setting, date.ToShortDateString()).BeginTime);

            while (true)
            {
                minTime = minTime.AddMinutes(10);
                if (minTime.Date > date.Date)
                {
                    break;
                }
                if (Code.NowReadingRoomState.ReadingRoomOpenState(room.Setting.RoomOpenSet, minTime) == SeatManage.EnumType.ReadingRoomStatus.Close)
                {
                    continue;
                }
                DropDownList_FreeTime.Items.Add(new FineUI.ListItem(minTime.ToShortTimeString(), minTime.ToShortTimeString()));
            }
            if (!room.Setting.SeatBespeak.SpecifiedBespeak)
            {
                rblModel.Hidden = true;
            }
            if (rblModel.SelectedValue == "0")
            {
                DropDownList_FreeTime.Hidden = true;
                DropDownList_Time.Hidden     = true;
            }
            else
            {
                if (!room.Setting.SeatBespeak.SpecifiedTime)
                {
                    DropDownList_Time.Hidden     = true;
                    DropDownList_FreeTime.Hidden = false;
                }
                else
                {
                    DropDownList_FreeTime.Hidden = true;
                    DropDownList_Time.Hidden     = false;
                }
            }
            lblbeginDate.Text     = date.ToShortDateString();
            this.lblSeatNo.Text   = seatShortNo;
            this.lblRoomName.Text = room.Name;
            //判断自己是否已经预约座位
            List <SeatManage.ClassModel.BespeakLogInfo> list          = SeatManage.Bll.T_SM_SeatBespeak.GetBespeakLogInfoBySeatNo(seatNo, date);
            List <SeatManage.EnumType.BookingStatus>    bespeakStatus = new List <SeatManage.EnumType.BookingStatus>();

            bespeakStatus.Add(SeatManage.EnumType.BookingStatus.Waiting);
            List <SeatManage.ClassModel.BespeakLogInfo> readerBespeaklist = SeatManage.Bll.T_SM_SeatBespeak.GetBespeakLogInfoByCardNo(this.LoginId, date);//.GetBespeakList(this.LoginId, null, date, 0, bespeakStatus);

            if (room.Setting.SeatBespeak.CanBookMultiSpan && room.Setting.SeatBespeak.SpecifiedTime)
            {
                if (readerBespeaklist.Count >= room.Setting.SeatBespeak.BespeakSeatCount)
                {
                    FineUI.Alert.ShowInTop("对不起,您一天最多预约" + room.Setting.SeatBespeak.BespeakSeatCount + "个座位。");
                    btnBespeak.Enabled = false;
                    PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                    return;
                }
            }
            else
            {
                if (readerBespeaklist.Count > 0)
                {
                    FineUI.Alert.ShowInTop("您选择的日期已经预约了座位,请先取消原来的预约。");
                    btnBespeak.Enabled = false;
                    PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                    return;
                }
            }
            //判断座位是否被别人预约

            roomOpenTime.Value   = bllReadingRoom.GetRoomOpenTimeByDate(room.Setting, date.ToShortDateString()).BeginTime;
            this.lblEndDate.Text = bespeakSureTimeSpan(room.Setting);
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].BsepeakState == SeatManage.EnumType.BookingStatus.Waiting)
                {
                    FineUI.Alert.ShowInTop("座位已经被别人预约,请预约其他座位");
                    btnBespeak.Enabled = false;
                    PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
                    return;
                }
            }
            //判断是否已加入黑名单
            List <SeatManage.ClassModel.BlackListInfo> blacklistInfoByCardNo = SeatManage.Bll.T_SM_Blacklist.GetBlackListInfo(this.LoginId);

            SeatManage.ClassModel.RegulationRulesSetting rulesSet = SeatManage.Bll.T_SM_SystemSet.GetRegulationRulesSetting();
            if (room.Setting.UsedBlacklistLimit && blacklistInfoByCardNo.Count > 0)
            {
                if (room.Setting.BlackListSetting.Used)
                {
                    bool isblack = false;
                    foreach (SeatManage.ClassModel.BlackListInfo blinfo in blacklistInfoByCardNo)
                    {
                        if (blinfo.ReadingRoomID == room.No)
                        {
                            isblack = true;
                            break;
                        }
                    }
                    if (isblack)
                    {
                        FineUI.Alert.ShowInTop("你已进入黑名单,不能在该阅览室预约座位");
                        PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                        return;
                    }
                }
                else
                {
                    FineUI.Alert.ShowInTop("你已进入黑名单,不能在该阅览室预约座位");
                    PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                    return;
                }
            }
            if (room.Setting.LimitReaderEnter.Used)
            {
                SeatManage.ClassModel.ReaderInfo readerInfo = SeatManage.Bll.EnterOutOperate.GetReaderInfo(this.LoginId);
                string[] litype = room.Setting.LimitReaderEnter.ReaderTypes.Split(';');
                if (!room.Setting.LimitReaderEnter.CanEnter)
                {
                    foreach (string type in litype)
                    {
                        if (type == readerInfo.ReaderType)
                        {
                            FineUI.Alert.ShowInTop("你的读者类型不能在该阅览室预约座位");
                            PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                            return;
                        }
                    }
                }
                else
                {
                    bool isintype = false;
                    foreach (string type in litype)
                    {
                        if (type == readerInfo.ReaderType)
                        {
                            isintype = true;
                            break;
                        }
                    }
                    if (!isintype)
                    {
                        FineUI.Alert.ShowInTop("你的读者类型不能在该阅览室预约座位");
                        PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                        return;
                    }
                }
            }

            btnBespeak.Enabled = true;
        }
 public string DelaySeatUsedTime(AMS.Model.AMS_School school, SeatManage.ClassModel.ReaderInfo reader)
 {
     return(bespeakProxy.DelaySeatUsedTime(reader));
 }
 public string FreeSeat(AMS.Model.AMS_School school, SeatManage.ClassModel.ReaderInfo reader)
 {
     return(bespeakProxy.FreeSeat(reader.CardNo));
 }
 public string SetShortLeave(AMS.Model.AMS_School school, SeatManage.ClassModel.ReaderInfo reader)
 {
     return(bespeakProxy.SetShortLeave(reader.CardNo));
 }
Example #15
0
        /// <summary>
        /// 绑定UI元素
        /// </summary>
        /// <param name="seatNo"></param>
        /// <param name="seatShortNo"></param>GetBespeakLogInfoBySeatNo
        void BindUIElement(string seatNo, string seatShortNo, DateTime date)
        {
            SeatManage.ClassModel.ReadingRoomInfo room           = SeatManage.Bll.T_SM_ReadingRoom.GetSingleRoomInfo(roomNo);
            SeatManage.Bll.T_SM_ReadingRoom       bllReadingRoom = new SeatManage.Bll.T_SM_ReadingRoom();
            if (room.Setting.SeatBespeak.SpecifiedTime && room.Setting.SeatBespeak.CanBookMultiSpan)
            {
                foreach (DateTime dt in timeSpan)
                {
                    if (dt <= date)
                    {
                        continue;
                    }
                    DropDownList_Time.Items.Add(new FineUI.ListItem(dt.ToShortTimeString(), dt.ToShortTimeString()));
                }
            }
            else
            {
                foreach (DateTime dt in room.Setting.SeatBespeak.SpecifiedTimeList)
                {
                    if (dt <= date)
                    {
                        continue;
                    }
                    DropDownList_Time.Items.Add(new FineUI.ListItem(dt.ToShortTimeString(), dt.ToShortTimeString()));
                }
            }
            DateTime minTime = date.AddMinutes(10 - date.Minute % 10);

            while (true)
            {
                minTime = minTime.AddMinutes(10);
                if (minTime.Date > date.Date)
                {
                    break;
                }
                if (Code.NowReadingRoomState.ReadingRoomOpenState(room.Setting.RoomOpenSet, minTime) == SeatManage.EnumType.ReadingRoomStatus.Close)
                {
                    continue;
                }
                DropDownList_FreeTime.Items.Add(new FineUI.ListItem(minTime.ToShortTimeString(), minTime.ToShortTimeString()));
            }
            if (!room.Setting.SeatBespeak.SpecifiedBespeak)
            {
                rblModel.Hidden = true;
            }
            if (rblModel.SelectedValue == "0")
            {
                DropDownList_FreeTime.Hidden = true;
                DropDownList_Time.Hidden     = true;
            }
            else
            {
                if (!room.Setting.SeatBespeak.SpecifiedTime)
                {
                    DropDownList_Time.Hidden     = true;
                    DropDownList_FreeTime.Hidden = false;
                }
                else
                {
                    DropDownList_FreeTime.Hidden = true;
                    DropDownList_Time.Hidden     = false;
                }
            }
            lblbeginDate.Text     = date.ToShortDateString();
            this.lblSeatNo.Text   = seatShortNo;
            this.lblRoomName.Text = room.Name;
            //判断自己是否已经预约座位
            List <SeatManage.EnumType.BookingStatus> bespeakStatus = new List <SeatManage.EnumType.BookingStatus>();

            bespeakStatus.Add(SeatManage.EnumType.BookingStatus.Waiting);
            List <SeatManage.ClassModel.BespeakLogInfo> readerBespeaklist = SeatManage.Bll.T_SM_SeatBespeak.GetBespeakLogInfoByCardNo(this.LoginId, date);//.GetBespeakList(this.LoginId, null, date, 0, bespeakStatus);

            //判断可预约次数是否超过
            readerBespeaklist = SeatManage.Bll.T_SM_SeatBespeak.GetBespeakList(this.LoginId, null, date, 0, new List <SeatManage.EnumType.BookingStatus> {
                SeatManage.EnumType.BookingStatus.Confinmed, SeatManage.EnumType.BookingStatus.Waiting
            });                                                                                                                                                                                                                                     //.GetBespeakList(this.LoginId, null, date, 0, bespeakStatus);
            if (readerBespeaklist.Count >= room.Setting.SeatBespeak.BespeakSeatCount)
            {
                FineUI.Alert.ShowInTop("您一天只能预约" + room.Setting.SeatBespeak.BespeakSeatCount + "次座位。");
                btnBespeak.Enabled = false;
                PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                return;
            }
            if (readerBespeaklist.Find(u => u.BsepeakState == SeatManage.EnumType.BookingStatus.Waiting) != null && (!room.Setting.SeatBespeak.CanBookMultiSpan || !room.Setting.SeatBespeak.SpecifiedTime))
            {
                FineUI.Alert.ShowInTop("您今天已有预约的座位,请先取消原来的预约。");
                btnBespeak.Enabled = false;
                PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                return;
            }


            //判断读者是否有座位
            if (!room.Setting.SeatBespeak.BespeatWithOnSeat)
            {
                SeatManage.ClassModel.EnterOutLogInfo eol = SeatManage.Bll.T_SM_EnterOutLog.GetEnterOutLogInfoByCardNo(this.LoginId);
                if (eol != null && eol.EnterOutState != SeatManage.EnumType.EnterOutLogType.Leave)
                {
                    FineUI.Alert.ShowInTop("您已有座位,不能再预约座位");
                    btnBespeak.Enabled = false;
                    PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
                    return;
                }
            }
            //判断操作次数
            if (SeatManage.Bll.EnterOutOperate.CheckReaderChooseSeatTimesByReadingRoom(this.LoginId, room.Setting.PosTimes, room.No))
            {
                FineUI.Alert.ShowInTop("您的选座/预约操作过于频繁,请稍后重试");
                btnBespeak.Enabled = false;
                PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
                return;
            }
            //判断座位是否被别人使用
            SeatManage.ClassModel.Seat seat = SeatManage.Bll.T_SM_Seat.GetSeatInfoBySeatNo(seatNo);
            if (seat.SeatUsedState != SeatManage.EnumType.EnterOutLogType.Leave)
            {
                FineUI.Alert.ShowInTop("座位已经被别人选择,请预约其他座位");
                btnBespeak.Enabled = false;
                PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
                return;
            }
            //判断座位是否被预约
            List <SeatManage.ClassModel.BespeakLogInfo> list = SeatManage.Bll.T_SM_SeatBespeak.GetBespeakLogInfoBySeatNo(seatNo, date);

            seatKeepTime.Value   = room.Setting.SeatBespeak.SeatKeepTime.ToString();
            this.lblEndDate.Text = string.Format("{0}至{1}", date.ToShortTimeString(), date.AddMinutes(room.Setting.SeatBespeak.SeatKeepTime).ToShortTimeString());
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].BsepeakState == SeatManage.EnumType.BookingStatus.Waiting)
                {
                    FineUI.Alert.ShowInTop("座位已经被别人预约,请预约其他座位");
                    btnBespeak.Enabled = false;
                    PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
                    return;
                }
            }
            //判断是否已加入黑名单
            List <SeatManage.ClassModel.BlackListInfo> blacklistInfoByCardNo = SeatManage.Bll.T_SM_Blacklist.GetBlackListInfo(this.LoginId);

            SeatManage.ClassModel.RegulationRulesSetting rulesSet = SeatManage.Bll.T_SM_SystemSet.GetRegulationRulesSetting();
            if (room.Setting.UsedBlacklistLimit && blacklistInfoByCardNo.Count > 0)
            {
                if (room.Setting.BlackListSetting.Used)
                {
                    bool isblack = false;
                    foreach (SeatManage.ClassModel.BlackListInfo blinfo in blacklistInfoByCardNo)
                    {
                        if (blinfo.ReadingRoomID == room.No)
                        {
                            isblack = true;
                            break;
                        }
                    }
                    if (isblack)
                    {
                        FineUI.Alert.ShowInTop("你已进入黑名单,不能在该阅览室预约座位");
                        PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                        return;
                    }
                }
                else
                {
                    FineUI.Alert.ShowInTop("你已进入黑名单,不能在该阅览室预约座位");
                    PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                    return;
                }
            }
            if (room.Setting.LimitReaderEnter.Used)
            {
                SeatManage.ClassModel.ReaderInfo readerInfo = SeatManage.Bll.EnterOutOperate.GetReaderInfo(this.LoginId);
                string[] litype = room.Setting.LimitReaderEnter.ReaderTypes.Split(';');
                if (!room.Setting.LimitReaderEnter.CanEnter)
                {
                    foreach (string type in litype)
                    {
                        if (type == readerInfo.ReaderType)
                        {
                            FineUI.Alert.ShowInTop("你的读者类型不能在该阅览室预约座位");
                            PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                            return;
                        }
                    }
                }
                else
                {
                    bool isintype = false;
                    foreach (string type in litype)
                    {
                        if (type == readerInfo.ReaderType)
                        {
                            isintype = true;
                            break;
                        }
                    }
                    if (!isintype)
                    {
                        FineUI.Alert.ShowInTop("你的读者类型不能在该阅览室预约座位");
                        PageContext.RegisterStartupScript(FineUI.ActiveWindow.GetHidePostBackReference());
                        return;
                    }
                }
            }

            btnBespeak.Enabled = true;
        }
        void client_OnMsgReceived(byte[] info)
        {
            SocketMsgData.SocketRequest msg = SeatManage.SeatManageComm.ByteSerializer.DeserializeByte <SocketMsgData.SocketMsgBase>(info) as SocketMsgData.SocketRequest;
            if (msg != null)
            {
                Console.WriteLine("子系统{0}请求执行{1}方法", msg.SubSystem.ToString(), msg.MethodName);
                SocketMsgData.SocketResponse response = new SocketMsgData.SocketResponse();
                switch (msg.MethodName)
                {
                case "CheckAndGetReaderInfo":
                    try
                    {
                        SeatManage.ClassModel.UserInfo   user   = msg.Parameters[0] as SeatManage.ClassModel.UserInfo;
                        SeatManage.ClassModel.ReaderInfo reader = bespakBll.CheckAndGetReaderInfo(user);
                        response.Result = reader;
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "DelaySeatUsedTime;":
                    try
                    {
                        SeatManage.ClassModel.ReaderInfo reader = msg.Parameters[0] as SeatManage.ClassModel.ReaderInfo;
                        string result = bespakBll.DelaySeatUsedTime(reader);
                        response.Result = result;
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "FreeSeat":
                    try
                    {
                        string cardNo = msg.Parameters[0].ToString();
                        string result = bespakBll.FreeSeat(cardNo);
                        response.Result = result;
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetAllReadingRoomInfo":
                    try
                    {
                        List <SeatManage.ClassModel.ReadingRoomInfo> rooms = bespakBll.GetAllReadingRoomInfo();
                        response.Result = rooms;
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetAllRoomSeatUsedState":
                    try
                    {
                        Dictionary <string, SeatManage.ClassModel.ReadingRoomSeatUsedState_Ex> roomState = bespakBll.GetAllRoomSeatUsedState();
                        response.Result = roomState;
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetBlackList":
                    try
                    {
                        string cardNo    = msg.Parameters[0].ToString();
                        int    queryDays = int.Parse(msg.Parameters[1].ToString());
                        List <SeatManage.ClassModel.BlackListInfo> result = bespakBll.GetBlackList(cardNo, queryDays);
                        response.Result = result;
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetBookLogs":
                    try
                    {
                        string cardNo    = msg.Parameters[0].ToString();
                        string roomNum   = msg.Parameters[1] == null ? null : msg.Parameters[1].ToString();
                        int    queryDays = int.Parse(msg.Parameters[2].ToString());
                        List <SeatManage.ClassModel.BespeakLogInfo> result = bespakBll.GetBookLogs(cardNo, roomNum, queryDays);
                        response.Result = result;
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetBookSeatList":
                    try
                    {
                        DateTime dt      = (DateTime)msg.Parameters[0];
                        string   roomNum = msg.Parameters[1] == null ? null : msg.Parameters[1].ToString();
                        List <SeatManage.ClassModel.Seat> result = bespakBll.GetBookSeatList(dt, roomNum);
                        response.Result = result;
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetCanBespeakReaderRoomInfo":
                    try
                    {
                        DateTime dt = (DateTime)msg.Parameters[0];
                        response.Result = bespakBll.GetCanBespeakReaderRoomInfo(dt);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetEnterOutLogs":
                    try
                    {
                        string cardNo    = msg.Parameters[0].ToString();
                        string roomNum   = msg.Parameters[1] == null ? null : msg.Parameters[1].ToString();
                        int    queryDate = (int)msg.Parameters[2];
                        response.Result = bespakBll.GetEnterOutLogs(cardNo, roomNum, queryDate);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetReaderInfo":
                    try
                    {
                        string cardNo = msg.Parameters[0].ToString();
                        response.Result = bespakBll.GetReaderInfo(cardNo);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetReaderInfoByCardNo":
                    try
                    {
                        string cardNo = msg.Parameters[0].ToString();
                        response.Result = bespakBll.GetReaderInfoByCardNo(cardNo);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetReaderInfoByCardNofalse":
                    try
                    {
                        string cardNo = msg.Parameters[0].ToString();
                        response.Result = bespakBll.GetReaderInfoByCardNofalse(cardNo);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetViolateDiscipline":
                    try
                    {
                        string cardNo    = msg.Parameters[0].ToString();
                        string roomNum   = msg.Parameters[1] == null ? null : msg.Parameters[1].ToString();
                        int    queryDate = (int)msg.Parameters[2];
                        response.Result = bespakBll.GetViolateDiscipline(cardNo, roomNum, queryDate);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "SetShortLeave":
                    try
                    {
                        string cardNo = msg.Parameters[0].ToString();
                        response.Result = bespakBll.SetShortLeave(cardNo);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "SubmitBespeakInfo":
                    try
                    {
                        SeatManage.ClassModel.BespeakLogInfo bespeak = (SeatManage.ClassModel.BespeakLogInfo)msg.Parameters[0];
                        response.Result = bespakBll.SubmitBespeakInfo(bespeak);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "UpdateBookLogsState":
                    try
                    {
                        int bespeak = (int)msg.Parameters[0];
                        response.Result = bespakBll.UpdateBookLogsState(bespeak);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "GetScanCodeSeatInfo":
                    try
                    {
                        string cardNo         = msg.Parameters[0].ToString();
                        string seatNum        = msg.Parameters[1].ToString();
                        string readingRoomNum = msg.Parameters[2].ToString();
                        response.Result = bespakBll.GetScanCodeSeatInfo(cardNo, seatNum, readingRoomNum);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;

                case "ChangeSeat":
                    try
                    {
                        string cardNo         = msg.Parameters[0].ToString();
                        string seatNum        = msg.Parameters[1].ToString();
                        string readingRoomNum = msg.Parameters[2].ToString();
                        response.Result = bespakBll.ChangeSeat(cardNo, seatNum, readingRoomNum);
                    }
                    catch (Exception ex)
                    {
                        response.ErrorMsg = ex.Message;
                    }
                    break;
                }
                response.MethodName = msg.MethodName;
                response.Sender     = msg.Target;
                response.SubSystem  = msg.SubSystem;
                response.Target     = msg.Sender;
                response.MsgType    = SocketMsgData.TcpMsgDataType.Relay;
                client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(response));
                Console.WriteLine("执行成功,已返回结果");
            }
        }
        public string GetReaderStatus(string cardNo)
        {
            try
            {
                string result = "";
                SeatManage.ClassModel.ReaderInfo readerModel = SeatManage.Bll.EnterOutOperate.GetReaderInfo(cardNo);
                string state           = "";
                string seatNo          = "";
                string readingRoomName = "";
                if (!string.IsNullOrEmpty(readerModel.CardNo))
                {
                    if (readerModel.EnterOutLog != null)
                    {
                        switch (readerModel.EnterOutLog.EnterOutState)
                        {
                        case SeatManage.EnumType.EnterOutLogType.ComeBack:
                        case SeatManage.EnumType.EnterOutLogType.ContinuedTime:
                        case SeatManage.EnumType.EnterOutLogType.ReselectSeat:
                        case SeatManage.EnumType.EnterOutLogType.SelectSeat:
                        case SeatManage.EnumType.EnterOutLogType.WaitingCancel:
                        case SeatManage.EnumType.EnterOutLogType.WaitingSuccess:
                        case SeatManage.EnumType.EnterOutLogType.BookingConfirmation:
                            state  = "在座";
                            seatNo = readerModel.EnterOutLog.SeatNo;
                            string rrId = readerModel.EnterOutLog.ReadingRoomNo;
                            readingRoomName = readerModel.EnterOutLog.ReadingRoomName;
                            break;

                        case SeatManage.EnumType.EnterOutLogType.Leave:
                        case SeatManage.EnumType.EnterOutLogType.None:
                        case SeatManage.EnumType.EnterOutLogType.BookingCancel:
                            state = "无座";
                            break;

                        case SeatManage.EnumType.EnterOutLogType.ShortLeave:
                            state           = "暂离";
                            seatNo          = readerModel.EnterOutLog.SeatNo;
                            readingRoomName = readerModel.EnterOutLog.ReadingRoomName;
                            break;

                        case SeatManage.EnumType.EnterOutLogType.Waiting:
                            state           = "等待座位";
                            seatNo          = readerModel.EnterOutLog.SeatNo;
                            readingRoomName = readerModel.EnterOutLog.ReadingRoomName;
                            break;

                        case SeatManage.EnumType.EnterOutLogType.BespeakWaiting:
                            state           = "存在未确认预约座位";
                            seatNo          = readerModel.EnterOutLog.SeatNo;
                            readingRoomName = readerModel.EnterOutLog.ReadingRoomName;
                            break;
                        }
                    }
                    result = string.Format("<StuState><Student Name='{0}' CardNo='{1}' RoomName='{2}'  SeatNo='{3}' Status='{4}'></Student></StuState>", readerModel.Name, readerModel.CardNo, readingRoomName, seatNo, state);
                }
                else
                {
                    result = "<StuState><Student Name='' CardNo='' RoomName=''  SeatNo='' Status=''></Student></StuState>";
                }
                return(result);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Example #18
0
 public string DelaySeatUsedTime(AMS.Model.AMS_School school, SeatManage.ClassModel.ReaderInfo reader)
 {
     SMS.BespeakServerProxy.BespeakServerProxy bespeakProxy = new SMS.BespeakServerProxy.BespeakServerProxy(school.ConnectionString);
     return(bespeakProxy.DelaySeatUsedTime(reader));
 }