CConfigBase.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. /**************************************************************************
  2. 作者: huangjiangbo
  3. 时间: 2024.08.26
  4. 描述: 各模组Config数据库操作基类
  5. 修改记录:
  6. 1、
  7. ***************************************************************************/
  8. #pragma once
  9. //#pragma warning(disable:4251)
  10. #include "CppSQLite3.h"
  11. #include "dt.h"
  12. #include <string>
  13. #include <windows.h>
  14. #include <vector>
  15. #include <mutex>
  16. #include "CDataBaseOperate.h"
  17. namespace ns_db
  18. {
  19. using namespace std;
  20. #ifdef CONFIG_BASE_DLL
  21. #define DLL_CONFIG_BASE_API __declspec(dllexport)
  22. #else
  23. #define DLL_CONFIG_BASE_API
  24. #endif
  25. typedef struct _CONFIG_BASE_STRUCT
  26. {
  27. INT iNo_;
  28. INT iGroupId = 1;
  29. string strName = "";
  30. string strDescribe = "";
  31. INT iUserGrade = 1;
  32. INT iChangeFlag = 1;
  33. string strValue = "";
  34. string strType = "";
  35. string strDefult = "";
  36. string strLowerLimit = "-1000000";
  37. string strUpperLimit = "1000000";
  38. string strUnit = "um";
  39. string sIcon = "";
  40. bool bEnable = true;
  41. string strCallFun = "";
  42. }CONFIG_BASE_STRUCT;
  43. enum CONFIG_TYPE
  44. {
  45. CONFIG_LONG = 0,
  46. CONFIG_ULONG,
  47. CONFIG_INT,
  48. CONFIG_DOUBLE,
  49. CONFIG_BOOL,
  50. CONFIG_STRING
  51. };
  52. typedef struct _MODULE_CONFIG_STRUCT
  53. {
  54. string strName;
  55. void* pValue;
  56. CONFIG_TYPE config_type;
  57. bool bSave;
  58. void* pDefault;
  59. _MODULE_CONFIG_STRUCT(string strTemp, LONG* pTemp, bool isSaveTemp, LONG* pDef = NULL)
  60. {
  61. strName = strTemp;
  62. pValue = (void*)pTemp;
  63. config_type = CONFIG_TYPE::CONFIG_LONG;
  64. bSave = isSaveTemp;
  65. pDefault = (void*)pDef;
  66. }
  67. _MODULE_CONFIG_STRUCT(string strTemp, ULONG* pTemp, bool isSaveTemp, ULONG* pDef = NULL)
  68. {
  69. strName = strTemp;
  70. pValue = (void*)pTemp;
  71. config_type = CONFIG_TYPE::CONFIG_ULONG;
  72. bSave = isSaveTemp;
  73. pDefault = (void*)pDef;
  74. }
  75. _MODULE_CONFIG_STRUCT(string strTemp, int* pTemp, bool isSaveTemp, int* pDef = NULL)
  76. {
  77. strName = strTemp;
  78. pValue = (void*)pTemp;
  79. config_type = CONFIG_TYPE::CONFIG_INT;
  80. bSave = isSaveTemp;
  81. pDefault = (void*)pDef;
  82. }
  83. _MODULE_CONFIG_STRUCT(string strTemp, unsigned int* pTemp, bool isSaveTemp, unsigned int* pDef = NULL)
  84. {
  85. strName = strTemp;
  86. pValue = (void*)pTemp;
  87. config_type = CONFIG_TYPE::CONFIG_INT;
  88. bSave = isSaveTemp;
  89. pDefault = (void*)pDef;
  90. }
  91. _MODULE_CONFIG_STRUCT(string strTemp, double* pTemp, bool isSaveTemp, double* pDef = NULL)
  92. {
  93. strName = strTemp;
  94. pValue = (void*)pTemp;
  95. config_type = CONFIG_TYPE::CONFIG_DOUBLE;
  96. bSave = isSaveTemp;
  97. pDefault = (void*)pDef;
  98. }
  99. _MODULE_CONFIG_STRUCT(string strTemp, bool* pTemp, bool isSaveTemp, bool* pDef = NULL)
  100. {
  101. strName = strTemp;
  102. pValue = (void*)pTemp;
  103. config_type = CONFIG_TYPE::CONFIG_BOOL;
  104. bSave = isSaveTemp;
  105. pDefault = (void*)pDef;
  106. }
  107. _MODULE_CONFIG_STRUCT(string strTemp, string* pTemp, bool isSaveTemp, string* pDef = NULL)
  108. {
  109. strName = strTemp;
  110. pValue = (void*)pTemp;
  111. config_type = CONFIG_TYPE::CONFIG_STRING;
  112. bSave = isSaveTemp;
  113. pDefault = (void*)pDef;
  114. }
  115. }MODULE_CONFIG_STRUCT;
  116. // 定义函数指针类型
  117. using GetFunctionPtr = vector<CONFIG_BASE_STRUCT>(*)();
  118. using SetFunctionPtr = std::function<LONG(CDataBaseOperate*, std::vector<CONFIG_BASE_STRUCT>)>;
  119. typedef struct
  120. {
  121. GetFunctionPtr get;
  122. SetFunctionPtr set;
  123. } CONFIG_FUNCTION_PTR;
  124. class DLL_CONFIG_BASE_API CConfigBase
  125. {
  126. private:
  127. // 函数注册表
  128. std::map<std::string, CONFIG_FUNCTION_PTR> m_FunctionRegistry;
  129. public:
  130. // 注册函数
  131. void RegisterFunction(const std::string& name,GetFunctionPtr get, SetFunctionPtr set);
  132. LONG CallSetFunction(const std::string& name, CDataBaseOperate* obj, std::vector<CONFIG_BASE_STRUCT> vecconfig);
  133. CConfigBase(string sPathFile, CppSQLite3DB* pDB);
  134. LONG LoadConfigDB(string strTableName, vector<CONFIG_BASE_STRUCT>& vecConfig);
  135. LONG SaveConfigDB(string strTableName, vector<CONFIG_BASE_STRUCT>* vecConfig);
  136. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, string& value);
  137. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, CHAR* value, UINT len);
  138. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, LONG* value);
  139. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, ULONG* value);
  140. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, INT* value);
  141. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, DOUBLE* value);
  142. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, bool* value);
  143. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, const CHAR* value);
  144. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, string value);
  145. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, LONG value);
  146. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, ULONG value);
  147. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, INT value);
  148. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, DOUBLE value);
  149. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, bool value);
  150. LONG Append(vector<CONFIG_BASE_STRUCT>* stConfig, MODULE_CONFIG_STRUCT config);
  151. //在ConfigBase 中查找 ModuleConfig 中需要的数据
  152. LONG GetConfigParam(vector<CONFIG_BASE_STRUCT> stConfig, vector<MODULE_CONFIG_STRUCT>* vecconfig);
  153. //将ModuleConfig的数据设置到ConfigBase中
  154. LONG SetConfigParam(vector<CONFIG_BASE_STRUCT>* stConfig, vector<MODULE_CONFIG_STRUCT> vecconfig);
  155. private:
  156. CppSQLite3DB* m_pDB;
  157. std::string m_sPathFile = "";
  158. };
  159. }