using Cksoft.Data; using Cksoft.Data.Repository; using Cksoft.Unity.Log4NetConfig; using DllEapDal; using DllEapEntity; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace DllEapBll.Services { public class EapAsyncService { public void DoCollectEapData() { Console.OutputEncoding = Encoding.Default; LogHelper.LogFatal("开始执行=====", "EapAsync", string.Empty); var builder = new ConfigurationBuilder() .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true }) .Build(); IConfigurationSection dbSection = builder.GetSection("eap"); var conn = dbSection.GetValue("ConnectionStrings"); var timeSpan = builder.GetValue("timespan"); // var conn = "Server=127.0.0.1;Port=3306;Database=eap;Uid=root;Pwd=zhangxize;Charset=utf8;"; while (true) { Task.Run(() => { IDatabase eapdb = null; var history = new EapAsyncHistory() { AsyncTime = DateTime.Now, IsSuccess = 1, Remark = string.Empty }; try { eapdb = DbFactory.Base(conn, DatabaseType.MySql); eapdb.BeginTrans(); var dal = new McaEventStatisticByDayDal(eapdb); string error = string.Empty; if (dal.Async(DateTime.Now, ref error) < 0) { eapdb.Rollback(); LogHelper.LogError(error, "EapAsync", string.Empty); history.IsSuccess = -1; history.Remark = error; InsertHistory(history); return; } eapdb.Commit(); InsertHistory(history); LogHelper.LogError("汇总成功", "EapAsync", string.Empty); } catch (Exception e) { if (eapdb != null) eapdb.Rollback(); LogHelper.LogError(e.Message, "EapAsync", string.Empty); LogHelper.LogError(e.StackTrace, "EapAsync", string.Empty); history.IsSuccess = -1; history.Remark = e.Message; InsertHistory(history); } finally { if (eapdb != null) { eapdb.Close(); } } }); Task.Run(() => { IDatabase db = null; try { db = DbFactory.Base(conn, DatabaseType.MySql); db.BeginTrans(); var historyDal = new EapAsyncHistoryDal(db); var fails = historyDal.Get($" and a.issuccess=-1"); if (fails != null && fails.Count() > 0) { } } catch (Exception e) { } }); Thread.Sleep(timeSpan * 60 * 1000); } } /// /// 新增汇总记录 /// /// private void InsertHistory(EapAsyncHistory history) { var builder = new ConfigurationBuilder() .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true }) .Build(); IConfigurationSection dbSection = builder.GetSection("eap"); var conn = dbSection.GetValue("ConnectionStrings"); using (IDatabase db = DbFactory.Base(conn, DatabaseType.MySql)) { var dal = new EapAsyncHistoryDal(db); string errorinfo = string.Empty; if (dal.Insert(history, ref errorinfo) < 0) { LogHelper.LogError("新增汇总历史记录失败", "EapAsync", string.Empty); } } } } }