2024-08-12 03:34:13 +00:00
|
|
|
#include "SaveCsvEngine.h"
using namespace ai_matrix;
SaveCsvEngine::SaveCsvEngine() {}
SaveCsvEngine::~SaveCsvEngine() {}
APP_ERROR SaveCsvEngine::Init()
{
strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0";
strPort1_ = engineName_ + "_" + std::to_string(engineId_) + "_1";
strPort2_ = engineName_ + "_" + std::to_string(engineId_) + "_2";
strResultPath_ = MyYaml::GetIns()->GetPathValue("gc_result_path");
strPoundNo_ = MyYaml::GetIns()->GetStringValue("atlas_poundno");
LogInfo << "SaveCsvEngine Init ok";
return APP_ERR_OK;
}
APP_ERROR SaveCsvEngine::DeInit()
{
LogInfo << "SaveCsvEngine DeInit ok";
return APP_ERR_OK;
}
/**
* 保存合并后车厢的最优结果到CSV中 (该文件支持其web导入)
* inParam : std::shared_ptr<Train> pTrain :列车信息
* outParam:
* return : true/false
*/
bool SaveCsvEngine::SaveMergerCsv(std::shared_ptr<Train> pTrain)
{
//1. 创建保存路径 (固定路径/YYYY-MM-DD/hh-mm-ss/)
std::string strTrainPath = strResultPath_ + pTrain->strTrainDate + "/" + pTrain->strTrainName + "/";
if (!MyUtils::getins()->CreateDirPath(strTrainPath))
{
LogError << "iCarXH:" << pTrain->iCarXH << " train savecsv err";
return false;
}
//2. 保存csv
std::string strCsvName = pTrain->strTrainDate + pTrain->strTrainName + std::string(".csv");
strCsvName = MyUtils::getins()->replace_all_distinct(strCsvName, std::string("-"), std::string(""));
std::string strCsvPath = strTrainPath + strCsvName;
bool bIsExsit = false;
if (access(strCsvPath.c_str(), F_OK) != -1)
{
bIsExsit = true;
}
try
{
// 写文件
std::ofstream outFile;
outFile.open(strCsvPath, std::ios::app); // 打开模式可省略
if (!bIsExsit)
{
outFile << "poundno" << ','
<< "year" << ','
<< "time" << ','
<< "direction" << ','
<< "speed" << ','
<< "typeId" << ','
<< "skipInterval" << ','
<< "carxh" << ','
<< "type" << ','
<< "num" << ','
<< "load" << ','
<< "self" << ','
<< "volume" << ','
<< "volumesurface" << ','
<< "change" << ','
<< "numImgPath" << ','
<< "proImgPath" << ','
<< "videoStart" << ','
<< "videoEnd" << ','
<< "containerNo1" << ','
<< "containerNo2" << ','
<< "inspection" << ','
<< "inspectionImg" << ','
<< "containerImg_1" << ','
<< "containerImg_2" << ','
<< "startTime" << ','
<< "endTime"
<< std::endl;
}
std::string strTime = pTrain->strTrainName;
strTime = MyUtils::getins()->replace_all_distinct(strTime, std::string("-"), std::string(":"));
ai_matrix::DataSourceConfig dataSourceConfig = MyYaml::GetIns()->GetDataSourceConfigById(pTrain->trainNum.iDataSource); //获取摄像机参数
char szCameraNo[4] = {0};
sprintf(szCameraNo, "%03d", pTrain->trainNum.iDataSource + 1);
char szNumImgPath[64] = {0}; //车号最优图片路径
if (!pTrain->trainNum.strBestImg.empty())
{
sprintf(szNumImgPath, "%03d/%s", pTrain->trainNum.iDataSource + 1, pTrain->trainNum.strBestImg.c_str());
}
char szProImgPath[64] = {0}; //属性最优图片路径
if (!pTrain->trainPro.strBestImg.empty())
{
sprintf(szProImgPath, "%03d/%s", pTrain->trainPro.iDataSource + 1, pTrain->trainPro.strBestImg.c_str());
}
char szChkDateImgPath[64] = {0}; //定检期最优图片路径
if (!pTrain->chkDate.strBestImg.empty())
{
sprintf(szChkDateImgPath, "%03
|