/// <summary>
        /// 更新读者通知状态
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static EnumType.HandleResult UpdateReaderNotice(ReaderNoticeInfo model)
        {
            IWCFService.ISeatManageService seatService = WcfAccessProxy.ServiceProxy.CreateChannelSeatManageService();
            bool error = false;

            try
            {
                return(seatService.UpdateReaderNotice(model));
            }
            catch (Exception ex)
            {
                error = true;
                SeatManageComm.WriteLog.Write("更新读者状态失败:" + ex.Message);
                return(EnumType.HandleResult.Failed);
            }
            finally
            {
                ICommunicationObject ICommObjectService = seatService as ICommunicationObject;
                try
                {
                    if (ICommObjectService.State == CommunicationState.Faulted)
                    {
                        ICommObjectService.Abort();
                    }
                    else
                    {
                        ICommObjectService.Close();
                    }
                }
                catch
                {
                    ICommObjectService.Abort();
                }
            }
        }
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public int Add(ReaderNoticeInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into T_SM_ReaderNotice(");
            strSql.Append("CardNo,AddTime,NoticeTitle,NoticeContent,IsRead)");
            strSql.Append(" values (");
            strSql.Append("@CardNo,@AddTime,@NoticeTitle,@NoticeContent,@IsRead)");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters =
            {
                new SqlParameter("@CardNo",        SqlDbType.NVarChar,   20),
                new SqlParameter("@AddTime",       SqlDbType.DateTime),
                new SqlParameter("@NoticeTitle",   SqlDbType.NVarChar,  200),
                new SqlParameter("@NoticeContent", SqlDbType.Text),
                new SqlParameter("@IsRead",        SqlDbType.Int, 4)
            };
            parameters[0].Value = model.CardNo;
            parameters[1].Value = model.AddTime;
            parameters[2].Value = ((int)model.Type).ToString();
            parameters[3].Value = model.Note;
            parameters[4].Value = (int)model.IsRead;

            object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);

            if (obj == null)
            {
                return(0);
            }
            else
            {
                return(Convert.ToInt32(obj));
            }
        }
示例#3
0
        /// <summary>
        /// 添加读者消息提示
        /// </summary>
        /// <param name="cardNo">卡号</param>
        /// <param name="Note">消息内容</param>
        private static void AddNotice(string cardNo, string Note)
        {
            ReaderNoticeInfo rni = new ReaderNoticeInfo();

            rni.CardNo = cardNo;
            rni.Note   = Note;
            T_SM_ReaderNotice.AddReaderNotice(rni);
        }
示例#4
0
        /// <summary>
        /// 获取读者消息列表
        /// </summary>
        /// <param name="cardNum"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public List <ReaderNoticeInfo> GetReaderNoticeList(string cardNum, int pageIndex, int pageSize)
        {
            List <ReaderNoticeInfo> list = new List <ReaderNoticeInfo>();
            DataSet ds = t_sm_readerNotice_DAL.GetList(cardNum, pageIndex, pageSize);

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                ReaderNoticeInfo notice = dataRowToReaderNotice(ds.Tables[0].Rows[i]);
                list.Add(notice);
            }
            return(list);
        }
示例#5
0
        /// <summary>
        /// 行转换为实体
        /// </summary>
        /// <param name="dr"></param>
        /// <returns></returns>
        private ReaderNoticeInfo dataRowToReaderNotice(DataRow dr)
        {
            ReaderNoticeInfo notice = new ReaderNoticeInfo();

            notice.Type     = string.IsNullOrEmpty(dr["NoticeTitle"].ToString()) ? NoticeType.None : (NoticeType)int.Parse(dr["NoticeTitle"].ToString());
            notice.AddTime  = DateTime.Parse(dr["AddTime"].ToString());
            notice.CardNo   = dr["CardNo"].ToString();
            notice.IsRead   = (LogStatus)int.Parse(dr["IsRead"].ToString());
            notice.Note     = dr["NoticeContent"].ToString();
            notice.NoticeID = int.Parse(dr["NoticeId"].ToString());
            return(notice);
        }
示例#6
0
        /// <summary>
        /// 更新读者消息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public HandleResult UpdateReaderNotice(ReaderNoticeInfo model)
        {
            bool result = t_sm_readerNotice_DAL.Update(model);

            if (result)
            {
                return(HandleResult.Successed);
            }
            else
            {
                return(HandleResult.Failed);
            }
        }
示例#7
0
        /// <summary>
        /// 更新读者通知状态
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static EnumType.HandleResult UpdateReaderNotice(ReaderNoticeInfo model)
        {
            IWCFService.ISeatManageService seatService = new WcfServiceForSeatManage.SeatManageDateService();
            bool error = false;

            try
            {
                return(seatService.UpdateReaderNotice(model));
            }
            catch (Exception ex)
            {
                error = true;
                SeatManageComm.WriteLog.Write("更新读者状态失败:" + ex.Message);
                return(EnumType.HandleResult.Failed);
            }
        }
