Jelajahi Sumber

dev: add safety inspect; update blasting uuid

YaoH 2 hari lalu
induk
melakukan
da3ccebb40

+ 48 - 93
blastJob/blastopepage.cpp

@@ -16,7 +16,7 @@
 const int ColIndexBlastStatus = 6;
 const int ColIndexProgressBar = 7;
 const int ColIndexOpBtn = 8;
-const int ColIndexUuid = 9;
+const int ColIndexBlasterDev = 1;
 
 BlastOpePage::BlastOpePage(QWidget *parent)
     : QWidget(parent), ui(new Ui::BlastOpePage), dao(DatabaseManager::getInstance().getDatabase()) {
@@ -33,9 +33,8 @@ BlastOpePage::BlastOpePage(QWidget *parent)
         }
     }
     if (!isAllSafetyInspectorConfirmed) {
-        bool isContinue = CustomMessageBox::showConfirmDialog("安全检查未完成", "安全检查没有全部确认,是否继续?",
-                                                              "继续", "取消", this);
-
+        bool isContinue =
+            CustomMessageBox::showConfirmDialog("警告", "安全检查没有全部确认,是否继续?", "继续", "取消", this);
         if (!isContinue) {
             return;
         }
@@ -270,7 +269,7 @@ void BlastOpePage::RefreshData() { loadDataAndDrawTable(m_currentPage, m_pageSiz
 
 void BlastOpePage::loadDataAndDrawTable(int currentPage, int pageSize) {
     LoadingWidget::showLoading(this, "正在加载数据...");
-    QJsonObject extParams{{"blast_status", QJsonArray({"2"})}};
+    QJsonObject extParams{{"blastStatus", QJsonArray({"2"})}};
     QJsonObject result = backendAPIManager::getHProjects(currentPage, pageSize, extParams);
 
     QList<QSharedPointer<HProject>> projectList =
@@ -280,17 +279,14 @@ void BlastOpePage::loadDataAndDrawTable(int currentPage, int pageSize) {
     pageWidget->setMaxPage(ceil(static_cast<double>(totalCount) / pageSize));
 
     model = new QStandardItemModel(this);
-    qDebug() << "项目列表大小: " << projectList;
 
     headers = {
         {"选择", ""},
+        {"井下起爆器", "pcSn"},
         {"工程名称", "name"},
-        //{"井上爆破员", "operatorName"},
-        // {"井下爆破员", "blasterName"},
         {"井下地址", "addressPath"},
         {"雷管数量", "detSum"},
         {"炸药量(kg)", "blastCount"},
-        {"井下起爆器", "pcSn"},
         {"起爆状态", "blastStatus"},
         {"进度", ""},
         {"操作", ""},
@@ -322,7 +318,6 @@ void BlastOpePage::loadDataAndDrawTable(int currentPage, int pageSize) {
                 QMetaProperty metaProp =
                     HProject.metaObject()->property(HProject.metaObject()->indexOfProperty(prop.toUtf8()));
                 QVariant value = metaProp.read(&HProject);
-                qDebug() << "prop: " << prop << ", value: " << value;
 
                 if (prop == "blastStatus") {
                     QString statusText;
@@ -371,43 +366,22 @@ void BlastOpePage::loadDataAndDrawTable(int currentPage, int pageSize) {
         // 初始化progressBars
         int progressCol = headers.size() - 2;  //
         QProgressBar *progressBar1 = new QProgressBar(ui->tableView);
-        progressBar1->setRange(0, 100);  // 设置范围为0到100
-        progressBar1->setValue(0);
-        progressBar1->setAlignment(Qt::AlignCenter);
-        progressBar1->setStyleSheet(
-            "QProgressBar { border: 1px solid grey; border-radius: 5px; background-color: #EEEEEE; "
-            "height: 10px; }"
-            "QProgressBar::chunk { background-color: #05B8CC; width: 2px; margin: 0.5px; border - "
-            "radius: 10px; }");
-        progressBar1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-
         QProgressBar *progressBar2 = new QProgressBar(ui->tableView);
-        progressBar2->setRange(0, 100);  // 设置范围为0到100
-        progressBar2->setValue(0);
-        progressBar2->setAlignment(Qt::AlignCenter);
-        progressBar2->setStyleSheet(
-            "QProgressBar { border: 1px solid grey; border-radius: 5px; background-color: #EEEEEE; "
-            "height: 10px; }"
-            "QProgressBar::chunk { background-color: #05B8CC; width: 2px; margin: 0.5px; border - "
-            "radius: 10px; }");
-        progressBar2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-
         QProgressBar *progressBar3 = new QProgressBar(ui->tableView);
-        progressBar3->setRange(0, 100);  // 设置范围为0到100
-        progressBar3->setValue(0);
-        progressBar3->setAlignment(Qt::AlignCenter);
-        progressBar3->setStyleSheet(
-            "QProgressBar { border: 1px solid grey; border-radius: 5px; background-color: #EEEEEE; "
-            "height: 10px; }"
-            "QProgressBar::chunk { background-color: #05B8CC; width: 2px; margin: 0.5px; border - "
-            "radius: 10px; }");
-        progressBar3->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-
-        progressBars.append(ProgressBarTriple(progressBar1, progressBar2, progressBar3));
         QHBoxLayout *progressBarLayout = new QHBoxLayout;
-        progressBarLayout->addWidget(progressBar1);
-        progressBarLayout->addWidget(progressBar2);
-        progressBarLayout->addWidget(progressBar3);
+        progressBars.append(ProgressBarTriple(progressBar1, progressBar2, progressBar3));
+        for (QProgressBar *pb : {progressBar1, progressBar2, progressBar3}) {
+            pb->setRange(0, 100);  // 设置范围为0到100
+            pb->setValue(0);
+            pb->setAlignment(Qt::AlignCenter);
+            pb->setStyleSheet(
+                "QProgressBar { border: 1px solid grey; border-radius: 5px; background-color: #EEEEEE; "
+                "height: 10px; }"
+                "QProgressBar::chunk { background-color: #05B8CC; width: 2px; margin: 0.5px; border - "
+                "radius: 10px; }");
+            pb->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+            progressBarLayout->addWidget(pb);
+        }
         progressBarLayout->setAlignment(Qt::AlignCenter);
         progressBarLayout->setContentsMargins(0, 0, 0, 0);
         progressBarLayout->setSpacing(0);  // 设置进度条之间的间距为0
@@ -423,7 +397,6 @@ void BlastOpePage::loadDataAndDrawTable(int currentPage, int pageSize) {
         QWidget *widget = new QWidget(ui->tableView);
         QPushButton *button = new QPushButton(widget);
         button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-        // 添加button disable时样式为灰色
         button->setStyleSheet("QPushButton:disabled { background-color: #d3d3d3; color: gray; }");
 
         QModelIndex statusIndex = model->index(row, ColIndexBlastStatus);
@@ -470,12 +443,14 @@ void BlastOpePage::updateProgressBar(int firingStage, int row) {
         QProgressBar *progressBar1 = progressBars[row].bar1;
         QProgressBar *progressBar2 = progressBars[row].bar2;
         QProgressBar *progressBar3 = progressBars[row].bar3;
+
+        progressBar1->setRange(0, 100);  // 设置范围为0到100
+        progressBar1->setValue(0);
+        progressBar2->setRange(0, 100);  // 设置范围为0到100
+        progressBar2->setValue(0);
+        progressBar3->setRange(0, 100);  // 设置范围为0到100
+        progressBar3->setValue(0);
         switch (firingStage) {
-            case FiringStages::Starting:
-                progressBar1->setValue(0);
-                progressBar2->setValue(0);
-                progressBar3->setValue(0);
-                break;
             case FiringStages::QuickTesting:
                 // 起爆检测状态
                 progressBar1->setRange(0, 0);  // 设置范围为0到100
@@ -483,37 +458,31 @@ void BlastOpePage::updateProgressBar(int firingStage, int row) {
                 break;
             case FiringStages::QuickTestFinished:
                 // 起爆检测完成
-                progressBar1->setRange(0, 100);  // 设置范围为0到100
                 progressBar1->setValue(100);
                 break;
             case FiringStages::NetCharging:
                 // 充电开始
+                progressBar1->setValue(100);
                 progressBar2->setRange(0, 0);  // 设置范围为0到100
                 progressBar2->setValue(0);
                 break;
             case FiringStages::NetChargingFinished:
                 // 充电完成
-                progressBar2->setRange(0, 100);  // 设置范围为0到100
+                progressBar1->setValue(100);
                 progressBar2->setValue(100);
                 break;
             case FiringStages::Blasting:
-                // 起爆中
+                progressBar1->setValue(100);
+                progressBar2->setValue(100);
                 progressBar3->setRange(0, 0);  // 设置范围为0到100
                 progressBar3->setValue(0);
                 break;
             case FiringStages::BlastFinished:
                 // 充电完成
-                progressBar3->setRange(0, 100);  // 设置范围为0到100
+                progressBar1->setValue(100);
+                progressBar2->setValue(100);
                 progressBar3->setValue(100);
                 break;
-            case FiringStages::CancelConfirmed:
-                progressBar1->setRange(0, 100);  // 设置范围为0到100
-                progressBar1->setValue(0);
-                progressBar2->setRange(0, 100);  // 设置范围为0到100
-                progressBar2->setValue(0);
-                progressBar3->setRange(0, 100);  // 设置范围为0到100
-                progressBar3->setValue(0);
-                break;
             default:
                 break;
         }
@@ -592,14 +561,12 @@ void BlastOpePage::onFiringStageUpdated(int stage, int row) {
 }
 
 void BlastOpePage::handleSingleBlastButtonClicked(int row, QPushButton *button) {
-    QStandardItem *uuidItem = model->item(row, ColIndexUuid);
-    QString uuid;
-    if (uuidItem) {
-        QVariant uuidVariant = uuidItem->data(Qt::UserRole);
-        if (uuidVariant.isValid()) {
-            uuid = uuidVariant.toString();
-        }
+    QStandardItem *devItem = model->item(row, ColIndexBlasterDev);
+    QString blasterDevUuid;
+    if (devItem) {
+        blasterDevUuid = devItem->text();
     }
+    qDebug() << "handleSingleBlastButtonClicked: row = " << row << ", uuid = " << blasterDevUuid;
 
     if (button->text() == startBlastButtonTxt) {
         button->setDisabled(true);
@@ -611,9 +578,9 @@ void BlastOpePage::handleSingleBlastButtonClicked(int row, QPushButton *button)
         });
         button->setMinimumWidth(80);
         button->setText(stopBlastButtonTxt);
-        firingWidget *widget = new firingWidget(row, false, uuid);
+        firingWidget *widget = new firingWidget(row, false, blasterDevUuid);
         connect(widget, &firingWidget::updatefiringStage, this, &BlastOpePage::onFiringStageUpdated);
-        connect(widget, &firingWidget::countdown, this, &BlastOpePage::showCountDownWidget);
+        connect(widget, &firingWidget::startCountdown, this, &BlastOpePage::showCountDownWidget);
         connect(widget, &firingWidget::updateProjectStatus, this, &BlastOpePage::handlerUpdateProjectStatus);
         connect(widget, &firingWidget::closeFiring, this, &BlastOpePage::destroyFiringWidget);
         if (isShowTriggeringWidget) {
@@ -621,28 +588,16 @@ void BlastOpePage::handleSingleBlastButtonClicked(int row, QPushButton *button)
         }
 
         widget->setAttribute(Qt::WA_DeleteOnClose);
-        firingWidgetByUuid.insert(uuid, widget);
+        firingWidgetByUuid.insert(blasterDevUuid, widget);
         widget->startBlasting();
 
     } else if (button->text() == stopBlastButtonTxt) {
-        // TODO: wrap into class
-        QMessageBox msgBox;
-        msgBox.setWindowTitle("提示");
-        msgBox.setText("是否取消爆破?");
-        QPushButton *yesButton = msgBox.addButton("是", QMessageBox::YesRole);
-        QPushButton *noButton = msgBox.addButton("否", QMessageBox::NoRole);
-        yesButton->setStyleSheet(
-            "QPushButton { background-color:rgb(5, 58, 156); color: white; padding: 5px 15px; "
-            "border-radius: 4px; }");
-        noButton->setStyleSheet(
-            "QPushButton { background-color: #f44336; color: white; padding: 5px 15px; "
-            "border-radius: 4px; }");
-        msgBox.exec();
-        if (msgBox.clickedButton() == noButton) {
+        bool isContinue = CustomMessageBox::showConfirmDialog("提示", "是否取消爆破?", "继续", "取消", this);
+        if (!isContinue) {
             return;
         }
 
-        firingWidget *widget = firingWidgetByUuid.value(uuid);
+        firingWidget *widget = firingWidgetByUuid.value(blasterDevUuid);
         if (widget) {
             widget->sendCancelFiringMsg();
         }
@@ -779,7 +734,7 @@ void BlastOpePage::on_btnSelect_clicked() {
         int row = it.key();
         QString uuid = it.value();
         firingWidget *widgetSelect = new firingWidget(row, true, uuid);
-        QModelIndex index = model->index(row, ColIndexUuid);
+        QModelIndex index = model->index(row, ColIndexBlasterDev);
         if (index.isValid()) {
             QWidget *widgetButton = ui->tableView->indexWidget(index);
             if (widgetButton) {
@@ -811,21 +766,21 @@ void BlastOpePage::setBatchBlastTrigger(QString uuid) {
     if (isSame) {
         bool successSelect;
         serialTool = SerialTool::getInstance(nullptr, &successSelect);
-        connect(serialTool, &SerialTool::buttonPressedReceived, this, &BlastOpePage::showCountDownForBatchBlast,
+        connect(serialTool, &SerialTool::triggerButtonPressed, this, &BlastOpePage::showCountDownForBatchBlast,
                 Qt::SingleShotConnection);
         if (serialTool) {
             QByteArray data = "\r\nENABLE_BUTTON\r\n";
             bool success = serialTool->sendData(data);
             if (success) {
-                Logger::getInstance().info("blast triggered.");
+                Logger::getInstance().info("enable batch trigger button message send.");
             } else {
-                Logger::getInstance().warn("blast trigger failed.");
+                Logger::getInstance().warn("enable batch trigger button message send failed.");
             }
             connect(
-                serialTool, &SerialTool::enableButtonReceived, this,
+                serialTool, &SerialTool::triggerButtonEnabled, this,
                 [this]() {
                     for (const auto &row : uuidMap.keys()) {
-                        onFiringStageUpdated(10, row);
+                        onFiringStageUpdated(FiringStages::PendingTriggerButtonClick, row);
                     }
                 },
                 Qt::SingleShotConnection);

+ 8 - 2
blastProject/blastprojectpage.cpp

@@ -53,7 +53,7 @@ void BlastProjectPage::refreshData() {
 
 void BlastProjectPage::loadDataFromSource(int currentPage, int pageSize) {
     LoadingWidget::showLoading(this, "正在加载数据...");
-    QJsonObject extParams({{"blast_status", QJsonArray({"2", "1"})}});
+    QJsonObject extParams({{"blastStatus", QJsonArray({BlastStatus::Created, BlastStatus::Registered})}});
     QJsonObject result = backendAPIManager::getHProjects(currentPage, pageSize, extParams);
 
     QList<QSharedPointer<HProject>> projectList =
@@ -253,7 +253,13 @@ QJsonArray BlastProjectPage::getUserInfoByIds(const QStringList &userIds) {
 }
 
 void BlastProjectPage::publishAllPendingBlastProjects() {
-    QJsonObject extParams{{"blast_status", QJsonArray({"1", "2"})}};
+    QJsonObject extParams{
+        {
+            "blastStatus",
+            QJsonArray({BlastStatus::Registered, BlastStatus::Created}),
+        },
+        {"pcSnOrder", QString("ASC")},
+    };
     QJsonObject result = backendAPIManager::getHProjects(currentPage, pageSize, extParams);
 
     QJsonArray jsonArray = result["data"].toObject()["list"].toArray();

+ 18 - 30
fireWidget/firingwidget.cpp

@@ -43,17 +43,15 @@ firingWidget::firingWidget(const int &row, const bool &select, const QString &uu
     ui->verticalLayout->setContentsMargins(0, 30, 0, 0);
     ui->scrollArea->setStyleSheet("background: rgba(0, 0, 0, 22); border-radius: 20px;");
     ui->verticalLayout->addWidget(navProgress);
-    // TODO
-    m_blasterDevUuid = "61c93e60e50e3439";
     m_blasterPubTopic = "hxgc/" + m_blasterDevUuid + "/BlastTaskReply";
-    qDebug() << ANSI_COLOR_GREEN << "Firing widget created with topic: " << m_blasterPubTopic << ANSI_COLOR_RESET;
+    m_blasterSubTopic = "hxgc/" + m_blasterDevUuid + "/BlastTask";
     QStringList topics = {m_blasterPubTopic};
     m_connectionCheckTimer = new QTimer(this);
-
     m_subscription = mainMqttClient->subscribeToTopic(m_blasterPubTopic);
-    connect(m_subscription, &QMqttSubscription::messageReceived, this, &firingWidget::handleProjectFiringMqttMessage);
 
-    connect(this, &firingWidget::lastStageChanged, this, &firingWidget::handleFiringStageChanged);
+    qDebug() << ANSI_COLOR_GREEN << "Firing widget created with topic: " << m_blasterPubTopic << ANSI_COLOR_RESET;
+    connect(m_subscription, &QMqttSubscription::messageReceived, this, &firingWidget::handleProjectFiringMqttMessage);
+    connect(this, &firingWidget::changeStage, this, &firingWidget::stageChangeEngine);
 }
 
 firingWidget::~firingWidget() {
@@ -62,7 +60,7 @@ firingWidget::~firingWidget() {
 }
 
 void firingWidget::sendMqttMessage(const QString &topic, const QByteArray &message) {
-    qDebug() << ANSI_COLOR_GREEN << "XXX Sending MQTT message to topic:" << topic << "with message:" << message
+    qDebug() << ANSI_COLOR_GREEN << "Try to Sending MQTT message to topic:" << topic << "with message:" << message
              << ANSI_COLOR_RESET;
     if (mainMqttClient->isConnected()) {
         mainMqttClient->sendMessage(topic, message, quint8(2), false);
@@ -73,15 +71,15 @@ void firingWidget::sendMqttMessage(const QString &topic, const QByteArray &messa
 }
 
 void firingWidget::startBlasting() {
-    // 等待3s mqtt连接后再发送mqtt消息
     m_lastStage = FiringStages::Starting;
     qDebug() << ANSI_COLOR_GREEN << "Firing widget started with topic: 1" << m_blasterPubTopic << ANSI_COLOR_RESET;
-    emit lastStageChanged(FiringStages::Starting);
+    emit changeStage(FiringStages::Starting);
     qDebug() << ANSI_COLOR_GREEN << "Firing widget started with topic: 2" << m_blasterPubTopic << ANSI_COLOR_RESET;
     checkBlasterConnection();
 }
 
 // 定间隔检查有没有收到爆破器返回信息
+// TODO: all triggers shared one timer
 void firingWidget::checkBlasterConnection() {
     m_lastMsgTime = QDateTime::currentDateTime();
 
@@ -108,7 +106,7 @@ void firingWidget::checkBlasterConnection() {
                 "border-radius: 4px; }");
             msgBox.exec();
             if (msgBox.clickedButton() == noButton) {
-                emit lastStageChanged(FiringStages::ForceCanceled);
+                emit changeStage(FiringStages::ForceCanceled);
                 return;
             }
             m_connectionCheckTimer->start(10000);
@@ -123,7 +121,7 @@ void firingWidget::handleProjectFiringMqttMessage(const QMqttMessage &message) {
     if (textEdit) {
         textEdit->append(msgText);
     }
-    int stage = 0;
+    int stage = FiringStages::Starting;
     QJsonDocument jsonDoc = QJsonDocument::fromJson(message.payload());
     if (!jsonDoc.isNull() && jsonDoc.isObject()) {
         QJsonObject jsonObj = jsonDoc.object();
@@ -184,12 +182,10 @@ void firingWidget::handleProjectFiringMqttMessage(const QMqttMessage &message) {
                             ui->pushButton_2->setText("充电");
                             navProgress->setState(FiringStages::QuickTestFinished);
 
-                            emit progressChanged(FiringStages::QuickTestFinished, m_row);
                             emit updatefiringStage(FiringStages::QuickTestFinished, m_row);
                             break;
                         case FiringStages::NetCharging:
                             ui->pushButton_2->setEnabled(false);
-                            emit progressChanged(FiringStages::NetCharging, m_row);
                             emit updatefiringStage(FiringStages::NetCharging, m_row);
                             ui->pushButton_2->setText("充电");
                             navProgress->setState(FiringStages::NetCharging);
@@ -198,19 +194,16 @@ void firingWidget::handleProjectFiringMqttMessage(const QMqttMessage &message) {
                             ui->pushButton_2->setEnabled(true);
                             ui->pushButton_2->setText("起爆");
                             navProgress->setState(FiringStages::NetChargingFinished);
-                            emit progressChanged(FiringStages::NetChargingFinished, m_row);
                             emit updatefiringStage(FiringStages::NetChargingFinished, m_row);
                             break;
                         case FiringStages::Blasting:
                             ui->pushButton_2->setEnabled(false);
-                            emit progressChanged(FiringStages::Blasting, m_row);
                             emit updatefiringStage(FiringStages::Blasting, m_row);
                             ui->pushButton_2->setText("起爆");
                             navProgress->setState(FiringStages::Blasting);
                             break;
                         case FiringStages::BlastFinished:
                             ui->pushButton_2->setEnabled(false);
-                            emit progressChanged(FiringStages::BlastFinished, m_row);
                             emit updatefiringStage(FiringStages::BlastFinished, m_row);
                             emit updateProjectStatus(m_blasterDevUuid, BlastStatus::Blasted);
                             ui->pushButton_2->setText("已完成起爆");
@@ -222,7 +215,6 @@ void firingWidget::handleProjectFiringMqttMessage(const QMqttMessage &message) {
                             ui->pushButton_2->setEnabled(false);
                             ui->pushButton_2->setText("已确认取消");
 
-                            emit progressChanged(FiringStages::Starting, m_row);
                             emit updatefiringStage(FiringStages::CancelConfirmed, m_row);
                             emit updateProjectStatus(m_blasterDevUuid, BlastStatus::Created);
                             emit closeFiring(m_blasterDevUuid, m_row);
@@ -231,7 +223,7 @@ void firingWidget::handleProjectFiringMqttMessage(const QMqttMessage &message) {
                             break;
                     }
 
-                    emit lastStageChanged(m_lastStage);
+                    emit changeStage(m_lastStage);
                 }
             }
         }
@@ -259,28 +251,25 @@ void firingWidget::onButtonPressedReceived(const QString &topic, const QString &
         Logger::getInstance().error(QString("onButtonPressedReceived: Failed to send data: %1").arg(data));
         return;
     }
-    emit countdown(m_blasterDevUuid, topic, message);
+    emit startCountdown(m_blasterDevUuid, topic, message);
     qDebug() << "Data sent successfully";
 }
 
 // 状态改变
-void firingWidget::handleFiringStageChanged(int newStage) {
-    qDebug() << ANSI_COLOR_GREEN << "handleFiringStageChanged: " << newStage << ANSI_COLOR_RESET;
-    m_blasterDevUuid = "61c93e60e50e3439";
-    QString topic = "hxgc/" + m_blasterDevUuid + "/BlastTask";
+void firingWidget::stageChangeEngine(int newStage) {
     QString message;
     QString buttonText;
     switch (newStage) {
         case FiringStages::Starting:
             message = "起爆测试";
             buttonText = "立即测试";
-            sendMqttMessage(topic, message.toUtf8());
+            sendMqttMessage(m_blasterSubTopic, message.toUtf8());
             emit updatefiringStage(FiringStages::Starting, m_row);
             break;
         case FiringStages::QuickTestFinished:
             message = "开始充电";
             buttonText = "充电";
-            sendMqttMessage(topic, message.toUtf8());
+            sendMqttMessage(m_blasterSubTopic, message.toUtf8());
             break;
         case FiringStages::NetChargingFinished:
             message = "起爆";
@@ -313,8 +302,6 @@ void firingWidget::handleFiringStageChanged(int newStage) {
 
             return;
     }
-    qDebug() << ANSI_COLOR_GREEN << "Stage 值变为: i2" << newStage << ANSI_COLOR_RESET;
-
     if (!message.isEmpty()) {
         if (m_lastStage == FiringStages::NetChargingFinished && !m_select) {
             bool success2;
@@ -327,10 +314,11 @@ void firingWidget::handleFiringStageChanged(int newStage) {
                 } else {
                     qDebug() << "Failed to send data";
                 }
-                connection = connect(serialTool, &SerialTool::enableButtonReceived,
+                connection = connect(serialTool, &SerialTool::triggerButtonEnabled,
                                      [this]() { emit updatefiringStage(10, m_row); });
-                connectionPress = connect(serialTool, &SerialTool::buttonPressedReceived,
-                                          [this, topic, message]() { this->onButtonPressedReceived(topic, message); });
+                connectionPress = connect(serialTool, &SerialTool::triggerButtonPressed, [this, message]() {
+                    this->onButtonPressedReceived(m_blasterSubTopic, message);
+                });
 
             } else {
                 qDebug() << "serialTool Not found.";

+ 5 - 5
fireWidget/firingwidget.h

@@ -53,17 +53,16 @@ class firingWidget : public QWidget {
     void onMqttDisconnected();
     // 双键按下
     void onButtonPressedReceived(const QString &topic, const QString &message);
-    void handleFiringStageChanged(int newStage);
+    void stageChangeEngine(int newStage);
 
    signals:
-    void progressChanged(int value, int row);
-    void lastStageChanged(int newStage);
+    void changeStage(int newStage);
     void projSafeCheckSuccess(QString projectUuid);
     void updatefiringStage(int status, int row);
     void batchFiringSignal(QString uuid);
     void updateProjectStatus(QString uuid, QString status);
     void safeChecked(const QJsonObject &jsonObj);
-    void countdown(QString uuid, const QString &topic, const QString &message);
+    void startCountdown(QString uuid, const QString &topic, const QString &message);
     void closeFiring(QString uuid, int row);
 
    private:
@@ -79,7 +78,8 @@ class firingWidget : public QWidget {
     NavProgress *navProgress;
     SerialTool *serialTool = nullptr;
     QString m_blasterDevUuid;
-    QString m_blasterPubTopic;  // firingwidget对应的 MQTT 主题
+    QString m_blasterPubTopic;  // 起爆器发布主题
+    QString m_blasterSubTopic;  // 起爆器订阅主题
     int m_row;
     int m_lastStage = -1;  // 用于记录上一次的 stage 状态
     bool m_select;

+ 2 - 2
serial/serialtool.cpp

@@ -86,9 +86,9 @@ void SerialTool::readData() {
             if (command == "BUTTON_DISABLED") {
                 emit disableButtonReceived();
             } else if (command == "BUTTON_PRESSED") {
-                emit buttonPressedReceived();
+                emit triggerButtonPressed();
             } else if (command == "BUTTON_ENABLE") {
-                emit enableButtonReceived();
+                emit triggerButtonEnabled();
             }
 
             buffer = buffer.mid(endIndex + 2);

+ 2 - 2
serial/serialtool.h

@@ -30,8 +30,8 @@ class SerialTool : public QObject {
     void serialPortOpened();  // 新增信号
     // 新增三个信号
     void disableButtonReceived();
-    void buttonPressedReceived();
-    void enableButtonReceived();
+    void triggerButtonPressed();
+    void triggerButtonEnabled();
 
    public slots:
     void handleSendDataReques(const QByteArray& data);

+ 1 - 4
utils/backendapimanager.cpp

@@ -121,7 +121,6 @@ QJsonObject backendAPIManager::getSafetyInspect(QString dateStr) {
     if (reply->error() == QNetworkReply::NoError) {
         QJsonDocument response = QJsonDocument::fromJson(reply->readAll());
         if (response.object()["code"].toInt() != 200) {
-            // TODO:
             return QJsonObject();
         }
         result = response.object()["data"].toObject()["list"].toArray().first().toObject();
@@ -160,10 +159,8 @@ QJsonObject backendAPIManager::getHProjects(int page, int pageSize, QJsonObject
     QJsonObject params{
         {"page", page},
         {"pageSize", pageSize},
-        {"sort", "createdAt,desc"},
-        {"blast_status", QJsonArray({"2", "1"})},
+        {"createdAtOrder", "DESC"},
     };
-    // merge additional parameters if provided
     for (const QString &key : extParams.keys()) {
         params.insert(key, extParams.value(key));
     }