DPS/DataPlatform/FileGenerate.cpp

142 lines
4.2 KiB
C++
Raw Normal View History

2025-06-23 10:41:33 +08:00
#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();
}