123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- /**************************************************************************
- 作者: huangjiangbo
- 时间: 2024.08.26
- 描述: 各模组Config数据库操作基类
- 修改记录:
- 1、
- ***************************************************************************/
- #pragma once
- //#pragma warning(disable:4251)
- #include "CppSQLite3.h"
- #include "dt.h"
- #include <string>
- #include <windows.h>
- #include <vector>
- #include <mutex>
- #include "CDataBaseOperate.h"
- namespace ns_db
- {
- using namespace std;
- #ifdef CONFIG_BASE_DLL
- #define DLL_CONFIG_BASE_API __declspec(dllexport)
- #else
- #define DLL_CONFIG_BASE_API
- #endif
- typedef struct _CONFIG_BASE_STRUCT
- {
- INT iNo_;
- INT iGroupId = 1;
- string strName = "";
- string strDescribe = "";
- INT iUserGrade = 1;
- INT iChangeFlag = 1;
- string strValue = "";
- string strType = "";
- string strDefult = "";
- string strLowerLimit = "-1000000";
- string strUpperLimit = "1000000";
- string strUnit = "um";
- string sIcon = "";
- bool bEnable = true;
- string strCallFun = "";
- }CONFIG_BASE_STRUCT;
- enum CONFIG_TYPE
- {
- CONFIG_LONG = 0,
- CONFIG_ULONG,
- CONFIG_INT,
- CONFIG_DOUBLE,
- CONFIG_BOOL,
- CONFIG_STRING
- };
- typedef struct _MODULE_CONFIG_STRUCT
- {
- string strName;
- void* pValue;
- CONFIG_TYPE config_type;
- bool bSave;
- void* pDefault;
- _MODULE_CONFIG_STRUCT(string strTemp, LONG* pTemp, bool isSaveTemp, LONG* pDef = NULL)
- {
- strName = strTemp;
- pValue = (void*)pTemp;
- config_type = CONFIG_TYPE::CONFIG_LONG;
- bSave = isSaveTemp;
- pDefault = (void*)pDef;
- }
- _MODULE_CONFIG_STRUCT(string strTemp, ULONG* pTemp, bool isSaveTemp, ULONG* pDef = NULL)
- {
- strName = strTemp;
- pValue = (void*)pTemp;
- config_type = CONFIG_TYPE::CONFIG_ULONG;
- bSave = isSaveTemp;
- pDefault = (void*)pDef;
- }
- _MODULE_CONFIG_STRUCT(string strTemp, int* pTemp, bool isSaveTemp, int* pDef = NULL)
- {
- strName = strTemp;
- pValue = (void*)pTemp;
- config_type = CONFIG_TYPE::CONFIG_INT;
- bSave = isSaveTemp;
- pDefault = (void*)pDef;
- }
- _MODULE_CONFIG_STRUCT(string strTemp, unsigned int* pTemp, bool isSaveTemp, unsigned int* pDef = NULL)
- {
- strName = strTemp;
- pValue = (void*)pTemp;
- config_type = CONFIG_TYPE::CONFIG_INT;
- bSave = isSaveTemp;
- pDefault = (void*)pDef;
- }
- _MODULE_CONFIG_STRUCT(string strTemp, double* pTemp, bool isSaveTemp, double* pDef = NULL)
- {
- strName = strTemp;
- pValue = (void*)pTemp;
- config_type = CONFIG_TYPE::CONFIG_DOUBLE;
- bSave = isSaveTemp;
- pDefault = (void*)pDef;
- }
- _MODULE_CONFIG_STRUCT(string strTemp, bool* pTemp, bool isSaveTemp, bool* pDef = NULL)
- {
- strName = strTemp;
- pValue = (void*)pTemp;
- config_type = CONFIG_TYPE::CONFIG_BOOL;
- bSave = isSaveTemp;
- pDefault = (void*)pDef;
- }
- _MODULE_CONFIG_STRUCT(string strTemp, string* pTemp, bool isSaveTemp, string* pDef = NULL)
- {
- strName = strTemp;
- pValue = (void*)pTemp;
- config_type = CONFIG_TYPE::CONFIG_STRING;
- bSave = isSaveTemp;
- pDefault = (void*)pDef;
- }
- }MODULE_CONFIG_STRUCT;
- // 定义函数指针类型
- using GetFunctionPtr = vector<CONFIG_BASE_STRUCT>(*)();
- using SetFunctionPtr = std::function<LONG(CDataBaseOperate*, std::vector<CONFIG_BASE_STRUCT>)>;
- typedef struct
- {
- GetFunctionPtr get;
- SetFunctionPtr set;
- } CONFIG_FUNCTION_PTR;
- class DLL_CONFIG_BASE_API CConfigBase
- {
- private:
- // 函数注册表
- std::map<std::string, CONFIG_FUNCTION_PTR> m_FunctionRegistry;
- public:
- // 注册函数
- void RegisterFunction(const std::string& name,GetFunctionPtr get, SetFunctionPtr set);
- LONG CallSetFunction(const std::string& name, CDataBaseOperate* obj, std::vector<CONFIG_BASE_STRUCT> vecconfig);
-
- CConfigBase(string sPathFile, CppSQLite3DB* pDB);
- LONG LoadConfigDB(string strTableName, vector<CONFIG_BASE_STRUCT>& vecConfig);
- LONG SaveConfigDB(string strTableName, vector<CONFIG_BASE_STRUCT>* vecConfig);
- LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, string& value);
- LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, CHAR* value, UINT len);
- LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, LONG* value);
- LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, ULONG* value);
- LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, INT* value);
- LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, DOUBLE* value);
- LONG Read(vector<CONFIG_BASE_STRUCT> stConfig, const CHAR* key, bool* value);
- LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, const CHAR* value);
- LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, string value);
- LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, LONG value);
- LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, ULONG value);
- LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, INT value);
- LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, DOUBLE value);
- LONG Write(vector<CONFIG_BASE_STRUCT>* stConfig, const CHAR* key, bool value);
- LONG Append(vector<CONFIG_BASE_STRUCT>* stConfig, MODULE_CONFIG_STRUCT config);
- //在ConfigBase 中查找 ModuleConfig 中需要的数据
- LONG GetConfigParam(vector<CONFIG_BASE_STRUCT> stConfig, vector<MODULE_CONFIG_STRUCT>* vecconfig);
- //将ModuleConfig的数据设置到ConfigBase中
- LONG SetConfigParam(vector<CONFIG_BASE_STRUCT>* stConfig, vector<MODULE_CONFIG_STRUCT> vecconfig);
- private:
- CppSQLite3DB* m_pDB;
- std::string m_sPathFile = "";
- };
- }
|