#ifndef __SYSTEMCONFIG_H__ #define __SYSTEMCONFIG_H__ /** * @file SystemConfig.h * @author your name (you@domain.com) * @brief * @version 0.1 * @date 2025-07-15 * * @copyright Copyright (c) 2025 * * 1、这个类是Server和Setting共用的系统配置类 * */ #include "GlobalVariable.h" #include "SystemConfigStruct.h" #include enum class eSystemConfigType { eSCT_BaseConfig = 0, // 基础配置 eSCT_CompareAI, // AI对比 eSCT_NoiseBase, // 噪音检测基础 eSCT_NoiseParam, // 噪音检测参数 eSCT_Database, // 数据库设置 eSCT_DetectPeriod, // 检测时段 eSCT_SoundCardInfo, // 声卡信息 }; #define Config_Base "ACAS_Base" // 基础配置 #define Config_CompareAI "ACAS_CompareAI" // AI对比配置 #define Config_NoiseBase "ACAS_NoiseBase" // 噪音检测基础配置 #define Config_NoiseParam "ACAS_NoiseParam" // 噪音检测参数 #define Config_Database "ACAS_Database" // 数据库设置 #define Config_DetectPeriod "ACAS_DetectPeriod" // 检测时段配置 #define Config_SoundCardInfo "ACAS_SoundCardInfo" // 声卡信息配置 /** * @brief ACA系统的设置信息 * */ #define SysConfig SystemConfigInfo::instance() class SystemConfigInfo { SystemConfigInfo() = default; SystemConfigInfo(const SystemConfigInfo&) = delete; SystemConfigInfo& operator=(const SystemConfigInfo&) = delete; public: ~SystemConfigInfo() = default; static SystemConfigInfo& instance() { static SystemConfigInfo instance; return instance; } /*系统配置的Key */ // const QMap mapSysConfigKey = { // {eSystemConfigType::eSCT_BaseConfig, "ACAS_Base"}, // {eSystemConfigType::eSCT_CompareAI, "ACAS_CompareAI"}, // {eSystemConfigType::eSCT_NoiseBase, "ACAS_NoiseBase"}, // {eSystemConfigType::eSCT_NoiseParam, "ACAS_NoiseParam"}, // {eSystemConfigType::eSCT_Database, "ACAS_Database"}, // {eSystemConfigType::eSCT_DetectPeriod, "ACAS_DetectPeriod"}, // {eSystemConfigType::eSCT_SoundCardInfo, "ACAS_SoundCardInfo"} // }; /* 系统设置类型 */ const QMap mapSysConfigDesc = { {eSystemConfigType::eSCT_BaseConfig, "基础配置"}, {eSystemConfigType::eSCT_CompareAI, "AI对比设置"}, {eSystemConfigType::eSCT_NoiseBase, "噪音检测基础设置"}, {eSystemConfigType::eSCT_NoiseParam, "噪音检测参数"}, {eSystemConfigType::eSCT_Database, "数据库设置信息"}, {eSystemConfigType::eSCT_DetectPeriod, "检测时段信息"}, {eSystemConfigType::eSCT_SoundCardInfo, "系统的声卡信息"} }; /* 解析设置从数据库读取到的配置信息 */ void parseConfigFromDatabase(const QMap& baseSettings); /*-------------------------------------------------------------------------------------*/ /* 获取未被修改的基础配置 */ const BaseConfig_t& getBaseConfigSrc() const { return m_baseConfigSrc; } /* 设置基础配置 */ void setBaseConfig(const BaseConfig_t& config); /* 将数据库的json转换成结构体 */ bool getBaseConfigFromJson(const std::string& jsonStr); /* 将结构体转换成json */ bool setBaseConfigToJson(const BaseConfig_t& baseConfig, std::string& strJson) const; /*-------------------------------------------------------------------------------------*/ /* 获取AI对比配置 */ const AICompareConfig_t& getAICompareConfig() const { return m_aiCompareConfig; } /* 设置AI对比配置 */ void setAICompareConfig(const AICompareConfig_t& config); /* 将数据库的json转换成AI对比配置 */ bool getAICompareConfigFromJson(const std::string& jsonStr); /* 将AI对比配置转换成json */ bool setAICompareConfigToJson(const AICompareConfig_t& aiCompareConfig, std::string& strJson) const; /*-------------------------------------------------------------------------------------*/ /* 获取噪音检测基础配置 */ const NoiseDetectBaseConfig_t& getNoiseDetectBaseConfig() const { return m_noiseDetectBaseConfig; } /* 设置噪音检测基础配置 */ void setNoiseDetectBaseConfig(const NoiseDetectBaseConfig_t& config); /* 将数据库的json转换成噪音检测基础配置 */ bool getNoiseDetectBaseConfigFromJson(const std::string& jsonStr); /* 将噪音检测基础配置转换成json */ bool setNoiseDetectBaseConfigToJson(const NoiseDetectBaseConfig_t& noiseDetectBaseConfig, std::string& strJson) const; /*-------------------------------------------------------------------------------------*/ /* 获取噪音检测参数 */ const NoiseDetectParam_t& getNoiseDetectParam() const { return m_noiseDetectParam; } /* 设置噪音检测参数 */ void setNoiseDetectParam(const NoiseDetectParam_t& config); /* 将数据库的json转换成噪音检测参数 */ bool getNoiseDetectParamFromJson(const std::string& jsonStr); /* 将噪音检测参数转换成json */ bool setNoiseDetectParamToJson(const NoiseDetectParam_t& noiseDetectParam, std::string& strJson) const; /*-------------------------------------------------------------------------------------*/ /* 获取数据库设置 */ const DatabaseConfig_t& getDatabaseConfig() const { return m_databaseConfig; } /* 设置数据库设置 */ void setDatabaseConfig(const DatabaseConfig_t& config); /* 将数据库的json转换成数据库设置 */ bool getDatabaseConfigFromJson(const std::string& jsonStr); /* 将数据库设置转换成json */ bool setDatabaseConfigToJson(const DatabaseConfig_t& databaseConfig, std::string& strJson) const; /*-------------------------------------------------------------------------------------*/ const QMap& getDetectPeriodConfig() const { return m_mapDetectConfig; } /* 设置检测时段配置 */ void setDetectPeriodConfig(const QMap& config); /*-------------------------------------------------------------------------------------*/ /* 声卡信息有单独的声卡信息类,不在这里存储 */ /* 将声卡信息转换成json */ bool setSoundCardInfoToJson(const QMap& soundCardInfo, std::string& strJson) const; /* 将json转换成声卡信息 */ bool getSoundCardInfoFromJson(const std::string& jsonStr, QMap& soundCardInfo); public: private: /* 基础配置 */ BaseConfig_t m_baseConfigSrc; /* ai对比需要的参数 */ AICompareConfig_t m_aiCompareConfig; /* 噪音检测基础配置 */ NoiseDetectBaseConfig_t m_noiseDetectBaseConfig; /* 噪音检测参数 */ NoiseDetectParam_t m_noiseDetectParam; /* 数据库设置 */ DatabaseConfig_t m_databaseConfig; /* 计划周期配置,key为对比项ID */ QMap m_mapDetectConfig; }; #endif // __SYSTEMCONFIG_H__