Esempio n. 1
0
        /// <summary>
        /// 更新已经处理的记录
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static bool Update(AccessModelLog model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.AppendFormat("update AccessSyncLog set HandleFlag=1 where ID={0} ", model.ID);
            try
            {
                int result = DBUtility.DbHelperSQL.ExecuteSql(strSql.ToString());
                if (result >= 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 获取还没处理的刷卡数据
        /// </summary>
        /// <returns></returns>
        public static List <AccessModelLog> GetModels(int effectiveTime)
        {
            List <AccessModelLog> posDataList = new List <AccessModelLog>();
            StringBuilder         strSql      = new StringBuilder();

            strSql.AppendFormat(string.Format("SELECT [ID],[VisitID],[VisitTime],[CardNo],[CardID],[VisierName],[Library],[EnterOrExit],[ChannelNo],[Flag],[HandleFlag] FROM [AccessSyncLog] where  datediff(mi,VisitTime,getdate())<{0} and HandleFlag<>1 or HandleFlag is Null", effectiveTime));
            try
            {
                DataSet ds = DBUtility.DbHelperSQL.Query(strSql.ToString());
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    AccessModelLog model = DataRowToModel(ds.Tables[0].Rows[i]);
                    if (model != null)
                    {
                        posDataList.Add(model);
                    }
                }
                return(posDataList);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 获取还没处理的刷卡数据
        /// </summary>
        /// <returns></returns>
        public static List <AccessModelLog> GetModels(int effectiveTime)
        {
            List <AccessModelLog> posDataList = new List <AccessModelLog>();
            StringBuilder         strSql      = new StringBuilder();

            strSql.AppendFormat(string.Format("select VisitNo,CardId,Passed,VisitTime,direction,HandleFlag from shuakajilu where  datediff(mi,visitTime,getdate())<{0} and HandleFlag<>1 or HandleFlag is Null", effectiveTime));
            try
            {
                DataSet ds = DBUtility.DbHelperSQL.Query(strSql.ToString());
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    AccessModelLog model = dataRowToModel(ds.Tables[0].Rows[i]);
                    if (model != null)
                    {
                        posDataList.Add(model);
                    }
                }
                return(posDataList);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// 刷卡数据处理函数
        /// </summary>
        private void HandPosData()
        {
            int ivalidMinutes = -1;

            if (!string.IsNullOrEmpty(validMinutes))
            {
                ivalidMinutes = int.Parse(validMinutes);
            }
            else
            {
                ivalidMinutes = int.MaxValue;
            }


            List <AccessModelLog> posDataModels = PosDataMiddleTableHandler.MiddleTableHandler_New.GetModels(ivalidMinutes);//获取还没处理的刷卡数据,参数表示有效时间(分钟)

            PostProgress("新进馆" + posDataModels.Count + "人,开始处理");
            for (int i = 0; i < posDataModels.Count; i++)//遍历获取到的刷卡数据列表
            {
                AccessModelLog model = posDataModels[i];
                TimeSpan       ts    = DateTime.Now - model.VisitTime;

                //如果读者学号不存在,跳过,不做处理
                if (string.IsNullOrEmpty(model.CardNo))
                {
                    continue;
                }

                if (true)//model.CardNo == "reader" || model.CardNo == "7302" || model.CardNo == "7607")
                {
                    //判断是否处理,是否为入馆通道,有效时间。
                    if (!model.HandleFlag && ts.TotalMinutes < ivalidMinutes)
                    {
                        string strResult = "";
                        try
                        {//调用通道机的处理接口,并记录返回结果
                            if (model.Enter == EnterState.Enter)
                            {
                                strResult = eg.EnterLib(model.CardNo);
                                SeatManage.SeatManageComm.WriteLog.Write("处理读者" + model.CardNo + "进馆处理");
                                PostProgress("处理读者" + model.CardNo + "进馆处理");
                            }
                            else
                            {
                                strResult = eg.OutLib(model.CardNo);
                                SeatManage.SeatManageComm.WriteLog.Write("处理读者" + model.CardNo + "出馆处理");
                                PostProgress("处理读者" + model.CardNo + "出馆处理");
                            }
                        }
                        catch (Exception ex)
                        {
                            SeatManage.SeatManageComm.WriteLog.Write(string.Format("处理失败,记录Id:{0}  错误信息:{1}", model.ID, ex.ToString()));
                            PostProgress(string.Format("处理失败,记录Id:{0}  错误信息:{1}", model.ID, ex.Message));
                            break;
                        }
                        try
                        {
                            //解析返回结果
                            HandleResultModel result = WebServiceReturnValueHandler.EnterLibHandle(strResult);
                            if (!string.IsNullOrEmpty(result.Error))
                            {//如果不为空,则说明处理错误
                                SeatManage.SeatManageComm.WriteLog.Write(string.Format("处理错误,记录Id:{0}  错误信息:{1}", model.ID, result.Error));
                                PostProgress(string.Format("处理错误,记录Id:{0}  错误信息:{1}", model.ID, result.Error));
                            }
                            else
                            {   //否则标识已经处理完成。
                                PosDataMiddleTableHandler.MiddleTableHandler_New.Update(model);
                            }
                        }
                        catch (Exception ex)
                        {
                            SeatManage.SeatManageComm.WriteLog.Write(ex.Message);
                            PostProgress(ex.ToString());
                            break;
                        }
                    }
                }
                else
                {
                    PostProgress("测试:只处理7302,7607,和reader的记录");
                }
            }
        }