Program.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. using Cksoft.Data;
  2. using Cksoft.Data.Repository;
  3. using Cksoft.Unity.Log4NetConfig;
  4. using DllEapDal;
  5. using DllEapEntity;
  6. using Microsoft.Extensions.Configuration;
  7. using Microsoft.Extensions.Configuration.Json;
  8. using SharpCifs.Util.Sharpen;
  9. using System;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. namespace EapAsyncForLinux
  14. {
  15. class Program
  16. {
  17. static void Main(string[] args)
  18. {
  19. Console.OutputEncoding = Encoding.Default;
  20. Console.WriteLine("开始执行");
  21. var builder = new ConfigurationBuilder()
  22. .Add(new JsonConfigurationSource
  23. {
  24. Path = "appsettings.json",
  25. ReloadOnChange = true
  26. })
  27. .Build();
  28. IConfigurationSection dbSection = builder.GetSection("eap");
  29. var conn = dbSection.GetValue<string>("ConnectionStrings");
  30. var timeSpan = builder.GetValue<int>("timespan");
  31. // var conn = "Server=127.0.0.1;Port=3306;Database=eap;Uid=root;Pwd=zhangxize;Charset=utf8;";
  32. Task.Run(() =>
  33. {
  34. while (true)
  35. {
  36. LogHelper<Program>.LogFatal("开始处理汇总失败记录---------", "EapAsync", string.Empty);
  37. string errorinfo = string.Empty;
  38. using (IDatabase db = DbFactory.Base(conn, DatabaseType.MySql))
  39. {
  40. var dal = new McaEventStatisticByDayDal(db);
  41. dal.AsyncFails(conn, DatabaseType.MySql, ref errorinfo);
  42. }
  43. Thread.Sleep(1000 * 60 * 23);
  44. }
  45. });
  46. while (true)
  47. {
  48. Task.Run(() =>
  49. {
  50. IDatabase eapdb = null;
  51. var history = new EapAsyncHistory()
  52. {
  53. AsyncTime = DateTime.Now,
  54. IsSuccess = 1,
  55. Remark = string.Empty
  56. };
  57. try
  58. {
  59. eapdb = DbFactory.Base(conn, DatabaseType.MySql);
  60. eapdb.BeginTrans();
  61. var dal = new McaEventStatisticByDayDal(eapdb);
  62. string error = string.Empty;
  63. if (dal.Async(DateTime.Now, ref error) < 0)
  64. {
  65. eapdb.Rollback();
  66. LogHelper<McaEventStatisticByDayDal>.LogError(error, "EapAsync", string.Empty);
  67. history.IsSuccess = -1;
  68. history.Remark = error;
  69. InsertHistory(history);
  70. return;
  71. }
  72. eapdb.Commit();
  73. InsertHistory(history);
  74. LogHelper<McaEventStatisticByDayDal>.LogError("汇总成功", "EapAsync", string.Empty);
  75. }
  76. catch (Exception e)
  77. {
  78. if (eapdb != null)
  79. eapdb.Rollback();
  80. LogHelper<McaEventStatisticByDayDal>.LogError(e.Message, "EapAsync", string.Empty);
  81. LogHelper<McaEventStatisticByDayDal>.LogError(e.StackTrace, "EapAsync", string.Empty);
  82. history.IsSuccess = -1;
  83. history.Remark = e.Message;
  84. InsertHistory(history);
  85. }
  86. finally
  87. {
  88. if (eapdb != null)
  89. {
  90. eapdb.Close();
  91. eapdb.Dispose();
  92. }
  93. }
  94. });
  95. Thread.Sleep(timeSpan * 60 * 1000);
  96. }
  97. }
  98. static void InsertHistory(EapAsyncHistory history)
  99. {
  100. var builder = new ConfigurationBuilder()
  101. .Add(new JsonConfigurationSource
  102. {
  103. Path = "appsettings.json",
  104. ReloadOnChange = true
  105. })
  106. .Build();
  107. IConfigurationSection dbSection = builder.GetSection("eap");
  108. var conn = dbSection.GetValue<string>("ConnectionStrings");
  109. using (IDatabase db = DbFactory.Base(conn, DatabaseType.MySql))
  110. {
  111. var dal = new EapAsyncHistoryDal(db);
  112. string errorinfo = string.Empty;
  113. if (dal.Insert(history, ref errorinfo) < 0)
  114. {
  115. LogHelper<EapAsyncForLinux.Program>.LogError("新增汇总历史记录失败", "EapAsync", string.Empty);
  116. }
  117. }
  118. }
  119. }
  120. }