DPS/DataPlatform/SystemSettingModule.cpp

249 lines
5.8 KiB
C++
Raw Normal View History

2025-06-23 10:41:33 +08:00
#pragma execution_character_set("utf-8")
#include "SystemSettingModule.h"
#include "DataManager.h"
#include "SysManager.h"
#include <fstream>
#include "DictData.h"
#include "DictItem.h"
#include <QFileDialog>
SystemSettingModule::SystemSettingModule(QObject* /*parent*/, DataManager* manager)
: BaseEventModule(manager, "SystemSettingModule")
{
}
SystemSettingModule::~SystemSettingModule()
{
}
bool SystemSettingModule::onMessage(const std::string& eventName, json& parameter)
{
LOG(INFO) << CommonHelper::utf8ToStdString("SystemSettingModule receive message.......");
LOG(INFO) << eventName;
LOG(INFO) << CommonHelper::jsonToString(parameter);
LOG(INFO) << parameter;
TRY
{
// auto & param = parameter["data"];
if (eventName == "read-dictionary") {
if (!pDataManager->_dbConnected)
{
2025-06-23 18:01:09 +08:00
parameter["error"] = "数据库连接失败";
2025-06-23 10:41:33 +08:00
return true;
}
return readDictionary(parameter);
}
else if (eventName == "read-profile") {
return readProfile(parameter);
}
else if (eventName == "save-profile") {
saveProfile(parameter["data"],false);
return true;
}
else if (eventName == "add-dictionary") {
return addDictionary(parameter);
}
else if (eventName == "save-dictionary") {
return saveDictionary(parameter);
}
else if (eventName == "delete-dictionary") {
return deleteDictionary(parameter);
}
}
CATCH(parameter);
return EventModule::onMessage(eventName, parameter);
}
2025-06-23 18:01:09 +08:00
//参数 newfile =true 时表示刚启动程序时新生成的profile
2025-06-23 10:41:33 +08:00
void SystemSettingModule::saveProfile(json& profile,bool newfile)
{
LOG(INFO) << CommonHelper::utf8ToStdString("SystemSettingModule::saveProfile");
SysManager& sysMgr = GetSysManager();
sysMgr.getSettingData(profile);
if (newfile)
{
sysMgr.setProfileData(profile);
}
sysMgr.save(profile);
broadcast("update-profile");
}
bool SystemSettingModule::readProfile(json& parameter)
{
SysManager& sysMnr = GetSysManager();
QFileInfo fileInfo(sysMnr._profilePath);
if (!fileInfo.isFile())
{
QFile file(sysMnr._profilePath);
2025-06-23 18:01:09 +08:00
//文件不存在,生成一个空文件
2025-06-23 10:41:33 +08:00
file.open(QIODevice::ReadWrite | QIODevice::Text);
file.close();
auto j = json::object();
saveProfile(j,true);
parameter["response"] = j;
LOG(INFO) << CommonHelper::utf8ToStdString("readProfile Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
std::fstream profile;
std::string profilePath = CommonHelper::qstringToStdString(sysMnr._profilePath);
profile.open(profilePath, std::ios::in);
if (!profile.is_open()) {
auto j = json({});
saveProfile(j,false);
}
profile.open(profilePath, std::ios::in);
try
{
if (profile.is_open())
{
auto _profile = json::parse(profile);
profile.close();
parameter["response"] = _profile;
SysManager& sysMgr = GetSysManager();
sysMgr.getSettingData(_profile);
}
else {
parameter["error"] = "can't open file";
LOG(INFO) << CommonHelper::utf8ToStdString("can't open file");
}
}
catch (exception& e)
{
LOG(ERROR) << e.what();
auto j = json::object();
parameter["response"] = j;
LOG(INFO) << CommonHelper::utf8ToStdString("readProfile parse failed");
return true;
}
LOG(INFO) << CommonHelper::utf8ToStdString("readProfile Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool SystemSettingModule::addDictionary(json& parameter)
{
2025-06-23 18:01:09 +08:00
//增加二级字典项
2025-06-23 10:41:33 +08:00
auto data = parameter["data"];
2025-06-23 18:01:09 +08:00
//数据字典项目id
2025-06-23 10:41:33 +08:00
int id = data["parentid"];
SysManager& sysMgr = GetSysManager();
2025-06-23 18:01:09 +08:00
//查找数据字典项
2025-06-23 10:41:33 +08:00
DictItem* pItem = qobject_cast<DictItem*>(sysMgr.findDictItem(id));
if (pItem)
{
DictData* pNew = new DictData();
pNew->setNewData(parameter);
pNew->_bUsed = false;
if (pItem->addChild(pNew))
{
json j;
pNew->toJson(j);
parameter["response"] = j;
}
}
else
{
parameter["error"] = "can't find dictItem";
}
LOG(INFO) << CommonHelper::utf8ToStdString("addDictionary Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool SystemSettingModule::readDictionary(json& parameter)
{
SysManager& sysMgr = GetSysManager();
json j = json::array();
2025-06-23 18:01:09 +08:00
//先读取一级字典
2025-06-23 10:41:33 +08:00
if (sysMgr.getAllDictItem())
{
2025-06-23 18:01:09 +08:00
//读二级字典
2025-06-23 10:41:33 +08:00
sysMgr.getAllDictChildren();
}
2025-06-23 18:01:09 +08:00
//返回json串
2025-06-23 10:41:33 +08:00
if (sysMgr.getDictSize() == 0)
{
parameter["response"] = j;
}
else {
sysMgr.getDictJson(parameter);
}
LOG(INFO) << CommonHelper::utf8ToStdString("readDictionary Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool SystemSettingModule::saveDictionary(json& parameter)
{
auto data = parameter["data"];
int id = data["id"];
SysManager& sysMgr = GetSysManager();
DPData* pDictData = sysMgr.findDictData(id);
if (pDictData)
{
pDictData->setNewData(parameter);
if (pDictData->saveSelf())
{
json j;
pDictData->toJson(j);
parameter["response"] = j;
}
else
{
parameter["error"] = "save dictionary failed";
}
}
else
{
2025-06-23 18:01:09 +08:00
parameter["error"] = "该字典数据项不存在";
2025-06-23 10:41:33 +08:00
}
LOG(INFO) << CommonHelper::utf8ToStdString("saveDictionary Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}
bool SystemSettingModule::deleteDictionary(json& parameter)
{
auto data = parameter["data"];
int id = data["id"];
SysManager& sysMgr = GetSysManager();
DPData* pDictData = sysMgr.findDictData(id);
QString msg;
if (pDictData)
{
if (qobject_cast<DictData*>(pDictData)->deleteSelf(msg))
{
delete pDictData;
pDictData = nullptr;
parameter["response"] = { {"status",true} };
}
else
{
parameter["error"] = CommonHelper::qstringToUtf8(msg);
}
}
else
{
2025-06-23 18:01:09 +08:00
parameter["error"] = "该字典数据项不存在";
2025-06-23 10:41:33 +08:00
}
LOG(INFO) << CommonHelper::utf8ToStdString("deleteDictionary Sendto web.......");
LOG(INFO) << CommonHelper::jsonToString(parameter);
return true;
}