EapAsyncService.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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 System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading;
  13. using System.Threading.Tasks;
  14. namespace DllEapBll.Services
  15. {
  16. public class EapAsyncService
  17. {
  18. public void DoCollectEapData()
  19. {
  20. Console.OutputEncoding = Encoding.Default;
  21. LogHelper<McaEventStatisticByDayDal>.LogFatal("开始执行=====", "EapAsync", string.Empty);
  22. var builder = new ConfigurationBuilder()
  23. .Add(new JsonConfigurationSource
  24. {
  25. Path = "appsettings.json",
  26. ReloadOnChange = true
  27. })
  28. .Build();
  29. IConfigurationSection dbSection = builder.GetSection("eap");
  30. var conn = dbSection.GetValue<string>("ConnectionStrings");
  31. var timeSpan = builder.GetValue<int>("timespan");
  32. // var conn = "Server=127.0.0.1;Port=3306;Database=eap;Uid=root;Pwd=zhangxize;Charset=utf8;";
  33. while (true)
  34. {
  35. Task.Run(() =>
  36. {
  37. IDatabase eapdb = null;
  38. var history = new EapAsyncHistory()
  39. {
  40. AsyncTime = DateTime.Now,
  41. IsSuccess = 1,
  42. Remark = string.Empty
  43. };
  44. try
  45. {
  46. eapdb = DbFactory.Base(conn, DatabaseType.MySql);
  47. eapdb.BeginTrans();
  48. var dal = new McaEventStatisticByDayDal(eapdb);
  49. string error = string.Empty;
  50. if (dal.Async(DateTime.Now, ref error) < 0)
  51. {
  52. eapdb.Rollback();
  53. LogHelper<McaEventStatisticByDayDal>.LogError(error, "EapAsync", string.Empty);
  54. history.IsSuccess = -1;
  55. history.Remark = error;
  56. InsertHistory(history);
  57. return;
  58. }
  59. eapdb.Commit();
  60. InsertHistory(history);
  61. LogHelper<McaEventStatisticByDayDal>.LogError("汇总成功", "EapAsync", string.Empty);
  62. }
  63. catch (Exception e)
  64. {
  65. if (eapdb != null)
  66. eapdb.Rollback();
  67. LogHelper<McaEventStatisticByDayDal>.LogError(e.Message, "EapAsync", string.Empty);
  68. LogHelper<McaEventStatisticByDayDal>.LogError(e.StackTrace, "EapAsync", string.Empty);
  69. history.IsSuccess = -1;
  70. history.Remark = e.Message;
  71. InsertHistory(history);
  72. }
  73. finally
  74. {
  75. if (eapdb != null)
  76. {
  77. eapdb.Close();
  78. }
  79. }
  80. });
  81. Task.Run(() =>
  82. {
  83. IDatabase db = null;
  84. try
  85. {
  86. db = DbFactory.Base(conn, DatabaseType.MySql);
  87. db.BeginTrans();
  88. var historyDal = new EapAsyncHistoryDal(db);
  89. var fails = historyDal.Get($" and a.issuccess=-1");
  90. if (fails != null && fails.Count() > 0)
  91. {
  92. }
  93. }
  94. catch (Exception e)
  95. {
  96. }
  97. });
  98. Thread.Sleep(timeSpan * 60 * 1000);
  99. }
  100. }
  101. /// <summary>
  102. /// 新增汇总记录
  103. /// </summary>
  104. /// <param name="history"></param>
  105. private void InsertHistory(EapAsyncHistory history)
  106. {
  107. var builder = new ConfigurationBuilder()
  108. .Add(new JsonConfigurationSource
  109. {
  110. Path = "appsettings.json",
  111. ReloadOnChange = true
  112. })
  113. .Build();
  114. IConfigurationSection dbSection = builder.GetSection("eap");
  115. var conn = dbSection.GetValue<string>("ConnectionStrings");
  116. using (IDatabase db = DbFactory.Base(conn, DatabaseType.MySql))
  117. {
  118. var dal = new EapAsyncHistoryDal(db);
  119. string errorinfo = string.Empty;
  120. if (dal.Insert(history, ref errorinfo) < 0)
  121. {
  122. LogHelper<EapAsyncService>.LogError("新增汇总历史记录失败", "EapAsync", string.Empty);
  123. }
  124. }
  125. }
  126. }
  127. }