DPS/DataPlatform/DataPackEventModule.cpp

1047 lines
26 KiB
C++
Raw Normal View History

2025-06-23 10:41:33 +08:00
#pragma execution_character_set("utf-8")
#include <QFileDialog>
#include <QCoreApplication>
#include <QProcess>
#include "DataPackEventModule.h"
#include "DataManager.h"
#include "DataModelData.h"
#include "DataPack.h"
#include "DataClass.h"
#include "DataAttribute.h"
#include "global.h"
#include "DataAccessModule.h"
#include "TransformExcel.h"
#include "global.h"
#include "SceneInfo.h"
#include "common.h"
#include "QWaiting.h"
#include "Session.h"
#include "mainwindow.h"
DataPackEventModule::DataPackEventModule(QObject* /*parent*/, DataManager* manager)
:BaseEventModule(manager, "DataModelGraphView")
{
addShareEventModule(new DataAccessModule(pDataManager));
}
DataPackEventModule::~DataPackEventModule()
{
}
bool DataPackEventModule::onMessage(const std::string& eventName, json& parameter)
{
LOG(INFO) << CommonHelper::utf8ToStdString("DataPackEventModule receive message.......");
LOG(INFO) << eventName;
LOG(INFO) << CommonHelper::jsonToString(parameter);
TRY{
if (eventName == "add-datamodule-child")
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E9A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return moveDataPackOrClass(parameter);
}
else if (eventName == "create-relationship")
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD>ϵ
return buildDataRelationship(parameter);
}
else if (eventName == "delete-relationship")
{
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD>ϵ
return deleteDataRelationship(parameter);
}
else if (eventName == "add-datamodule")
{
//<2F>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
return addDataPack(parameter);
}
else if (eventName == "delete-datamodule")
{
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
return deleteDataPack(parameter);
}
else if (eventName == "save-datamodule")
{
//<2F><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
return updateDataPack(parameter);
}
if (eventName == "add-dataclass")
{
//<2F>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return addDataClass(parameter);
}
else if (eventName == "delete-dataclass")
{
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return deleteDataClass(parameter);
}
else if (eventName == "save-dataclass")
{
//<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return updateDataClass(parameter);
}
else if (eventName == "add-dataclass-attribute")
{
//<2F>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return addDataClassAttribute(parameter);
}
else if (eventName == "delete-classattribute")
{
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return deleteDataClassAttribute(parameter);
}
else if (eventName == "save-dataclass-attribute")
{
//<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return updateDataClassAttribute(parameter);
} //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>¼<EFBFBD>
else if (eventName == "get-datadictionary-data")
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return getDictionaryData(parameter);
}
else if (eventName == "import-datadictionary")
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>
return importDictionary(parameter);
}
else if (eventName == "export-template")
{
//<2F><><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
return exportTemplate(parameter);
}
else if (eventName == "export-datadictionary")
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>
return exportDictionary(parameter);
}
else if (eventName == "import-datamodel")
{
//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD>͵<EFBFBD><CDB5><EFBFBD>
return importDataModel(parameter);
}
else if (eventName == "export-datamodel")
{
//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD>͵<EFBFBD><CDB5><EFBFBD>
return exportDataModel(parameter);
}
else if (eventName == "add-scenenode")
{
//<2F><><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
return addSceneNode(parameter);
}
else if (eventName == "get-datamodel-scene")
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return getSceneNode(parameter);
}
else if (eventName == "delete-scenenode")
{
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return deleteScene(parameter);
}
else if (eventName == "move-scense-node")
{
return updateScene(parameter);
}
}
CATCH(parameter);
return EventModule::onMessage(eventName, parameter);
}
//<2F><><EFBFBD>£<EFBFBD><C2A3><EFBFBD>Ϣ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>к<EFBFBD><D0BA><EFBFBD>
bool DataPackEventModule::moveDataPackOrClass(json& parameter)
{
auto data = parameter["data"];
int dataId = data["id"];//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
// int newPackId = data["parentid"];//<2F>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>id
int classType = data["classType"];
if (classType == g_TYPE_DATAPACK)
{
//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
DPData* pData = pDataManager->findObjectById(DataManager::DataType::dataPack, dataId);
DataPack* pPack = qobject_cast<DataPack*>(pData);
if (pPack && pPack->moveData(parameter, pDataManager))
{
// id <09><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
// classType ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>1Ϊģ<CEAA>飬2Ϊ<32><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// parentid <09>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>ID
// oldparentid ԭ<>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>ID
//<2F>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
data["id"] = dataId;
data["classType"] = g_TYPE_DATAPACK;
data["parentid"] = data["parentid"];
data["oldparentid"] = pData->_parent->_id;
parameter["response"] = data;
}
else
{
//<2F>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
}
else if (classType == g_TYPE_DATACLASS)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DPData* pData = pDataManager->findObjectById(DataManager::DataType::dataClass, dataId);
DataClass* pClass = qobject_cast<DataClass*>(pData);
if (pData && pClass->moveData(parameter, pDataManager))
{
//<2F>ɹ<EFBFBD>
data["id"] = dataId;
data["classType"] = g_TYPE_DATACLASS;
data["parentid"] = data["parentid"];
data["oldparentid"] = pData->_parent->_id;
parameter["response"] = data;
}
else
{
//ʧ<><CAA7>
//<2F>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
}
LOG(INFO) << CommonHelper::utf8ToStdString("moveDataPackOrClass Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
bool DataPackEventModule::addDataPack(json& parameter)
{
auto data = parameter["data"];
int parentId = data["parentid"]; //<2F>ϲ<EFBFBD>id
int classType = data["classType"];
DataPack* pNewPack = new DataPack();
pNewPack->setNewData(parameter);
//<2F><><EFBFBD>ƺϷ<C6BA><CFB7><EFBFBD><EFBFBD>ж<EFBFBD>
QString msg;
if ( pNewPack->checkNameillegal(msg))
{
delete pNewPack;
pNewPack = nullptr;
parameter["error"] = CommonHelper::qstringToUtf8(msg);
}
else
{
DPData* pParent = nullptr;
if (classType == g_TYPE_DATAMODEL)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD>
pParent = pDataManager->findObjectById(DataManager::DataType::dataModel, parentId);
}
else if (classType == g_TYPE_DATAPACK)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>½<EFBFBD><C2BD><EFBFBD>ģ<EFBFBD><C4A3>
pParent = pDataManager->findObjectById(DataManager::DataType::dataPack, parentId);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ϣ
pNewPack->_bIsChildPack = true;
}
if (pParent)
{
pNewPack->_parent = pParent; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>
if (pParent->addChild(pNewPack))
{
//<2F><><EFBFBD>ӵ<EFBFBD>map
pDataManager->insertDataMap(DataManager::DataType::dataPack, pNewPack->_id, pNewPack);
json j;
pNewPack->toJson(j);
parameter["response"] = j;
}
else
{
delete pNewPack;
pNewPack = nullptr;
parameter["error"] = "<EFBFBD>½<EFBFBD>ģ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
}
else {
delete pNewPack;
pNewPack = nullptr;
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
}
LOG(INFO) << CommonHelper::utf8ToStdString("addDataPack Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::deleteDataPack(json& parameter)
{
//<2F><><EFBFBD><EFBFBD>id
auto data = parameter["data"];
auto dataPackId = data["id"];
QString result;
DataPack* pData = qobject_cast<DataPack*>(pDataManager->findObjectById(DataManager::DataType::dataPack, dataPackId));
if (pData && pData->deleteSelf(result))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>map
pDataManager->deleteInDataMap(DataManager::DataType::dataPack, dataPackId);
delete pData;
pData = nullptr;
//ɾ<><C9BE><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// parameter["response"] = json::array();
//
// if (!result.isEmpty())
// {
// QStringList typeIdlist = result.split("#");
// for (int i = 0; i < typeIdlist.size(); i++)
// {
// QString typeId = typeIdlist.at(i);
// int pos = typeId.indexOf(",");
// int type = typeId.left(pos).toInt();
// int id = typeId.right(typeId.size() - 1 - pos).toInt();
// json j;
// j["id"] = id;
// j["classType"] = type;
// parameter["response"].push_back(j);
// }
// }
parameter["response"]["status"] = true;
}
else
{
//<2F><EFBFBD><E7B1A3>ʾɾ<CABE><C9BE>ģ<EFBFBD><C4A3>ʧ<EFBFBD>ܣ<EFBFBD>
parameter["response"]["status"] = false;
}
LOG(INFO) << CommonHelper::utf8ToStdString("deleteDataPack Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::updateDataPack(json& parameter)
{
//<2F>޸<EFBFBD>name type desciption <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>
auto data = parameter["data"];
auto dataPackId = data["id"];
//<2F><><EFBFBD>ҵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
DPData* pDataPack = pDataManager->findObjectById(DataManager::DataType::dataPack, dataPackId);
if (pDataPack) {
pDataPack->setNewData(parameter);
if (pDataPack->saveSelf())
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>web<65><62>
json j;
pDataPack->toJson(j);
parameter["response"] = j;
}
else
{
parameter["error"] = "<EFBFBD>޸<EFBFBD>ģ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
}
else {
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
LOG(INFO) << CommonHelper::utf8ToStdString("deleteDataPack Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool DataPackEventModule::getDataClass(json& parameter)
{
auto data = parameter["data"];
int id = data["id"];
DPData* pData = pDataManager->findObjectById(DataManager::DataType::dataClass, id);
if (pData)
{
json j;
pData->toJson(j);
parameter["response"] = j;
}
else
{
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
}
LOG(INFO) << CommonHelper::utf8ToStdString("getDataClass Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::addDataClass(json& parameter)
{
const int COMMON_CLASS = 1;
DataClass* pNewDataClass = new DataClass();
auto data = parameter["data"];
auto parentId = data["parentid"]; //<2F>ϲ<EFBFBD>id
pNewDataClass->setNewData(parameter);
pNewDataClass->reName();
QString errMsg;
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>
if (!pNewDataClass->checkNameSize(3, 128, errMsg) || !pNewDataClass->checkLetter(errMsg,2))
{
delete pNewDataClass;
pNewDataClass = nullptr;
parameter["error"] = CommonHelper::qstringToUtf8(errMsg);
}
else
{
pNewDataClass->_type = COMMON_CLASS;//<2F><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ҵ<EFBFBD>ǰ<EFBFBD><C7B0>ģ<EFBFBD><C4A3>
DPData* pData = pDataManager->findObjectById(DataManager::DataType::dataPack, parentId);
pNewDataClass->_parent = pData; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>
if (pData && pData->addChild(pNewDataClass))
{
//<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>map
pDataManager->insertDataMap(DataManager::DataType::dataClass, pNewDataClass->_id, pNewDataClass);
json j;
pNewDataClass->toJson(j);
parameter["response"] = j;
}
else
{
delete pNewDataClass;
pNewDataClass = nullptr;
parameter["error"] = "<EFBFBD>½<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
}
LOG(INFO) << CommonHelper::utf8ToStdString("addDataClass Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::deleteDataClass(json& parameter)
{
//<2F><><EFBFBD><EFBFBD>id
auto data = parameter["data"];
int dataClassID = data["id"];
QString result;
DataClass* pClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, dataClassID));
if (!pClass)
{
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
LOG(INFO) << CommonHelper::utf8ToStdString("deleteDataClass Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
if (pClass->deleteFromModel(result))
{
delete pClass;
pClass = nullptr;
parameter["response"] = json::array();
if (!result.isEmpty())
{
QStringList typeIdlist = result.split("#");
for (int i = 0; i < typeIdlist.size(); i++)
{
QString typeId = typeIdlist.at(i);
int pos = typeId.indexOf(",");
int type = typeId.left(pos).toInt();
int id = typeId.right(typeId.size() - 1 - pos).toInt();
json j;
j["id"] = id;
j["classType"] = type;
parameter["response"].push_back(j);
}
}
}
else
{
parameter["response"]["status"] = false;
}
LOG(INFO) << CommonHelper::utf8ToStdString("deleteDataClass Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::updateDataClass(json& parameter)
{
auto data = parameter["data"];
auto dataClassId = data["id"];
//<2F><><EFBFBD>ҵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DPData* pDataClass = pDataManager->findObjectById(DataManager::DataType::dataClass, dataClassId);
if (pDataClass) {
pDataClass->setNewData(parameter);
if (pDataClass->saveSelf())
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>web<65><62>
parameter["response"] = data;
}
else
{
//ʧ<><CAA7>
parameter["error"] = "<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
}
else {
parameter["error"] = "<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
LOG(INFO) << CommonHelper::utf8ToStdString("updateDataClass Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹع<DDB9><D8B9><EFBFBD>
bool DataPackEventModule::buildDataRelationship(json& parameter)
{
bool status = false;
auto data = parameter["data"];
int type = data["type"];//<2F><>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
int mainClassId = data["id1"]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int subClassId = data["id2"]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataClass* pNewRelationClass;
QString nameFlag1 = CommonHelper::utf8ToQString(data["crname1"]);
QString nameFlag2 = CommonHelper::utf8ToQString(data["crname2"]);
DPData* pClass1 = pDataManager->findObjectById(DataManager::DataType::dataClass, mainClassId);
DPData* pClass2 = pDataManager->findObjectById(DataManager::DataType::dataClass, subClassId);
status = DataClass::buildRelationship(pClass1, pClass2, nameFlag1, nameFlag2, type, pNewRelationClass);
if (type == RELATION_MN)
{
json j;
pNewRelationClass->toJson(j, true);
parameter["response"] = j;
}
else
{
if (status == true)
{
parameter["response"]["status"] = status;
}
else
{
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD>ϵʧ<EFBFBD><EFBFBD>";
}
}
LOG(INFO) << CommonHelper::utf8ToStdString("buildDataRelationship Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::deleteDataRelationship(json& parameter)
{
auto data = parameter["data"];
int classId1 = data["id1"];
int classId2 = data["id2"];
QString result;
DPData* pClass1 = pDataManager->findObjectById(DataManager::DataType::dataClass, classId1);
DPData* pClass2 = pDataManager->findObjectById(DataManager::DataType::dataClass, classId2);
bool status = DataClass::deleteRelationship(pClass1, pClass2, result);
parameter["response"] = json::array();
if (!result.isEmpty())
{
QStringList typeIdlist = result.split("#");
for (int i = 0; i < typeIdlist.size(); i++)
{
QString typeId = typeIdlist.at(i);
int pos = typeId.indexOf(",");
int type = typeId.left(pos).toInt();
int id = typeId.right(typeId.size() - 1 - pos).toInt();
json j;
j["id"] = id;
j["classType"] = type;
parameter["response"].push_back(j);
}
}
LOG(INFO) << CommonHelper::utf8ToStdString("deleteDataRelationship Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
//<2F><><EFBFBD><EFBFBD>
bool DataPackEventModule::addDataClassAttribute(json& parameter)
{
auto data = parameter["data"];
int parentId = data["parentid"]; //<2F>ϲ<EFBFBD>id
//<2F><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
QString name = CommonHelper::utf8ToQString(data["name"]);
QString errMsg;
DataAttribute* pNewDataAttribute = new DataAttribute();
pNewDataAttribute->setNewData(parameter);
pNewDataAttribute->reName();
if ( !pNewDataAttribute->checkNameSize(2,128,errMsg) || !pNewDataAttribute->checkLetter(errMsg,1) || pNewDataAttribute->illegalName(errMsg))
{
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD>Ϸ<EFBFBD>
parameter["error"] = CommonHelper::qstringToUtf8(errMsg);
delete pNewDataAttribute;
pNewDataAttribute = nullptr;
}
else
{
//<2F><><EFBFBD>ҵ<EFBFBD>ǰ<EFBFBD><C7B0>ģ<EFBFBD><C4A3>
DPData* pData = pDataManager->findObjectById(DataManager::DataType::dataClass, parentId);
pNewDataAttribute->_parent = pData; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>
if (pData && pData->addChild(pNewDataAttribute))
{
//<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>map
pDataManager->insertDataMap(DataManager::DataType::dataAttribute, pNewDataAttribute->_id, pNewDataAttribute);
json j;
pNewDataAttribute->toJson(j);
parameter["response"] = j;
}
else
{
delete pNewDataAttribute;
pNewDataAttribute = nullptr;
parameter["error"] = "<EFBFBD>½<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
}
LOG(INFO) << CommonHelper::utf8ToStdString("addDataClassAttribute Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::deleteDataClassAttribute(json& parameter)
{
//<2F><><EFBFBD><EFBFBD>id
auto data = parameter["data"];
auto dataAttributeID = data["id"];
DPData* pDataClassAttribute = pDataManager->findObjectById(DataManager::DataType::dataAttribute, dataAttributeID);
if (pDataClassAttribute && pDataClassAttribute->deleteSelf())
{
//ɾ<><C9BE><EFBFBD>ɹ<EFBFBD>
delete pDataClassAttribute;
pDataClassAttribute = nullptr;
//ɾ<><C9BE><EFBFBD>ɹ<EFBFBD>
parameter["response"]["status"] = true;
}
else
{
//ʧ<><CAA7>
parameter["response"]["status"] = false;
}
LOG(INFO) << CommonHelper::utf8ToStdString("deleteDataClassAttribute Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::updateDataClassAttribute(json& parameter)
{
auto data = parameter["data"];
auto dataAttributeId = data["id"];
//<2F><><EFBFBD>ҵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DPData* pDataAttribute = pDataManager->findObjectById(DataManager::DataType::dataAttribute, dataAttributeId);
if (pDataAttribute) {
pDataAttribute->setNewData(parameter);
if (pDataAttribute->saveSelf())
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>web<65><62>
parameter["response"] = data;
}
else
{
//ʧ<><CAA7>
parameter["response"]["status"] = false;
}
}
else {
parameter["error"] = "<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
LOG(INFO) << CommonHelper::utf8ToStdString("updateDataClassAttribute Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::importDictionary(json& parameter)
{
auto data = parameter["data"];
int id = data["id"];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataClass* pDataClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, id));
QString ret;
if (pDataClass)
{
if (pDataClass->importDict(ret))
{
parameter["response"]["status"] = true;
}
else
{
parameter["error"] = CommonHelper::qstringToUtf8(ret);
}
}
else
{
parameter["error"] = "<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
LOG(INFO) << CommonHelper::utf8ToStdString("importDictionary Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::exportTemplate(json& parameter)
{
auto data = parameter["data"];
int id = data["id"];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataClass* pDataClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, id));
try
{
if (!pDataClass)
throw exception("<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
int ret = pDataClass->exportTemplate();
if (ret == 0)
{
parameter["response"]["status"] = true;
}
else if (ret == 1)
{
parameter["response"]["status"] = false;
}
}
catch (exception& e)
{
parameter["error"] = e.what();
LOG(ERROR) << e.what();
}
LOG(INFO) << CommonHelper::utf8ToStdString("exportTemplate Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::exportDictionary(json& parameter)
{
auto data = parameter["data"];
int id = data["id"];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataClass* pDataClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, id));
try
{
if (!pDataClass)
throw exception("<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
parameter["response"]["status"] = pDataClass->exportDict();
}
catch (exception& e)
{
LOG(ERROR) << e.what();
}
LOG(INFO) << CommonHelper::utf8ToStdString("exportDictionary Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::getDictionaryData(json& parameter)
{
auto data = parameter["data"];
int id = data["id"];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataClass* pDataClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, id));
if (pDataClass) {
json j;
pDataClass->dictToJson(j);
parameter["response"] = j;
}
else {
parameter["error"] = "<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LOG(INFO) << CommonHelper::utf8ToStdString("getDictionaryData Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>*/
bool DataPackEventModule::importDataModel(json& parameter)
{
auto data = parameter["data"];
int dataModelId = data["id"];
TransformExcel transform(pDataManager, dataModelId);
// DataModelData* pModel = qobject_cast<DataModelData*>(pDataManager->findObjectById(DataManager::DataType::dataModel, dataModelId));
// int curProjectId = pModel->_parent->_id; //<2F><>ǰ<EFBFBD><C7B0>Ŀid
QString curPath = QCoreApplication::applicationDirPath();
QString selectDir = QFileDialog::getOpenFileName(nullptr, "ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>", "", "*.xlsx");
QString errMsg;
if (!selectDir.isEmpty())
{
try
{
transform.openFile(selectDir);
QWaiting waiting(Session::getSession()->parent(), "ģ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
if (waiting.working(std::bind(&TransformExcel::importData, &transform, std::ref(errMsg))))
{
parameter["response"]["status"] = true;
}
else
{
if (errMsg == "<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
{
// CommonHelper::message(errMsg,2);
qApp->quit();
QProcess::startDetached(qApp->applicationFilePath());
}
else if( errMsg == "ģ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") {
//<2F><><EFBFBD>»<EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataModelData* pModel = qobject_cast<DataModelData*>(pDataManager->findObjectById(DataManager::DataType::dataModel, dataModelId));
if (pModel) {
pModel->getAllChildren(pDataManager, true);
pModel->_initChildren = true;
}
}
parameter["error"] = CommonHelper::qstringToUtf8(errMsg);
}
}
catch (exception& e)
{
LOG(ERROR) << e.what();
LOG(ERROR) << CommonHelper::utf8ToStdString("DataPackEventModule::importDataModel catch exception");
}
}
LOG(INFO) << CommonHelper::utf8ToStdString("importDataModel Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>*/
bool DataPackEventModule::exportDataModel(json& parameter)
{
TransformExcel transform(pDataManager, 0);
QString file = QFileDialog::getSaveFileName(nullptr, tr("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"), "", tr("*.xlsx"));
if (!file.isEmpty())
{
QFileInfo exportFile(file);
if (exportFile.isFile())
{
if (!transform.openFile(file))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7><>ӷ<EFBFBD><D3B7><EFBFBD>
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>";
LOG(INFO) << CommonHelper::utf8ToStdString("exportDataModel Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
}
QWaiting waiting(Session::getSession()->parent(), "ģ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
if (waiting.working(std::bind(&TransformExcel::exportData, &transform, std::ref(parameter))))
{
parameter["response"]["status"] = true;
}
else
{
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
transform.closeFile(file);
}
LOG(INFO) << CommonHelper::utf8ToStdString("exportDataModel Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
/*<2A><><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>*/
bool DataPackEventModule::addSceneNode(json& parameter)
{
auto data = parameter["data"];
int parentType = data["parentClassType"]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int parentId = data["parentid"]; //<2F><>id
SceneInfo* pNewScene = new SceneInfo;
pNewScene->setNewData(parameter);
DPData* pdata = nullptr;
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><E0A3A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (parentType == g_TYPE_DATACLASS)
{
pdata = pDataManager->findObjectById(DataManager::DataType::dataClass, parentId);
}
else if (parentType == g_TYPE_DATAPACK)
{
pdata = pDataManager->findObjectById(DataManager::DataType::dataPack, parentId);
}
if (!pdata)
{
delete pNewScene;
pNewScene = nullptr;
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
LOG(INFO) << CommonHelper::utf8ToStdString("addSceneNode Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
if (pdata->addScene(pNewScene))
{
pNewScene->_parent = pdata;
pDataManager->insertDataMap(DataManager::DataType::scene, pNewScene->_id, pNewScene);
//<2F><><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>ɹ<EFBFBD>
json j;
pNewScene->toJson(j);
parameter["response"] = j;
}
else
{
//<2F><><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ʧ<EFBFBD><CAA7>
delete pNewScene;
pNewScene = nullptr;
parameter["response"] = { {"status",false} };
}
LOG(INFO) << CommonHelper::utf8ToStdString("addSceneNode Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
/*ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
bool DataPackEventModule::deleteScene(json& parameter)
{
auto data = parameter["data"];
int id = data["id"];
SceneInfo* pScene = qobject_cast<SceneInfo*>(pDataManager->findObjectById(DataManager::DataType::scene, id));
if (pScene)
{
if (pScene->deleteSelf())
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>map<61><70>ɾ<EFBFBD><C9BE>
DPData* pParent = pScene->_parent;
pParent->deleteScene(id);
pDataManager->deleteInDataMap(DataManager::DataType::scene, id);
delete pScene;
pScene = nullptr;
parameter["response"] = { {"status",true} };
}
else
{
//ɾ<><C9BE>ʧ<EFBFBD><CAA7>
parameter["response"] = { {"status",false} };
}
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString("serch sceneInfo in scenemap failed");
}
LOG(INFO) << CommonHelper::utf8ToStdString("deleteScene Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::getSceneNode(json& parameter)
{
auto data = parameter["data"];
int modelid = data["modelid"];//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
int classType = data["modelClassType"];
QMap<int, SceneInfo*>::iterator it;
parameter["response"] = json::array();
if (classType == g_TYPE_DATACLASS)
{
DataClass* pClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, modelid));
if (pClass)
{
if (!pClass->_initScene)
{
if (pClass->getScene(pDataManager))
{
// pClass->_initScene = true;
}
else
{
parameter["error"] = "<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
}
for (it = pClass->_sceneMap.begin(); it != pClass->_sceneMap.end(); ++it)
{
json j;
(*it)->toJson(j);
parameter["response"].push_back(j);
}
}
}
else if (classType = g_TYPE_DATAPACK)
{
DataPack* pPack = qobject_cast<DataPack*>(pDataManager->findObjectById(DataManager::DataType::dataPack, modelid));
if (pPack)
{
if (!pPack->_initScene)
{
if (pPack->getScene(pDataManager))
{
// pPack->_initScene = true;
}
}
else
{
parameter["error"] = "<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
for (it = pPack->_sceneMap.begin(); it != pPack->_sceneMap.end(); ++it)
{
json j;
(*it)->toJson(j);
parameter["response"].push_back(j);
}
}
}
else
{
//<2F><><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
parameter["error"] = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>";
}
LOG(INFO) << CommonHelper::utf8ToStdString("getSceneNode Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool DataPackEventModule::updateScene(json& parameter)
{
auto data = parameter["data"];
int id = data["id"];
DPData* pData = pDataManager->findObjectById(DataManager::DataType::scene, id);
SceneInfo* pScene = qobject_cast<SceneInfo*>(pData);
if (pScene)
{
pScene->setNewData(parameter);
if (pScene->saveSelf())
{
parameter["response"] = { {"status",true} };
}
else
{
parameter["response"] = { {"status",false} };
}
}
LOG(INFO) << CommonHelper::utf8ToStdString("updateScene Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}