|
@@ -24,32 +24,73 @@ QString g_bookmark_systest_picture[MAX_COMPARTMENT_NUM] = {BOOKMARK_SYSTEST_PICT
|
|
QString g_bookmark_valvetest_picture[MAX_COMPARTMENT_NUM] = {BOOKMARK_VALVETEST_PICTURE_1,BOOKMARK_VALVETEST_PICTURE_2,BOOKMARK_VALVETEST_PICTURE_3, BOOKMARK_VALVETEST_PICTURE_4};
|
|
QString g_bookmark_valvetest_picture[MAX_COMPARTMENT_NUM] = {BOOKMARK_VALVETEST_PICTURE_1,BOOKMARK_VALVETEST_PICTURE_2,BOOKMARK_VALVETEST_PICTURE_3, BOOKMARK_VALVETEST_PICTURE_4};
|
|
|
|
|
|
|
|
|
|
|
|
+QString g_bookmark_vrs_check[VRS_VISUAL_INSPECTION_ITEMS_NUM][3]={
|
|
|
|
+ {BOOKMARK_VRS_CHECK_ITEMS_1_0, BOOKMARK_VRS_CHECK_ITEMS_1_1, BOOKMARK_VRS_CHECK_ITEMS_1_2},
|
|
|
|
+ {BOOKMARK_VRS_CHECK_ITEMS_2_0, BOOKMARK_VRS_CHECK_ITEMS_2_1, BOOKMARK_VRS_CHECK_ITEMS_2_2},
|
|
|
|
+ {BOOKMARK_VRS_CHECK_ITEMS_3_0, BOOKMARK_VRS_CHECK_ITEMS_3_1, BOOKMARK_VRS_CHECK_ITEMS_3_2},
|
|
|
|
+ {BOOKMARK_VRS_CHECK_ITEMS_4_0, BOOKMARK_VRS_CHECK_ITEMS_4_1, BOOKMARK_VRS_CHECK_ITEMS_4_2},
|
|
|
|
+ {BOOKMARK_VRS_CHECK_ITEMS_5_0, BOOKMARK_VRS_CHECK_ITEMS_5_1, BOOKMARK_VRS_CHECK_ITEMS_5_2},
|
|
|
|
+ {BOOKMARK_VRS_CHECK_ITEMS_6_0, BOOKMARK_VRS_CHECK_ITEMS_6_1, BOOKMARK_VRS_CHECK_ITEMS_6_2},
|
|
|
|
+ {BOOKMARK_VRS_CHECK_ITEMS_7_0, BOOKMARK_VRS_CHECK_ITEMS_7_1, BOOKMARK_VRS_CHECK_ITEMS_7_2},
|
|
|
|
+ {BOOKMARK_VRS_CHECK_ITEMS_8_0, BOOKMARK_VRS_CHECK_ITEMS_8_1, BOOKMARK_VRS_CHECK_ITEMS_8_2}
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+QString g_bookmark_bls_check[BLS_VISUAL_INSPECTION_ITEMS_NUM][3]={
|
|
|
|
+ {BOOKMARK_BLS_CHECK_ITEMS_1_0, BOOKMARK_BLS_CHECK_ITEMS_1_1, BOOKMARK_BLS_CHECK_ITEMS_1_2},
|
|
|
|
+ {BOOKMARK_BLS_CHECK_ITEMS_2_0, BOOKMARK_BLS_CHECK_ITEMS_2_1, BOOKMARK_BLS_CHECK_ITEMS_2_2},
|
|
|
|
+ {BOOKMARK_BLS_CHECK_ITEMS_3_0, BOOKMARK_BLS_CHECK_ITEMS_3_1, BOOKMARK_BLS_CHECK_ITEMS_3_2},
|
|
|
|
+ {BOOKMARK_BLS_CHECK_ITEMS_4_0, BOOKMARK_BLS_CHECK_ITEMS_4_1, BOOKMARK_BLS_CHECK_ITEMS_4_2},
|
|
|
|
+ {BOOKMARK_BLS_CHECK_ITEMS_5_0, BOOKMARK_BLS_CHECK_ITEMS_5_1, BOOKMARK_BLS_CHECK_ITEMS_5_2}
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
|
|
#define REPORT_TEMPLATES_PATH "D:/VaporRecoverySystemTest/Templates/"
|
|
#define REPORT_TEMPLATES_PATH "D:/VaporRecoverySystemTest/Templates/"
|
|
-#define REPORT_TEMPLATES_NAME "report.dotx"
|
|
|
|
|
|
+#define REPORT_TEMPLATES_NAME "report_v5.dotx"
|
|
|
|
|
|
-Report::Report()
|
|
|
|
|
|
+ReportWoker::ReportWoker()
|
|
{
|
|
{
|
|
-
|
|
|
|
|
|
+ qRegisterMetaType<Tanker>("Tanker&");
|
|
|
|
+ qRegisterMetaType<QString>("QString&");
|
|
|
|
+ //qRegisterMetaType<DeviceInfo>("DeviceInfo&");
|
|
}
|
|
}
|
|
|
|
|
|
-Report::~Report()
|
|
|
|
|
|
+ReportWoker::~ReportWoker()
|
|
{
|
|
{
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+void ReportWoker::init()
|
|
|
|
+{
|
|
|
|
+ CoInitializeEx(NULL,COINIT_MULTITHREADED);//解决非主线程无法调用word问题
|
|
|
|
+ qDebug()<< "ReportWorker init";
|
|
|
|
+}
|
|
|
|
|
|
-bool Report::make_Word(Tanker& tanker, QString word_path, QString pic_dir)
|
|
|
|
|
|
+void ReportWoker::makeReport(Tanker& tanker, QString& word_path, QString& pic_dir)
|
|
|
|
+{
|
|
|
|
+ //CoInitializeEx(NULL,COINIT_MULTITHREADED);//解决非主线程无法调用word问题
|
|
|
|
+ make_report(tanker, word_path, pic_dir);
|
|
|
|
+ //CoUninitialize();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+bool ReportWoker::make_report(Tanker& tanker, QString word_path, QString pic_dir)
|
|
{
|
|
{
|
|
|
|
|
|
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
|
|
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
|
|
|
|
|
|
QString text_progress1 = codec->toUnicode("正在生成Word报告,请耐心等待");
|
|
QString text_progress1 = codec->toUnicode("正在生成Word报告,请耐心等待");
|
|
|
|
+ QString text_progresspdf = codec->toUnicode("正在生成PDF报告,请耐心等待");
|
|
QString text_progress2 = codec->toUnicode("正在保存中...");
|
|
QString text_progress2 = codec->toUnicode("正在保存中...");
|
|
QString text_progress3 = codec->toUnicode("报告已完成");
|
|
QString text_progress3 = codec->toUnicode("报告已完成");
|
|
QString text_progress4 = codec->toUnicode("打开word失败");
|
|
QString text_progress4 = codec->toUnicode("打开word失败");
|
|
|
|
+ QString text_progress5 = codec->toUnicode("报告模板无法使用");
|
|
|
|
|
|
//新建一个word应用程序
|
|
//新建一个word应用程序
|
|
QAxWidget *word = new QAxWidget("Word.Application",0,Qt::MSWindowsOwnDC);
|
|
QAxWidget *word = new QAxWidget("Word.Application",0,Qt::MSWindowsOwnDC);
|
|
|
|
+ if(word->isNull()){
|
|
|
|
+ emit onProgress(text_progress4);
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
//并设置为不可见
|
|
//并设置为不可见
|
|
word->setProperty("Visible",false);
|
|
word->setProperty("Visible",false);
|
|
//获取所有的工作文档
|
|
//获取所有的工作文档
|
|
@@ -59,8 +100,18 @@ bool Report::make_Word(Tanker& tanker, QString word_path, QString pic_dir)
|
|
//documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("D:\Code\QTapps\build-valve_testing-Desktop_Qt_5_15_2_MinGW_32_bit-Debug\debug\test1.dotx"));
|
|
//documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("D:\Code\QTapps\build-valve_testing-Desktop_Qt_5_15_2_MinGW_32_bit-Debug\debug\test1.dotx"));
|
|
//获取当前激活的文档
|
|
//获取当前激活的文档
|
|
QAxObject *document = word->querySubObject("ActiveDocument");
|
|
QAxObject *document = word->querySubObject("ActiveDocument");
|
|
|
|
+ if(document->isNull()){
|
|
|
|
+ emit onProgress(text_progress5);
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
|
|
- emit onProgress(text_progress1);
|
|
|
|
|
|
+ if(word_path.contains(".pdf")){
|
|
|
|
+ emit onProgress(text_progresspdf);
|
|
|
|
+ }else{
|
|
|
|
+ emit onProgress(text_progress1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ QThread::msleep(1000);
|
|
|
|
|
|
//填写全局信息
|
|
//填写全局信息
|
|
//使用单位
|
|
//使用单位
|
|
@@ -96,6 +147,47 @@ bool Report::make_Word(Tanker& tanker, QString word_path, QString pic_dir)
|
|
bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //外观检查项
|
|
|
|
+ for(int i=0; i<VRS_VISUAL_INSPECTION_ITEMS_NUM; i++){
|
|
|
|
+ int check_value = tanker.vrs_results[i];
|
|
|
|
+ if(check_value > 2 ) check_value = 2;
|
|
|
|
+ if(check_value < 0 ) check_value = 0;
|
|
|
|
+ //qDebug()<<g_bookmark_vrs_check[i][check_value];
|
|
|
|
+
|
|
|
|
+ bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_vrs_check[i][check_value]);
|
|
|
|
+ if(!bookmark->isNull())
|
|
|
|
+ {
|
|
|
|
+ QChar cc = 0x2611;
|
|
|
|
+ QString sText;
|
|
|
|
+ sText.insert(0, cc);
|
|
|
|
+ //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
+ //QString sText=codec->toUnicode(QString::number(comp.m_volume).toStdString().c_str()); //此处为替换内容
|
|
|
|
+ //qDebug()<<"sText";
|
|
|
|
+
|
|
|
|
+ bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
+ bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for(int i=0; i<BLS_VISUAL_INSPECTION_ITEMS_NUM; i++){
|
|
|
|
+ int check_value = tanker.bls_results[i];
|
|
|
|
+ if(check_value > 2 ) check_value = 2;
|
|
|
|
+ if(check_value < 0 ) check_value = 0;
|
|
|
|
+ qDebug()<<g_bookmark_bls_check[i][check_value];
|
|
|
|
+ bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_bls_check[i][check_value]);
|
|
|
|
+ if(!bookmark->isNull())
|
|
|
|
+ {
|
|
|
|
+ QChar cc = 0x2611;
|
|
|
|
+ QString sText;
|
|
|
|
+ sText.insert(0, cc);
|
|
|
|
+ //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
+ //QString sText=codec->toUnicode(QString::number(comp.m_volume).toStdString().c_str()); //此处为替换内容
|
|
|
|
+ //qDebug()<<sText;
|
|
|
|
+ bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
+ bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
//填写每仓容量
|
|
//填写每仓容量
|
|
for(int i=0; i< tanker.compartment_num; i++){
|
|
for(int i=0; i< tanker.compartment_num; i++){
|
|
|
|
|
|
@@ -396,400 +488,41 @@ bool Report::make_Word(Tanker& tanker, QString word_path, QString pic_dir)
|
|
}
|
|
}
|
|
|
|
|
|
//将文件保存为PDF,
|
|
//将文件保存为PDF,
|
|
- qDebug()<<"start save Word file ";
|
|
|
|
- emit onProgress(text_progress2);
|
|
|
|
-
|
|
|
|
- document->dynamicCall("SaveAs(const QString&))",QDir::toNativeSeparators(word_path));
|
|
|
|
-
|
|
|
|
- document->dynamicCall("Close (boolean)",false);
|
|
|
|
- word->dynamicCall("Quit()");
|
|
|
|
-
|
|
|
|
- emit onProgress(text_progress3);
|
|
|
|
- QThread::msleep(300);
|
|
|
|
- emit onProgress("close");
|
|
|
|
|
|
+ // qDebug()<<"start save Word file ";
|
|
|
|
|
|
- return true;
|
|
|
|
|
|
+ emit onProgress(text_progress2);
|
|
|
|
+ QThread::msleep(1000);
|
|
|
|
|
|
|
|
+ if(word_path.contains(".pdf")){
|
|
|
|
|
|
-}
|
|
|
|
|
|
+ qDebug()<<"start save PDF file ";
|
|
|
|
|
|
-bool Report::make_PDF(Tanker& tanker, QString word_path, QString pic_dir)
|
|
|
|
-{
|
|
|
|
- QTextCodec *codec = QTextCodec::codecForName("UTF-8");
|
|
|
|
|
|
+ //如果文件已经存在了,不删掉,会有问题
|
|
|
|
+ QFile file_bak(word_path);
|
|
|
|
+ if(file_bak.exists()){
|
|
|
|
+ file_bak.remove();
|
|
|
|
+ }
|
|
|
|
|
|
- QString text_progress1 = codec->toUnicode("正在生成PDF报告,请耐心等待");
|
|
|
|
- QString text_progress2 = codec->toUnicode("正在保存中...");
|
|
|
|
- QString text_progress3 = codec->toUnicode("报告已完成");
|
|
|
|
- QString text_progress4 = codec->toUnicode("打开word失败");
|
|
|
|
|
|
+ QVariant OutputFileName(word_path);
|
|
|
|
+ QVariant ExportFormat(17); //17是pdf
|
|
|
|
+ QVariant OpenAfterExport(false); //保存后是否自动打开
|
|
|
|
|
|
- //新建一个word应用程序
|
|
|
|
- QAxWidget *word = new QAxWidget("Word.Application",0,Qt::MSWindowsOwnDC);
|
|
|
|
- //并设置为不可见
|
|
|
|
- word->setProperty("Visible",false);
|
|
|
|
- //获取所有的工作文档
|
|
|
|
- QAxObject *documents = word->querySubObject("Documents");
|
|
|
|
- //以test2.dot为模板新建一个文档
|
|
|
|
- documents->dynamicCall("Add(QString)",QString(REPORT_TEMPLATES_PATH)+QString(REPORT_TEMPLATES_NAME));
|
|
|
|
- //documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("D:\Code\QTapps\build-valve_testing-Desktop_Qt_5_15_2_MinGW_32_bit-Debug\debug\test1.dotx"));
|
|
|
|
- //获取当前激活的文档
|
|
|
|
- QAxObject *document = word->querySubObject("ActiveDocument");
|
|
|
|
|
|
+ document->querySubObject("ExportAsFixedFormat(const QVariant&,const QVariant&,const QVariant&)",
|
|
|
|
+ OutputFileName,
|
|
|
|
+ ExportFormat,
|
|
|
|
+ OpenAfterExport);
|
|
|
|
|
|
- emit onProgress(text_progress1);
|
|
|
|
-
|
|
|
|
- //填写全局信息
|
|
|
|
- //使用单位
|
|
|
|
- QAxObject *bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_COMPANYNAME);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //QChar cc = 0x2611;
|
|
|
|
- QString str = tanker.companyname_str;
|
|
|
|
- //str.insert(0, cc);
|
|
|
|
- QString sText=codec->toUnicode(str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
|
|
+ }else {
|
|
|
|
+ qDebug()<<"start save Word file ";
|
|
|
|
+ document->dynamicCall("SaveAs(const QString&))",QDir::toNativeSeparators(word_path));
|
|
}
|
|
}
|
|
|
|
|
|
- //车牌
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_CARPLATE);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- QString sText=codec->toUnicode(tanker.licenseplate_str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //仓数
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_COMPARTMENT_NUM);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- QString sText=codec->toUnicode(QString::number(tanker.compartment_num).toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //填写每仓容量
|
|
|
|
- for(int i=0; i< tanker.compartment_num; i++){
|
|
|
|
-
|
|
|
|
- Compartment& comp = tanker.get_compartment(i);
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_volume[i]);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
- QString sText=codec->toUnicode(QString::number(comp.m_volume).toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if(comp.m_result.sys_test_ok){ //完成了系统密闭性检测
|
|
|
|
-
|
|
|
|
- //密闭性检测的初始表压
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_startpressure[i]);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
- QString pressure_str = QString("%1").arg(comp.m_result.sysstart_pressure, 4,'f',2,QLatin1Char('0'));
|
|
|
|
- QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //5 min之后的表压
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_endpressure[i]);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
- QString pressure_str = QString("%1").arg(comp.m_result.sysend_pressure, 4,'f',2,QLatin1Char('0'));
|
|
|
|
- QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //压力变化值
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_deltapressure[i]);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
- QString pressure_str = QString("%1").arg(comp.m_result.delta_sys_pressure, 4,'f',2,QLatin1Char('0'));
|
|
|
|
- QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //压力变化限值
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_threshold[i]);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
- QString pressure_str = QString("%1").arg(comp.m_standarditem.system_threshold, 4,'f',2,QLatin1Char('0'));
|
|
|
|
- QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if(comp.m_result.valve_test_ok){ //完成了阀门密闭性检测
|
|
|
|
-
|
|
|
|
- //密闭性检测的初始表压
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_startpressure[i]);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
- QString pressure_str = QString("%1").arg(comp.m_result.valvestart_pressure, 4,'f',2,QLatin1Char('0'));
|
|
|
|
- QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //5 min之后的表压
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_endpressure[i]);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
- QString pressure_str = QString("%1").arg(comp.m_result.valveend_pressure, 4,'f',2,QLatin1Char('0'));
|
|
|
|
- QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //压力变化值
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_deltapressure[i]);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
- QString pressure_str = QString("%1").arg(comp.m_result.delta_valve_pressure, 4,'f',2,QLatin1Char('0'));
|
|
|
|
- QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //压力变化限值
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_threshold[i]);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- //int volume = m_tank.m_comparts[i].m_volume;
|
|
|
|
- QString pressure_str = QString("%1").arg(comp.m_standarditem.valve_threshold, 4,'f',2,QLatin1Char('0'));
|
|
|
|
- QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- if(comp.m_bpicReady){
|
|
|
|
-
|
|
|
|
- // 获取文档中名字为pic的标签
|
|
|
|
- QAxObject*bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_test_picture[i]);
|
|
|
|
- // 选中标签,将图片插入到标签位置
|
|
|
|
- if(!bookmark_pic->isNull())
|
|
|
|
- {
|
|
|
|
- QString pic_path_str = pic_dir+tanker.licenseplate_str+"_"+QString::number(i+1)+"_all.jpg";
|
|
|
|
- qDebug()<<pic_path_str;
|
|
|
|
-
|
|
|
|
- QFile file(pic_path_str);
|
|
|
|
-
|
|
|
|
- if(file.exists()){
|
|
|
|
-
|
|
|
|
- bookmark_pic->dynamicCall("Select(void)");
|
|
|
|
- QAxObject *range;
|
|
|
|
- range = bookmark_pic->querySubObject("Range");
|
|
|
|
- QVariant tmp = range->asVariant();
|
|
|
|
-
|
|
|
|
- QList<QVariant>qList;
|
|
|
|
- qList<<QVariant(pic_path_str);
|
|
|
|
- qList<<QVariant(false);
|
|
|
|
- qList<<QVariant(true);
|
|
|
|
- qList<<tmp;
|
|
|
|
-
|
|
|
|
- QAxObject *Inlineshapes = document->querySubObject("InlineShapes");
|
|
|
|
- Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_picture[i]);
|
|
|
|
- // 选中标签,将图片插入到标签位置
|
|
|
|
- if(!bookmark_pic->isNull())
|
|
|
|
- {
|
|
|
|
- QString pic_path_str = pic_dir+tanker.licenseplate_str+"_"+QString::number(i+1)+"_sys.jpg";
|
|
|
|
- qDebug()<<pic_path_str;
|
|
|
|
-
|
|
|
|
- QFile file(pic_path_str);
|
|
|
|
- if(file.exists()){
|
|
|
|
- bookmark_pic->dynamicCall("Select(void)");
|
|
|
|
- QAxObject *range;
|
|
|
|
- range = bookmark_pic->querySubObject("Range");
|
|
|
|
- QVariant tmp = range->asVariant();
|
|
|
|
-
|
|
|
|
- QList<QVariant>qList;
|
|
|
|
- qList<<QVariant(pic_path_str);
|
|
|
|
- qList<<QVariant(false);
|
|
|
|
- qList<<QVariant(true);
|
|
|
|
- qList<<tmp;
|
|
|
|
-
|
|
|
|
- QAxObject *Inlineshapes = document->querySubObject("InlineShapes");
|
|
|
|
- Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_picture[i]);
|
|
|
|
- // 选中标签,将图片插入到标签位置
|
|
|
|
- if(!bookmark_pic->isNull())
|
|
|
|
- {
|
|
|
|
- QString pic_path_str = pic_dir+tanker.licenseplate_str+"_"+QString::number(i+1)+"_valve.jpg";
|
|
|
|
- qDebug()<<pic_path_str;
|
|
|
|
-
|
|
|
|
- QFile file(pic_path_str);
|
|
|
|
- if(file.exists()){
|
|
|
|
-
|
|
|
|
- bookmark_pic->dynamicCall("Select(void)");
|
|
|
|
- QAxObject *range;
|
|
|
|
- range = bookmark_pic->querySubObject("Range");
|
|
|
|
- QVariant tmp = range->asVariant();
|
|
|
|
-
|
|
|
|
- QList<QVariant>qList;
|
|
|
|
- qList<<QVariant(pic_path_str);
|
|
|
|
- qList<<QVariant(false);
|
|
|
|
- qList<<QVariant(true);
|
|
|
|
- qList<<tmp;
|
|
|
|
-
|
|
|
|
- QAxObject *Inlineshapes = document->querySubObject("InlineShapes");
|
|
|
|
- Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //检测结果
|
|
|
|
- bool systest_pass = true;
|
|
|
|
- bool valvetest_pass = true;
|
|
|
|
- int nosys_testcount = 0;
|
|
|
|
- int novalve_testcount =0;
|
|
|
|
- for(int i=0; i<tanker.compartment_num; i++){
|
|
|
|
-
|
|
|
|
- Compartment& comp = tanker.get_compartment(i);
|
|
|
|
- if(comp.m_result.sys_test_ok){
|
|
|
|
- if(!comp.m_result.pass_sys_pressure){
|
|
|
|
- systest_pass = false;
|
|
|
|
- }
|
|
|
|
- }else{
|
|
|
|
- nosys_testcount++;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if(comp.m_result.valve_test_ok){
|
|
|
|
- if(!comp.m_result.pass_valve_pressure){
|
|
|
|
- valvetest_pass = false;
|
|
|
|
- }
|
|
|
|
- }else{
|
|
|
|
- novalve_testcount++;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if(nosys_testcount != tanker.compartment_num){
|
|
|
|
- //系统检测结果
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_SYSTEST_RESULT);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- QString sText;
|
|
|
|
- if(systest_pass){
|
|
|
|
- sText=codec->toUnicode("合格");
|
|
|
|
- }else{
|
|
|
|
- sText=codec->toUnicode("超标");
|
|
|
|
- }
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- if(novalve_testcount != tanker.compartment_num){
|
|
|
|
- //阀门检测结果
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_VALVETEST_RESULT);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- QString sText;
|
|
|
|
- if(valvetest_pass){
|
|
|
|
- sText=codec->toUnicode("合格");
|
|
|
|
- }else{
|
|
|
|
- sText=codec->toUnicode("超标");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //检测日期
|
|
|
|
- QDate date(QDate::currentDate());
|
|
|
|
-
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_DATE_YEAR);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- QString sText=codec->toUnicode(QString::number(date.year()).toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_DATE_MONTH);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- QString sText=codec->toUnicode(QString::number(date.month()).toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_DATE_DAY);
|
|
|
|
- if(!bookmark->isNull())
|
|
|
|
- {
|
|
|
|
- QString sText=codec->toUnicode(QString::number(date.day()).toStdString().c_str()); //此处为替换内容
|
|
|
|
- qDebug()<<sText;
|
|
|
|
- bookmark->dynamicCall("Select(void)"); //选中要选中的区域
|
|
|
|
- bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //将文件保存为PDF,
|
|
|
|
- qDebug()<<"start save PDF file ";
|
|
|
|
- emit onProgress(text_progress2);
|
|
|
|
-
|
|
|
|
- //document->dynamicCall("SaveAs(const QString&))",QDir::toNativeSeparators(word_path));
|
|
|
|
-
|
|
|
|
- QVariant OutputFileName(word_path);
|
|
|
|
- QVariant ExportFormat(17); //17是pdf
|
|
|
|
- QVariant OpenAfterExport(false); //保存后是否自动打开
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- document->querySubObject("ExportAsFixedFormat(const QVariant&,const QVariant&,const QVariant&)",
|
|
|
|
- OutputFileName,
|
|
|
|
- ExportFormat,
|
|
|
|
- OpenAfterExport);
|
|
|
|
|
|
|
|
document->dynamicCall("Close (boolean)",false);
|
|
document->dynamicCall("Close (boolean)",false);
|
|
word->dynamicCall("Quit()");
|
|
word->dynamicCall("Quit()");
|
|
|
|
|
|
emit onProgress(text_progress3);
|
|
emit onProgress(text_progress3);
|
|
- QThread::msleep(300);
|
|
|
|
|
|
+ QThread::msleep(1000);
|
|
emit onProgress("close");
|
|
emit onProgress("close");
|
|
|
|
|
|
return true;
|
|
return true;
|
|
@@ -797,3 +530,37 @@ bool Report::make_PDF(Tanker& tanker, QString word_path, QString pic_dir)
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+Report::Report()
|
|
|
|
+{
|
|
|
|
+ qRegisterMetaType<Tanker>("Tanker&");
|
|
|
|
+ qRegisterMetaType<QString>("QString&");
|
|
|
|
+
|
|
|
|
+ ReportWoker *worker = new ReportWoker;
|
|
|
|
+ worker->moveToThread(&workerThread);
|
|
|
|
+ connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
|
|
|
|
+ connect(this, &Report::operate, worker, &ReportWoker::makeReport);
|
|
|
|
+ //connect(this, &Report::operateself, worker, &ReportWoker::makeselfReport);
|
|
|
|
+ connect(this, &Report::oninit, worker, &ReportWoker::init);
|
|
|
|
+ connect(worker, &ReportWoker::onProgress, this, &Report::recvProgress);
|
|
|
|
+ workerThread.start();
|
|
|
|
+
|
|
|
|
+ emit oninit();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+Report::~Report()
|
|
|
|
+{
|
|
|
|
+ workerThread.quit();
|
|
|
|
+ workerThread.wait();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void Report::recvProgress(const QString& qstr)
|
|
|
|
+{
|
|
|
|
+ emit onProgress(qstr);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void Report::makeReport(Tanker& tanker, QString word_path, QString pic_dir)
|
|
|
|
+{
|
|
|
|
+ emit operate(tanker, word_path, pic_dir);
|
|
|
|
+}
|
|
|
|
+
|