public static HandleResultModel EnterLibHandle(string xmlValue) { try { HandleResultModel model = new HandleResultModel(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlValue); XmlNode node = xmlDoc.SelectSingleNode("//ReaderInfo/ReaderNo"); model.CardNo = node.InnerText; node = xmlDoc.SelectSingleNode("//ReaderInfo/NowStatus"); model.NowStatus = node.InnerText; node = xmlDoc.SelectSingleNode("//ReaderInfo/BeforeStatus"); model.BeforeStatus = node.InnerText; node = xmlDoc.SelectSingleNode("//ReaderInfo/Error"); model.Error = node.InnerText; return(model); } catch (Exception EX) { throw new Exception("解析结果失败,可能是接口程序返回了一个不正常的结果。错误信息为:" + EX.Message); } // <ReaderInfo> //<ReaderNo>{0}</ReaderNo> --读者学号 //<ReaderName>{1}</ReaderName> --读者姓名 //<NowStatus>{2}</NowStatus> --处理后(当前)的读者状态(详见最后附录) //<BeforeStatus>{3}</BeforeStatus> --处理前的状态(详见最后附录) //<Error>{4}</Error> --错误信息(正常为空值) //</ReaderInfo> }
/// <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的记录"); } } }