SqlOperation.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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 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. //创建数据库连接
  57. int LoadSql();
  58. //加载所有菜单
  59. int loadMenu();
  60. int loadAllDirectories();
  61. //加载所有控件数据
  62. int loadAllControlData();
  63. //根据表格名字加载单个目录,每个QJsonObject保存一个目录的相关信息
  64. int loadDirectories(QString tableName, QList<QJsonObject>& directories);
  65. //加载指定表格下的控件数据
  66. int loadGivenTableControlData(QString tableName, Table_Control_Data& controlData);
  67. //根据ID加载菜单名字
  68. //int loadMenuName(int id, QString& name);
  69. //通过表格名字,目录Id,查找控件数据及按钮数据
  70. // QJsonObject fetchThirdLevelData(QString multiTableName, int directoryId, const int& userPrivilege);
  71. //根据表格名字及用户等级,加载目录
  72. int GetDirectories(QString tableName, const int& userPrivilege, QList<QJsonObject>& directories);
  73. //根据多个表格名字获取三级目录下的控件信息,包括按钮
  74. int GetThirdDirControlData(QString multiTableName, const int& userPrivilege, QList<Table_Control_Data>& data,bool& allChangeFalg);
  75. //根据多个表格名字获取三级目录下的按钮, 仅仅获取按钮
  76. int GetThirdDirButtons(QString multiTableName, const int& userPrivilege, QList<CONFIG_BASE_STRUCT>& buttons);
  77. int GetMuneName(int id, QString& name);
  78. //更新给定表格名字,给定控件名字的数据, 更新数据到本地存储和后端
  79. int updateControlData(QString tableName, QString name, const QString& currentValue);
  80. //通过表名,控件名,更新数据库的一个value,更新到数据库
  81. int updateDb(QString tableName, QString name, const QString currentValue);
  82. // bool GetDirectories(QString tableName, const int& userPrivilege, QList<CONFIG_BASE_STRUCT>& directories);
  83. int LoadAppConfig();
  84. private:
  85. void ErrorInfo(const QString& strError);
  86. private:
  87. std::unique_ptr<ns_module::CViewInterface> m_pCViewInterface;
  88. //每个目录表格名字对应的目录
  89. QMap<QString, QList<QJsonObject>> m_mapAllDirectories;
  90. /*
  91. * QJsonObject:
  92. * {["Id"]:;
  93. ["Name"];
  94. ["ParentId"]
  95. ["IsThirdLevel"];
  96. ["Separator"];
  97. ["UserGrade"];
  98. ["Circle"];
  99. ["TableName"];}
  100. */
  101. //每个三级目录下(可能包括多个数据表格) 对应的数据
  102. // QMap<int, Third_Dir_Control_Data> m_mapControlData;
  103. //所有表格对应的数据
  104. //QMap<QString, QList<CONFIG_BASE_STRUCT>> m_mapTableControlData;
  105. //所有控件数据
  106. QList<Table_Control_Data> m_allControlData;
  107. //每个ID对应菜单名
  108. QMap<int, QString> m_mapMenu;
  109. /**页面配置信息
  110. */
  111. ST_APP_CONFIG m_appConifg;
  112. };
  113. #endif //__SQLOPERATION_H__