/// <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; } }
/// <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; } }
/// <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的记录"); } } }