DBScaner.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using MediII.Adapter.Scan.Interface;
  6. using NHapi.Base.Model;
  7. using System.Collections.Concurrent;
  8. using NHapi.Base.Parser;
  9. using Microsoft.Practices.EnterpriseLibrary.Common;
  10. using Microsoft.Practices.EnterpriseLibrary.Data;
  11. using System.Data.Common;
  12. using System.Threading.Tasks;
  13. using System.Data;
  14. using MediII.Adapter.ReceiveToKCModel;
  15. using IL.Common;
  16. namespace MediII.Adapter.Scanner
  17. {
  18. public abstract class DBScaner : BaseScan
  19. {
  20. PipeParser parser = new PipeParser();
  21. DatabaseProviderFactory factory = new DatabaseProviderFactory();
  22. //数据库连接
  23. protected Database ctx;
  24. public DBScaner()
  25. {
  26. ctx = factory.CreateDefault();
  27. }
  28. protected override void OnStart()
  29. {
  30. string typeName = this.GetType().Name.Trim();
  31. MediII.Common.LogHelper.LogInfo(string.Format("Scaner:{0} Started...", typeName), Common.LogCatagories.MQAccess);
  32. var entity = GetSaoMiao(typeName);
  33. if (entity == null)
  34. {
  35. LastTime = GetNow().AddDays(-1);
  36. }
  37. else
  38. {
  39. if (entity.IsDel == 1)
  40. {
  41. this.Stop();
  42. return;
  43. }
  44. MediII.Common.LogHelper.LogInfo(string.Format("Scaner:{0} Started...", typeName), Common.LogCatagories.MQAccess);
  45. int minus = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["AddMinues"]);
  46. if (AddMinusDay)
  47. LastTime = entity.ExecuteTime.AddDays(-1);
  48. else
  49. LastTime = entity.ExecuteTime;
  50. //设置扫描间隔
  51. var jianGe = entity.IntervalTime;
  52. if (jianGe != null)
  53. {
  54. this.Interval = (int)jianGe;
  55. MediII.Common.LogHelper.LogInfo(string.Format("Scaner:{0} jianGe:{1}", typeName, this.Interval), Common.LogCatagories.MQAccess);
  56. }
  57. }
  58. }
  59. private HL7_MessageSetEntity GetSaoMiao(string typeName)
  60. {
  61. var sql = string.Format("select * from HL7_MessageSet where MessageType=2 and MessageId = '{0}'", typeName);
  62. var entity = SqlDataAccess.ExecuteSqlStringAccessor<HL7_MessageSetEntity>(ctx, sql).FirstOrDefault();
  63. return entity;
  64. }
  65. protected override void OnStop()
  66. {
  67. SetNewExecTime(LastTime);
  68. }
  69. protected override void OnElapsed(DateTime elapsedTime)
  70. {
  71. SetNewExecTime(elapsedTime);
  72. }
  73. /// <summary>
  74. /// 最后执行时间
  75. /// </summary>
  76. /// <param name="elapsedTime"></param>
  77. private void SetNewExecTime(DateTime elapsedTime)
  78. {
  79. try
  80. {
  81. var typeName = this.GetType().Name.Trim();
  82. var sql = "update HL7_MessageSet set ExecuteTime = @ExecuteTime where MessageId=@MessageId";
  83. var dbCommand = SqlDataAccess.GetSqlStringCommand(ctx, sql);
  84. SqlDataAccess.AddInParameter(ctx, dbCommand, "ExecuteTime", System.Data.DbType.DateTime, elapsedTime);
  85. SqlDataAccess.AddInParameter(ctx, dbCommand, "MessageId", System.Data.DbType.AnsiString, typeName);
  86. SqlDataAccess.ExecuteNonQuery(ctx, dbCommand);
  87. }
  88. catch (Exception ex)
  89. {
  90. MediII.Common.LogHelper.LogError(ex, Common.LogCatagories.MQAccess);
  91. }
  92. }
  93. public override long GetMaxSCN()
  94. {
  95. return 0;
  96. }
  97. protected override DateTime GetNow()
  98. {
  99. try
  100. {
  101. return (DateTime)SqlDataAccess.ExecuteScalar(ctx, CommandType.Text, "select GETDATE()");
  102. }
  103. catch (Exception ex)
  104. {
  105. MediII.Common.LogHelper.LogError(ex, Common.LogCatagories.MQAccess);
  106. return DateTime.Now;
  107. }
  108. }
  109. }
  110. }