2024-06-19 06:35:05 +00:00
|
|
|
#include "LocalDataMoveEngine.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LocalDataMoveEngine::LocalDataMoveEngine() {}
|
|
|
|
|
LocalDataMoveEngine::~LocalDataMoveEngine() {}
|
|
|
|
|
|
|
|
|
|
APP_ERROR LocalDataMoveEngine::Init()
|
|
|
|
|
{
|
|
|
|
|
strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0";
|
|
|
|
|
mapUseDataSouceCfg_ = MyYaml::GetIns()->GetUseDataSourceConfig();
|
|
|
|
|
strResultPath_ = MyYaml::GetIns()->GetPathValue("gc_result_path");
|
|
|
|
|
bUploadFlag_ = (MyYaml::GetIns()->GetIntValue("gc_ftp_open") == 1 || MyYaml::GetIns()->GetIntValue("gc_minio_open") == 1);
|
|
|
|
|
iPushDirection_ = MyYaml::GetIns()->GetIntValue("gc_push_direction");
|
|
|
|
|
|
|
|
|
|
InitParam();
|
|
|
|
|
LogInfo << "LocalDataMoveEngine Init ok";
|
|
|
|
|
return APP_ERR_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
APP_ERROR LocalDataMoveEngine::DeInit()
|
|
|
|
|
{
|
|
|
|
|
LogInfo << "LocalDataMoveEngine DeInit ok";
|
|
|
|
|
return APP_ERR_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 初始化参数信息
|
|
|
|
|
* inParam : N/A
|
|
|
|
|
* outParam: N/A
|
|
|
|
|
* return : N/A
|
|
|
|
|
*/
|
|
|
|
|
void LocalDataMoveEngine::InitParam()
|
|
|
|
|
{
|
|
|
|
|
iDirection_ = DIRECTION_UNKNOWN;
|
|
|
|
|
mapFtpFrameInfo_.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
APP_ERROR LocalDataMoveEngine::Process()
|
|
|
|
|
{
|
|
|
|
|
int iRet = APP_ERR_OK;
|
|
|
|
|
while (!isStop_)
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<void> pVoidData0 = nullptr;
|
|
|
|
|
inputQueMap_[strPort0_]->pop(pVoidData0);
|
|
|
|
|
if (nullptr == pVoidData0)
|
|
|
|
|
{
|
|
|
|
|
usleep(1000); // 1ms
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<ProcessData> pProcessData = std::static_pointer_cast<ProcessData>(pVoidData0);
|
|
|
|
|
|
|
|
|
|
//1.日期或时间不相等(停车导致的),则复制图片到新过车文件中
|
|
|
|
|
if (pProcessData->strOrigTrainDate != pProcessData->strTrainDate || pProcessData->strOrigTrainName != pProcessData->strTrainName)
|
|
|
|
|
{
|
|
|
|
|
char szCameraNo[5] = {0};
|
|
|
|
|
sprintf(szCameraNo, "%03d/", pProcessData->iDataSource + 1);
|
|
|
|
|
std::string strOldPath = strResultPath_ + pProcessData->strOrigTrainDate + "/" +
|
|
|
|
|
pProcessData->strOrigTrainName + "/" + szCameraNo;
|
|
|
|
|
std::string strNewPath = strResultPath_ + pProcessData->strTrainDate + "/" +
|
|
|
|
|
pProcessData->strTrainName + "/" + szCameraNo;
|
|
|
|
|
MyUtils::getins()->CreateDirPath(strNewPath);
|
|
|
|
|
|
|
|
|
|
std::string strOldTxtFile = strOldPath + std::to_string(pProcessData->iOrigFrameId) + ".txt";
|
|
|
|
|
std::string strOldImgFile = strOldPath + std::to_string(pProcessData->iOrigFrameId) + ".jpg";
|
|
|
|
|
std::string strNewTxtFile = strNewPath + std::to_string(pProcessData->iFrameId) + ".txt";
|
|
|
|
|
std::string strNewImgFile = strNewPath + std::to_string(pProcessData->iFrameId) + ".jpg";
|
|
|
|
|
if (mapUseDataSouceCfg_[pProcessData->iDataSource].iRotate != 0)
|
|
|
|
|
{
|
|
|
|
|
std::string strOldRotateImgFile = strOldPath + std::to_string(pProcessData->iOrigFrameId) + "_rotate.jpg";
|
|
|
|
|
std::string strNewRotateImgFile = strNewPath + std::to_string(pProcessData->iFrameId) + "_rotate.jpg";
|
|
|
|
|
MyUtils::getins()->copyFile(strOldRotateImgFile, strNewRotateImgFile);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MyUtils::getins()->copyFile(strOldImgFile, strNewImgFile);
|
|
|
|
|
|
|
|
|
|
Json::Value jvFrameInfo;
|
|
|
|
|
MyUtils::getins()->ReadJsonInfo(jvFrameInfo, strOldTxtFile);
|
|
|
|
|
jvFrameInfo["from"] = strOldTxtFile;
|
|
|
|
|
MyUtils::getins()->WriteJsonInfo(jvFrameInfo, strNewTxtFile);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//2.组织数据上传ftp
|
|
|
|
|
if (bUploadFlag_)
|
|
|
|
|
{
|
|
|
|
|
if (iDirection_ == DIRECTION_UNKNOWN)
|
|
|
|
|
{
|
|
|
|
|
std::string strFilePath = strResultPath_ + pProcessData->strTrainDate + "/" + pProcessData->strTrainName + "/" + "direction.txt";
|
|
|
|
|
Json::Value jvDirectionInfo;
|
|
|
|
|
if (MyUtils::getins()->ReadJsonInfo(jvDirectionInfo, strFilePath))
|
|
|
|
|
{
|
|
|
|
|
iDirection_ = jvDirectionInfo["direction"].asInt();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (iDirection_ == DIRECTION_UNKNOWN || iDirection_ == iPushDirection_ || iPushDirection_ == DIRECTION_UNKNOWN)
|
|
|
|
|
{
|
|
|
|
|
if (mapFtpFrameInfo_.find(pProcessData->iDataSource) == mapFtpFrameInfo_.end() ||
|
|
|
|
|
pProcessData->iFrameId > mapFtpFrameInfo_[pProcessData->iDataSource])
|
|
|
|
|
{
|
|
|
|
|
mapFtpFrameInfo_[pProcessData->iDataSource] = pProcessData->iFrameId;
|
|
|
|
|
|
|
|
|
|
char szCameraNo[5] = {0};
|
|
|
|
|
sprintf(szCameraNo, "%03d/", pProcessData->iDataSource + 1);
|
|
|
|
|
std::string strImgPath = pProcessData->strTrainDate + "/" + pProcessData->strTrainName + "/" + szCameraNo;
|
|
|
|
|
std::string strImgName = std::to_string(pProcessData->iFrameId) + ".jpg";
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<FtpData> pFtpData = std::make_shared<FtpData>();
|
|
|
|
|
pFtpData->strLocalFile = strResultPath_ + strImgPath + strImgName;
|
|
|
|
|
pFtpData->strFtpFilePath = strImgPath;
|
|
|
|
|
pFtpData->strFtpFileName = strImgName;
|
|
|
|
|
pFtpData->bIsEnd = pProcessData->bIsEnd;
|
2024-08-12 03:34:13 +00:00
|
|
|
iRet = outputQueMap_[strPort0_]->push(std::static_pointer_cast<void>(pFtpData), false);
|
2024-06-19 06:35:05 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (pProcessData->bIsEnd)
|
|
|
|
|
{
|
|
|
|
|
InitParam();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return APP_ERR_OK;
|
|
|
|
|
}
|