DataPlayer/ChaosDataPlayer/CreateReport.cpp
2022-11-07 14:02:09 +08:00

306 lines
11 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/********************************************************************
created: 2018/03/27
author: wangyuanyuan@vishee.com
edit_by:
description: 生成肌力训练报告
*********************************************************************/
#include "CreateReport.h"
#include <QDateTime>
#include <QDebug>
CreateReport::CreateReport()
{
m_wordOperate = NULL;
titleFontName = "SongTi";
infoFontName = "Microsoft YaHei";
tableFontName = "Microsoft YaHei";
wordFontName = "Microsoft YaHei";
titleFontSize = 18;
infoFontSize = 11;
tableFontSize = 11;
wordFontSize = 9;
}
CreateReport::~CreateReport()
{
ReleaseWord();
}
void CreateReport::GetReport(REPORT_INFO& reportInfo,QStringList& strImagePathList)
{
_reportInfo = reportInfo;
_strImagePathList = strImagePathList;
if(!CreateWord())
{
}
}
bool CreateReport::CreateWord()//创建word
{
qDebug() << "CreateWord" << endl;
if(InitWord() == false)
{
// LOG_ERROR("Init Word Failure");
return false;
}
SetPageMargin();
m_wordOperate->SetVisible(false);
DrawTitle();
DrawPatientInfo();
//DrawTable();
//DrawExplain();
//DrawMark();
//DrawPic();
m_wordOperate->insertEnter();
for(int i = 0; i < _strImagePathList.size();i++){
qDebug() << _strImagePathList.at(i) << endl;
m_wordOperate->SetAlign(WordOperate::AlignmentTypeCenter);
m_wordOperate->InsertPicture(_strImagePathList.at(i));
m_wordOperate->insertEnter();
if(_strImagePathList.at(i).contains("TimeDomain"))
m_wordOperate->SetText("时域图");
if(_strImagePathList.at(i).contains("FrequencyDomain"))
m_wordOperate->SetText("频域图");
if(_strImagePathList.at(i).contains("TrendChart"))
m_wordOperate->SetText("趋势图");
if(_strImagePathList.at(i).contains("EnvChart"))
m_wordOperate->SetText("包络图");
if(_strImagePathList.at(i).contains("Orbit"))
m_wordOperate->SetText("轴心轨迹图");
if(_strImagePathList.at(i).contains("WaterFall"))
m_wordOperate->SetText("瀑布图");
if(_strImagePathList.at(i).contains("Polar"))
m_wordOperate->SetText("极坐标图");
if(_strImagePathList.at(i).contains("ShaftCenterline"))
m_wordOperate->SetText("轴心位置图");
if(_strImagePathList.at(i).contains("Bode"))
m_wordOperate->SetText("伯德图");
if(_strImagePathList.at(i).contains("AllWave"))
m_wordOperate->SetText("全频图");
m_wordOperate->insertEnter();
}
DrawTable();
m_wordOperate->SetVisible(true);
return true;
}
bool CreateReport::InitWord()//初始化word
{
if(m_wordOperate == NULL)
m_wordOperate = new WordOperate();
return m_wordOperate->open(false);
}
void CreateReport::ReleaseWord()//释放word
{
if(m_wordOperate != NULL)
{
m_wordOperate->close();
delete m_wordOperate;
m_wordOperate = NULL;
}
}
void CreateReport::SetPageMargin()//设置边距
{
double dbLeft = 0.0,dbRight = 0.0,dbTop = 0.0,dbBottom = 0.0;
m_wordOperate->GetPageMargin(dbLeft,dbTop,dbRight,dbBottom);
m_wordOperate->SetPageMargin(dbLeft/2,dbTop/2,dbRight/2,dbBottom/2);
}
void CreateReport::DrawTitle()//画标题
{
m_wordOperate->SetFont(titleFontName,titleFontSize,true);
m_wordOperate->SetAlign(WordOperate::AlignmentTypeCenter);
m_wordOperate->SetText("故障分析诊断报告");
m_wordOperate->SetText("\n");
/*m_wordOperate->SetFont(titleFontName,titleFontSize,true);
m_wordOperate->SetText(QStringLiteral("XXX\n"));*/
}
void CreateReport::DrawPatientInfo()
{
int iLength=35;
m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft);
m_wordOperate->SetFont(infoFontName,infoFontSize,false);
QString str,temp;
QString strName,strSex,strAge,strDate,strCount,strTime;
str=QStringLiteral("终端名称Data Watch");
temp = _reportInfo.DeviceName;
str+=temp;
strName=QString("%1%2").arg(str).arg("\t",iLength-str.count()*2);
iLength = 28;
str=QStringLiteral("终端MAC");
temp = _reportInfo.DeviceMac;
str+=temp;
strSex=QString("%1%2").arg(str).arg("\t",iLength-str.count()*2);
iLength = 15;
str=QStringLiteral("采集时间:");
str+=_reportInfo.DevicemCollectTime;
strAge=QString("%1%2").arg(str).arg("\t",iLength-str.count()*2);
str = strName+strSex+strAge;
m_wordOperate->SetText(str);
m_wordOperate->moveForEnd();
m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft);
m_wordOperate->SetFont(infoFontName,infoFontSize,false);
iLength = 35;
str = QString("%1").arg(QStringLiteral("报告时间:"));
QDateTime current_date_time = QDateTime::currentDateTime();
QString current_date = current_date_time.toString("yyyy-MM-dd hh:mm:ss");
str = str + current_date;
m_wordOperate->SetText(str);
m_wordOperate->moveForEnd();
}
void CreateReport::DrawTable()
{
// wps
int nTable=1;
m_wordOperate->SetAlign(WordOperate::AlignmentTypeCenter);
m_wordOperate->SetParagraphSpacing(WordOperate::SpaceExactly,30);
m_wordOperate->SetFont(tableFontName,tableFontSize,false);
m_wordOperate->intsertTable(4,1);
m_wordOperate->SetTableRowHeight(nTable,2,200);
m_wordOperate->SetTableRowHeight(nTable,4,300);
QAxObject *cell=NULL;
cell = m_wordOperate->setCellString(nTable,1,1,QStringLiteral("报告概述"));
cell = m_wordOperate->setCellString(nTable,3,1,QStringLiteral("详细报告"));
//m_wordOperate->insertCellPic(nTable, 4,1,"E://WorkSpace//QT//build-ChaosDataPlayer-Desktop_Qt_5_12_11_MinGW_32_bit-Release//release//report//standard.png");
/*m_wordOperate->MergeCell(nTable,1,1,1,3,true);
m_wordOperate->MergeCell(nTable,3,1,3,3,true);
m_wordOperate->SetTableRowHeight(nTable,3,300);*/
/*m_wordOperate->insertCellPic(nTable, 2,1,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png");
m_wordOperate->moveForEnd();
m_wordOperate->insertCellPic(nTable, 2,1,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png");
m_wordOperate->moveForEnd();
m_wordOperate->insertCellPic(nTable, 2,1,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png");
QAxObject *cell=NULL;
cell = m_wordOperate->setCellString(nTable,1,1,QStringLiteral("诊断结果"));
cell = m_wordOperate->setCellString(nTable,2,1,QStringLiteral("时域图"));
cell = m_wordOperate->setCellString(nTable,2,2,QStringLiteral("频域图"));
cell = m_wordOperate->setCellString(nTable,2,3,QStringLiteral("包络图"));
m_wordOperate->insertCellPic(nTable, 2,1,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png");
m_wordOperate->insertCellPic(nTable, 2,2,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png");
m_wordOperate->insertCellPic(nTable, 2,3,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png");
/* m_wordOperate->SetTableFont(nTable,1,1,tableFontName,tableFontSize,true);
cell = m_wordOperate->setCellString(nTable,1,2,QStringLiteral("XX"));
m_wordOperate->SetTableFont(nTable,1,2,tableFontName,tableFontSize,true);
m_wordOperate->MergeCell(nTable,1,3,1,4,true);
cell = m_wordOperate->setCellString(nTable,1,3,QStringLiteral("XX"));
m_wordOperate->SetTableFont(nTable,1,3,tableFontName,tableFontSize,true);
cell = m_wordOperate->setCellString(nTable,1,4,QStringLiteral("XX"));
m_wordOperate->SetTableFont(nTable,1,4,tableFontName,tableFontSize,true);
/*m_wordOperate->MergeCell(nTable,2,1,10,1,true);
cell= m_wordOperate->setCellString(nTable,2,1,QStringLiteral("XX"));
m_wordOperate->MergeCell(nTable,2,2,6,2,true);
m_wordOperate->setCellString(nTable,2,2,QStringLiteral("XX"));
m_wordOperate->MergeCell(nTable,2,3,4,3,true);
m_wordOperate->setCellString(nTable,2,3,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,5,3,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,6,3,QStringLiteral("XX"));
m_wordOperate->MergeCell(nTable,7,2,10,2,true);
m_wordOperate->setCellString(nTable,7,2,QStringLiteral("XX"));
m_wordOperate->MergeCell(nTable,7,3,9,3,true);
m_wordOperate->setCellString(nTable,7,3,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,10,3,QStringLiteral("XX"));
cell = m_wordOperate->setCellString(nTable,11,1,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,11,2,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,11,3,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,2,4,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,3,4,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,4,4,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,5,4,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,6,4,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,7,4,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,8,4,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,9,4,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,10,4,QStringLiteral("XX"));
m_wordOperate->setCellString(nTable,11,4,QStringLiteral("XX"));*/
}
void CreateReport::DrawExplain()
{
m_wordOperate->moveForEnd();
m_wordOperate->SetFont(wordFontName,wordFontSize);
m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft);
m_wordOperate->SetParagraphSpacing(WordOperate::Space1);
QString str;
str = QStringLiteral("简要报告解读:");
str += "\n";
m_wordOperate->SetText(str);
m_wordOperate->SetFont(wordFontName,wordFontSize);
str = QStringLiteral("1、XXXXXXXX");
str +="\n";
m_wordOperate->SetText(str);
str = QStringLiteral("2、XXXXX。");
str += "\n";
m_wordOperate->SetText(str);
str = QStringLiteral("3、XX。");
str += "\n";
m_wordOperate->SetText(str);
m_wordOperate->SetFont(wordFontName,wordFontSize);
}
void CreateReport::DrawMark()
{
//备注:
QString str;
m_wordOperate->moveForEnd();
m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft);
m_wordOperate->SetFont(wordFontName,12,false,false,true);
str = QStringLiteral("备注:\n");
m_wordOperate->SetText(str);
m_wordOperate->SetFont(wordFontName,12,false,false,false);
m_wordOperate->intsertTable(2,1);
m_wordOperate->MergeCell(2,1,1,2,1);
m_wordOperate->setCellString(2,1,1,"xxx");
m_wordOperate->moveForEnd();
m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft);
m_wordOperate->SetFont(wordFontName,11,false,false,false);
str=QStringLiteral("xxx");
m_wordOperate->SetText(str);
m_wordOperate->SetFont(wordFontName,11,false,false,false);
m_wordOperate->SetText("____________________________");
}
void CreateReport::DrawPic()
{
m_wordOperate->SetMarkPic("Pic1", "E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png");
}