DPS/DataPlatform/XmlEditEventModule.cpp

292 lines
7.9 KiB
C++
Raw Normal View History

2025-06-23 10:41:33 +08:00
#pragma execution_character_set("utf-8")
#include "XmlEditEventModule.h"
#include "DataAccessModule.h"
#include "DBPlatformNew.h"
#include "M_ProjectDAO.h"
#include "M_XMLTemplateDAO.h"
#include "M_EntityModelDAO.h"
#include "SysManager.h"
#include "DataManager.h"
#include <QProcess>
XmlEditEventModule::XmlEditEventModule(QObject* /*parent*/, DataManager* manager)
:BaseEventModule(manager, "XmlEditEventModule")
{
addShareEventModule(new DataAccessModule(pDataManager));
}
XmlEditEventModule::~XmlEditEventModule()
{
}
2025-06-23 18:01:09 +08:00
//获取json
2025-06-23 10:41:33 +08:00
void toJson(json& jsonObj, DBPlatformSpace::M_XMLTemplateDAO* pDAO, bool bContent)
{
using namespace DBPlatformSpace;
jsonObj["id"] = pDAO->_ID;
jsonObj["name"] = CommonHelper::stringToUtf8(pDAO->_name);
jsonObj["projectId"] = pDAO->_projectID;
M_ProjectDAO* pro = nullptr;
M_ProjectDAO::FindByID(pDAO->_projectID, pro);
jsonObj["projectName"] = CommonHelper::stringToUtf8(pro->_name);
jsonObj["datamodelId"] = pDAO->_modelID;
M_EntityModelDAO* model = nullptr;
M_EntityModelDAO::FindByID(pDAO->_modelID, model);
jsonObj["modelName"] = CommonHelper::stringToUtf8(model->_displayName);
jsonObj["createTime"] = CommonHelper::stringToUtf8(pDAO->_createTime);
2025-06-23 18:01:09 +08:00
//测试
2025-06-23 10:41:33 +08:00
LOG(INFO) << CommonHelper::jsonToString(jsonObj);
delete pro;
pro = nullptr;
delete model;
model = nullptr;
if (bContent)
{
jsonObj["content"] = CommonHelper::stringToUtf8(pDAO->_content);
}
}
bool XmlEditEventModule::onMessage(const std::string& eventName, json& parameter)
{
LOG(INFO) << CommonHelper::utf8ToStdString("XmlEditEventModule receive message.......");
LOG(INFO) << eventName;
LOG(INFO) << CommonHelper::jsonToString(parameter);
TRY{
if (eventName == "get-all-xml")
{
return getAllxmlFiles(parameter);
}
else if (eventName == "new-xml-file")
{
return addxmlFile(parameter);
}
else if (eventName == "save-xml-file")
{
return savexmlFile(parameter);
}
else if (eventName == "get-current-xml")
{
return getCurrentFile(parameter);
}
else if (eventName == "del-xml-file")
{
return deletexmlFile(parameter);
}
else if (eventName == "export-xml-file")
{
return exportxmlFile(parameter);
}
else if (eventName == "open-xml-dir")
{
return openxmlDir(parameter);
}
}
CATCH(parameter);
return EventModule::onMessage(eventName, parameter);
}
bool XmlEditEventModule::getAllxmlFiles(json& parameter)
{
2025-06-23 18:01:09 +08:00
//检查是否连接数据库
2025-06-23 10:41:33 +08:00
DataManager& dataRoot = GetDataRoot();
if (!dataRoot.pTheDBPlatform)
{
2025-06-23 18:01:09 +08:00
parameter["error"] = "请先连接数据库文件!";
2025-06-23 10:41:33 +08:00
return true;
}
using namespace DBPlatformSpace;
2025-06-23 18:01:09 +08:00
// 获取所有XMLfile信息
2025-06-23 10:41:33 +08:00
std::list<M_XMLTemplateDAO*> xmlfileList;
ResultMsg rm = M_XMLTemplateDAO::FindAll(xmlfileList);
parameter["response"] = json::array();
for (list<M_XMLTemplateDAO*>::iterator it = xmlfileList.begin(); it != xmlfileList.end(); ++it)
{
json j;
toJson(j, *it,false);
parameter["response"].push_back(j);
}
LOG(INFO) << CommonHelper::utf8ToStdString("getCurrentDataModel Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
2025-06-23 18:01:09 +08:00
/*新建xml文件*/
2025-06-23 10:41:33 +08:00
bool XmlEditEventModule::addxmlFile(json& parameter)
{
using namespace DBPlatformSpace;
auto data = parameter["data"];
M_XMLTemplateDAO pnew ;
pnew._ID = data["id"];
pnew._name = CommonHelper::utf8ToStdString(data["name"]);
pnew._projectID = data["projectId"];
pnew._modelID = data["datamodelId"];
pnew._createTime = CommonHelper::qstringToUtf8(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm"));
ResultMsg rm = pnew.save();
if (rm.rCode == 0)
{
LOG(INFO) << CommonHelper::utf8ToStdString("M_XMLTemplateDAO::save success");
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString("M_XMLTemplateDAO::savefailed ");
parameter["error"] = CommonHelper::stringToUtf8(rm.rMsg);
LOG(ERROR) << rm.rMsg;
return true;
}
data["id"] = pnew._ID;
data["createTime"] = pnew._createTime;
parameter["response"] = data;
LOG(INFO) << CommonHelper::utf8ToStdString("addxmlFile Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
2025-06-23 18:01:09 +08:00
/*保存 xml模板文件*/
2025-06-23 10:41:33 +08:00
bool XmlEditEventModule::savexmlFile(json& parameter)
{
using namespace DBPlatformSpace;
auto data = parameter["data"];
M_XMLTemplateDAO* pxmlfile = new M_XMLTemplateDAO();
M_XMLTemplateDAO::FindByID(data["id"], pxmlfile);
pxmlfile->_content = CommonHelper::utf8ToStdString(data["content"]);
ResultMsg rm = pxmlfile->save();
if (rm.rCode == 0)
{
LOG(INFO) << CommonHelper::utf8ToStdString("M_XMLTemplateDAO::save success");
}
else
{
delete pxmlfile;
pxmlfile = nullptr;
LOG(INFO) << CommonHelper::utf8ToStdString("M_XMLTemplateDAO::savefailed ");
parameter["error"] = CommonHelper::stringToUtf8(rm.rMsg);
LOG(ERROR) << rm.rMsg;
return true;
}
delete pxmlfile;
pxmlfile = nullptr;
parameter["response"] = true;
LOG(INFO) << CommonHelper::utf8ToStdString("savexmlFile Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
2025-06-23 18:01:09 +08:00
/*获取当前xml文件信息*/
2025-06-23 10:41:33 +08:00
bool XmlEditEventModule::getCurrentFile(json& parameter)
{
using namespace DBPlatformSpace;
auto data = parameter["data"];
M_XMLTemplateDAO* pxmlfile = new M_XMLTemplateDAO();
ResultMsg rm = M_XMLTemplateDAO::FindByID(data["id"], pxmlfile);
if (rm.rCode == 0)
{
LOG(INFO) << CommonHelper::utf8ToStdString("M_XMLTemplateDAO::FindByID success");
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString("M_XMLTemplateDAO::FindByID failed ");
parameter["error"] = CommonHelper::stringToUtf8(rm.rMsg);
LOG(ERROR) << rm.rMsg;
return true;
}
json j;
toJson(j, pxmlfile, true);
parameter["response"] = j;
return true;
}
bool XmlEditEventModule::deletexmlFile(json& parameter)
{
using namespace DBPlatformSpace;
auto data = parameter["data"];
M_XMLTemplateDAO* pxmlfile = new M_XMLTemplateDAO();
M_XMLTemplateDAO::FindByID(data["id"], pxmlfile);
ResultMsg rm = pxmlfile->delself();
if(rm.rCode == 0)
{
LOG(INFO) << CommonHelper::utf8ToStdString("M_XMLTemplateDAO::delself success");
parameter["response"] = { {"status",true} };
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString("M_XMLTemplateDAO::delself failed ");
parameter["error"] = CommonHelper::stringToUtf8(rm.rMsg);
LOG(ERROR) << rm.rMsg;
return true;
}
LOG(INFO) << CommonHelper::utf8ToStdString("deletexmlFile Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
2025-06-23 18:01:09 +08:00
/*导出xml模板信息*/
2025-06-23 10:41:33 +08:00
bool XmlEditEventModule::exportxmlFile(json& parameter)
{
auto data = parameter["data"];
QString name = CommonHelper::utf8ToQString(data["name"]);
QString content = CommonHelper::utf8ToQString(data["content"]);
SysManager& sysMgr = GetSysManager();
2025-06-23 18:01:09 +08:00
//检查文件路径是否为空
2025-06-23 10:41:33 +08:00
if (sysMgr._xmlfilePath.isEmpty())
{
parameter["response"] = { {"status",false} };
2025-06-23 18:01:09 +08:00
parameter["error"] = "xml文件保存路径为空,请设置路径";
2025-06-23 10:41:33 +08:00
LOG(INFO) << CommonHelper::utf8ToStdString("XmlEditEventModule::exportxmlFile failed. xmlfilePath is empty");
return true;
}
QString fileFullPath = sysMgr._xmlfilePath + "/" + name + ".xml";
QFile sFile(fileFullPath);
2025-06-23 18:01:09 +08:00
//以重写、只写方式打开文件(运行到此时,文件已经存在目录中)
2025-06-23 10:41:33 +08:00
if (!sFile.open(QIODevice::Truncate | QIODevice::WriteOnly | QIODevice::Text))
printf("Open jsonfile failed!\n");
2025-06-23 18:01:09 +08:00
//写入文件内容
2025-06-23 10:41:33 +08:00
sFile.write(content.toStdString().c_str());
2025-06-23 18:01:09 +08:00
//关闭文件
2025-06-23 10:41:33 +08:00
sFile.close();
parameter["response"] = { {"status",true} };
LOG(INFO) << CommonHelper::utf8ToStdString("exportxmlFile Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool XmlEditEventModule::openxmlDir(json& parameter)
{
auto data = parameter["data"];
QString name = CommonHelper::utf8ToQString(data["name"]);
2025-06-23 18:01:09 +08:00
//先用系统配置中的生成代码路径来确认位置
2025-06-23 10:41:33 +08:00
SysManager& sysMgr = GetSysManager();
QString fileFullPath = sysMgr._xmlfilePath + "/" + name + ".xml";
QString cmd = QString("explorer.exe /select,%1").arg(fileFullPath.replace('/', '\\'));
QProcess::startDetached(cmd);
return true;
}