SqlOperation.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. // *****************************************************************************
  2. // 版权所有(C)2023~2099 上海骄成超声波技术有限公司
  3. // 保留所有权利
  4. // *****************************************************************************
  5. // 作者 : 杨坚
  6. // 版本 : 1.0
  7. // 功能说明:
  8. // 数据库操作类
  9. // *****************************************************************************
  10. #ifndef __SQLOPERATION_H__
  11. #define __SQLOPERATION_H__ 1
  12. #include <QString>
  13. #include <QJsonDocument>
  14. #include <QDebug>
  15. #include <QSqlQuery>
  16. #include <QSqlDatabase>
  17. #include <QJsonObject>
  18. #include <QJsonArray>
  19. #include "CViewInterface.h"
  20. #include <QMap>
  21. //#define MENU_TABLE_NAME "Menu"
  22. //#define HOME_TABLE_NAME "HomeProduct"
  23. //#define Dir_Calibration_TABLE_NAME "Dir_Calibration"
  24. //#define Dir_Diagnosis_TABLE_NAME "Dir_Diagnosis"
  25. //#define Dir_Message_TABLE_NAME "Dir_Message"
  26. //#define Dir_ModuleConfig_TABLE_NAME "Dir_ModuleConfig"
  27. //#define Dir_ProductAssist_TABLE_NAME "Dir_ProductAssist"
  28. //#define Dir_Programme_TABLE_NAME "Dir_Programme"
  29. //#define Dir_SystemInfo_TABLE_NAME "Dir_SystemInfo"
  30. struct ST_TABLE_CONTROL_DATA
  31. {
  32. //当前目录下 每个表格对应的数据
  33. //QMap<QString, QList<CONFIG_BASE_STRUCT>> configData;
  34. QList<CONFIG_BASE_STRUCT> controlDataList;
  35. QString tableName;
  36. bool allChangeFlag = true; //临时数据,外部读取时使用
  37. // QList<CONFIG_BASE_STRUCT> configData;
  38. //bool IsThirdLevel = false; //临时数据
  39. };
  40. // 页面切换保存
  41. struct ST_APP_CONFIG
  42. {
  43. int nID;
  44. int nGroupId_R; // Group
  45. int nIndex_R; // Group 里面第几个
  46. int nGroupId_L; // Group
  47. int nIndex_L; // Group 里面第几个
  48. };
  49. class SqlOperation
  50. {
  51. public:
  52. SqlOperation();
  53. // 获取单例实例
  54. static SqlOperation& GetInstance();
  55. public:
  56. void RegeditFun();
  57. //创建数据库连接
  58. int LoadSql();
  59. //加载所有菜单
  60. int loadMenu();
  61. int loadAllDirectories();
  62. //加载所有控件数据
  63. int loadAllControlData();
  64. //根据表格名字加载单个目录,每个QJsonObject保存一个目录的相关信息
  65. int loadDirectories(QString tableName, QList<QJsonObject>& directories);
  66. //加载指定表格下的控件数据
  67. int loadGivenTableControlData(QString tableName, ST_TABLE_CONTROL_DATA& controlData);
  68. //根据ID加载菜单名字
  69. //int loadMenuName(int id, QString& name);
  70. //通过表格名字,目录Id,查找控件数据及按钮数据
  71. // QJsonObject fetchThirdLevelData(QString multiTableName, int directoryId, const int& userPrivilege);
  72. //根据表格名字及用户等级,加载目录
  73. int GetDirectories(QString tableName, const int& userPrivilege, QList<QJsonObject>& directories);
  74. //根据多个表格名字获取三级目录下的控件信息,包括按钮
  75. int GetThirdDirControlData(QString multiTableName, const int& userPrivilege, QList<ST_TABLE_CONTROL_DATA>& data,bool& allChangeFalg);
  76. //根据多个表格名字获取三级目录下的按钮, 仅仅获取按钮
  77. int GetThirdDirButtons(QString multiTableName, const int& userPrivilege, QList<CONFIG_BASE_STRUCT>& buttons);
  78. int GetMuneName(int id, QString& name);
  79. //更新给定表格名字,给定控件名字的数据, 更新数据到本地存储和后端
  80. int updateControlData(QString tableName, QString name, const QString& currentValue);
  81. //通过表名,控件名,更新数据库的一个value,更新到数据库
  82. int updateDb(QString tableName, QString name, const QString currentValue);
  83. // bool GetDirectories(QString tableName, const int& userPrivilege, QList<CONFIG_BASE_STRUCT>& directories);
  84. int LoadAppConfig();
  85. private:
  86. void ErrorInfo(const QString& strError);
  87. bool isModuleTable(QString tableName);
  88. int LoadControlDataFromModule(std::string tableName, ST_TABLE_CONTROL_DATA& controlData);
  89. void DataChange(string strDbName, string strTableName);
  90. /**弹出对话框
  91. */
  92. static BUTTON_TYPE StartMessageWnd(MESSAGE_INFO stMsgInfo);
  93. void RunButDone(ns_module::ST_BUTTON_DONE butDone);
  94. private:
  95. ns_module::CViewInterface* m_pCViewInterface;
  96. //每个目录表格名字对应的目录
  97. QMap<QString, QList<QJsonObject>> m_mapAllDirectories;
  98. /*
  99. * QJsonObject:
  100. * {["Id"]:;
  101. ["Name"];
  102. ["ParentId"]
  103. ["IsThirdLevel"];
  104. ["Separator"];
  105. ["UserGrade"];
  106. ["Circle"];
  107. ["TableName"]:{
  108. []
  109. }
  110. ;}
  111. TableName 格式: BondHead,1,2
  112. */
  113. //每个三级目录下(可能包括多个数据表格) 对应的数据
  114. // QMap<int, Third_Dir_Control_Data> m_mapControlData;
  115. //所有表格对应的数据
  116. //QMap<QString, QList<CONFIG_BASE_STRUCT>> m_mapTableControlData;
  117. //所有控件数据
  118. //ModuleConfig.db
  119. QList<ST_TABLE_CONTROL_DATA> m_allControlData;
  120. //每个ID对应菜单名
  121. QMap<int, QString> m_mapMenu;
  122. /**页面配置信息
  123. */
  124. ST_APP_CONFIG m_appConifg;
  125. //目录表名
  126. const QString MENU_TABLE_NAME = "Menu";
  127. const QString HOME_TABLE_NAME = "HomeProduct";
  128. const QString Dir_Calibration_TABLE_NAME = "Dir_Calibration";
  129. const QString Dir_Diagnosis_TABLE_NAME = "Dir_Diagnosis";
  130. const QString Dir_Message_TABLE_NAME = "Dir_Message";
  131. const QString Dir_ModuleConfig_TABLE_NAME = "Dir_ModuleConfig";
  132. const QString Dir_ProductAssist_TABLE_NAME = "Dir_ProductAssist";
  133. const QString Dir_Programme_TABLE_NAME = "Dir_Programme";
  134. const QString Dir_SystemInfo_TABLE_NAME = "Dir_SystemInfo";
  135. //Module 表名
  136. };
  137. #endif //__SQLOPERATION_H__