/* * @Author: xiewenji 527774126@qq.com * @Date: 2025-09-13 19:26:19 * @LastEditors: xiewenji 527774126@qq.com * @LastEditTime: 2025-09-17 18:10:38 * @FilePath: /BOE_CELL_AOI_Detect/AlgorithmModule/src/Product.cpp * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * */ #include "Product.h" #include "QX_Merge_Analysis.h" Product::Product(/* args */) { productBaseResult = std::make_shared(); productBaseResult->detlog = std::make_shared(); productBaseResult->pQX_Merge_Analysis = QX_Merge_Analysis::GetInstance(); productBaseResult->pQX_Merge_Analysis->InitData(); productBaseResult->detlog->AddCheckstr(PrintLevel_0, "PushInImg", "Product create %s productBaseResult ", CheckUtil::getCurTimeHMS().c_str()); } Product::~Product() { } std::shared_ptr Product::GetCameraResult(std::string strcameraName) { // 加锁保证多线程安全 std::lock_guard lock(mtx_CameraResultList); for (auto &ptr : m_pCameraResultList) { if (ptr->cameraBaseResult->strCameraName == strcameraName) { return ptr; } } productBaseResult->detlog->bPrintStr = true; // 不存在,创建新的 CameraResult 并插入 map std::shared_ptr newResult = std::make_shared(); newResult->productBaseResult = productBaseResult; newResult->cameraBaseResult->strCameraName = strcameraName; m_pCameraResultList.push_back(newResult); productBaseResult->detlog->AddCheckstr(PrintLevel_0, "PushInImg", "11111 Camera %s %s", strcameraName.c_str(), CheckUtil::getCurTimeHMS().c_str()); productBaseResult->pQX_Merge_Analysis->AddCamer(strcameraName); productBaseResult->detlog->AddCheckstr(PrintLevel_0, "PushInImg", "22222 Camera %s %s", strcameraName.c_str(), CheckUtil::getCurTimeHMS().c_str()); productBaseResult->nCamera_Num = m_pCameraResultList.size(); productBaseResult->detlog->AddCheckstr(PrintLevel_0, "PushInImg", "add new Camera %s %s", strcameraName.c_str(), CheckUtil::getCurTimeHMS().c_str()); return newResult; } void Product::AddLog(std::string str) { LogList.push_back(str); } void Product::UpdatePushStatus(int status) { if (IN_IMG_Status_End == status || IN_IMG_Status_OneImg == status || -1 == status) { bIsImgComplete = true; std::lock_guard lock(mtx_CameraResultList); // 加锁保护 map for (auto &ptr : m_pCameraResultList) { // printf("===========1112\n"); ptr->setImgPushComplate(); } std::string strTimg = CheckUtil::getCurTimeHMS(); productBaseResult->detlog->AddCheckstr(PrintLevel_0, "PushInImg", "%s Add ALL img end %s m_pCameraResultList %ld ", productBaseResult->strproductName.c_str(), strTimg.c_str(), m_pCameraResultList.size()); } } bool Product::bCheckCamplate() { // 所有的图都送完了。 if (bIsImgComplete) { bool ballcomplate = true; std::lock_guard lock(mtx_CameraResultList); // 加锁保护 map for (auto &ptr : m_pCameraResultList) { if (!ptr->bCheckCamplate()) { ballcomplate = false; break; } } if (ballcomplate) { return true; } } return false; }