From da9df9d46ed3fc50e0c03497bd9f76b8aa1a4595 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期三, 14 一月 2026 15:37:48 +0800
Subject: [PATCH] 1.修复以下问题: 作业前置条件不足导致 PJ 验证失败:onPRJobMultiCreate 调 CMaster::setProcessJobs,CProcessJob::validate 要求“当前没有其它 PJ”(issue 1000),且 carrierPresent/slotUsable 必须为真。只要本地还有未结批的 PJ/CJ 或载具/槽位状态未就绪(ID 未绑、Slot 未使能),Host 发送的 CreateMultiPJ 会直接被丢弃(返回 size=0),但当前代码没有向 Host 回 ACK/NAK,Host 会误以为创建成功。
---
SourceCode/Bond/Servo/CPanelProduction.cpp | 38 ++++++++++++++++++++++++++------------
1 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/SourceCode/Bond/Servo/CPanelProduction.cpp b/SourceCode/Bond/Servo/CPanelProduction.cpp
index 814a631..f3a5ab2 100644
--- a/SourceCode/Bond/Servo/CPanelProduction.cpp
+++ b/SourceCode/Bond/Servo/CPanelProduction.cpp
@@ -24,6 +24,7 @@
m_pStatsThread = nullptr;
m_pAccordionWnd = nullptr;
m_pPageProdOverview = nullptr;
+ m_pPageCtrlState = nullptr;
}
CPanelProduction::~CPanelProduction()
@@ -77,6 +78,12 @@
m_pAccordionWnd->Setpadding(PADDING_BOTTOM, 2);
m_pAccordionWnd->LoadExpandIcon(strExpandIcon, strCloseIcon);
+ m_pPageCtrlState = new CPageCtrlState();
+ m_pPageCtrlState->SetBackgroundColor(m_crBkgnd);
+ m_pPageCtrlState->Create(IDD_PROD_CTRL_STATE, GetDlgItem(IDC_ACCORDION_WND1));
+ m_pPageCtrlState->ShowWindow(SW_HIDE);
+ m_pAccordionWnd->AddItem("鐘舵��", m_pPageCtrlState, 120, TRUE, TRUE);
+
m_pPageProdOverview = new CPageProdOverview();
m_pPageProdOverview->SetBackgroundColor(m_crBkgnd);
m_pPageProdOverview->Create(IDD_PROD_OVERVIEW, GetDlgItem(IDC_ACCORDION_WND1));
@@ -111,6 +118,17 @@
StopStatsThread();
CDialogEx::OnDestroy();
+
+ if (m_pPageCtrlState != nullptr) {
+ m_pPageCtrlState->DestroyWindow();
+ delete m_pPageCtrlState;
+ m_pPageCtrlState = nullptr;
+ }
+ if (m_pPageProdOverview != nullptr) {
+ m_pPageProdOverview->DestroyWindow();
+ delete m_pPageProdOverview;
+ m_pPageProdOverview = nullptr;
+ }
if (m_hbrBkgnd != nullptr) {
::DeleteObject(m_hbrBkgnd);
@@ -156,11 +174,12 @@
}
}
-BOOL CPanelProduction::TryGetShiftSummary(ProductionShiftSummary& outSummary)
+BOOL CPanelProduction::TryGetDayNightSummaries(ProductionShiftSummary& outDay, ProductionShiftSummary& outNight)
{
CSingleLock lock(&m_csShiftSummary, TRUE);
if (!m_bShiftSummaryValid) return FALSE;
- outSummary = m_shiftSummary;
+ outDay = m_daySummary;
+ outNight = m_nightSummary;
return TRUE;
}
@@ -197,10 +216,12 @@
for (;;) {
if (self->m_evStopStats.Lock(intervalMs)) break;
- ProductionShiftSummary summary;
- if (ProductionStats::ComputeCurrentShiftSummary(theApp.m_model.m_configuration, summary)) {
+ ProductionShiftSummary daySummary;
+ ProductionShiftSummary nightSummary;
+ if (ProductionStats::ComputeDayNightSummaries(theApp.m_model.m_configuration, daySummary, nightSummary)) {
CSingleLock lock(&self->m_csShiftSummary, TRUE);
- self->m_shiftSummary = std::move(summary);
+ self->m_daySummary = std::move(daySummary);
+ self->m_nightSummary = std::move(nightSummary);
self->m_bShiftSummaryValid = TRUE;
}
}
@@ -211,12 +232,5 @@
void CPanelProduction::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 鍦ㄦ娣诲姞娑堟伅澶勭悊绋嬪簭浠g爜鍜�/鎴栬皟鐢ㄩ粯璁ゅ��
- if (nIDEvent == 1) {
- ProductionShiftSummary outSummary;
- if (TryGetShiftSummary(outSummary)) {
- TRACE("OnTimer outSummary.output.pairsPass:%d\n", outSummary.output.pairsPass);
- }
- }
-
CDialogEx::OnTimer(nIDEvent);
}
--
Gitblit v1.9.3