using MediII.Adapter.ReceiveToScanModel; using MediII.Adapter.Scanner; using System; using System.Configuration; using Microsoft.Practices.EnterpriseLibrary.Data; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using IL.Common; namespace MediII.Adapter.BizComponent.UE { public class HL7_Lock_Scanner : DBScaner { private int TaskRunTime = 5; public HL7_Lock_Scanner() { var tm = ConfigurationManager.AppSettings["TaskRunTime"]; if (!int.TryParse(tm, out TaskRunTime)) { TaskRunTime = 5; } } protected override long OnDo(DateTime dtEventTime, Action setLog) { if (setLog != null) setLog(new LogModel { Message = "开始一次解锁消息处理扫描 " }); var sql = string.Format(" SELECT * FROM dbo.HL7_Receive WHERE TaskStatus=2 AND StartTime(ctx, sql).Take(100).ToList(); if (listRow.Count() > 0) { process(listRow, setLog); } } catch (Exception ex) { if (setLog != null) setLog(new LogModel { Message = "解锁消息发生错误", ErrorMsg = ex.Message + "\r\n" + ex.StackTrace }); } return 1; } private void process(IEnumerable listRow, Action setLog) { listRow.ToList().ForEach(o => { try { if (setLog != null) setLog(new LogModel { Message = "解锁消息:"+o.MsgContent, MessageID = o.MessageID }); var sql = "UPDATE dbo.HL7_Receive SET TaskStatus=1,StartTime=NULL,TaskIP=NULL,TaskMsg = null, TaskMac=NULL WHERE ID=@ID"; var cmd = SqlDataAccess.GetSqlStringCommand(ctx, sql); SqlDataAccess.AddInParameter(ctx, cmd, "ID", DbType.String, o.ID); SqlDataAccess.ExecuteNonQuery(ctx, cmd); } catch (Exception ex) { if (setLog != null) setLog(new LogModel { Message = string.Format("解锁消息发生错误:HL7ReceiveID:{0}", o.ID), ErrorMsg = ex.Message + "\r\n" + ex.StackTrace }); } }); } } }