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