SqlOperation.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  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 :public QObject
  50. {
  51. Q_OBJECT
  52. public:
  53. SqlOperation();
  54. // 获取单例实例
  55. static SqlOperation* GetInstance();
  56. public:
  57. void RegeditFun();
  58. //创建数据库连接
  59. int LoadSql();
  60. //加载所有菜单
  61. int loadMenu();
  62. int loadAllDirectories();
  63. //加载所有控件数据
  64. int loadAllControlData();
  65. //根据表格名字加载单个目录,每个QJsonObject保存一个目录的相关信息
  66. int loadDirectories(QString tableName, QList<QJsonObject>& directories);
  67. //加载指定表格下的控件数据
  68. int loadGivenTableControlData(QString tableName, ST_TABLE_CONTROL_DATA& controlData);
  69. //根据ID加载菜单名字
  70. //int loadMenuName(int id, QString& name);
  71. //通过表格名字,目录Id,查找控件数据及按钮数据
  72. // QJsonObject fetchThirdLevelData(QString multiTableName, int directoryId, const int& userPrivilege);
  73. //根据表格名字及用户等级,加载目录
  74. int GetDirectories(QString tableName, const int& userPrivilege, QList<QJsonObject>& directories);
  75. //根据多个表格名字获取三级目录下的控件信息,包括按钮
  76. int GetThirdDirControlData(QString multiTableName, const int& userPrivilege, QList<ST_TABLE_CONTROL_DATA>& data,bool& allChangeFalg);
  77. int GetThirdDirControlDataToUpdataUi(QString multiTableName, const int& userPrivilege, QList<ST_TABLE_CONTROL_DATA>& data,bool& allChangeFalg);
  78. //根据多个表格名字获取三级目录下的按钮, 仅仅获取按钮
  79. int GetThirdDirButtons(QString multiTableName, const int& userPrivilege, QList<CONFIG_BASE_STRUCT>& buttons);
  80. int GetMuneName(int id, QString& name);
  81. //更新给定表格名字,给定控件名字的数据, 更新数据到本地存储和后端
  82. int updateControlData(QString tableName, QString name, const QString& currentValue);
  83. //通过表名,控件名,更新数据库的一个value,更新到数据库
  84. int updateDb(QString tableName, QString name, const QString currentValue);
  85. // bool GetDirectories(QString tableName, const int& userPrivilege, QList<CONFIG_BASE_STRUCT>& directories);
  86. int LoadAppConfig();
  87. private:
  88. void ErrorInfo(const QString& strError);
  89. bool isModuleTable(QString tableName);
  90. int LoadControlDataFromModule(std::string tableName, ST_TABLE_CONTROL_DATA& controlData);
  91. void DataChange(string strDbName, string strTableName);
  92. /**弹出对话框
  93. */
  94. static BUTTON_TYPE StartMessageWnd(MESSAGE_INFO stMsgInfo);
  95. void RunButDone(ns_module::ST_BUTTON_DONE butDone);
  96. signals:
  97. /**更新表名称
  98. */
  99. void UpDbTreeViewManager3DataSig(QString strDbName, QString strTableName);
  100. /**消息弹框
  101. */
  102. int SendRunButDoneSig(ns_module::ST_BUTTON_DONE butDone);
  103. /**耗时操作完成(轴运动完毕,所有操作)
  104. */
  105. void AllAxisOperationsCompleted(MESSAGE_INFO stMsgInfo);
  106. private:
  107. ns_module::CViewInterface* m_pCViewInterface;
  108. //每个目录表格名字对应的目录
  109. QMap<QString, QList<QJsonObject>> m_mapAllDirectories;
  110. /*
  111. * QJsonObject:
  112. * {["Id"]:;
  113. ["Name"];
  114. ["ParentId"]
  115. ["IsThirdLevel"];
  116. ["Separator"];
  117. ["UserGrade"];
  118. ["Circle"];
  119. ["TableName"]:{
  120. []
  121. }
  122. ;}
  123. TableName 格式: BondHead,1,2
  124. */
  125. //每个三级目录下(可能包括多个数据表格) 对应的数据
  126. // QMap<int, Third_Dir_Control_Data> m_mapControlData;
  127. //所有表格对应的数据
  128. //QMap<QString, QList<CONFIG_BASE_STRUCT>> m_mapTableControlData;
  129. //所有控件数据
  130. //ModuleConfig.db
  131. QList<ST_TABLE_CONTROL_DATA> m_allControlData;
  132. //每个ID对应菜单名
  133. QMap<int, QString> m_mapMenu;
  134. /**页面配置信息
  135. */
  136. ST_APP_CONFIG m_appConifg;
  137. //目录表名
  138. const QString MENU_TABLE_NAME = "Menu";
  139. const QString HOME_TABLE_NAME = "HomeProduct";
  140. const QString Dir_Calibration_TABLE_NAME = "Dir_Calibration";
  141. const QString Dir_Diagnosis_TABLE_NAME = "Dir_Diagnosis";
  142. const QString Dir_Message_TABLE_NAME = "Dir_Message";
  143. const QString Dir_ModuleConfig_TABLE_NAME = "Dir_ModuleConfig";
  144. const QString Dir_ProductAssist_TABLE_NAME = "Dir_ProductAssist";
  145. const QString Dir_Programme_TABLE_NAME = "Dir_Programme";
  146. const QString Dir_SystemInfo_TABLE_NAME = "Dir_SystemInfo";
  147. //Module 表名
  148. };
  149. #endif //__SQLOPERATION_H__