DPS/DataPlatform/FileGenerate.cpp

142 lines
4.2 KiB
C++
Raw Permalink 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);
2025-06-23 18:01:09 +08:00
//获取当前路径,用于生成图片路径
2025-06-23 10:41:33 +08:00
// 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;
2025-06-23 18:01:09 +08:00
//项目名称
2025-06-23 10:41:33 +08:00
QString projectName = pProject->_name;
QString fileName;
QStringList qs;
2025-06-23 18:01:09 +08:00
//模型列表
2025-06-23 10:41:33 +08:00
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();
2025-06-23 18:01:09 +08:00
fileName = projectName + "_" + pModel->_displayName + "_" + "数据接口类说明书.doc";
2025-06-23 10:41:33 +08:00
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 {
2025-06-23 18:01:09 +08:00
LOG(INFO) << CommonHelper::utf8ToStdString("缺少 DPSReportBody.xml 文件");
2025-06-23 10:41:33 +08:00
return false;
}
if (m_listFileName.isEmpty())
return false;
2025-06-23 18:01:09 +08:00
reportcore->loadReportFromFiles(m_listFileName);//加载xml到内存
reportcore->LoadData(m_DataSets);//加载数据到内存
2025-06-23 10:41:33 +08:00
2025-06-23 18:01:09 +08:00
// reportcore->Export( filePath+fileName, CCS_Report::CCSExportType::PDF);//生成pdf
reportcore->Export(filePath + fileName, CCS_Report::CCSExportType::WORD);//生成pdf
2025-06-23 10:41:33 +08:00
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();
}