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