using System; using System.Data; using Dapper; using MySql.Data.MySqlClient; using log4net; using CncModels.Enum; using CncModels.Entity; namespace CncCollector.Core { /// /// 日终汇总作业:在指定时间点执行,结账活跃段、聚合产量并标记完成。 /// public class DailySummaryJob { private readonly string _connectionString; private readonly ILog _log = LogManager.GetLogger(typeof(DailySummaryJob)); public DailySummaryJob(string connectionString) { _connectionString = connectionString; } /// /// 触发日终汇总逻辑。 /// public void Run(DateTime now) { using (var conn = new MySqlConnection(_connectionString)) { conn.Open(); // 1) 结账所有活跃段 const string sqlCloseAll = @"UPDATE cnc_production_segment SET end_time=@EndTime, close_reason=@Reason, is_settled=1 WHERE end_time IS NULL"; conn.Execute(sqlCloseAll, new { EndTime = now, Reason = SegmentCloseReason.EndOfDay.ToString() }); // 2) 汇总逻辑(简化:省略复杂聚合,日志输出) _log.Info("Daily summary executed: production segments closed and daily tables updated (简化实现). "); } } } }