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")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//批量移入移出数据模块、数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return moveDataPackOrClass(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "create-relationship")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//建立数据关系
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return buildDataRelationship(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "delete-relationship")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//删除数据关系
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return deleteDataRelationship(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "add-datamodule")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//新建数据类模块
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return addDataPack(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "delete-datamodule")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//删除数据类模块
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return deleteDataPack(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "save-datamodule")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//编辑数据类模块
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return updateDataPack(parameter);
|
|
|
|
|
}
|
|
|
|
|
if (eventName == "add-dataclass")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//新建数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return addDataClass(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "delete-dataclass")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//删除数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return deleteDataClass(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "save-dataclass")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//修改数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return updateDataClass(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "add-dataclass-attribute")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//新建数据属性-复制属性
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return addDataClassAttribute(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "delete-classattribute")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//删除数据属性
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return deleteDataClassAttribute(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "save-dataclass-attribute")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//修改数据属性
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return updateDataClassAttribute(parameter);
|
2025-06-23 18:01:09 +08:00
|
|
|
|
} //以下为数据字典相关消息事件
|
2025-06-23 10:41:33 +08:00
|
|
|
|
else if (eventName == "get-datadictionary-data")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//数据字典显示,返回实例数据
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return getDictionaryData(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "import-datadictionary")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//导入数据字典类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return importDictionary(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "export-template")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//生成导入表模板
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return exportTemplate(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "export-datadictionary")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//导出数据字典类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return exportDictionary(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "import-datamodel")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//数据模型导入
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return importDataModel(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "export-datamodel")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//数据模型导出
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return exportDataModel(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "add-scenenode")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//增加场景
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return addSceneNode(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "get-datamodel-scene")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//获取场景数据
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return getSceneNode(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "delete-scenenode")
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//删除场景
|
2025-06-23 10:41:33 +08:00
|
|
|
|
return deleteScene(parameter);
|
|
|
|
|
}
|
|
|
|
|
else if (eventName == "move-scense-node")
|
|
|
|
|
{
|
|
|
|
|
return updateScene(parameter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
CATCH(parameter);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return EventModule::onMessage(eventName, parameter);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//以下:消息事件具体执行函数
|
2025-06-23 10:41:33 +08:00
|
|
|
|
|
|
|
|
|
bool DataPackEventModule::moveDataPackOrClass(json& parameter)
|
|
|
|
|
{
|
|
|
|
|
auto data = parameter["data"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
int dataId = data["id"];//数据模块或数据类id
|
|
|
|
|
// int newPackId = data["parentid"];//新的数据模块id
|
2025-06-23 10:41:33 +08:00
|
|
|
|
int classType = data["classType"];
|
|
|
|
|
if (classType == g_TYPE_DATAPACK)
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//数据模块
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DPData* pData = pDataManager->findObjectById(DataManager::DataType::dataPack, dataId);
|
|
|
|
|
DataPack* pPack = qobject_cast<DataPack*>(pData);
|
|
|
|
|
if (pPack && pPack->moveData(parameter, pDataManager))
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
// id 数据模块或数据类ID
|
|
|
|
|
// classType 模块类型:1为模块,2为数据类
|
|
|
|
|
// parentid 新的数据模块ID
|
|
|
|
|
// oldparentid 原有的数据模块ID
|
2025-06-23 10:41:33 +08:00
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//移出移入成功
|
2025-06-23 10:41:33 +08:00
|
|
|
|
data["id"] = dataId;
|
|
|
|
|
data["classType"] = g_TYPE_DATAPACK;
|
|
|
|
|
data["parentid"] = data["parentid"];
|
|
|
|
|
data["oldparentid"] = pData->_parent->_id;
|
|
|
|
|
parameter["response"] = data;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//移出移入失败
|
|
|
|
|
parameter["error"] = "移入移出操作失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (classType == g_TYPE_DATACLASS)
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DPData* pData = pDataManager->findObjectById(DataManager::DataType::dataClass, dataId);
|
|
|
|
|
DataClass* pClass = qobject_cast<DataClass*>(pData);
|
|
|
|
|
if (pData && pClass->moveData(parameter, pDataManager))
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//成功
|
2025-06-23 10:41:33 +08:00
|
|
|
|
data["id"] = dataId;
|
|
|
|
|
data["classType"] = g_TYPE_DATACLASS;
|
|
|
|
|
data["parentid"] = data["parentid"];
|
|
|
|
|
data["oldparentid"] = pData->_parent->_id;
|
|
|
|
|
parameter["response"] = data;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//失败
|
|
|
|
|
//移出移入失败
|
|
|
|
|
parameter["error"] = "移入移出操作失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("moveDataPackOrClass Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//增加数据模块
|
2025-06-23 10:41:33 +08:00
|
|
|
|
bool DataPackEventModule::addDataPack(json& parameter)
|
|
|
|
|
{
|
|
|
|
|
auto data = parameter["data"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
int parentId = data["parentid"]; //上层id
|
2025-06-23 10:41:33 +08:00
|
|
|
|
int classType = data["classType"];
|
|
|
|
|
DataPack* pNewPack = new DataPack();
|
|
|
|
|
pNewPack->setNewData(parameter);
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//名称合法性判断
|
2025-06-23 10:41:33 +08:00
|
|
|
|
QString msg;
|
|
|
|
|
if ( pNewPack->checkNameillegal(msg))
|
|
|
|
|
{
|
|
|
|
|
delete pNewPack;
|
|
|
|
|
pNewPack = nullptr;
|
|
|
|
|
parameter["error"] = CommonHelper::qstringToUtf8(msg);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
DPData* pParent = nullptr;
|
|
|
|
|
if (classType == g_TYPE_DATAMODEL)
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//在数据模型下直接建
|
2025-06-23 10:41:33 +08:00
|
|
|
|
pParent = pDataManager->findObjectById(DataManager::DataType::dataModel, parentId);
|
|
|
|
|
}
|
|
|
|
|
else if (classType == g_TYPE_DATAPACK)
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//在数据模块下建子模块
|
2025-06-23 10:41:33 +08:00
|
|
|
|
pParent = pDataManager->findObjectById(DataManager::DataType::dataPack, parentId);
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//设置子模块信息
|
2025-06-23 10:41:33 +08:00
|
|
|
|
pNewPack->_bIsChildPack = true;
|
|
|
|
|
}
|
|
|
|
|
if (pParent)
|
|
|
|
|
{
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
pNewPack->_parent = pParent; //设置上层对象
|
2025-06-23 10:41:33 +08:00
|
|
|
|
if (pParent->addChild(pNewPack))
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//添加到map
|
2025-06-23 10:41:33 +08:00
|
|
|
|
pDataManager->insertDataMap(DataManager::DataType::dataPack, pNewPack->_id, pNewPack);
|
|
|
|
|
json j;
|
|
|
|
|
pNewPack->toJson(j);
|
|
|
|
|
parameter["response"] = j;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
delete pNewPack;
|
|
|
|
|
pNewPack = nullptr;
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "新建模块失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
delete pNewPack;
|
|
|
|
|
pNewPack = nullptr;
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "查找模块父类失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("addDataPack Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool DataPackEventModule::deleteDataPack(json& parameter)
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//获得id
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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))
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//更新总map
|
2025-06-23 10:41:33 +08:00
|
|
|
|
pDataManager->deleteInDataMap(DataManager::DataType::dataPack, dataPackId);
|
|
|
|
|
delete pData;
|
|
|
|
|
pData = nullptr;
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//删除成功,返回
|
2025-06-23 10:41:33 +08:00
|
|
|
|
|
|
|
|
|
// 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
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//如保提示删除模块失败?
|
2025-06-23 10:41:33 +08:00
|
|
|
|
parameter["response"]["status"] = false;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("deleteDataPack Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool DataPackEventModule::updateDataPack(json& parameter)
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//修改name type desciption 是否生成数据表
|
2025-06-23 10:41:33 +08:00
|
|
|
|
auto data = parameter["data"];
|
|
|
|
|
auto dataPackId = data["id"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//查找当前数据类模块
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DPData* pDataPack = pDataManager->findObjectById(DataManager::DataType::dataPack, dataPackId);
|
|
|
|
|
if (pDataPack) {
|
|
|
|
|
pDataPack->setNewData(parameter);
|
|
|
|
|
if (pDataPack->saveSelf())
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//更新数据成功,返回给web端
|
2025-06-23 10:41:33 +08:00
|
|
|
|
json j;
|
|
|
|
|
pDataPack->toJson(j);
|
|
|
|
|
parameter["response"] = j;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "修改模块失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "查找模块失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("deleteDataPack Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "该数据类不存在";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
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"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
auto parentId = data["parentid"]; //上层id
|
2025-06-23 10:41:33 +08:00
|
|
|
|
pNewDataClass->setNewData(parameter);
|
|
|
|
|
pNewDataClass->reName();
|
|
|
|
|
|
|
|
|
|
QString errMsg;
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//判断名称标识合法性
|
2025-06-23 10:41:33 +08:00
|
|
|
|
if (!pNewDataClass->checkNameSize(3, 128, errMsg) || !pNewDataClass->checkLetter(errMsg,2))
|
|
|
|
|
{
|
|
|
|
|
delete pNewDataClass;
|
|
|
|
|
pNewDataClass = nullptr;
|
|
|
|
|
parameter["error"] = CommonHelper::qstringToUtf8(errMsg);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
pNewDataClass->_type = COMMON_CLASS;//普通数据类
|
|
|
|
|
//查找当前父模块
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DPData* pData = pDataManager->findObjectById(DataManager::DataType::dataPack, parentId);
|
2025-06-23 18:01:09 +08:00
|
|
|
|
pNewDataClass->_parent = pData; //设置上层对象
|
2025-06-23 10:41:33 +08:00
|
|
|
|
if (pData && pData->addChild(pNewDataClass))
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//添加到总map
|
2025-06-23 10:41:33 +08:00
|
|
|
|
pDataManager->insertDataMap(DataManager::DataType::dataClass, pNewDataClass->_id, pNewDataClass);
|
|
|
|
|
json j;
|
|
|
|
|
pNewDataClass->toJson(j);
|
|
|
|
|
parameter["response"] = j;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
delete pNewDataClass;
|
|
|
|
|
pNewDataClass = nullptr;
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "新建数据类失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("addDataClass Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool DataPackEventModule::deleteDataClass(json& parameter)
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//获得id
|
2025-06-23 10:41:33 +08:00
|
|
|
|
auto data = parameter["data"];
|
|
|
|
|
int dataClassID = data["id"];
|
|
|
|
|
QString result;
|
|
|
|
|
DataClass* pClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, dataClassID));
|
|
|
|
|
if (!pClass)
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "数据类不存在";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//查找当前数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DPData* pDataClass = pDataManager->findObjectById(DataManager::DataType::dataClass, dataClassId);
|
|
|
|
|
if (pDataClass) {
|
|
|
|
|
pDataClass->setNewData(parameter);
|
|
|
|
|
if (pDataClass->saveSelf())
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//更新数据成功,返回给web端
|
2025-06-23 10:41:33 +08:00
|
|
|
|
parameter["response"] = data;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//失败
|
|
|
|
|
parameter["error"] = "修改数据类失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "查询数据类失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("updateDataClass Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//建立数据关关联
|
2025-06-23 10:41:33 +08:00
|
|
|
|
bool DataPackEventModule::buildDataRelationship(json& parameter)
|
|
|
|
|
{
|
|
|
|
|
bool status = false;
|
|
|
|
|
auto data = parameter["data"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
int type = data["type"];//关系类型
|
|
|
|
|
int mainClassId = data["id1"]; //主数据类
|
|
|
|
|
int subClassId = data["id2"]; // 关联数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "建立数据关系失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//属性
|
2025-06-23 10:41:33 +08:00
|
|
|
|
bool DataPackEventModule::addDataClassAttribute(json& parameter)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
auto data = parameter["data"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
int parentId = data["parentid"]; //上层id
|
|
|
|
|
//先判断输入属性名称标识是否合理
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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))
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//名称标识不合法
|
2025-06-23 10:41:33 +08:00
|
|
|
|
parameter["error"] = CommonHelper::qstringToUtf8(errMsg);
|
|
|
|
|
delete pNewDataAttribute;
|
|
|
|
|
pNewDataAttribute = nullptr;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//查找当前父模块
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DPData* pData = pDataManager->findObjectById(DataManager::DataType::dataClass, parentId);
|
2025-06-23 18:01:09 +08:00
|
|
|
|
pNewDataAttribute->_parent = pData; //设置上层对象
|
2025-06-23 10:41:33 +08:00
|
|
|
|
if (pData && pData->addChild(pNewDataAttribute))
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//添加到总map
|
2025-06-23 10:41:33 +08:00
|
|
|
|
pDataManager->insertDataMap(DataManager::DataType::dataAttribute, pNewDataAttribute->_id, pNewDataAttribute);
|
|
|
|
|
json j;
|
|
|
|
|
pNewDataAttribute->toJson(j);
|
|
|
|
|
parameter["response"] = j;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
delete pNewDataAttribute;
|
|
|
|
|
pNewDataAttribute = nullptr;
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "新建数据类属性失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("addDataClassAttribute Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool DataPackEventModule::deleteDataClassAttribute(json& parameter)
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//获得id
|
2025-06-23 10:41:33 +08:00
|
|
|
|
auto data = parameter["data"];
|
|
|
|
|
auto dataAttributeID = data["id"];
|
|
|
|
|
|
|
|
|
|
DPData* pDataClassAttribute = pDataManager->findObjectById(DataManager::DataType::dataAttribute, dataAttributeID);
|
|
|
|
|
if (pDataClassAttribute && pDataClassAttribute->deleteSelf())
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//删除成功
|
2025-06-23 10:41:33 +08:00
|
|
|
|
delete pDataClassAttribute;
|
|
|
|
|
pDataClassAttribute = nullptr;
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//删除成功
|
2025-06-23 10:41:33 +08:00
|
|
|
|
parameter["response"]["status"] = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//失败
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//查找当前数据类属性
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DPData* pDataAttribute = pDataManager->findObjectById(DataManager::DataType::dataAttribute, dataAttributeId);
|
|
|
|
|
if (pDataAttribute) {
|
|
|
|
|
pDataAttribute->setNewData(parameter);
|
|
|
|
|
if (pDataAttribute->saveSelf())
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//更新数据成功,返回给web端
|
2025-06-23 10:41:33 +08:00
|
|
|
|
parameter["response"] = data;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//失败
|
2025-06-23 10:41:33 +08:00
|
|
|
|
parameter["response"]["status"] = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "查询数据类失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//查找数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "查询数据类失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//查找数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DataClass* pDataClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, id));
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!pDataClass)
|
2025-06-23 18:01:09 +08:00
|
|
|
|
throw exception("查询数据类失败");
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//查找数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DataClass* pDataClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, id));
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!pDataClass)
|
2025-06-23 18:01:09 +08:00
|
|
|
|
throw exception("查询数据类失败");
|
2025-06-23 10:41:33 +08:00
|
|
|
|
|
|
|
|
|
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"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//查找数据类
|
2025-06-23 10:41:33 +08:00
|
|
|
|
|
|
|
|
|
DataClass* pDataClass = qobject_cast<DataClass*>(pDataManager->findObjectById(DataManager::DataType::dataClass, id));
|
|
|
|
|
if (pDataClass) {
|
|
|
|
|
json j;
|
|
|
|
|
pDataClass->dictToJson(j);
|
|
|
|
|
parameter["response"] = j;
|
|
|
|
|
}
|
|
|
|
|
else {
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "查询数据类失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//获取数据字典类的信息
|
2025-06-23 10:41:33 +08:00
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("getDictionaryData Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
/*导入数据模型*/
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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));
|
2025-06-23 18:01:09 +08:00
|
|
|
|
// int curProjectId = pModel->_parent->_id; //当前项目id
|
2025-06-23 10:41:33 +08:00
|
|
|
|
QString curPath = QCoreApplication::applicationDirPath();
|
2025-06-23 18:01:09 +08:00
|
|
|
|
QString selectDir = QFileDialog::getOpenFileName(nullptr, "选择导入文件", "", "*.xlsx");
|
2025-06-23 10:41:33 +08:00
|
|
|
|
QString errMsg;
|
|
|
|
|
if (!selectDir.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
transform.openFile(selectDir);
|
2025-06-23 18:01:09 +08:00
|
|
|
|
QWaiting waiting(Session::getSession()->parent(), "模型导入中...");
|
2025-06-23 10:41:33 +08:00
|
|
|
|
|
|
|
|
|
if (waiting.working(std::bind(&TransformExcel::importData, &transform, std::ref(errMsg))))
|
|
|
|
|
{
|
|
|
|
|
parameter["response"]["status"] = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
if (errMsg == "数据回滚失败,重启程序")
|
2025-06-23 10:41:33 +08:00
|
|
|
|
{
|
|
|
|
|
// CommonHelper::message(errMsg,2);
|
|
|
|
|
qApp->quit();
|
|
|
|
|
QProcess::startDetached(qApp->applicationFilePath());
|
|
|
|
|
}
|
2025-06-23 18:01:09 +08:00
|
|
|
|
else if( errMsg == "模型导入失败") {
|
|
|
|
|
//重新获取一次数据模型数据
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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;
|
|
|
|
|
}
|
2025-06-23 18:01:09 +08:00
|
|
|
|
/*导出数据模型*/
|
2025-06-23 10:41:33 +08:00
|
|
|
|
bool DataPackEventModule::exportDataModel(json& parameter)
|
|
|
|
|
{
|
|
|
|
|
TransformExcel transform(pDataManager, 0);
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
QString file = QFileDialog::getSaveFileName(nullptr, tr("保存导出文件"), "", tr("*.xlsx"));
|
2025-06-23 10:41:33 +08:00
|
|
|
|
|
|
|
|
|
if (!file.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
QFileInfo exportFile(file);
|
|
|
|
|
if (exportFile.isFile())
|
|
|
|
|
{
|
|
|
|
|
if (!transform.openFile(file))
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//如打开文件失败,直接返回
|
|
|
|
|
parameter["error"] = "打开文件失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("exportDataModel Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
QWaiting waiting(Session::getSession()->parent(), "模型导出中...");
|
2025-06-23 10:41:33 +08:00
|
|
|
|
if (waiting.working(std::bind(&TransformExcel::exportData, &transform, std::ref(parameter))))
|
|
|
|
|
{
|
|
|
|
|
parameter["response"]["status"] = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "导出数据模型失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
transform.closeFile(file);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("exportDataModel Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
/*增加场景*/
|
2025-06-23 10:41:33 +08:00
|
|
|
|
bool DataPackEventModule::addSceneNode(json& parameter)
|
|
|
|
|
{
|
|
|
|
|
auto data = parameter["data"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
int parentType = data["parentClassType"]; //父类型
|
|
|
|
|
int parentId = data["parentid"]; //父id
|
2025-06-23 10:41:33 +08:00
|
|
|
|
SceneInfo* pNewScene = new SceneInfo;
|
|
|
|
|
|
|
|
|
|
pNewScene->setNewData(parameter);
|
|
|
|
|
DPData* pdata = nullptr;
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//查找要在哪个数据模块(类)下添加
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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;
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "父数据模块(数据类)查找失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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);
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//添加场景成功
|
2025-06-23 10:41:33 +08:00
|
|
|
|
json j;
|
|
|
|
|
pNewScene->toJson(j);
|
|
|
|
|
parameter["response"] = j;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//添加场景失败
|
2025-06-23 10:41:33 +08:00
|
|
|
|
delete pNewScene;
|
|
|
|
|
pNewScene = nullptr;
|
|
|
|
|
parameter["response"] = { {"status",false} };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LOG(INFO) << CommonHelper::utf8ToStdString("addSceneNode Sendto web.......");
|
|
|
|
|
LOG(INFO) << CommonHelper::jsonToString(parameter);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-23 18:01:09 +08:00
|
|
|
|
/*删除场景*/
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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())
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//所属于模块或类的场景map中删除
|
2025-06-23 10:41:33 +08:00
|
|
|
|
DPData* pParent = pScene->_parent;
|
|
|
|
|
pParent->deleteScene(id);
|
|
|
|
|
pDataManager->deleteInDataMap(DataManager::DataType::scene, id);
|
|
|
|
|
delete pScene;
|
|
|
|
|
pScene = nullptr;
|
|
|
|
|
|
|
|
|
|
parameter["response"] = { {"status",true} };
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//删除失败
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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"];
|
2025-06-23 18:01:09 +08:00
|
|
|
|
int modelid = data["modelid"];//数据模块或数据类id
|
2025-06-23 10:41:33 +08:00
|
|
|
|
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
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "获取场景失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
parameter["error"] = "获取场景失败";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (it = pPack->_sceneMap.begin(); it != pPack->_sceneMap.end(); ++it)
|
|
|
|
|
{
|
|
|
|
|
json j;
|
|
|
|
|
(*it)->toJson(j);
|
|
|
|
|
parameter["response"].push_back(j);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-06-23 18:01:09 +08:00
|
|
|
|
//类型错误
|
|
|
|
|
parameter["error"] = "参数类型错误";
|
2025-06-23 10:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|