// ***************************************************************************** // 版权所有(C)2023~2099 上海骄成超声波技术有限公司 // 保留所有权利 // ***************************************************************************** // 作者 : 杨坚 // 版本 : 1.0 // 功能说明: // 数据库操作类 // ***************************************************************************** #ifndef __SQLOPERATION_H__ #define __SQLOPERATION_H__ 1 #include #include #include #include #include #include #include #include "CViewInterface.h" #include #define MENU_TABLE_NAME "Menu" #define HOME_TABLE_NAME "HomeProduct" #define Dir_Calibration_TABLE_NAME "Dir_Calibration" #define Dir_Diagnosis_TABLE_NAME "Dir_Diagnosis" #define Dir_Message_TABLE_NAME "Dir_Message" #define Dir_ModuleConfig_TABLE_NAME "Dir_ModuleConfig" #define Dir_ProductAssist_TABLE_NAME "Dir_ProductAssist" #define Dir_Programme_TABLE_NAME "Dir_Programme" #define Dir_SystemInfo_TABLE_NAME "Dir_SystemInfo" struct Table_Control_Data { //当前目录下 每个表格对应的数据 //QMap> configData; QList controlDataList; QString tableName; bool allChangeFlag = true; //临时数据,外部读取时使用 // QList configData; //bool IsThirdLevel = false; //临时数据 }; // 页面切换保存 struct ST_APP_CONFIG { int nID; int nGroupId_R; // Group int nIndex_R; // Group 里面第几个 int nGroupId_L; // Group int nIndex_L; // Group 里面第几个 }; class SqlOperation { public: SqlOperation(); // 获取单例实例 static SqlOperation& GetInstance(); public: //创建数据库连接 int LoadSql(); //加载所有菜单 int loadMenu(); int loadAllDirectories(); //加载所有控件数据 int loadAllControlData(); //根据表格名字加载单个目录,每个QJsonObject保存一个目录的相关信息 int loadDirectories(QString tableName, QList& directories); //加载指定表格下的控件数据 int loadGivenTableControlData(QString tableName, Table_Control_Data& controlData); //根据ID加载菜单名字 //int loadMenuName(int id, QString& name); //通过表格名字,目录Id,查找控件数据及按钮数据 // QJsonObject fetchThirdLevelData(QString multiTableName, int directoryId, const int& userPrivilege); //根据表格名字及用户等级,加载目录 int GetDirectories(QString tableName, const int& userPrivilege, QList& directories); //根据多个表格名字获取三级目录下的控件信息,包括按钮 int GetThirdDirControlData(QString multiTableName, const int& userPrivilege, QList& data,bool& allChangeFalg); //根据多个表格名字获取三级目录下的按钮, 仅仅获取按钮 int GetThirdDirButtons(QString multiTableName, const int& userPrivilege, QList& buttons); int GetMuneName(int id, QString& name); //更新给定表格名字,给定控件名字的数据, 更新数据到本地存储和后端 int updateControlData(QString tableName, QString name, const QString& currentValue); //通过表名,控件名,更新数据库的一个value,更新到数据库 int updateDb(QString tableName, QString name, const QString currentValue); // bool GetDirectories(QString tableName, const int& userPrivilege, QList& directories); int LoadAppConfig(); private: void ErrorInfo(const QString& strError); private: std::unique_ptr m_pCViewInterface; //每个目录表格名字对应的目录 QMap> m_mapAllDirectories; /* * QJsonObject: * {["Id"]:; ["Name"]; ["ParentId"] ["IsThirdLevel"]; ["Separator"]; ["UserGrade"]; ["Circle"]; ["TableName"];} */ //每个三级目录下(可能包括多个数据表格) 对应的数据 // QMap m_mapControlData; //所有表格对应的数据 //QMap> m_mapTableControlData; //所有控件数据 QList m_allControlData; //每个ID对应菜单名 QMap m_mapMenu; /**页面配置信息 */ ST_APP_CONFIG m_appConifg; }; #endif //__SQLOPERATION_H__