294 lines
10 KiB
C++
294 lines
10 KiB
C++
|
|
/********************************************************************
|
|||
|
|
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("包络图");
|
|||
|
|
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");
|
|||
|
|
}
|