|
|
|
@ -30,7 +30,6 @@ namespace CncCollector.Core
|
|
|
|
private Timer _dailySummaryTimer;
|
|
|
|
private Timer _dailySummaryTimer;
|
|
|
|
private Timer _logCleanupTimer;
|
|
|
|
private Timer _logCleanupTimer;
|
|
|
|
private LogCleanupJob _logCleanupJob;
|
|
|
|
private LogCleanupJob _logCleanupJob;
|
|
|
|
private LogArchiveJob _logArchiveJob;
|
|
|
|
|
|
|
|
private DateTime _startTime;
|
|
|
|
private DateTime _startTime;
|
|
|
|
private long _totalSuccess;
|
|
|
|
private long _totalSuccess;
|
|
|
|
private long _totalFail;
|
|
|
|
private long _totalFail;
|
|
|
|
@ -60,8 +59,6 @@ namespace CncCollector.Core
|
|
|
|
_dailySummary = new DailySummaryJob(config.BusinessConnection);
|
|
|
|
_dailySummary = new DailySummaryJob(config.BusinessConnection);
|
|
|
|
// 初始化分析引擎(与业务库和日志库同源,后续按需调整)
|
|
|
|
// 初始化分析引擎(与业务库和日志库同源,后续按需调整)
|
|
|
|
_analysisEngine = new AnalysisEngine(config.BusinessConnection, config.LogConnection);
|
|
|
|
_analysisEngine = new AnalysisEngine(config.BusinessConnection, config.LogConnection);
|
|
|
|
// 初始化日志归档任务(保留30天)
|
|
|
|
|
|
|
|
_logArchiveJob = new LogArchiveJob(30);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
@ -184,10 +181,11 @@ namespace CncCollector.Core
|
|
|
|
/// 手动执行日终汇总(指定日期)
|
|
|
|
/// 手动执行日终汇总(指定日期)
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="summaryDate">要汇总的日期</param>
|
|
|
|
/// <param name="summaryDate">要汇总的日期</param>
|
|
|
|
public void RunDailySummary(DateTime summaryDate)
|
|
|
|
/// <returns>true=汇总成功</returns>
|
|
|
|
|
|
|
|
public bool RunDailySummary(DateTime summaryDate)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_log.Info($"手动触发日终汇总(日期={summaryDate:yyyy-MM-dd})");
|
|
|
|
_log.Info($"手动触发日终汇总(日期={summaryDate:yyyy-MM-dd})");
|
|
|
|
_dailySummary.Execute(summaryDate);
|
|
|
|
return _dailySummary.Execute(summaryDate);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
@ -331,17 +329,22 @@ namespace CncCollector.Core
|
|
|
|
var now = DateTime.Now;
|
|
|
|
var now = DateTime.Now;
|
|
|
|
var targetTime = new DateTime(now.Year, now.Month, now.Day, summaryTime.Hours, summaryTime.Minutes, 0);
|
|
|
|
var targetTime = new DateTime(now.Year, now.Month, now.Day, summaryTime.Hours, summaryTime.Minutes, 0);
|
|
|
|
|
|
|
|
|
|
|
|
// 检查是否到了汇总时间(±1分钟内)
|
|
|
|
// 检查是否到了汇总时间(±2分钟内,比之前±1分钟更宽松,防止定时器偏移导致错过窗口)
|
|
|
|
if (Math.Abs((now - targetTime).TotalMinutes) <= 1)
|
|
|
|
if (Math.Abs((now - targetTime).TotalMinutes) <= 2)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// 汇总昨天的数据
|
|
|
|
// 汇总昨天的数据
|
|
|
|
DateTime summaryDate = now.Date.AddDays(-1);
|
|
|
|
DateTime summaryDate = now.Date.AddDays(-1);
|
|
|
|
if (_lastSummaryDate != summaryDate)
|
|
|
|
if (_lastSummaryDate != summaryDate)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// 修复:只在汇总成功后设置 _lastSummaryDate,失败时允许重试
|
|
|
|
|
|
|
|
if (_dailySummary.Execute(summaryDate))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_lastSummaryDate = summaryDate;
|
|
|
|
_lastSummaryDate = summaryDate;
|
|
|
|
_dailySummary.Execute(summaryDate);
|
|
|
|
}
|
|
|
|
// 同步执行日志归档:把前一天的日志移到日期子目录
|
|
|
|
else
|
|
|
|
_logArchiveJob.Execute();
|
|
|
|
{
|
|
|
|
|
|
|
|
_log.Warn($"日终汇总失败(日期={summaryDate:yyyy-MM-dd}),将在下次检查时重试");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|