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;
|
|
|
|
}
|