chenluhua1980
2025-11-14 050d4ab486dbec6f183bd27882c79048e4c687bd
1.修复两个Job相关的问题;
已修改1个文件
38 ■■■■ 文件已修改
SourceCode/Bond/Servo/CControlJobManagerDlg.cpp 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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,22 +592,24 @@
        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());
                pJobDataS->setProductId(pj->getProductId().c_str());
                pJobDataS->setOperationId(pj->getOperationId().c_str());
@@ -639,8 +641,6 @@
                }
            }
        }
    }
    // process start
    for (int p = 0; p < 4; p++) {