示例#8
0
        /// <summary>
        /// 添加一条读者消息
        /// </summary>
        /// <param name="model">读者消息的model</param>
        /// <returns></returns>
        public static int AddReaderNotice(ReaderNoticeInfo model)
        {
            IWCFService.ISeatManageService seatService = new WcfServiceForSeatManage.SeatManageDateService();
            bool error = false;

            try
            {
                return(seatService.AddReaderNotice(model));
            }
            catch (Exception ex)
            {
                error = true;
                SeatManageComm.WriteLog.Write("添加读者消息失败:" + ex.Message);
                return(-1);
            }
        }
示例#9
0
        /// <summary>
        /// 添加读者消息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public int AddReaderNotice(ReaderNoticeInfo model)
        {
            try
            {
                model.AddTime = GetServerDateTime();
                //Thread thread = new Thread(new ParameterizedThreadStart(NotifyMsg));
                //thread.Start(model);

                //ThreadPool.QueueUserWorkItem(new WaitCallback(sendSeatStateChanged), model);/



                //pushMsgV2(model);
                return(t_sm_readerNotice_DAL.Add(model));
            }
            catch
            {
                throw;
            }
        }
        /// <summary>
        /// 座位等待处理
        /// </summary>
        /// <param name="readingRoom">阅览室</param>
        /// <param name="enterOutLog">进出记录</param>
        /// <param name="waitSeatLoglist">等待记录列表</param>
        private void WaitSeatOperate(ReadingRoomInfo readingRoom, EnterOutLogInfo enterOutLog, List <WaitSeatLogInfo> waitSeatLoglist, DateTime nowDateTime)
        {
            try
            {
                waitSeatLoglist[0].WaitingState    = EnterOutLogType.WaitingSuccess;
                waitSeatLoglist[0].StatsChangeTime = nowDateTime;
                seatManageService.UpdateWaitLog(waitSeatLoglist[0]);
                ReaderNoticeInfo notice = new ReaderNoticeInfo();

                //释放原读者座位
                int logid = 0;
                enterOutLog.Flag          = Operation.Service;
                enterOutLog.EnterOutState = EnterOutLogType.Leave;
                enterOutLog.EnterOutTime  = nowDateTime;
                enterOutLog.Remark        = string.Format("在{0},{1}号座位,被其他读者设置暂离,暂离超时,被监控服务释放座位", enterOutLog.ReadingRoomName, enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - readingRoom.Setting.SeatNumAmount));
                seatManageService.AddEnterOutLogInfo(enterOutLog, ref logid);

                WriteLog.Write(string.Format("监控服务:读者{0},{1}", enterOutLog.CardNo, enterOutLog.Remark));
                //等待读者入座
                EnterOutLogInfo new_eol = new EnterOutLogInfo();
                new_eol.CardNo        = waitSeatLoglist[0].CardNo;
                new_eol.EnterOutLogNo = SeatComm.RndNum();
                new_eol.EnterOutState = EnterOutLogType.WaitingSuccess;
                new_eol.EnterOutType  = LogStatus.Valid;
                new_eol.ReadingRoomNo = waitSeatLoglist[0].ReadingRoomNo;
                new_eol.Flag          = Operation.Service;
                new_eol.SeatNo        = enterOutLog.SeatNo;
                new_eol.Remark        = string.Format("在{0},{1}号座位,等待成功,自动入座", enterOutLog.ReadingRoomName, enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - readingRoom.Setting.SeatNumAmount));
                seatManageService.AddEnterOutLogInfo(new_eol, ref logid);

                WriteLog.Write(string.Format("监控服务:读者{0},{1}", new_eol.CardNo, new_eol.Remark));
                if (readingRoom.Setting.IsRecordViolate)
                {
                    AddViolationRecordByEnterOutLog(enterOutLog, ViolationRecordsType.ShortLeaveByReaderOutTime, string.Format("读者在{0},{1}号座位,被其他读者设置暂离,暂离超时", enterOutLog.ReadingRoomName, enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - readingRoom.Setting.SeatNumAmount)), readingRoom.Setting, nowDateTime);
                }
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("监控服务:处理等待读者发生错误:" + ex.Message));
            }
        }
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(ReaderNoticeInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update T_SM_ReaderNotice set ");
            strSql.Append("CardNo=@CardNo,");
            strSql.Append("AddTime=@AddTime,");
            strSql.Append("NoticeContent=@NoticeContent,");
            strSql.Append("IsRead=@IsRead,");
            strSql.Append("NoticeTitle=@NoticeTitle");
            strSql.Append(" where NoticeId=@NoticeId");
            SqlParameter[] parameters =
            {
                new SqlParameter("@CardNo",        SqlDbType.NVarChar,   20),
                new SqlParameter("@AddTime",       SqlDbType.DateTime),
                new SqlParameter("@NoticeContent", SqlDbType.Text),
                new SqlParameter("@IsRead",        SqlDbType.Int,         4),
                new SqlParameter("@NoticeTitle",   SqlDbType.NVarChar,  200),
                new SqlParameter("@NoticeId",      SqlDbType.Int, 4)
            };
            parameters[0].Value = model.CardNo;
            parameters[1].Value = model.AddTime;
            parameters[2].Value = model.Note;
            parameters[3].Value = (int)model.IsRead;
            parameters[4].Value = ((int)model.Type).ToString();
            parameters[5].Value = model.NoticeID;

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

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        /// <summary>
        /// 座位等待处理
        /// </summary>
        /// <param name="readingRoom">阅览室</param>
        /// <param name="enterOutLog">进出记录</param>
        /// <param name="waitSeatLoglist">等待记录列表</param>
        private static void WaitSeatOperate(ReadingRoomInfo readingRoom, EnterOutLogInfo enterOutLog, List <WaitSeatLogInfo> waitSeatLoglist, DateTime nowDateTime)
        {
            try
            {
                waitSeatLoglist[0].WaitingState    = EnterOutLogType.WaitingSuccess;
                waitSeatLoglist[0].StatsChangeTime = nowDateTime;
                T_SM_SeatWaiting.UpdateWaitLog(waitSeatLoglist[0]);
                ReaderNoticeInfo notice = new ReaderNoticeInfo();

                //释放原读者座位
                int logid = 0;
                enterOutLog.Flag          = Operation.Service;
                enterOutLog.EnterOutState = EnterOutLogType.Leave;
                enterOutLog.EnterOutTime  = nowDateTime;
                enterOutLog.Remark        = string.Format("在{0},{1}号座位,被其他读者设置暂离,暂离超时,被监控服务释放座位", enterOutLog.ReadingRoomName, enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - readingRoom.Setting.SeatNumAmount));
                EnterOutOperate.AddEnterOutLog(enterOutLog, ref logid);


                //notice.CardNo = enterOutLog.CardNo;
                //notice.Type = NoticeType.ShortLeaveTimeEndWarning;
                //notice.Note = "暂离超时,座位已被释放。";
                //T_SM_ReaderNotice.AddReaderNotice(notice);


                //PushMsgInfo msg = new PushMsgInfo();
                //msg.Title = "您好,您的座位已被释放";
                //msg.MsgType = MsgPushType.TimeOut;
                //msg.StudentNum = enterOutLog.CardNo;
                //msg.Message = enterOutLog.Remark;
                //SeatManage.Bll.T_SM_ReaderNotice.SendPushMsg(msg);


                WriteLog.Write(string.Format("监控服务:读者{0},{1}", enterOutLog.CardNo, enterOutLog.Remark));
                //等待读者入座
                EnterOutLogInfo new_eol = new EnterOutLogInfo();
                new_eol.CardNo        = waitSeatLoglist[0].CardNo;
                new_eol.EnterOutLogNo = SeatComm.RndNum();
                new_eol.EnterOutState = EnterOutLogType.WaitingSuccess;
                new_eol.EnterOutType  = LogStatus.Valid;
                new_eol.ReadingRoomNo = waitSeatLoglist[0].ReadingRoomNo;
                new_eol.Flag          = Operation.Service;
                new_eol.SeatNo        = enterOutLog.SeatNo;
                new_eol.Remark        = string.Format("在{0},{1}号座位,等待成功,自动入座", enterOutLog.ReadingRoomName, enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - readingRoom.Setting.SeatNumAmount));
                EnterOutOperate.AddEnterOutLog(new_eol, ref logid);


                //notice.CardNo = enterOutLog.CardNo;
                //notice.Type = NoticeType.WaitSeatSuccess;
                //notice.Note = "您等待的座位已经分配给您。";
                //T_SM_ReaderNotice.AddReaderNotice(notice);

                //msg = new PushMsgInfo();
                //msg.Title = "您好,您已等待成功";
                //msg.MsgType = MsgPushType.ToTime;
                //msg.StudentNum = enterOutLog.CardNo;
                //msg.Message = new_eol.Remark;
                //SeatManage.Bll.T_SM_ReaderNotice.SendPushMsg(msg);



                WriteLog.Write(string.Format("监控服务:读者{0},{1}", new_eol.CardNo, new_eol.Remark));
                if (readingRoom.Setting.IsRecordViolate)
                {
                    AddViolationRecordByEnterOutLog(enterOutLog, ViolationRecordsType.ShortLeaveByReaderOutTime, string.Format("读者在{0},{1}号座位,被其他读者设置暂离,暂离超时", enterOutLog.ReadingRoomName, enterOutLog.SeatNo.Substring(enterOutLog.SeatNo.Length - readingRoom.Setting.SeatNumAmount)), readingRoom.Setting, nowDateTime);
                }
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("监控服务:处理等待读者发生错误:" + ex.Message));
            }
        }