diff --git a/src/CncCollector/Core/CollectRecordWriter.cs b/src/CncCollector/Core/CollectRecordWriter.cs
index fcbd9d1..98e34b2 100644
--- a/src/CncCollector/Core/CollectRecordWriter.cs
+++ b/src/CncCollector/Core/CollectRecordWriter.cs
@@ -28,9 +28,11 @@ namespace CncCollector.Core
/// 响应耗时(毫秒)
/// 是否采集成功
/// 错误信息(失败时)
+ /// 产量分析日志摘要(成功时写入)
public static long WriteBatch(string businessConnStr, string logConnStr,
List records, string rawJson, int collectAddressId,
- DateTime requestTime, long? responseDurationMs, bool isSuccess, string errorMessage, int? statusCode = null)
+ DateTime requestTime, long? responseDurationMs, bool isSuccess, string errorMessage, int? statusCode = null,
+ string analysisSummary = null)
{
var now = DateTime.Now;
long lastRawLogId = 0;
@@ -41,8 +43,8 @@ namespace CncCollector.Core
using (var conn = new MySqlConnection(logConnStr))
{
conn.Open();
- conn.Execute(@"INSERT INTO log_collect_raw (collect_address_id, request_time, response_time, response_duration, is_success, status_code, raw_json, error_message, created_at)
- VALUES (@CollectAddressId, @RequestTime, @ResponseTime, @ResponseDuration, @IsSuccess, @StatusCode, @RawJson, @ErrorMessage, @CreatedAt)",
+ conn.Execute(@"INSERT INTO log_collect_raw (collect_address_id, request_time, response_time, response_duration, is_success, status_code, raw_json, error_message, analysis_summary, created_at)
+ VALUES (@CollectAddressId, @RequestTime, @ResponseTime, @ResponseDuration, @IsSuccess, @StatusCode, @RawJson, @ErrorMessage, @AnalysisSummary, @CreatedAt)",
new
{
CollectAddressId = collectAddressId,
@@ -53,6 +55,7 @@ namespace CncCollector.Core
StatusCode = statusCode ?? (isSuccess ? (int?)200 : null),
RawJson = rawJson ?? "",
ErrorMessage = errorMessage ?? (string)null,
+ AnalysisSummary = analysisSummary ?? (string)null,
CreatedAt = now
});
// 记录刚插入的 raw_log 的自增ID
diff --git a/src/CncCollector/Core/CollectWorker.cs b/src/CncCollector/Core/CollectWorker.cs
index 66748c6..0f3002d 100644
--- a/src/CncCollector/Core/CollectWorker.cs
+++ b/src/CncCollector/Core/CollectWorker.cs
@@ -419,6 +419,14 @@ namespace CncCollector.Core
var records = new List();
+ // 分析日志收集
+ var analysisLogs = new List();
+ analysisLogs.Add("========== CNC采集产量分析日志 ==========");
+ analysisLogs.Add("采集时间:" + collectTime.ToString("yyyy-MM-dd HH:mm:ss"));
+ analysisLogs.Add("采集地址:" + _address.Name);
+ analysisLogs.Add("本次共采集" + devices.Count + "台机床数据,分析结果如下:");
+ analysisLogs.Add("");
+
foreach (var deviceToken in devices)
{
var deviceObj = deviceToken as JObject;
@@ -473,12 +481,23 @@ namespace CncCollector.Core
records.Add(record);
// 产量跟踪(program_name为空时不触发分段逻辑)
- _tracker.Track(machine.Id, record.ProgramName, record.PartCount, collectTime);
+ var (logText, changed, todayTotal) = _tracker.Track(
+ machine.Id, record.ProgramName, record.TotalPartCount, collectTime);
+ analysisLogs.Add("---机床:" + machine.Name + "---");
+ analysisLogs.Add("采集到:程序名=" + (record.ProgramName ?? "(空)") + ",加工零件总数=" + (record.TotalPartCount?.ToString() ?? "(空)"));
+ analysisLogs.Add("处理结果:" + logText);
+ analysisLogs.Add("当日该机床累计产量:" + todayTotal.ToString("F0") + "个");
+ analysisLogs.Add("");
}
+ // 拼接分析日志
+ analysisLogs.Add("---本日产量汇总---");
+ analysisLogs.Add("==========================================");
+ var analysisText = string.Join("\n", analysisLogs);
+
// 4. 批量写入
long rawLogId = CollectRecordWriter.WriteBatch(_businessConnStr, _logConnStr, records, rawJson,
- _address.Id, requestTime, durationMs, true, null, statusCode);
+ _address.Id, requestTime, durationMs, true, null, statusCode, analysisText);
// 采集分析:将分析任务委托给 AnalysisEngine
if (rawLogId > 0 && records != null && records.Count > 0 && _analysisEngine != null)