chenluhua1980
2026-01-14 02a406fb7e3d635dca0ef87914fee54c7fd6bd3c
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: 在此添加消息处理程序代码和/或调用默认值
   if (nIDEvent == 1) {
      ProductionShiftSummary outSummary;
      if (TryGetShiftSummary(outSummary)) {
         TRACE("OnTimer outSummary.output.pairsPass:%d\n", outSummary.output.pairsPass);
      }
   }
   CDialogEx::OnTimer(nIDEvent);
}