From 7d6d1769b7b76366fd20ab4358b8c10ce067d04f Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期四, 18 十二月 2025 12:04:54 +0800
Subject: [PATCH] 1.生产数据统计链路已打通。待UI显示;
---
SourceCode/Bond/Servo/ProductionStats.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/ProductionStats.h b/SourceCode/Bond/Servo/ProductionStats.h
new file mode 100644
index 0000000..84c8cb5
--- /dev/null
+++ b/SourceCode/Bond/Servo/ProductionStats.h
@@ -0,0 +1,58 @@
+#pragma once
+
+#include <chrono>
+#include <map>
+#include <string>
+
+class CConfiguration;
+
+enum class ProductionShiftType : int {
+ Day = 1,
+ Night = 2
+};
+
+struct ProductionShiftWindow {
+ ProductionShiftType type{ ProductionShiftType::Day };
+ std::chrono::system_clock::time_point start{};
+ std::chrono::system_clock::time_point end{};
+ std::string startLocal; // "YYYY-MM-DD HH:MM:SS"
+ std::string endLocal; // "YYYY-MM-DD HH:MM:SS"
+ std::string startUtcIso; // "YYYY-MM-DDTHH:MM:SSZ"
+ std::string endUtcIso; // "YYYY-MM-DDTHH:MM:SSZ"
+};
+
+struct ProductionOutputSummary {
+ long long pairsTotal = 0; // "瀵规暟"
+ long long pairsPass = 0;
+ long long pairsFail = 0;
+ long long pairsNoResult = 0;
+ double yield = 0.0; // pairsPass / (pairsPass + pairsFail), 0 if denom==0
+};
+
+struct ProductionAlarmSummary {
+ int alarmsTriggered = 0; // start_time within shift window
+ int alarmsOverlapping = 0; // overlaps shift window (including active)
+ double downtimeMinutes = 0.0; // overlap minutes (best-effort)
+ std::map<int, int> bySeverity; // severity_level -> count (overlapping)
+};
+
+struct ProductionTransferSummary {
+ int transfersFinished = 0; // end_time within shift window
+ std::map<std::string, int> byStatus;
+ double avgCreateToEndSeconds = 0.0;
+};
+
+struct ProductionShiftSummary {
+ ProductionShiftWindow window;
+ ProductionOutputSummary output;
+ ProductionAlarmSummary alarms;
+ ProductionTransferSummary transfers;
+};
+
+class ProductionStats {
+public:
+ static bool GetCurrentShiftWindow(CConfiguration& config, ProductionShiftWindow& outWindow);
+ static bool ComputeCurrentShiftSummary(CConfiguration& config, ProductionShiftSummary& outSummary);
+ static void LogCurrentShiftSummary(CConfiguration& config);
+};
+
--
Gitblit v1.9.3