SystemConfig.h 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. #ifndef __SYSTEMCONFIG_H__
  2. #define __SYSTEMCONFIG_H__
  3. /**
  4. * @file SystemConfig.h
  5. * @author your name (you@domain.com)
  6. * @brief
  7. * @version 0.1
  8. * @date 2025-07-15
  9. *
  10. * @copyright Copyright (c) 2025
  11. *
  12. * 1、这个类是Server和Setting共用的系统配置类
  13. *
  14. */
  15. #include "AudioRecord.h"
  16. #include "GlobalVariable.h"
  17. #include "SystemConfigStruct.h"
  18. #include <string>
  19. enum class eSystemConfigType
  20. {
  21. eSCT_BaseConfig = 0, // 基础配置
  22. eSCT_CompareAI, // AI对比
  23. eSCT_NoiseBase, // 噪音检测基础
  24. eSCT_NoiseParam, // 噪音检测参数
  25. eSCT_Database, // 数据库设置
  26. eSCT_DetectPeriod, // 检测时段
  27. eSCT_SoundCardInfo, // 声卡信息
  28. };
  29. #define Config_Base "ACAS_Base" // 基础配置
  30. #define Config_CompareAI "ACAS_CompareAI" // AI对比配置
  31. #define Config_NoiseBase "ACAS_NoiseBase" // 噪音检测基础配置
  32. #define Config_NoiseParam "ACAS_NoiseParam" // 噪音检测参数
  33. #define Config_Database "ACAS_Database" // 数据库设置
  34. #define Config_DetectPeriod "ACAS_DetectPeriod" // 检测时段配置
  35. #define Config_SoundCardInfo "ACAS_SoundCardInfo" // 声卡信息配置
  36. /**
  37. * @brief ACA系统的设置信息
  38. *
  39. */
  40. #define SysConfig SystemConfigInfo::instance()
  41. class SystemConfigInfo
  42. {
  43. SystemConfigInfo() = default;
  44. SystemConfigInfo(const SystemConfigInfo&) = delete;
  45. SystemConfigInfo& operator=(const SystemConfigInfo&) = delete;
  46. public:
  47. ~SystemConfigInfo() = default;
  48. static SystemConfigInfo& instance()
  49. {
  50. static SystemConfigInfo instance;
  51. return instance;
  52. }
  53. /*系统配置的Key */
  54. // const QMap<eSystemConfigType, QString> mapSysConfigKey = {
  55. // {eSystemConfigType::eSCT_BaseConfig, "ACAS_Base"},
  56. // {eSystemConfigType::eSCT_CompareAI, "ACAS_CompareAI"},
  57. // {eSystemConfigType::eSCT_NoiseBase, "ACAS_NoiseBase"},
  58. // {eSystemConfigType::eSCT_NoiseParam, "ACAS_NoiseParam"},
  59. // {eSystemConfigType::eSCT_Database, "ACAS_Database"},
  60. // {eSystemConfigType::eSCT_DetectPeriod, "ACAS_DetectPeriod"},
  61. // {eSystemConfigType::eSCT_SoundCardInfo, "ACAS_SoundCardInfo"}
  62. // };
  63. /* 系统设置类型 */
  64. const QMap<eSystemConfigType, std::string> mapSysConfigDesc = {
  65. {eSystemConfigType::eSCT_BaseConfig, "基础配置"},
  66. {eSystemConfigType::eSCT_CompareAI, "AI对比设置"},
  67. {eSystemConfigType::eSCT_NoiseBase, "噪音检测基础设置"},
  68. {eSystemConfigType::eSCT_NoiseParam, "噪音检测参数"},
  69. {eSystemConfigType::eSCT_Database, "数据库设置信息"},
  70. {eSystemConfigType::eSCT_DetectPeriod, "检测时段信息"},
  71. {eSystemConfigType::eSCT_SoundCardInfo, "系统的声卡信息"}
  72. };
  73. /* 解析设置从数据库读取到的配置信息 */
  74. void parseConfigFromDatabase(const QMap<std::string, std::string>& baseSettings);
  75. /*-------------------------------------------------------------------------------------*/
  76. /* 获取未被修改的基础配置 */
  77. const BaseConfig_t& getBaseConfigSrc() const { return m_baseConfigSrc; }
  78. /* 设置基础配置 */
  79. void setBaseConfig(const BaseConfig_t& config);
  80. /* 将数据库的json转换成结构体 */
  81. bool getBaseConfigFromJson(const std::string& jsonStr);
  82. /* 将结构体转换成json */
  83. bool setBaseConfigToJson(const BaseConfig_t& baseConfig, std::string& strJson) const;
  84. /*-------------------------------------------------------------------------------------*/
  85. /* 获取AI对比配置 */
  86. const AICompareConfig_t& getAICompareConfig() const { return m_aiCompareConfig; }
  87. /* 设置AI对比配置 */
  88. void setAICompareConfig(const AICompareConfig_t& config);
  89. /* 将数据库的json转换成AI对比配置 */
  90. bool getAICompareConfigFromJson(const std::string& jsonStr);
  91. /* 将AI对比配置转换成json */
  92. bool setAICompareConfigToJson(const AICompareConfig_t& aiCompareConfig, std::string& strJson) const;
  93. /*-------------------------------------------------------------------------------------*/
  94. /* 获取噪音检测基础配置 */
  95. const NoiseDetectBaseConfig_t& getNoiseDetectBaseConfig() const { return m_noiseDetectBaseConfig; }
  96. /* 设置噪音检测基础配置 */
  97. void setNoiseDetectBaseConfig(const NoiseDetectBaseConfig_t& config);
  98. /* 将数据库的json转换成噪音检测基础配置 */
  99. bool getNoiseDetectBaseConfigFromJson(const std::string& jsonStr);
  100. /* 将噪音检测基础配置转换成json */
  101. bool setNoiseDetectBaseConfigToJson(const NoiseDetectBaseConfig_t& noiseDetectBaseConfig, std::string& strJson) const;
  102. /*-------------------------------------------------------------------------------------*/
  103. /* 获取噪音检测参数 */
  104. const NoiseDetectParam_t& getNoiseDetectParam() const { return m_noiseDetectParam; }
  105. /* 设置噪音检测参数 */
  106. void setNoiseDetectParam(const NoiseDetectParam_t& config);
  107. /* 将数据库的json转换成噪音检测参数 */
  108. bool getNoiseDetectParamFromJson(const std::string& jsonStr);
  109. /* 将噪音检测参数转换成json */
  110. bool setNoiseDetectParamToJson(const NoiseDetectParam_t& noiseDetectParam, std::string& strJson) const;
  111. /*-------------------------------------------------------------------------------------*/
  112. /* 获取数据库设置 */
  113. const DatabaseConfig_t& getDatabaseConfig() const { return m_databaseConfig; }
  114. /* 设置数据库设置 */
  115. void setDatabaseConfig(const DatabaseConfig_t& config);
  116. /* 将数据库的json转换成数据库设置 */
  117. bool getDatabaseConfigFromJson(const std::string& jsonStr);
  118. /* 将数据库设置转换成json */
  119. bool setDatabaseConfigToJson(const DatabaseConfig_t& databaseConfig, std::string& strJson) const;
  120. /*-------------------------------------------------------------------------------------*/
  121. const QMap<int, DetectPeriodConfig_t>& getDetectPeriodConfig() const { return m_mapDetectConfig; }
  122. /* 设置检测时段配置 */
  123. void setDetectPeriodConfig(const QMap<int, DetectPeriodConfig_t>& config);
  124. /*-------------------------------------------------------------------------------------*/
  125. /* 声卡信息有单独的声卡信息类,不在这里存储 */
  126. /* 将声卡信息转换成json */
  127. // bool setSoundCardInfoToJson(const QMap<int, SoundCardInfo_t>& soundCardInfo, std::string& strJson) const;
  128. /* 将json转换成声卡信息 */
  129. // bool getSoundCardInfoFromJson(const std::string& jsonStr, QMap<int, SoundCardInfo_t>& soundCardInfo);
  130. /* 将PCM信息转换成json */
  131. bool setSoundCardPCMInfoToJson(const std::list<AudioDeviceDesc_t>& soundCardPCMInfo, std::string& strJson) const;
  132. /* 将json转换成声卡信息 */
  133. bool getSoundCardPCMInfoFromJson(const std::string& jsonStr, std::list<AudioDeviceDesc_t>& soundCardPCMInfo);
  134. public:
  135. private:
  136. /* 基础配置 */
  137. BaseConfig_t m_baseConfigSrc;
  138. /* ai对比需要的参数 */
  139. AICompareConfig_t m_aiCompareConfig;
  140. /* 噪音检测基础配置 */
  141. NoiseDetectBaseConfig_t m_noiseDetectBaseConfig;
  142. /* 噪音检测参数 */
  143. NoiseDetectParam_t m_noiseDetectParam;
  144. /* 数据库设置 */
  145. DatabaseConfig_t m_databaseConfig;
  146. /* 计划周期配置,key为对比项ID */
  147. QMap<int, DetectPeriodConfig_t> m_mapDetectConfig;
  148. };
  149. #endif // __SYSTEMCONFIG_H__