CConfigBase.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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 strAxisType = "";
  40. string sIcon = "";
  41. bool bEnable = true;
  42. string strCallFun = "";
  43. }CONFIG_BASE_STRUCT;
  44. enum CONFIG_TYPE
  45. {
  46. CONFIG_LONG = 0,
  47. CONFIG_ULONG,
  48. CONFIG_INT,
  49. CONFIG_DOUBLE,
  50. CONFIG_BOOL,
  51. CONFIG_STRING
  52. };
  53. typedef struct _MODULE_CONFIG_STRUCT
  54. {
  55. string strName;
  56. void* pValue;
  57. CONFIG_TYPE config_type;
  58. bool bSave;
  59. void* pDefault;
  60. _MODULE_CONFIG_STRUCT(string strTemp, LONG* pTemp, bool isSaveTemp, LONG* pDef = NULL)
  61. {
  62. strName = strTemp;
  63. pValue = (void*)pTemp;
  64. config_type = CONFIG_TYPE::CONFIG_LONG;
  65. bSave = isSaveTemp;
  66. pDefault = (void*)pDef;
  67. }
  68. _MODULE_CONFIG_STRUCT(string strTemp, ULONG* pTemp, bool isSaveTemp, ULONG* pDef = NULL)
  69. {
  70. strName = strTemp;
  71. pValue = (void*)pTemp;
  72. config_type = CONFIG_TYPE::CONFIG_ULONG;
  73. bSave = isSaveTemp;
  74. pDefault = (void*)pDef;
  75. }
  76. _MODULE_CONFIG_STRUCT(string strTemp, int* pTemp, bool isSaveTemp, int* pDef = NULL)
  77. {
  78. strName = strTemp;
  79. pValue = (void*)pTemp;
  80. config_type = CONFIG_TYPE::CONFIG_INT;
  81. bSave = isSaveTemp;
  82. pDefault = (void*)pDef;
  83. }
  84. _MODULE_CONFIG_STRUCT(string strTemp, unsigned int* pTemp, bool isSaveTemp, unsigned int* pDef = NULL)
  85. {
  86. strName = strTemp;
  87. pValue = (void*)pTemp;
  88. config_type = CONFIG_TYPE::CONFIG_INT;
  89. bSave = isSaveTemp;
  90. pDefault = (void*)pDef;
  91. }
  92. _MODULE_CONFIG_STRUCT(string strTemp, double* pTemp, bool isSaveTemp, double* pDef = NULL)
  93. {
  94. strName = strTemp;
  95. pValue = (void*)pTemp;
  96. config_type = CONFIG_TYPE::CONFIG_DOUBLE;
  97. bSave = isSaveTemp;
  98. pDefault = (void*)pDef;
  99. }
  100. _MODULE_CONFIG_STRUCT(string strTemp, bool* pTemp, bool isSaveTemp, bool* pDef = NULL)
  101. {
  102. strName = strTemp;
  103. pValue = (void*)pTemp;
  104. config_type = CONFIG_TYPE::CONFIG_BOOL;
  105. bSave = isSaveTemp;
  106. pDefault = (void*)pDef;
  107. }
  108. _MODULE_CONFIG_STRUCT(string strTemp, string* pTemp, bool isSaveTemp, string* pDef = NULL)
  109. {
  110. strName = strTemp;
  111. pValue = (void*)pTemp;
  112. config_type = CONFIG_TYPE::CONFIG_STRING;
  113. bSave = isSaveTemp;
  114. pDefault = (void*)pDef;
  115. }
  116. }MODULE_CONFIG_STRUCT;
  117. // 定义函数指针类型
  118. using GetFunctionPtr = vector<CONFIG_BASE_STRUCT>(*)();
  119. using SetFunctionPtr = std::function<LONG(CDataBaseOperate*, std::vector<CONFIG_BASE_STRUCT>)>;
  120. typedef struct
  121. {
  122. GetFunctionPtr get;
  123. SetFunctionPtr set;
  124. } CONFIG_FUNCTION_PTR;
  125. class DLL_CONFIG_BASE_API CConfigBase
  126. {
  127. private:
  128. // 函数注册表
  129. std::map<std::string, CONFIG_FUNCTION_PTR> m_FunctionRegistry;
  130. public:
  131. // 注册函数
  132. void RegisterFunction(const std::string& name,GetFunctionPtr get, SetFunctionPtr set);
  133. LONG CallSetFunction(const std::string& name, CDataBaseOperate* obj, std::vector<CONFIG_BASE_STRUCT> vecconfig);
  134. CConfigBase(string sPathFile, CppSQLite3DB* pDB);
  135. LONG LoadConfigDB(string strTableName, vector<CONFIG_BASE_STRUCT>& vecConfig);
  136. LONG SaveConfigDB(string strTableName, vector<CONFIG_BASE_STRUCT>* vecConfig);
  137. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, string& value);
  138. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, CHAR* value, UINT len);
  139. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, LONG* value);
  140. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, ULONG* value);
  141. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, INT* value);
  142. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, DOUBLE* value);
  143. LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, bool* value);
  144. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, const CHAR* value);
  145. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, string value);
  146. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, LONG value);
  147. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, ULONG value);
  148. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, INT value);
  149. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, DOUBLE value);
  150. LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, bool value);
  151. LONG Append(vector<CONFIG_BASE_STRUCT>* stConfig, MODULE_CONFIG_STRUCT config);
  152. //在ConfigBase 中查找 ModuleConfig 中需要的数据
  153. LONG GetConfigParam(vector<CONFIG_BASE_STRUCT> stConfig, vector<MODULE_CONFIG_STRUCT>* vecconfig);
  154. //将ModuleConfig的数据设置到ConfigBase中
  155. LONG SetConfigParam(vector<CONFIG_BASE_STRUCT>* stConfig, vector<MODULE_CONFIG_STRUCT> vecconfig);
  156. private:
  157. CppSQLite3DB* m_pDB;
  158. std::string m_sPathFile = "";
  159. };
  160. }