142 lines
4.2 KiB
C++
142 lines
4.2 KiB
C++
|
#pragma execution_character_set("utf-8")
|
|||
|
#include "FileGenerate.h"
|
|||
|
|
|||
|
#include"report/ccstemplateitem.h"
|
|||
|
#include"report/ccsreporttemplate.h"
|
|||
|
#include"report/ccsreportcore.h"
|
|||
|
#include"report/ccsreportadapter.h"
|
|||
|
#include"report/common_types.h"
|
|||
|
|
|||
|
#include "DataManager.h"
|
|||
|
#include "ProjectData.h"
|
|||
|
#include "DataModelData.h"
|
|||
|
#include <QCoreApplication>
|
|||
|
#include "QWaiting.h"
|
|||
|
#include "Session.h"
|
|||
|
#include "mainwindow.h"
|
|||
|
FileGenerate::FileGenerate()
|
|||
|
{}
|
|||
|
|
|||
|
FileGenerate::~FileGenerate()
|
|||
|
{}
|
|||
|
|
|||
|
bool FileGenerate::generate(QString filePath, json& paramter)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("generateFile begin");
|
|||
|
auto data = paramter["data"];
|
|||
|
|
|||
|
int projectId = data["id"];
|
|||
|
DataManager& mgr = GetDataRoot();
|
|||
|
DPData* pData = mgr.findObjectById(DataManager::DataType::project, projectId);
|
|||
|
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1>ǰ·<C7B0><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ·<C6AC><C2B7>
|
|||
|
// QString sfilePath = QDir::currentPath();
|
|||
|
QString sfilePath = QCoreApplication::applicationDirPath();
|
|||
|
sfilePath = sfilePath.replace(QRegExp("\\/"), "\\");
|
|||
|
QString strPath = sfilePath + "\\picture\\";
|
|||
|
LogoItem.append(new CCS_Report::CCSModelDataSet(QString(strPath + "logo.bmp")));
|
|||
|
ProjectData* pProject = qobject_cast<ProjectData*>(pData);
|
|||
|
if (!pProject) return false;
|
|||
|
//<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
|
|||
|
QString projectName = pProject->_name;
|
|||
|
QString fileName;
|
|||
|
QStringList qs;
|
|||
|
//ģ<><C4A3><EFBFBD>б<EFBFBD>
|
|||
|
pProject->getAllChildren(&mgr);
|
|||
|
QMap<unsigned int, DPData*>::iterator it = pProject->_childrenMap.begin();
|
|||
|
while (it != pProject->_childrenMap.end())
|
|||
|
{
|
|||
|
clearData();
|
|||
|
DataModelData* pModel = qobject_cast<DataModelData*>(*it);
|
|||
|
if (pModel) {
|
|||
|
pModel->getAllChildren(&mgr, false);
|
|||
|
pModel->setFileData(this, qs);
|
|||
|
setData();
|
|||
|
fileName = projectName + "_" + pModel->_displayName + "_" + "<EFBFBD><EFBFBD><EFBFBD>ݽӿ<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.doc";
|
|||
|
if (!generateFile(filePath, fileName))
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("generateFile failed");
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
it++;
|
|||
|
}
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void FileGenerate::setData()
|
|||
|
{
|
|||
|
m_DataSets.insert("CoverRightTopValueItem", CoverRightItem);
|
|||
|
m_DataSets.insert("LogoItem", LogoItem);
|
|||
|
m_DataSets.insert("ModelItem", ModelItem);
|
|||
|
m_DataSets.insert("RootPackName", RootPack);
|
|||
|
m_DataSets.insert("PackTable", PackTable);
|
|||
|
m_DataSets.insert("PackItem", PackItem);
|
|||
|
m_DataSets.insert("ChildPackTable", ChildPackTable);
|
|||
|
m_DataSets.insert("firstChildPack", ChildPack1);
|
|||
|
m_DataSets.insert("ChildPackItem", ChildPackItem);
|
|||
|
m_DataSets.insert("Child2PackTable", Ch_childPackTable);
|
|||
|
m_DataSets.insert("secChildPack", ChildPack2);
|
|||
|
m_DataSets.insert("Ch_childPackItem", Ch_childPackItem);
|
|||
|
m_DataSets.insert("classGroup", classGroupItem);
|
|||
|
m_DataSets.insert("className3", classname);
|
|||
|
m_DataSets.insert("attributeTable", AttTableData);
|
|||
|
m_DataSets.insert("relationTable", relatTableData);
|
|||
|
m_DataSets.insert("codeTable", interfaceTableData);
|
|||
|
m_DataSets.insert("classGroup111", classGroupItem111);
|
|||
|
m_DataSets.insert("className5", classname5);
|
|||
|
m_DataSets.insert("attributeTable111", AttTableData111);
|
|||
|
m_DataSets.insert("relationTable111", relatTableData111);
|
|||
|
m_DataSets.insert("codeTable111", interfaceTableData111);
|
|||
|
}
|
|||
|
|
|||
|
bool FileGenerate::generateFile(QString& filePath, QString fileName)
|
|||
|
{
|
|||
|
CCS_Report::CCSReportCore* reportcore = new CCS_Report::CCSReportCore();
|
|||
|
QFile file;
|
|||
|
if (file.exists("DPSReportBody.xml"))
|
|||
|
{
|
|||
|
m_listFileName.append("DPSReportBody.xml");
|
|||
|
}
|
|||
|
else {
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("ȱ<EFBFBD><EFBFBD> DPSReportBody.xml <20>ļ<EFBFBD>");
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
if (m_listFileName.isEmpty())
|
|||
|
return false;
|
|||
|
reportcore->loadReportFromFiles(m_listFileName);//<2F><><EFBFBD><EFBFBD>xml<6D><6C><EFBFBD>ڴ<EFBFBD>
|
|||
|
reportcore->LoadData(m_DataSets);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ڴ<EFBFBD>
|
|||
|
|
|||
|
// reportcore->Export( filePath+fileName, CCS_Report::CCSExportType::PDF);//<2F><><EFBFBD><EFBFBD>pdf
|
|||
|
reportcore->Export(filePath + fileName, CCS_Report::CCSExportType::WORD);//<2F><><EFBFBD><EFBFBD>pdf
|
|||
|
return true;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void FileGenerate::clearData()
|
|||
|
{
|
|||
|
CoverRightItem.clear();
|
|||
|
ModelItem.clear();
|
|||
|
RootPack.clear();
|
|||
|
PackTable.clear();
|
|||
|
PackItem.clear();
|
|||
|
ChildPackTable.clear();
|
|||
|
ChildPack1.clear();
|
|||
|
ChildPackItem.clear();
|
|||
|
Ch_childPackTable.clear();
|
|||
|
ChildPack2.clear();
|
|||
|
Ch_childPackItem.clear();
|
|||
|
classGroupItem.clear();
|
|||
|
classname.clear();
|
|||
|
AttTableData.clear();
|
|||
|
interfaceTableData.clear();
|
|||
|
classGroupItem111.clear();
|
|||
|
classname5.clear();
|
|||
|
AttTableData111.clear();
|
|||
|
interfaceTableData111.clear();
|
|||
|
|
|||
|
}
|