#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 #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); //获取当前路径,用于生成图片路径 // 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(pData); if (!pProject) return false; //项目名称 QString projectName = pProject->_name; QString fileName; QStringList qs; //模型列表 pProject->getAllChildren(&mgr); QMap::iterator it = pProject->_childrenMap.begin(); while (it != pProject->_childrenMap.end()) { clearData(); DataModelData* pModel = qobject_cast(*it); if (pModel) { pModel->getAllChildren(&mgr, false); pModel->setFileData(this, qs); setData(); fileName = projectName + "_" + pModel->_displayName + "_" + "数据接口类说明书.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("缺少 DPSReportBody.xml 文件"); return false; } if (m_listFileName.isEmpty()) return false; reportcore->loadReportFromFiles(m_listFileName);//加载xml到内存 reportcore->LoadData(m_DataSets);//加载数据到内存 // reportcore->Export( filePath+fileName, CCS_Report::CCSExportType::PDF);//生成pdf reportcore->Export(filePath + fileName, CCS_Report::CCSExportType::WORD);//生成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(); }