mrDarker
6 天以前 829fe6c6bc33d53fda9c31fd45a37e1df87befff
SourceCode/Bond/Servo/CControlJobManagerDlg.cpp
@@ -534,15 +534,6 @@
   m_pControlJob->setPJs(pjs);
   m_pControlJob->clearIssues();
   int nRet = master.setProcessJobs(pjs);
   // 没有问题的pj要释放
   for (auto pj : pjs) {
      if (!pj->issues().empty()) {
         delete pj;
      }
   }
   pjs.clear();
   if (nRet <= 0) {
      std::string msg("同步Process Job失败!");
      for (auto pj : pjs) {
@@ -559,11 +550,20 @@
               msg.append("\n");
            }
         }
         delete pj;
      }
      pjs.clear();
      AfxMessageBox(msg.c_str());
      return;
   }
   // 继续释放有问题的 ProcessJob
   for (auto pj : pjs) {
      if (!pj->issues().empty()) {
         delete pj;
      }
   }
   pjs.clear();
   nRet = master.setControlJob(*m_pControlJob);
   if (nRet != 0) {
@@ -592,55 +592,55 @@
      SERVO::CLoadPort* pLoadPort = pPorts[m_pjWarps[p].port];
      for (int i = 0; i < SLOT_MAX; ++i) {
         SERVO::CSlot* pSlot = pLoadPort->getSlot(i);
         if (!pSlot) {
            continue;
         }
         if (!pSlot) continue;
         SERVO::CGlass* pGlass = dynamic_cast<SERVO::CGlass*>(pSlot->getContext());
         if (pGlass == nullptr) continue;
         SERVO::CJobDataS* pJobDataS = pGlass->getJobDataS();
         if (pJobDataS == nullptr) continue;
         // 设置 Panel ID 和勾选框
         SERVO::CProcessJob* pj = (SERVO::CProcessJob*)m_pjWarps[p].pj;
         int nRecipeID = RecipeManager::getInstance().getIdByPPID(pj->recipeSpec());
         RecipeInfo stRecipeInfo = RecipeManager::getInstance().getRecipeByPPID(pj->recipeSpec());
         std::vector<DeviceRecipe> vecRecipeInfo = stRecipeInfo.vecDeviceList;
         SERVO::CGlass* pGlass = dynamic_cast<SERVO::CGlass*>(pSlot->getContext());
         SERVO::CJobDataS* pJobDataS = pGlass->getJobDataS();
         if (pGlass != nullptr && pJobDataS != nullptr) {
            pGlass->setScheduledForProcessing(m_pjWarps[p].checkSlot[i]);
            pGlass->setType(static_cast<SERVO::MaterialsType>(m_pjWarps[p].material[i]));
            SERVO::CJobDataS* pJobDataS = pGlass->getJobDataS();
            pJobDataS->setLotId(pj->getLotId().c_str());
         pGlass->setScheduledForProcessing(m_pjWarps[p].checkSlot[i]);
         pGlass->setType(static_cast<SERVO::MaterialsType>(m_pjWarps[p].material[i]));
         pJobDataS->setLotId(pj->getLotId().c_str());
            pJobDataS->setProductId(pj->getProductId().c_str());
            pJobDataS->setOperationId(pj->getOperationId().c_str());
            pJobDataS->setMaterialsType(m_pjWarps[p].material[i]);
            pJobDataS->setMasterRecipe(nRecipeID);
            for (const auto& info : vecRecipeInfo) {
               const std::string& name = info.strDeviceName;
               short nRecipeID = (short)info.nRecipeID;
         for (const auto& info : vecRecipeInfo) {
            const std::string& name = info.strDeviceName;
            short nRecipeID = (short)info.nRecipeID;
            
               if (name == EQ_NAME_EFEM) {
                  pJobDataS->setDeviceRecipeId(0, nRecipeID);
               }
               else if (name == EQ_NAME_BONDER1) {
                  pJobDataS->setDeviceRecipeId(1, nRecipeID);
               }
               else if (name == EQ_NAME_BONDER2) {
                  pJobDataS->setDeviceRecipeId(2, nRecipeID);
               }
               else if (name == EQ_NAME_BAKE_COOLING) {
                  pJobDataS->setDeviceRecipeId(3, nRecipeID);
               }
               else if (name == EQ_NAME_VACUUMBAKE) {
                  pJobDataS->setDeviceRecipeId(4, nRecipeID);
               }
               else if (name == EQ_NAME_MEASUREMENT) {
                  pJobDataS->setDeviceRecipeId(5, nRecipeID);
               }
            if (name == EQ_NAME_EFEM) {
               pJobDataS->setDeviceRecipeId(0, nRecipeID);
            }
            else if (name == EQ_NAME_BONDER1) {
               pJobDataS->setDeviceRecipeId(1, nRecipeID);
            }
            else if (name == EQ_NAME_BONDER2) {
               pJobDataS->setDeviceRecipeId(2, nRecipeID);
            }
            else if (name == EQ_NAME_BAKE_COOLING) {
               pJobDataS->setDeviceRecipeId(3, nRecipeID);
            }
            else if (name == EQ_NAME_VACUUMBAKE) {
               pJobDataS->setDeviceRecipeId(4, nRecipeID);
            }
            else if (name == EQ_NAME_MEASUREMENT) {
               pJobDataS->setDeviceRecipeId(5, nRecipeID);
            }
         }
      }
   }
   // process start
   for (int p = 0; p < 4; p++) {