VTrain_BothSides/engine/MergeEngine/MergeEngine.cpp

1 line
7.3 KiB
C++
Raw Normal View History

2025-01-09 02:02:52 +00:00
#include "MergeEngine.h" using namespace ai_matrix; namespace { //按照x坐标排列 bool CompareX(const SingleData &a, const SingleData &b) { return a.fLTX < b.fLTX; } } MergeEngine::MergeEngine() {} MergeEngine::~MergeEngine() {} APP_ERROR MergeEngine::Init() { strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0"; strPort1_ = engineName_ + "_" + std::to_string(engineId_) + "_1"; this->baseConfig_ = Config::getins()->getBaseConfig(); this->identifyConfig_ = Config::getins()->getIdentifyConfig(); LogInfo << "MergeEngine Init ok"; return APP_ERR_OK; } APP_ERROR MergeEngine::DeInit() { LogInfo << "MergeEngine DeInit ok"; return APP_ERR_OK; } bool MergeEngine::isSameCarriage(std::shared_ptr<VTrainInfo> pVTrain, const VTrainInfo &train_secondary) { bool isSame = false; for (const VContainer & container : pVTrain->vecContainer) { for (const VContainer & container_second : train_secondary.vecContainer) { if (container.strContainerNo == container_second.strContainerNo) isSame = true; } } if (pVTrain->strTNum == train_secondary.strTNum) isSame = true; return isSame; } void MergeEngine::supplementTrain(std::shared_ptr<VTrainInfo> pVTrain, const VTrainInfo &train_secondary) { if (!this->isSameCarriage(pVTrain, train_secondary)) return; if (pVTrain->strTType.empty() && !train_secondary.strTType.empty()) { pVTrain->strTType = train_secondary.strTType; } if (pVTrain->strTNum.empty() && !train_secondary.strTNum.empty()) { pVTrain->strTNum = train_secondary.strTNum; pVTrain->strTNum_image = train_secondary.strTNum_image; } if (pVTrain->strTLoadWeight.empty() && !train_secondary.strTLoadWeight.empty()) { pVTrain->strTLoadWeight = train_secondary.strTLoadWeight; } if (pVTrain->strTTareWeight.empty() && !train_secondary.strTTareWeight.empty()) { pVTrain->strTTareWeight = train_secondary.strTTareWeight; } if (pVTrain->strTChangeLen.empty() && !train_secondary.strTChangeLen.empty()) { pVTrain->strTChangeLen = train_secondary.strTChangeLen; pVTrain->strTPro_image = train_secondary.strTPro_image; } if (pVTrain->vecContainer.size() == train_secondary.vecContainer.size()) { for (int i = 0; i < pVTrain->vecContainer.size(); ++i) { if (pVTrain->vecContainer[i].strContainerNo.empty() && !train_secondary.vecContainer[i].strContainerNo.empty()) { pVTrain->vecContainer[i].strContainerNo = train_secondary.vecContainer[i].strContainerNo; pVTrain->vecContainer[i].strImg = train_secondary.vecContainer[i].strImg; } } } std::string strContainer, strContainerImage; for (int i = 0; i < pVTrain->vecContainer.size(); i++) { strContainer += pVTrain->vecContainer[i].strContainerNo; strContainerImage += pVTrain->vecContainer[i].strImg; if (i < pVTrain->vecContainer.size() - 1) { strContainer += ","; strContainerImage += ","; } } LogInfo << "\n ===汇总结果=== \n" << "数据源: " << pVTrain->iDataSource << "\n" << "日期时间: " << pVTrain->strTrainDate << " " << pVTrain->strTrainTime << "\n" << "股道: " << pVTrain->strTrackName << "\n" << "行驶方向: " << pVTrain->iTDirection << "\n" << "车厢序号: " << pVTrain->iCarOrder << "\n" << "车型Id: " << pVTrain->iCategory << "\n" << "车型: " << pVTrain->strTType << "\n" << "车号: " << pVTrain->strTNum << "\n" << "载重: " << pVTrain->strTLoadWeight << "\n" << "自重: " << pVTrain->strTTareWeight << "\n" << "容积: " << pVTrain->strTVolume << "\n" << "换长: " << pVTrain->strTChangeLen << "\n" << "编号图片: " << pVTrain->strTNum_image << "\n" << "属性图片: " << pVTrain->strTPro