#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 XmlEditEventModule::XmlEditEventModule(QObject* /*parent*/, DataManager* manager) :BaseEventModule(manager, "XmlEditEventModule") { addShareEventModule(new DataAccessModule(pDataManager)); } XmlEditEventModule::~XmlEditEventModule() { } //获取json 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); //测试 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) { //检查是否连接数据库 DataManager& dataRoot = GetDataRoot(); if (!dataRoot.pTheDBPlatform) { parameter["error"] = "请先连接数据库文件!"; return true; } using namespace DBPlatformSpace; // 获取所有XMLfile信息 std::list xmlfileList; ResultMsg rm = M_XMLTemplateDAO::FindAll(xmlfileList); parameter["response"] = json::array(); for (list::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; } /*新建xml文件*/ 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; } /*保存 xml模板文件*/ 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; } /*获取当前xml文件信息*/ 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; } /*导出xml模板信息*/ bool XmlEditEventModule::exportxmlFile(json& parameter) { auto data = parameter["data"]; QString name = CommonHelper::utf8ToQString(data["name"]); QString content = CommonHelper::utf8ToQString(data["content"]); SysManager& sysMgr = GetSysManager(); //检查文件路径是否为空 if (sysMgr._xmlfilePath.isEmpty()) { parameter["response"] = { {"status",false} }; parameter["error"] = "xml文件保存路径为空,请设置路径"; LOG(INFO) << CommonHelper::utf8ToStdString("XmlEditEventModule::exportxmlFile failed. xmlfilePath is empty"); return true; } QString fileFullPath = sysMgr._xmlfilePath + "/" + name + ".xml"; QFile sFile(fileFullPath); //以重写、只写方式打开文件(运行到此时,文件已经存在目录中) if (!sFile.open(QIODevice::Truncate | QIODevice::WriteOnly | QIODevice::Text)) printf("Open jsonfile failed!\n"); //写入文件内容 sFile.write(content.toStdString().c_str()); //关闭文件 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"]); //先用系统配置中的生成代码路径来确认位置 SysManager& sysMgr = GetSysManager(); QString fileFullPath = sysMgr._xmlfilePath + "/" + name + ".xml"; QString cmd = QString("explorer.exe /select,%1").arg(fileFullPath.replace('/', '\\')); QProcess::startDetached(cmd); return true; }