| | |
| | | m_pArm = pEquipment; |
| | | } |
| | | |
| | | CEquipment* CEquipment::getArm() |
| | | { |
| | | return m_pArm; |
| | | } |
| | | |
| | | void CEquipment::setBaseAlarmId(int nBaseId) |
| | | { |
| | | m_nBaseAlarmId = nBaseId; |
| | |
| | | return pGlass; |
| | | } |
| | | |
| | | int CEquipment::fetchedOutJob(const char* pszGlassId) |
| | | int CEquipment::fetchedOutJob(CJobDataB* pJobDataB) |
| | | { |
| | | if (m_pArm == nullptr) { |
| | | return -1; |
| | |
| | | |
| | | CGlass* pContext = nullptr; |
| | | for (auto iter = m_glassList.begin(); iter != m_glassList.end(); iter++) { |
| | | if ((*iter)->getID().compare(pszGlassId) == 0) { |
| | | if ((*iter)->getID().compare(pJobDataB->getGlassId()) == 0) { |
| | | pContext = (*iter); |
| | | m_glassList.erase(iter); |
| | | break; |
| | |
| | | return 0; |
| | | } |
| | | |
| | | int CEquipment::storedJob(const char* pszGlassId) |
| | | int CEquipment::storedJob(CJobDataB* pJobDataB) |
| | | { |
| | | if (m_pArm == nullptr) { |
| | | return -1; |
| | |
| | | return m_recipesManager.decodeRecipeParameterReport(pszData, size); |
| | | } |
| | | |
| | | int CEquipment::decodeProcessDataReport(CStep* pStep, const char* pszData, size_t size) |
| | | { |
| | | CProcessData processData; |
| | | int nRet = processData.unserialize(&pszData[0], (int)size); |
| | | if (nRet < 0) return nRet; |
| | | |
| | | // 缓存Attribute,用于调试时显示信息 |
| | | unsigned int weight = 201; |
| | | CAttributeVector attrubutes; |
| | | processData.getAttributeVector(attrubutes, weight); |
| | | pStep->addAttributeVector(attrubutes); |
| | | |
| | | |
| | | onProcessData(&processData); |
| | | |
| | | return nRet; |
| | | } |
| | | |
| | | int CEquipment::decodeReceivedJobReport(CStep* pStep, int port, const char* pszData, size_t size) |
| | | { |
| | | CJobDataS jobDataS; |
| | |
| | | int CEquipment::onReceivedJob(int port, CJobDataS* pJobDataS) |
| | | { |
| | | LOGI("<CEquipment-%s>onReceivedJob.", m_strName.c_str()); |
| | | // return fetchedOutJob(pszGlassId); |
| | | |
| | | addJobDataS(pJobDataS); |
| | | return 0; |
| | | } |
| | | |
| | |
| | | int CEquipment::onSentOutJob(int port, CJobDataS* pJobDataS) |
| | | { |
| | | LOGI("<CEquipment-%s>onSentOutJob.", m_strName.c_str()); |
| | | // return fetchedOutJob(pszGlassId); |
| | | |
| | | int count = removeJobDataS(pJobDataS->getCassetteSequenceNo(), pJobDataS->getJobSequenceNo()); |
| | | if (count == 1) { |
| | | LOGI("<CEquipment-%s>onSentOutJob,删除数据 %d 条", m_strName.c_str(), count); |
| | | } |
| | | else { |
| | | LOGE("<CEquipment-%s>onSentOutJob,删除数据 %d 条,注意排查风险", m_strName.c_str(), count); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | |
| | | jobDataB.getGlassId().c_str(), "", weight++)); |
| | | |
| | | |
| | | onFetchedOutJob(port, jobDataB.getGlassId().c_str()); |
| | | onFetchedOutJob(port, &jobDataB); |
| | | |
| | | return index; |
| | | } |
| | | |
| | | int CEquipment::onFetchedOutJob(int port, const char* pszGlassId) |
| | | int CEquipment::onPreFetchedOutJob(int port, CJobDataB* pJobDataB) |
| | | { |
| | | LOGI("<CEquipment-%s>onPreFetchedOutJob:port:%d|GlassId:%s", |
| | | m_strName.c_str(), port, pJobDataB->getGlassId().c_str()); |
| | | return TRUE; |
| | | } |
| | | |
| | | int CEquipment::onFetchedOutJob(int port, CJobDataB* pJobDataB) |
| | | { |
| | | LOGI("<CEquipment-%s>onFetchedOutJob:port:%d|GlassId:%s", |
| | | m_strName.c_str(), port, pszGlassId); |
| | | return fetchedOutJob(pszGlassId); |
| | | m_strName.c_str(), port, pJobDataB->getGlassId().c_str()); |
| | | |
| | | BOOL bCheck = onPreFetchedOutJob(port, pJobDataB); |
| | | if (bCheck) { |
| | | return fetchedOutJob(pJobDataB); |
| | | } |
| | | |
| | | // 数据异常,处理或显示 |
| | | LOGI("<CEquipment-%s>onFetchedOutJob Error.ort:%d|GlassId:%s", |
| | | m_strName.c_str(), port, pJobDataB->getGlassId().c_str()); |
| | | return -1; |
| | | } |
| | | |
| | | int CEquipment::decodeStoredJobReport(CStep* pStep, int port, const char* pszData, size_t size) |
| | |
| | | jobDataB.getGlassId().c_str(), "", weight++)); |
| | | |
| | | |
| | | onStoreJob(port, jobDataB.getGlassId().c_str()); |
| | | onStoredJob(port, &jobDataB); |
| | | |
| | | return index; |
| | | } |
| | | |
| | | int CEquipment::onStoreJob(int port, const char* pszGlassId) |
| | | int CEquipment::onPreStoredJob(int port, CJobDataB* pJobDataB) |
| | | { |
| | | LOGI("<CEquipment-%s>onPreStoredJob:port:%d|GlassId:%s", |
| | | m_strName.c_str(), port, pJobDataB->getGlassId().c_str()); |
| | | return TRUE; |
| | | } |
| | | |
| | | int CEquipment::onStoredJob(int port, CJobDataB* pJobDataB) |
| | | { |
| | | LOGI("<CEquipment-%s>onStore:port:%d|GlassId:%s", |
| | | m_strName.c_str(), port, pszGlassId); |
| | | return storedJob(pszGlassId); |
| | | m_strName.c_str(), port, pJobDataB->getGlassId().c_str()); |
| | | |
| | | BOOL bCheck = onPreStoredJob(port, pJobDataB); |
| | | if (bCheck) { |
| | | addJobDataB(pJobDataB); |
| | | return storedJob(pJobDataB); |
| | | } |
| | | |
| | | // 数据异常,处理或显示 |
| | | LOGI("<CEquipment-%s>onStoredJob Error.ort:%d|GlassId:%s", |
| | | m_strName.c_str(), port, pJobDataB->getGlassId().c_str()); |
| | | return -1; |
| | | } |
| | | |
| | | int CEquipment::onProcessData(CProcessData* pProcessData) |
| | | { |
| | | LOGI("<CEquipment-%s>onProcessData.", m_strName.c_str()); |
| | | return 0; |
| | | } |
| | | |
| | | int CEquipment::addJobDataB(CJobDataB* pJobDataB) |
| | | { |
| | | // 添加之前先删除旧的,以免数据重复 |
| | | Lock(); |
| | | int count = removeJobDataB(pJobDataB->getCassetteSequenceNo(), pJobDataB->getJobSequenceNo()); |
| | | if (count > 0) { |
| | | LOGE("<CEquipment-%s>addJobDataB,删除重复数据 %d 条,注意排查风险", m_strName.c_str(), count); |
| | | } |
| | | |
| | | m_listJobDataB.push_back(std::move(*pJobDataB)); |
| | | Unlock(); |
| | | |
| | | return (int)m_listJobDataB.size(); |
| | | } |
| | | |
| | | int CEquipment::removeJobDataB(int nCassetteSequenceNo, int nJobSequenceNo) |
| | | { |
| | | int count = 0; |
| | | for (auto it = m_listJobDataB.begin(); it != m_listJobDataB.end(); ) { |
| | | if ((*it).getCassetteSequenceNo() == nCassetteSequenceNo |
| | | && (*it).getJobSequenceNo() == nJobSequenceNo) { |
| | | it = m_listJobDataB.erase(it); |
| | | count++; |
| | | } |
| | | else { |
| | | ++it; |
| | | } |
| | | } |
| | | |
| | | return count; |
| | | } |
| | | |
| | | CJobDataB* CEquipment::getJobDataB(int nCassetteSequenceNo, int nJobSequenceNo) |
| | | { |
| | | for (auto& item : m_listJobDataB) { |
| | | if (item.getCassetteSequenceNo() == nCassetteSequenceNo |
| | | && item.getJobSequenceNo() == nJobSequenceNo) { |
| | | return &item; |
| | | } |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | int CEquipment::addJobDataS(CJobDataS* pJobDataS) |
| | | { |
| | | // 添加之前先删除旧的,以免数据重复 |
| | | Lock(); |
| | | int count = removeJobDataS(pJobDataS->getCassetteSequenceNo(), pJobDataS->getJobSequenceNo()); |
| | | if (count > 0) { |
| | | LOGE("<CEquipment-%s>addJobDataS,删除重复数据 %d 条,注意排查风险", m_strName.c_str(), count); |
| | | } |
| | | |
| | | m_listJobDataS.push_back(std::move(*pJobDataS)); |
| | | Unlock(); |
| | | |
| | | return (int)m_listJobDataB.size(); |
| | | } |
| | | |
| | | int CEquipment::removeJobDataS(int nCassetteSequenceNo, int nJobSequenceNo) |
| | | { |
| | | int count = 0; |
| | | Lock(); |
| | | for (auto it = m_listJobDataS.begin(); it != m_listJobDataS.end(); ) { |
| | | if ((*it).getCassetteSequenceNo() == nCassetteSequenceNo |
| | | && (*it).getJobSequenceNo() == nJobSequenceNo) { |
| | | it = m_listJobDataS.erase(it); |
| | | count++; |
| | | } |
| | | else { |
| | | ++it; |
| | | } |
| | | } |
| | | Unlock(); |
| | | |
| | | return count; |
| | | } |
| | | |
| | | CJobDataS* CEquipment::getJobDataS(int nCassetteSequenceNo, int nJobSequenceNo) |
| | | { |
| | | for (auto& item : m_listJobDataS) { |
| | | if (item.getCassetteSequenceNo() == nCassetteSequenceNo |
| | | && item.getJobSequenceNo() == nJobSequenceNo) { |
| | | return &item; |
| | | } |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | } |