LAPTOP-SNT8I5JK\Boounion
2025-07-16 789af4f4a7baee07bd6c2c03588afcb19555343b
SourceCode/Bond/Servo/CJobDataS.cpp
@@ -30,10 +30,18 @@
      m_nTargetPortNo = 0;
      m_nTargetSlotNo = 0;
      m_pRawData = nullptr;
      m_pOwner = nullptr;
      if (ENABLE_JOBDATAS_RAWDATA) {
         m_pRawData = new char[JOBDATAS_SIZE];
         serialize(m_pRawData, JOBDATAS_SIZE);
      }
   }
   CJobDataS::CJobDataS(CJobDataS&& other) noexcept
   {
      copy(&other);
      m_pRawData = other.m_pRawData;      // 偷资源
      other.m_pRawData = nullptr;         // 防止释放两次
   }
   CJobDataS::~CJobDataS()
@@ -42,6 +50,97 @@
         delete[] m_pRawData;
         m_pRawData = nullptr;
      }
   }
   void CJobDataS::copy(CJobDataS* pScr)
   {
      m_nCassetteSequenceNo = pScr->m_nCassetteSequenceNo;
      m_nJobSequenceNo = pScr->m_nJobSequenceNo;
      m_strLotId = pScr->m_strLotId;
      m_strProductId = pScr->m_strProductId;
      m_strOperationId = pScr->m_strOperationId;
      m_strGlass1Id = pScr->m_strGlass1Id;
      m_strGlass2Id = pScr->m_strGlass2Id;
      m_nJobType = pScr->m_nJobType;
      m_nMaterialsType = pScr->m_nMaterialsType;
      m_nProductType = pScr->m_nProductType;
      m_nDummyType = pScr->m_nDummyType;
      m_nSkipFlag = pScr->m_nSkipFlag;
      m_nProcessFlag = pScr->m_nProcessFlag;
      m_nProcessResonCode = pScr->m_nProcessResonCode;
      m_nLastGlassFlag = pScr->m_nLastGlassFlag;
      m_nFirstGlassFlag = pScr->m_nFirstGlassFlag;
      m_nQTime[0] = pScr->m_nQTime[0];
      m_nQTime[1] = pScr->m_nQTime[1];
      m_nQTime[2] = pScr->m_nQTime[2];
      m_nQTimeOverFlag = pScr->m_nQTimeOverFlag;
      m_nMasterRecipe = pScr->m_nMasterRecipe;
      m_strProductRecipeId = pScr->m_strProductRecipeId;
      m_strPCode = pScr->m_strPCode;
      m_strUseType = pScr->m_strUseType;
      m_strPanelMeasure = pScr->m_strPanelMeasure;
      m_nMode = pScr->m_nMode;
      m_nSlotUnitSelectFlag = pScr->m_nSlotUnitSelectFlag;
      m_nSourcePortNo = pScr->m_nSourcePortNo;
      m_nSourceSlotNo = pScr->m_nSourceSlotNo;
      m_nTargetPortNo = pScr->m_nTargetPortNo;
      m_nTargetSlotNo = pScr->m_nTargetSlotNo;
      m_pOwner = pScr->m_pOwner;
   }
   void CJobDataS::update(CJobDataS* pScr)
   {
      // m_nCassetteSequenceNo = pScr->m_nCassetteSequenceNo;
      // m_nJobSequenceNo = pScr->m_nJobSequenceNo;
      m_strLotId = pScr->m_strLotId;
      m_strProductId = pScr->m_strProductId;
      m_strOperationId = pScr->m_strOperationId;
      // m_strGlass1Id = pScr->m_strGlass1Id;
      m_strGlass2Id = pScr->m_strGlass2Id;
      m_nJobType = pScr->m_nJobType;
      m_nMaterialsType = pScr->m_nMaterialsType;
      m_nProductType = pScr->m_nProductType;
      m_nDummyType = pScr->m_nDummyType;
      m_nSkipFlag = pScr->m_nSkipFlag;
      m_nProcessFlag = pScr->m_nProcessFlag;
      m_nProcessResonCode = pScr->m_nProcessResonCode;
      m_nLastGlassFlag = pScr->m_nLastGlassFlag;
      m_nFirstGlassFlag = pScr->m_nFirstGlassFlag;
      m_nQTime[0] = pScr->m_nQTime[0];
      m_nQTime[1] = pScr->m_nQTime[1];
      m_nQTime[2] = pScr->m_nQTime[2];
      m_nQTimeOverFlag = pScr->m_nQTimeOverFlag;
      m_nMasterRecipe = pScr->m_nMasterRecipe;
      m_strProductRecipeId = pScr->m_strProductRecipeId;
      m_strPCode = pScr->m_strPCode;
      m_strUseType = pScr->m_strUseType;
      m_strPanelMeasure = pScr->m_strPanelMeasure;
      m_nMode = pScr->m_nMode;
      m_nSlotUnitSelectFlag = pScr->m_nSlotUnitSelectFlag;
      m_nSourcePortNo = pScr->m_nSourcePortNo;
      m_nSourceSlotNo = pScr->m_nSourceSlotNo;
      m_nTargetPortNo = pScr->m_nTargetPortNo;
      m_nTargetSlotNo = pScr->m_nTargetSlotNo;
      m_pOwner = pScr->m_pOwner;
   }
   CJobDataB& CJobDataS::getJobDataB(CJobDataB& jobDataB)
   {
      jobDataB.setCassetteSequenceNo(this->getCassetteSequenceNo());
      jobDataB.setJobSequenceNo(this->getJobSequenceNo());
      jobDataB.setGlassId(this->getGlass1Id().c_str());
      return jobDataB;
   }
   void* CJobDataS::getOwner()
   {
      return m_pOwner;
   }
   void CJobDataS::setOwner(void* pOwner)
   {
      m_pOwner = pOwner;
   }
   int CJobDataS::getCassetteSequenceNo()
@@ -455,7 +554,7 @@
   int CJobDataS::unserialize(const char* pszBuffer, int nBufferSize)
   {
      if (nBufferSize < 256 * 2) return -1;
      if (nBufferSize < JOBDATAS_SIZE) return -1;
      int index = 0;
      memcpy(&m_nCassetteSequenceNo, &pszBuffer[index], sizeof(short));
@@ -558,7 +657,7 @@
      }
      return 256 * 2;
      return JOBDATAS_SIZE;
   }
   void CJobDataS::getAttributeVector(CAttributeVector& attrubutes, int beginWeight)