firingwidget.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef FIRINGWIDGET_H
  2. #define FIRINGWIDGET_H
  3. #include "navprogress.h"
  4. #include "../mqtt/mqttclient.h"
  5. #include "../blastRecord/hblastrecord.h"
  6. #include "../blastRecord/hblastrecorddao.h"
  7. #include "../blastRecordDet/hblastrecorddetdao.h"
  8. #include "../blastRegRecord/hblastregrecorddao.h"
  9. #include "../databasemanager.h"
  10. #include <QWidget>
  11. #include <QJsonDocument>
  12. #include <QJsonObject>
  13. #include "../des3encryption.h"
  14. #include "../mqttthread.h"
  15. #include "../serial/serialtool.h"
  16. namespace Ui
  17. {
  18. class firingWidget;
  19. }
  20. class firingWidget : public QWidget
  21. {
  22. Q_OBJECT
  23. public:
  24. explicit firingWidget(const int &row, const bool &select, const QString &uuid = "", QWidget *parent = nullptr);
  25. ~firingWidget();
  26. void cancelBlasting();
  27. void testonBlastSucess(const QJsonObject &data);
  28. public slots:
  29. void onCountdownFinished(const QString &topic, const QString &message);
  30. private slots:
  31. void on_pushButton_2_clicked();
  32. void on_sendTest_4_clicked();
  33. void handleMessageAndTopic(const QByteArray &message, const QMqttTopicName &topic);
  34. signals:
  35. void progressChanged(int value, int row);
  36. void lastStageChanged(int newStage);
  37. void updateBlastStatus(int status, int row);
  38. void selectSignal(QString uuid);
  39. void updateButton(int status, int row);
  40. void updateProjectStatus(QString uuid);
  41. void updateData(const QJsonObject &jsonObj);
  42. void countdown(QString uuid, const QString &topic, const QString &message);
  43. void closeFiring(QString uuid);
  44. private slots:
  45. // 处理 MQTT 连接成功的槽函数
  46. void onMqttConnected();
  47. // 双键按下
  48. void onButtonPressedReceived(const QString &topic, const QString &message);
  49. void onLastStageChanged(int newStage);
  50. void onBlastSucess(const QJsonObject &data);
  51. private:
  52. bool recordBlastEquipments(const QJsonObject &jsonObj);
  53. QList<HBlastRecordDet *> recordDetsData(const QJsonObject &jsonObj);
  54. bool uploadToDanLing(const QJsonObject &jsonObj);
  55. HBlastRecord *recordBlastProject(const QJsonObject &jsonObj);
  56. void saveDataToLocalDB(const QJsonObject &jsonObj);
  57. void uploadToServer(const QJsonObject &jsonObj);
  58. void sendMqttMessage(const QString &topic, const QByteArray &message);
  59. void startBlasting();
  60. private:
  61. Ui::firingWidget *ui;
  62. MqttClient *pcPorjectBC;
  63. HBlastRecordDao dao;
  64. HBlastRecordDetDao daoDet;
  65. HBlastRegRecordDao daoReg;
  66. NavProgress *navProgress;
  67. MqttThread *mqttThread;
  68. SerialTool *serialTool = nullptr;
  69. QString m_uuid; // 用于存储 uuid
  70. QString reg_uuid; // 用于存储 uuid
  71. QString blast_uuid; // 用于存储 uuid
  72. QString topic;
  73. int m_row;
  74. int lastStage = -1; // 用于记录上一次的 stage 状态
  75. bool m_isMqttConnected = false;
  76. bool m_select;
  77. QMetaObject::Connection connection; // 声明 connection 变量
  78. QMetaObject::Connection connectionPress;
  79. QString lat;
  80. QString lon;
  81. };
  82. #endif // FIRINGWIDGET_H