浏览代码

feats: 爆破记录上传及用户使用sys_user表

Yao 1 周之前
父节点
当前提交
baa5f175a6

+ 61 - 1
backendapimanager.cpp

@@ -66,7 +66,7 @@ QNetworkReply *backendAPIManager::sendRequest(const QString &endpoint, const QJs
     return reply;
 }
 
-bool backendAPIManager::uploadBlastProject(const QJsonObject &projectData) {
+bool backendAPIManager::uploadBlastProjectFull(const QJsonObject &projectData) {
     if (!s_instance) return false;
 
     s_instance->requestSuccess = false;
@@ -88,6 +88,66 @@ bool backendAPIManager::uploadBlastProject(const QJsonObject &projectData) {
     return s_instance->requestSuccess;
 }
 
+QJsonArray backendAPIManager::getSysUsers() {
+    if (!s_instance) return QJsonArray();
+
+    QNetworkReply *reply = s_instance->sendRequest("sys-user", QJsonObject(), "GET");
+
+    QEventLoop loop;
+    QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
+    loop.exec();
+
+    QJsonArray result;
+    if (reply->error() == QNetworkReply::NoError) {
+        QJsonDocument response = QJsonDocument::fromJson(reply->readAll());
+        result = response.object()["data"].toObject()["list"].toArray();
+    }
+
+    reply->deleteLater();
+    return result;
+}
+
+QJsonArray backendAPIManager::getPcs() {
+    if (!s_instance) return QJsonArray();
+
+    QNetworkReply *reply = s_instance->sendRequest("h-address/pc", QJsonObject(), "GET");
+
+    QEventLoop loop;
+    QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
+    loop.exec();
+
+    QJsonArray result;
+    if (reply->error() == QNetworkReply::NoError) {
+        QJsonDocument response = QJsonDocument::fromJson(reply->readAll());
+        result = response.object()["data"].toArray();
+    }
+
+    reply->deleteLater();
+    return result;
+}
+
+bool backendAPIManager::uploadBlastProject(const QJsonObject &projectData) {
+    if (!s_instance) return false;
+
+    s_instance->requestSuccess = false;
+    QNetworkReply *reply = s_instance->sendRequest("blastrecord", projectData, "POST");
+
+    // 使用事件循环等待响应
+    QEventLoop loop;
+    QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
+    loop.exec();
+
+    if (reply->error() == QNetworkReply::NoError) {
+        QJsonDocument response = QJsonDocument::fromJson(reply->readAll());
+        s_instance->handleUploadFinished(response, reply->url());
+    } else {
+        s_instance->handleUploadError(reply->errorString());
+    }
+
+    reply->deleteLater();
+    return s_instance->requestSuccess;
+}
+
 bool backendAPIManager::uploadBlastProjectDets(const QJsonObject &detsData) {
     if (!s_instance) return false;
 

+ 4 - 0
backendapimanager.h

@@ -1,6 +1,7 @@
 #ifndef BACKENDAPIMANAGER_H
 #define BACKENDAPIMANAGER_H
 
+#include <QJsonArray>
 #include <QJsonDocument>
 #include <QJsonObject>
 #include <QNetworkAccessManager>
@@ -16,9 +17,12 @@ class backendAPIManager : public QObject {
     static void cleanup();
     static void setAuthToken(const QString &token);
 
+    static bool uploadBlastProjectFull(const QJsonObject &projectData);
     static bool uploadBlastProject(const QJsonObject &projectData);
     static bool uploadBlastProjectDets(const QJsonObject &detsData);
     static bool uploadBlastEquipments(const QJsonObject &regDetsData);
+    static QJsonArray getSysUsers();
+    static QJsonArray getPcs();
 
    signals:
     void uploadFinished(const QJsonDocument &response);

+ 12 - 26
blastProject/blastprojectpage.cpp

@@ -3,6 +3,7 @@
 #include <QUrl>
 #include <iostream>
 
+#include "../backendapimanager.h"
 #include "../databasemanager.h"
 #include "../global.h"
 #include "ui_blastprojectpage.h"
@@ -17,30 +18,16 @@ BlastProjectPage::BlastProjectPage(QWidget *parent)
     connect(pageWidget->getComboBox(), QOverload<int>::of(&QComboBox::currentIndexChanged), this,
             &BlastProjectPage::onComboBoxIndexChanged);
     ui->verticalLayout_4->addWidget(pageWidget);
-    ;
     pageSize = 10;
     currentPage = 1;
 
     RefreshData();
-    m_httpClient = new HttpClient(this);
-    QUrl localUrl("person/type");
-    QUrl fullUrl = apiBackendUrl.resolved(localUrl);
-    m_httpClient->sendHttpGetRequest(fullUrl);
-
-    QUrl addressLocalUrl("h-address/pc");
-    QUrl addressFullUrl = apiBackendUrl.resolved(addressLocalUrl);
-    m_httpClient->sendHttpGetAddress(addressFullUrl);
-    connect(m_httpClient, &HttpClient::httpGetFinished,
-            [this](const QJsonDocument &data, const QUrl url) {
-                QString relativePath = url.toString().remove(0, apiBackendUrl.toString().length());
-                if (relativePath == "person/type") {
-                    this->personOptionsByType(data);
-                } else if (relativePath == "h-address/pc") {
-                    this->addressOptions(data);
-                }
-            });
 
     dialog = new ProjectDialog(this);
+    QJsonArray pcs = backendAPIManager::getPcs();
+    addressOptions(pcs);
+    QJsonArray sysUsersObj = backendAPIManager::getSysUsers();
+    personOptionsByType(sysUsersObj);
     connect(dialog, &ProjectDialog::validateDetNum, this, &BlastProjectPage::insertPlan);
     connect(dialog, &ProjectDialog::validateDetNumUpdate, this, &BlastProjectPage::updateProject);
 
@@ -149,18 +136,18 @@ void BlastProjectPage::onComboBoxIndexChanged(int index) {
     loadDataFromSource(currentPage, pageSize);
 }
 
-void BlastProjectPage::personOptionsByType(const QJsonDocument &jsonDoc) {
-    parseJsonString(jsonDoc);
+void BlastProjectPage::personOptionsByType(const QJsonArray &dataArray) {
     QJsonArray bapoYuanArray;
     QJsonArray anQuanYuanArray;
     for (const QJsonValue &value : dataArray) {
         if (value.isObject()) {
             QJsonObject obj = value.toObject();
-            if (obj.contains("personTypeName")) {
-                QString personTypeName = obj["personTypeName"].toString();
-                if (personTypeName == "爆破员") {
+            if (obj.contains("roleIds")) {
+                QJsonArray roleIdsArray = obj["roleIds"].toArray();
+                // TODO: 角色ID改成常量
+                if (roleIdsArray.contains(4)) {  // 爆破员
                     bapoYuanArray.append(obj);
-                } else if (personTypeName == "安全员") {
+                } else if (roleIdsArray.contains(5)) {  // 安全员
                     anQuanYuanArray.append(obj);
                 }
             }
@@ -171,8 +158,7 @@ void BlastProjectPage::personOptionsByType(const QJsonDocument &jsonDoc) {
     dialog->SetComboBoxOperator(anQuanYuanArray);
 }
 
-void BlastProjectPage::addressOptions(const QJsonDocument &jsonDoc) {
-    parseJsonStringAddress(jsonDoc);
+void BlastProjectPage::addressOptions(const QJsonArray &dataArrayAddress) {
     QJsonArray parentOptions;
     for (const QJsonValue &item : dataArrayAddress) {
         parentOptions.append(item.toObject()["name"].toString());

+ 20 - 22
blastProject/blastprojectpage.h

@@ -1,42 +1,42 @@
 #ifndef BLASTPROJECTPAGE_H
 #define BLASTPROJECTPAGE_H
 
-#include <QWidget>
-#include <QStandardItemModel>
-#include <QPushButton>
 #include <QJsonArray>
-#include "hprojectdao.h"
+#include <QPushButton>
+#include <QStandardItemModel>
+#include <QWidget>
+
+#include "../HttpClient.h"
 #include "../PageWidget.h"
 #include "../buttondelegate.h"
-#include "projectdialog.h"
-#include "../HttpClient.h"
 #include "../mqtt/mqttclient.h"
+#include "hprojectdao.h"
+#include "projectdialog.h"
 
 namespace Ui {
 class BlastProjectPage;
 }
 
-class BlastProjectPage : public QWidget
-{
+class BlastProjectPage : public QWidget {
     Q_OBJECT
 
-public:
+   public:
     explicit BlastProjectPage(QWidget *parent = nullptr);
     ~BlastProjectPage();
 
-
-private slots:
+   private slots:
     void PageChanged(int page);
     void onComboBoxIndexChanged(int index);
     void on_pushButton_clicked();
     void messageAndTopicReceived(const QByteArray &message, const QMqttTopicName &topic);
     void updateProjectUUId(QString uuid);
-private:
+
+   private:
     void RefreshData();
-    void loadDataFromSource(int currentPage,int pageSize);
-    void personOptionsByType(const QJsonDocument &jsonDoc);
+    void loadDataFromSource(int currentPage, int pageSize);
+    void personOptionsByType(const QJsonArray &arrayData);
     void parseJsonStringAddress(const QJsonDocument &jsonDoc);
-    void addressOptions(const QJsonDocument &jsonDoc);
+    void addressOptions(const QJsonArray &jsonArray);
     void parseJsonString(const QJsonDocument &jsonDoc);
     void fillComboBox(QComboBox *comboBox, const QJsonArray &jsonArray);
     void insertPlan(const QMap<QString, QString> &data);
@@ -45,22 +45,20 @@ private:
     void deleteButtonClicked(const HProject &project);
     void extractNames(const QJsonArray &array, QStringList &names);
 
-private:
+   private:
     Ui::BlastProjectPage *ui;
     PageWidget *pageWidget;
     ProjectDialog *dialog;
     HttpClient *m_httpClient;
-    MqttClient* pcBC;
+    MqttClient *pcBC;
     HProjectDao dao;
     QJsonArray dataArray;
     QJsonArray dataArrayAddress;
     MqttClient *mqttClient;
-    int pageSize;  //每页显示的记录数量
-    int currentPage;      //当前页面
+    int pageSize;     // 每页显示的记录数量
+    int currentPage;  // 当前页面
     int totalCount;
     int updateId;
-
-
 };
 
-#endif // BLASTPROJECTPAGE_H
+#endif  // BLASTPROJECTPAGE_H

+ 80 - 131
blastProject/projectdialog.cpp

@@ -1,73 +1,61 @@
 #include "projectdialog.h"
-#include "ui_projectdialog.h"
 
+#include "ui_projectdialog.h"
 
-ProjectDialog::ProjectDialog(QWidget *parent) :
-    QDialog(parent),
-    ui(new Ui::ProjectDialog)
-{
+ProjectDialog::ProjectDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ProjectDialog) {
     ui->setupUi(this);
     connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &ProjectDialog::validateInput);
     connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &ProjectDialog::clearFormData);
 }
 
-
-void ProjectDialog::SetComboBoxBlast(const QJsonArray& bapoYuanArray)
-{
-    blasterArray =bapoYuanArray;
+void ProjectDialog::SetComboBoxBlast(const QJsonArray &bapoYuanArray) {
+    blasterArray = bapoYuanArray;
     ui->comboBoxBlast->clear();
     fillComboBox(ui->comboBoxBlast, bapoYuanArray);
     ui->comboBoxBlast->setCurrentIndex(-1);
 }
 
-
-void ProjectDialog::SetComboBoxOperator(const QJsonArray& anQuanYuanArray)
-{
-    operatorArray =anQuanYuanArray;
+void ProjectDialog::SetComboBoxOperator(const QJsonArray &anQuanYuanArray) {
+    operatorArray = anQuanYuanArray;
     ui->comboBoxOperator->clear();
     fillComboBox(ui->comboBoxOperator, anQuanYuanArray);
     ui->comboBoxOperator->setCurrentIndex(-1);
 }
 
-void ProjectDialog::on_comboBoxOperator_currentIndexChanged(int index)
-{
+void ProjectDialog::on_comboBoxOperator_currentIndexChanged(int index) {
     if (index >= 0 && index < operatorArray.size()) {
         operatorId = operatorArray[index].toObject()["identity"].toString();
     }
 }
 
-void ProjectDialog::on_comboBoxBlast_currentIndexChanged(int index)
-{
+void ProjectDialog::on_comboBoxBlast_currentIndexChanged(int index) {
     if (index >= 0 && index < blasterArray.size()) {
         blasterId = blasterArray[index].toObject()["identity"].toString();
     }
-
 }
 
-void ProjectDialog::fillComboBox(QComboBox* comboBox, const QJsonArray& jsonArray) {
+void ProjectDialog::fillComboBox(QComboBox *comboBox, const QJsonArray &jsonArray) {
     for (const QJsonValue &value : jsonArray) {
         if (value.isObject()) {
             QJsonObject obj = value.toObject();
-            if (obj.contains("name")) {
-                QString name = obj["name"].toString();
+            if (obj.contains("nickName")) {
+                QString name = obj["nickName"].toString();
                 comboBox->addItem(name);
             }
         }
     }
 }
 
-
-void ProjectDialog::SetComboBoxAddress(const QJsonArray& Options)
-{       parentOptions = Options;
-        ui->comboBoxAddr->clear();
-            for (const QJsonValue &option : Options) {
-                ui->comboBoxAddr->addItem(option.toString());
-            }
-                ui->comboBoxAddr->setCurrentIndex(-1);
+void ProjectDialog::SetComboBoxAddress(const QJsonArray &Options) {
+    parentOptions = Options;
+    ui->comboBoxAddr->clear();
+    for (const QJsonValue &option : Options) {
+        ui->comboBoxAddr->addItem(option.toString());
+    }
+    ui->comboBoxAddr->setCurrentIndex(-1);
 }
 
-void ProjectDialog::SetComboBoxAddress2(const QString &parentName)
-{
+void ProjectDialog::SetComboBoxAddress2(const QString &parentName) {
     ui->comboBoxAddr_2->clear();
     for (const QJsonValue &item : dataOptions) {
         const QJsonObject &obj = item.toObject();
@@ -83,8 +71,7 @@ void ProjectDialog::SetComboBoxAddress2(const QString &parentName)
     ui->comboBoxAddr_2->setCurrentIndex(-1);
 }
 
-void ProjectDialog::SetComboBoxAddress3(const QString &childName)
-{
+void ProjectDialog::SetComboBoxAddress3(const QString &childName) {
     ui->comboBoxAddr_3->clear();
     for (const QJsonValue &item : dataOptions) {
         const QJsonArray &childrenArray = item["children"].toArray();
@@ -106,51 +93,43 @@ void ProjectDialog::SetComboBoxAddress3(const QString &childName)
     ui->comboBoxAddr_3->setCurrentIndex(-1);
 }
 
-
-void ProjectDialog::setChildOptions( const QJsonArray& newDataOptions)
-{
+void ProjectDialog::setChildOptions(const QJsonArray &newDataOptions) {
     dataOptions = newDataOptions;
-
 }
 
-void ProjectDialog::SetComboBoxLora(const QString &grandChildName)
-{
-
+void ProjectDialog::SetComboBoxLora(const QString &grandChildName) {
     ui->comboBoxLora->clear();
     for (const QJsonValue &item : dataOptions) {
-           const QJsonArray &childrenArray = item["children"].toArray();
-           for (const QJsonValue &child : childrenArray) {
-               const QJsonObject &childObj = child.toObject();
-               const QJsonArray &grandChildrenArray = childObj["children"].toArray();
-               for (const QJsonValue &grandChild : grandChildrenArray) {
-                   const QJsonObject &grandChildObj = grandChild.toObject();
-                   if (grandChildObj["name"].toString() == grandChildName) {
-                       const QJsonArray &greatGrandChildrenArray = grandChildObj["children"].toArray();
-                       for (const QJsonValue &greatGrandChild : greatGrandChildrenArray) {
-                           const QJsonObject &greatGrandChildObj = greatGrandChild.toObject();
-                           qDebug() << "greatGrandChildObj " << greatGrandChildObj;
-                           QString name = greatGrandChildObj["name"].toString();
-                           QString loraSn = greatGrandChildObj["loraSn"].toString();
-                           ui->comboBoxLora->addItem(name);
-                           nameLoraSnMap.insert(name, loraSn);
-                           QHash<QString, QString>::const_iterator i;
-                           for (i = nameLoraSnMap.constBegin(); i != nameLoraSnMap.constEnd(); ++i) {
-                               qDebug() << "Key:" << i.key() << ", Value:" << i.value();
-                           }
-                       }
-                       break;
-                   }
-               }
-           }
-       }
+        const QJsonArray &childrenArray = item["children"].toArray();
+        for (const QJsonValue &child : childrenArray) {
+            const QJsonObject &childObj = child.toObject();
+            const QJsonArray &grandChildrenArray = childObj["children"].toArray();
+            for (const QJsonValue &grandChild : grandChildrenArray) {
+                const QJsonObject &grandChildObj = grandChild.toObject();
+                if (grandChildObj["name"].toString() == grandChildName) {
+                    const QJsonArray &greatGrandChildrenArray = grandChildObj["children"].toArray();
+                    for (const QJsonValue &greatGrandChild : greatGrandChildrenArray) {
+                        const QJsonObject &greatGrandChildObj = greatGrandChild.toObject();
+                        qDebug() << "greatGrandChildObj " << greatGrandChildObj;
+                        QString name = greatGrandChildObj["name"].toString();
+                        QString loraSn = greatGrandChildObj["loraSn"].toString();
+                        ui->comboBoxLora->addItem(name);
+                        nameLoraSnMap.insert(name, loraSn);
+                        QHash<QString, QString>::const_iterator i;
+                        for (i = nameLoraSnMap.constBegin(); i != nameLoraSnMap.constEnd(); ++i) {
+                            qDebug() << "Key:" << i.key() << ", Value:" << i.value();
+                        }
+                    }
+                    break;
+                }
+            }
+        }
+    }
     ui->comboBoxLora->setCurrentIndex(-1);
 }
 
-
-
-
-void ProjectDialog::extractNames(const QJsonArray& array, QStringList& names) {
-    for (const auto& item : array) {
+void ProjectDialog::extractNames(const QJsonArray &array, QStringList &names) {
+    for (const auto &item : array) {
         if (item.isObject()) {
             QJsonObject obj = item.toObject();
             if (obj.contains("name")) {
@@ -163,62 +142,49 @@ void ProjectDialog::extractNames(const QJsonArray& array, QStringList& names) {
     }
 }
 
-void ProjectDialog::clearFormData()
-{
-    QList<QLineEdit*> lineEdits = findChildren<QLineEdit*>();
-    for (QLineEdit* lineEdit : lineEdits) {
+void ProjectDialog::clearFormData() {
+    QList<QLineEdit *> lineEdits = findChildren<QLineEdit *>();
+    for (QLineEdit *lineEdit : lineEdits) {
         lineEdit->clear();
     }
 
-    QList<QComboBox*> comboBoxes = findChildren<QComboBox*>();
-    for (QComboBox* comboBox : comboBoxes) {
+    QList<QComboBox *> comboBoxes = findChildren<QComboBox *>();
+    for (QComboBox *comboBox : comboBoxes) {
         comboBox->setCurrentIndex(-1);
     }
-
 }
 
-void ProjectDialog::on_comboBoxAddr_currentIndexChanged(int index)
-{
+void ProjectDialog::on_comboBoxAddr_currentIndexChanged(int index) {
     if (index >= 0 && index < parentOptions.size()) {
         QString parentName = parentOptions[index].toString();
         SetComboBoxAddress2(parentName);
     }
 }
 
-
-void ProjectDialog::on_comboBoxAddr_2_currentIndexChanged(int index)
-{
-
+void ProjectDialog::on_comboBoxAddr_2_currentIndexChanged(int index) {
     if (index >= -1 && index < childOptions.size()) {
         QString childName = childOptions[index].toObject()["name"].toString();
         SetComboBoxAddress3(childName);
     }
 }
 
-void ProjectDialog::on_comboBoxAddr_3_currentIndexChanged(int index)
-{
-
+void ProjectDialog::on_comboBoxAddr_3_currentIndexChanged(int index) {
     if (index >= -1 && index < grandChildOptions.size()) {
         QString grandChildName = grandChildOptions[index].toObject()["name"].toString();
         SetComboBoxLora(grandChildName);
-     }
+    }
 }
 
-
-
-
-void ProjectDialog::validateInput()
-{
+void ProjectDialog::validateInput() {
     QString detNum = ui->editDetNum->text().trimmed();
     QString blastCount = ui->editRegCount->text().trimmed();
     QString projectName = ui->editName->text().trimmed();
-    QString blastName= ui->comboBoxBlast->currentText().trimmed();
-    QString operatorName= ui->comboBoxOperator->currentText().trimmed();
-    QString parentAddress= ui->comboBoxAddr->currentText().trimmed();
-    QString childAddress= ui->comboBoxAddr_2->currentText().trimmed();
-    QString grandChildAddress= ui->comboBoxAddr_3->currentText().trimmed();
-    QString loraAddress= ui->comboBoxLora->currentText().trimmed();
-
+    QString blastName = ui->comboBoxBlast->currentText().trimmed();
+    QString operatorName = ui->comboBoxOperator->currentText().trimmed();
+    QString parentAddress = ui->comboBoxAddr->currentText().trimmed();
+    QString childAddress = ui->comboBoxAddr_2->currentText().trimmed();
+    QString grandChildAddress = ui->comboBoxAddr_3->currentText().trimmed();
+    QString loraAddress = ui->comboBoxLora->currentText().trimmed();
 
     if (detNum.isEmpty() || !ui->editDetNum->hasAcceptableInput()) {
         QMessageBox::warning(this, "输入错误", "请输入0-10000的数字!");
@@ -233,7 +199,7 @@ void ProjectDialog::validateInput()
     // 拼接 addressUuid
     QString addressUuid = parentAddress;
     if (!childAddress.isEmpty()) {
-        qDebug()<<"childAddress"<<childAddress;
+        qDebug() << "childAddress" << childAddress;
         addressUuid += "/" + childAddress;
         if (!grandChildAddress.isEmpty()) {
             addressUuid += "/" + grandChildAddress;
@@ -245,44 +211,38 @@ void ProjectDialog::validateInput()
     data["loraAddress"] = loraAddress;
     data["loraSn"] = nameLoraSnMap.value(loraAddress);
     data["blastCount"] = blastCount;
-    if(operationStatus==0){
+    if (operationStatus == 0) {
         emit validateDetNum(data);
-    } else if (operationStatus==1) {
+    } else if (operationStatus == 1) {
         emit validateDetNumUpdate(data);
     }
-    clearFormData(); // 清除表单数据
+    clearFormData();  // 清除表单数据
     // this->accept();
 }
 
-int ProjectDialog::getOperationStatus() const
-{
-    return operationStatus;
-}
+int ProjectDialog::getOperationStatus() const { return operationStatus; }
 
-void ProjectDialog::setOperationStatus(int newOperationStatus)
-{
+void ProjectDialog::setOperationStatus(int newOperationStatus) {
     operationStatus = newOperationStatus;
 }
 
-
-void ProjectDialog::setFormData(const HProject &Project)
-{
+void ProjectDialog::setFormData(const HProject &Project) {
     try {
         ui->editName->setText(Project.getName());
         ui->editDetNum->setText(Project.getDetSum());
         ui->editHTID->setText(Project.getHtid());
         ui->editXMBH->setText(Project.getXmbh());
         int indexBlast = ui->comboBoxBlast->findText(Project.getBlasterName());
-        if (indexBlast!= -1) {
+        if (indexBlast != -1) {
             ui->comboBoxBlast->setCurrentIndex(indexBlast);
         } else {
-            qDebug() << "未找到选项 " <<  "。";
+            qDebug() << "未找到选项 " << "。";
         }
         int indexOper = ui->comboBoxOperator->findText(Project.getOperatorName());
-        if (indexOper!= -1) {
+        if (indexOper != -1) {
             ui->comboBoxOperator->setCurrentIndex(indexOper);
         } else {
-            qDebug() << "未找到选项 " <<  "。";
+            qDebug() << "未找到选项 " << "。";
         }
         QStringList addressParts = Project.getAddressUuid().split("/");
         int numAddresses = addressParts.size();
@@ -291,7 +251,6 @@ void ProjectDialog::setFormData(const HProject &Project)
         for (int i = 0; i < numAddresses; ++i) {
             QString part = addressParts[i];
             addressVariables.append(part);
-
         }
         // 查找目标文本对应的索引
         int indexAddr = ui->comboBoxAddr->findText(addressVariables[0]);
@@ -304,7 +263,7 @@ void ProjectDialog::setFormData(const HProject &Project)
             // 如果没找到,输出提示信息
             qDebug() << "未找到选项 " << addressVariables[0];
         }
-        if(addressVariables.size()>=2){
+        if (addressVariables.size() >= 2) {
             int indexAddr_2 = ui->comboBoxAddr_2->findText(addressVariables[1]);
 
             if (indexAddr_2 != -1) {
@@ -317,7 +276,7 @@ void ProjectDialog::setFormData(const HProject &Project)
             }
         }
 
-        if(addressVariables.size()>=3){
+        if (addressVariables.size() >= 3) {
             int indexAddr_3 = ui->comboBoxAddr_3->findText(addressVariables[2]);
 
             if (indexAddr_3 != -1) {
@@ -329,21 +288,11 @@ void ProjectDialog::setFormData(const HProject &Project)
                 qDebug() << "未找到选项 " << addressVariables[2];
             }
         }
-    } catch (const std::exception& e) {
+    } catch (const std::exception &e) {
         qDebug() << "发生异常: " << e.what();
     } catch (...) {
         qDebug() << "发生未知异常";
     }
-
-
-}
-
-ProjectDialog::~ProjectDialog()
-{
-    delete ui;
 }
 
-
-
-
-
+ProjectDialog::~ProjectDialog() { delete ui; }

+ 12 - 8
blastRecord/HBlastRecord.h

@@ -1,15 +1,15 @@
 #ifndef HBLASTRECORD_H
 #define HBLASTRECORD_H
 
-#include <QString>
 #include <QDateTime>
-#include <QJsonObject>
 #include <QJsonDocument>
+#include <QJsonObject>
+#include <QString>
 #include <QUuid>
 
-class HBlastRecord : public QObject
-{
+#include "../blastRegRecord/hblastregrecord.h"
 
+class HBlastRecord : public QObject {
     Q_OBJECT
     // 定义属性
     Q_PROPERTY(qint64 id READ getId WRITE setId)
@@ -34,7 +34,7 @@ class HBlastRecord : public QObject
     Q_PROPERTY(QDateTime deletedAt READ getDeletedAt WRITE setDeletedAt)
     Q_PROPERTY(qint64 createBy READ getCreateBy WRITE setCreateBy)
     Q_PROPERTY(qint64 updateBy READ getUpdateBy WRITE setUpdateBy)
-public:
+   public:
     explicit HBlastRecord(QObject *parent = nullptr);
     // Getter and Setter methods
     qint64 getId() const;
@@ -103,9 +103,12 @@ public:
     qint64 getUpdateBy() const;
     void setUpdateBy(qint64 newUpdateBy);
 
-    QJsonObject BlastRecordToJson();
+    QList<HBlastEquipmentRecord *> getEquipmentRecords() const;
+    void setEquipmentRecords(const QList<HBlastEquipmentRecord *> records);
+
+    QJsonObject ToJson();
 
-private:
+   private:
     qint64 id;
     QString uuid;
     QString projectName;
@@ -128,6 +131,7 @@ private:
     QDateTime deletedAt;
     qint64 createBy;
     qint64 updateBy;
+    QList<HBlastEquipmentRecord *> equipmentRecords;
 };
 
-#endif // HBLASTRECORD_H
+#endif  // HBLASTRECORD_H

+ 62 - 173
blastRecord/hblastrecord.cpp

@@ -1,233 +1,114 @@
 #include "hblastrecord.h"
 
-HBlastRecord::HBlastRecord(QObject *parent) : QObject(parent)
-{
-}
+#include <QJsonArray>
 
-qint64 HBlastRecord::getId() const
-{
-    return id;
-}
+HBlastRecord::HBlastRecord(QObject *parent) : QObject(parent) {}
 
-void HBlastRecord::setId(qint64 newId)
-{
-    id = newId;
-}
+qint64 HBlastRecord::getId() const { return id; }
 
-QString HBlastRecord::getUuid() const
-{
-    return uuid;
-}
+void HBlastRecord::setId(qint64 newId) { id = newId; }
 
-void HBlastRecord::setUuid(const QString &newUuid)
-{
-    uuid = newUuid;
-}
+QString HBlastRecord::getUuid() const { return uuid; }
 
-QString HBlastRecord::getProjectName() const
-{
-    return projectName;
-}
+void HBlastRecord::setUuid(const QString &newUuid) { uuid = newUuid; }
 
-void HBlastRecord::setProjectName(const QString &newProjectName)
-{
-    projectName = newProjectName;
-}
+QString HBlastRecord::getProjectName() const { return projectName; }
 
-QString HBlastRecord::getProjectHtid() const
-{
-    return projectHtid;
-}
+void HBlastRecord::setProjectName(const QString &newProjectName) { projectName = newProjectName; }
 
-void HBlastRecord::setProjectHtid(const QString &newProjectHtid)
-{
-    projectHtid = newProjectHtid;
-}
+QString HBlastRecord::getProjectHtid() const { return projectHtid; }
 
-QString HBlastRecord::getProjectXmbh() const
-{
-    return projectXmbh;
-}
+void HBlastRecord::setProjectHtid(const QString &newProjectHtid) { projectHtid = newProjectHtid; }
 
-void HBlastRecord::setProjectXmbh(const QString &newProjectXmbh)
-{
-    projectXmbh = newProjectXmbh;
-}
+QString HBlastRecord::getProjectXmbh() const { return projectXmbh; }
 
-QString HBlastRecord::getOperatorName() const
-{
-    return operatorName;
-}
+void HBlastRecord::setProjectXmbh(const QString &newProjectXmbh) { projectXmbh = newProjectXmbh; }
+
+QString HBlastRecord::getOperatorName() const { return operatorName; }
 
-void HBlastRecord::setOperatorName(const QString &newOperatorName)
-{
+void HBlastRecord::setOperatorName(const QString &newOperatorName) {
     operatorName = newOperatorName;
 }
 
-QString HBlastRecord::getPhone() const
-{
-    return phone;
-}
+QString HBlastRecord::getPhone() const { return phone; }
 
-void HBlastRecord::setPhone(const QString &newPhone)
-{
-    phone = newPhone;
-}
+void HBlastRecord::setPhone(const QString &newPhone) { phone = newPhone; }
 
-QString HBlastRecord::getOperatorIdentity() const
-{
-    return operatorIdentity;
-}
+QString HBlastRecord::getOperatorIdentity() const { return operatorIdentity; }
 
-void HBlastRecord::setOperatorIdentity(const QString &newOperatorIdentity)
-{
+void HBlastRecord::setOperatorIdentity(const QString &newOperatorIdentity) {
     operatorIdentity = newOperatorIdentity;
 }
 
-QString HBlastRecord::getEquipmentSn() const
-{
-    return equipmentSn;
-}
+QString HBlastRecord::getEquipmentSn() const { return equipmentSn; }
 
-void HBlastRecord::setEquipmentSn(const QString &newEquipmentSn)
-{
-    equipmentSn = newEquipmentSn;
-}
+void HBlastRecord::setEquipmentSn(const QString &newEquipmentSn) { equipmentSn = newEquipmentSn; }
 
-QString HBlastRecord::getCompanyCode() const
-{
-    return companyCode;
-}
+QString HBlastRecord::getCompanyCode() const { return companyCode; }
 
-void HBlastRecord::setCompanyCode(const QString &newCompanyCode)
-{
-    companyCode = newCompanyCode;
-}
+void HBlastRecord::setCompanyCode(const QString &newCompanyCode) { companyCode = newCompanyCode; }
 
-QString HBlastRecord::getAppVersion() const
-{
-    return appVersion;
-}
+QString HBlastRecord::getAppVersion() const { return appVersion; }
 
-void HBlastRecord::setAppVersion(const QString &newAppVersion)
-{
-    appVersion = newAppVersion;
-}
+void HBlastRecord::setAppVersion(const QString &newAppVersion) { appVersion = newAppVersion; }
 
-QString HBlastRecord::getLongitude() const
-{
-    return longitude;
-}
+QString HBlastRecord::getLongitude() const { return longitude; }
 
-void HBlastRecord::setLongitude(const QString &newLongitude)
-{
-    longitude = newLongitude;
-}
+void HBlastRecord::setLongitude(const QString &newLongitude) { longitude = newLongitude; }
 
-QString HBlastRecord::getLatitude() const
-{
-    return latitude;
-}
+QString HBlastRecord::getLatitude() const { return latitude; }
 
-void HBlastRecord::setLatitude(const QString &newLatitude)
-{
-    latitude = newLatitude;
-}
+void HBlastRecord::setLatitude(const QString &newLatitude) { latitude = newLatitude; }
 
-int HBlastRecord::getEquipmentCount() const
-{
-    return equipmentCount;
-}
+int HBlastRecord::getEquipmentCount() const { return equipmentCount; }
 
-void HBlastRecord::setEquipmentCount(const int newEquipmentCount)
-{
+void HBlastRecord::setEquipmentCount(const int newEquipmentCount) {
     equipmentCount = newEquipmentCount;
 }
 
-int HBlastRecord::getRegDetCount() const
-{
-    return regDetCount;
-}
+int HBlastRecord::getRegDetCount() const { return regDetCount; }
 
-void HBlastRecord::setRegDetCount(int newRegDetCount)
-{
-    regDetCount = newRegDetCount;
-}
+void HBlastRecord::setRegDetCount(int newRegDetCount) { regDetCount = newRegDetCount; }
 
-int HBlastRecord::getErrorDetCount() const
-{
-    return errorDetCount;
-}
+int HBlastRecord::getErrorDetCount() const { return errorDetCount; }
 
-void HBlastRecord::setErrorDetCount(const int newErrorDetCount)
-{
+void HBlastRecord::setErrorDetCount(const int newErrorDetCount) {
     errorDetCount = newErrorDetCount;
 }
 
-QDateTime HBlastRecord::getBlastAt() const
-{
-    return blastAt;
-}
+QDateTime HBlastRecord::getBlastAt() const { return blastAt; }
 
-void HBlastRecord::setBlastAt(const QDateTime &newBlastAt)
-{
-    blastAt = newBlastAt;
-}
+void HBlastRecord::setBlastAt(const QDateTime &newBlastAt) { blastAt = newBlastAt; }
 
-QDateTime HBlastRecord::getCreatedAt() const
-{
-    return createdAt;
-}
+QDateTime HBlastRecord::getCreatedAt() const { return createdAt; }
 
-void HBlastRecord::setCreatedAt(const QDateTime &newCreatedAt)
-{
-    createdAt = newCreatedAt;
-}
+void HBlastRecord::setCreatedAt(const QDateTime &newCreatedAt) { createdAt = newCreatedAt; }
 
-QDateTime HBlastRecord::getUpdatedAt() const
-{
-    return updatedAt;
-}
+QDateTime HBlastRecord::getUpdatedAt() const { return updatedAt; }
 
-void HBlastRecord::setUpdatedAt(const QDateTime &newUpdatedAt)
-{
-    updatedAt = newUpdatedAt;
-}
+void HBlastRecord::setUpdatedAt(const QDateTime &newUpdatedAt) { updatedAt = newUpdatedAt; }
 
-QDateTime HBlastRecord::getDeletedAt() const
-{
-    return deletedAt;
-}
+QDateTime HBlastRecord::getDeletedAt() const { return deletedAt; }
 
-void HBlastRecord::setDeletedAt(const QDateTime &newDeletedAt)
-{
-    deletedAt = newDeletedAt;
-}
+void HBlastRecord::setDeletedAt(const QDateTime &newDeletedAt) { deletedAt = newDeletedAt; }
 
-qint64 HBlastRecord::getCreateBy() const
-{
-    return createBy;
-}
+qint64 HBlastRecord::getCreateBy() const { return createBy; }
 
-void HBlastRecord::setCreateBy(qint64 newCreateBy)
-{
-    createBy = newCreateBy;
-}
+void HBlastRecord::setCreateBy(qint64 newCreateBy) { createBy = newCreateBy; }
 
-qint64 HBlastRecord::getUpdateBy() const
-{
-    return updateBy;
-}
+qint64 HBlastRecord::getUpdateBy() const { return updateBy; }
+
+void HBlastRecord::setUpdateBy(qint64 newUpdateBy) { updateBy = newUpdateBy; }
 
-void HBlastRecord::setUpdateBy(qint64 newUpdateBy)
-{
-    updateBy = newUpdateBy;
+void HBlastRecord::setEquipmentRecords(const QList<HBlastEquipmentRecord *> records) {
+    equipmentRecords = records;
+}
+QList<HBlastEquipmentRecord *> HBlastRecord::getEquipmentRecords() const {
+    return equipmentRecords;
 }
 
-QJsonObject HBlastRecord::BlastRecordToJson()
-{
+QJsonObject HBlastRecord::ToJson() {
     QJsonObject json;
-    // json["id"] = this->getId();
     json["uuid"] = this->getUuid();
     json["project_name"] = this->getProjectName();
     json["project_htid"] = this->getProjectHtid();
@@ -250,5 +131,13 @@ QJsonObject HBlastRecord::BlastRecordToJson()
     json["create_by"] = this->getCreateBy();
     json["update_by"] = this->getUpdateBy();
 
+    QJsonArray equipmentArray;
+    for (const auto &record : this->getEquipmentRecords()) {
+        if (record) {
+            equipmentArray.append(record->ToJson());
+        }
+    }
+    json["regs"] = equipmentArray;
+
     return json;
 }

+ 8 - 8
blastRecordDet/HBlastRecordDet.h

@@ -18,8 +18,8 @@ class HBlastRecordDet : public QObject {
     Q_PROPERTY(QString freq READ getFreq WRITE setFreq)
     Q_PROPERTY(QString delayTime READ getDelayTime WRITE setDelayTime)
     Q_PROPERTY(QString tag READ getTag WRITE setTag)
-    Q_PROPERTY(QString blastRecordId READ getBlastRecordId WRITE setBlastRecordId)
-    Q_PROPERTY(QString regId READ getRegId WRITE setRegId)
+    Q_PROPERTY(QString blastRecordUUID READ getBlastRecordUuid WRITE setBlastRecordUuid)
+    Q_PROPERTY(QString equipmentRecordUUID READ getEquipmentRecordUuid WRITE setEquipmentRecordUuid)
     Q_PROPERTY(QDateTime createdAt READ getCreatedAt WRITE setCreatedAt)
     Q_PROPERTY(QDateTime updatedAt READ getUpdatedAt WRITE setUpdatedAt)
     Q_PROPERTY(QDateTime deletedAt READ getDeletedAt WRITE setDeletedAt)
@@ -56,11 +56,11 @@ class HBlastRecordDet : public QObject {
     QString getTag() const;
     void setTag(const QString &newTag);
 
-    QString getBlastRecordId() const;
-    void setBlastRecordId(QString newBlastRecordId);
+    QString getBlastRecordUuid() const;
+    void setBlastRecordUuid(QString newBlastRecordId);
 
-    QString getRegId() const;
-    void setRegId(QString newRegId);
+    QString getEquipmentRecordUuid() const;
+    void setEquipmentRecordUuid(QString newRegId);
 
     QDateTime getCreatedAt() const;
     void setCreatedAt(const QDateTime &newCreatedAt);
@@ -89,8 +89,8 @@ class HBlastRecordDet : public QObject {
     QString freq;
     QString delayTime;
     QString tag;
-    QString blastRecordId;
-    QString regId;
+    QString blastRecordUUID;
+    QString equipmentRecordUUID;
     QDateTime createdAt;
     QDateTime updatedAt;
     QDateTime deletedAt;

+ 7 - 7
blastRecordDet/hblastrecorddet.cpp

@@ -40,15 +40,15 @@ QString HBlastRecordDet::getTag() const { return tag; }
 
 void HBlastRecordDet::setTag(const QString &newTag) { tag = newTag; }
 
-QString HBlastRecordDet::getBlastRecordId() const { return blastRecordId; }
+QString HBlastRecordDet::getBlastRecordUuid() const { return blastRecordUUID; }
 
-void HBlastRecordDet::setBlastRecordId(QString newBlastRecordId) {
-    blastRecordId = newBlastRecordId;
+void HBlastRecordDet::setBlastRecordUuid(QString newBlastRecordId) {
+    blastRecordUUID = newBlastRecordId;
 }
 
-QString HBlastRecordDet::getRegId() const { return regId; }
+QString HBlastRecordDet::getEquipmentRecordUuid() const { return equipmentRecordUUID; }
 
-void HBlastRecordDet::setRegId(QString newRegId) { regId = newRegId; }
+void HBlastRecordDet::setEquipmentRecordUuid(QString newRegId) { equipmentRecordUUID = newRegId; }
 
 QDateTime HBlastRecordDet::getCreatedAt() const { return createdAt; }
 
@@ -81,8 +81,8 @@ QJsonObject HBlastRecordDet::ToJson() {
     jsonObject["freq"] = this->getFreq();
     jsonObject["delay_time"] = this->getDelayTime();
     jsonObject["tag"] = this->getTag();
-    jsonObject["blast_record_id"] = this->getBlastRecordId().toInt();
-    jsonObject["reg_id"] = this->getRegId();
+    jsonObject["blast_record_id"] = this->getBlastRecordUuid();
+    jsonObject["reg_id"] = this->getEquipmentRecordUuid();
     jsonObject["created_at"] = this->getCreatedAt().toString(Qt::ISODateWithMs);
     jsonObject["updated_at"] = this->getUpdatedAt().toString(Qt::ISODateWithMs);
     jsonObject["deleted_at"] = this->getDeletedAt().toString(Qt::ISODateWithMs);

+ 22 - 20
blastRecordDet/hblastrecorddetdao.cpp

@@ -1,16 +1,15 @@
 #include "hblastrecorddetdao.h"
 
-HBlastRecordDetDao::HBlastRecordDetDao(QSqlDatabase db):database(db)
-{
+HBlastRecordDetDao::HBlastRecordDetDao(QSqlDatabase db) : database(db) {}
 
-}
-
-
-bool HBlastRecordDetDao::addHBlastRecordDet(const HBlastRecordDet& recordDet)
-{
+bool HBlastRecordDetDao::addHBlastRecordDet(const HBlastRecordDet& recordDet) {
     QSqlQuery query;
-    query.prepare("INSERT INTO h_blast_record_det (id, uuid, out_code, inner_code, uid, status, freq, delay_time, tag, blast_record_id, reg_id, created_at, updated_at, deleted_at, create_by, update_by) "
-                  "VALUES (:id, :uuid, :outCode, :innerCode, :uid, :status, :freq, :delayTime, :tag, :blastRecordId, :regId, :createdAt, :updatedAt, :deletedAt, :createBy, :updateBy)");
+    query.prepare(
+        "INSERT INTO h_blast_record_det (id, uuid, out_code, inner_code, uid, status, freq, "
+        "delay_time, tag, blast_record_id, reg_id, created_at, updated_at, deleted_at, create_by, "
+        "update_by) "
+        "VALUES (:id, :uuid, :outCode, :innerCode, :uid, :status, :freq, :delayTime, :tag, "
+        ":blastRecordId, :regId, :createdAt, :updatedAt, :deletedAt, :createBy, :updateBy)");
     query.bindValue(":id", recordDet.getId());
     query.bindValue(":uuid", recordDet.getUuid());
     query.bindValue(":outCode", recordDet.getOutCode());
@@ -20,8 +19,8 @@ bool HBlastRecordDetDao::addHBlastRecordDet(const HBlastRecordDet& recordDet)
     query.bindValue(":freq", recordDet.getFreq());
     query.bindValue(":delayTime", recordDet.getDelayTime());
     query.bindValue(":tag", recordDet.getTag());
-    query.bindValue(":blastRecordId", recordDet.getBlastRecordId());
-    query.bindValue(":regId", recordDet.getRegId());
+    query.bindValue(":blastRecordId", recordDet.getBlastRecordUuid());
+    query.bindValue(":regId", recordDet.getEquipmentRecordUuid());
     query.bindValue(":createdAt", recordDet.getCreatedAt());
     query.bindValue(":updatedAt", recordDet.getUpdatedAt());
     query.bindValue(":deletedAt", recordDet.getDeletedAt());
@@ -65,11 +64,14 @@ bool HBlastRecordDetDao::addHBlastRecordDet(const HBlastRecordDet& recordDet)
 //     return recordDet;
 // }
 
-bool HBlastRecordDetDao::updateHBlastRecordDet(const HBlastRecordDet& recordDet)
-{
+bool HBlastRecordDetDao::updateHBlastRecordDet(const HBlastRecordDet& recordDet) {
     QSqlQuery query;
-    query.prepare("UPDATE HBlastRecordDet SET uuid = :uuid, outCode = :outCode, innerCode = :innerCode, uid = :uid, status = :status, freq = :freq, delayTime = :delayTime, tag = :tag, blastRecordId = :blastRecordId, regId = :regId, createdAt = :createdAt, updatedAt = :updatedAt, deletedAt = :deletedAt, createBy = :createBy, updateBy = :updateBy "
-                  "WHERE id = :id");
+    query.prepare(
+        "UPDATE HBlastRecordDet SET uuid = :uuid, outCode = :outCode, innerCode = :innerCode, uid "
+        "= :uid, status = :status, freq = :freq, delayTime = :delayTime, tag = :tag, blastRecordId "
+        "= :blastRecordId, regId = :regId, createdAt = :createdAt, updatedAt = :updatedAt, "
+        "deletedAt = :deletedAt, createBy = :createBy, updateBy = :updateBy "
+        "WHERE id = :id");
     query.bindValue(":id", recordDet.getId());
     query.bindValue(":uuid", recordDet.getUuid());
     query.bindValue(":outCode", recordDet.getOutCode());
@@ -79,11 +81,11 @@ bool HBlastRecordDetDao::updateHBlastRecordDet(const HBlastRecordDet& recordDet)
     query.bindValue(":freq", recordDet.getFreq());
     query.bindValue(":delayTime", recordDet.getDelayTime());
     query.bindValue(":tag", recordDet.getTag());
-    query.bindValue(":blastRecordId", recordDet.getBlastRecordId());
-    query.bindValue(":regId", recordDet.getRegId());
-    query.bindValue(":createdAt", recordDet.getCreatedAt());
-    query.bindValue(":updatedAt", recordDet.getUpdatedAt());
-    query.bindValue(":deletedAt", recordDet.getDeletedAt());
+    query.bindValue(":blastRecordId", recordDet.getBlastRecordUuid());
+    query.bindValue(":regId", recordDet.getEquipmentRecordUuid());
+    query.bindValue(":createdAt", recordDet.getCreatedAt().toString(Qt::ISODateWithMs));
+    query.bindValue(":updatedAt", recordDet.getUpdatedAt().toString(Qt::ISODateWithMs));
+    query.bindValue(":deletedAt", recordDet.getDeletedAt().toString(Qt::ISODateWithMs));
     query.bindValue(":createBy", recordDet.getCreateBy());
     query.bindValue(":updateBy", recordDet.getUpdateBy());
 

+ 22 - 8
blastRegRecord/hblastregrecord.cpp

@@ -1,5 +1,7 @@
 #include "hblastregrecord.h"
 
+#include <QJsonArray>
+
 HBlastEquipmentRecord::HBlastEquipmentRecord(QObject *parent) : QObject(parent) {}
 
 qint64 HBlastEquipmentRecord::getId() const { return id; }
@@ -72,7 +74,7 @@ void HBlastEquipmentRecord::setBeforeBlastingI(const QString &newBeforeBlastingI
     beforeBlastingI = newBeforeBlastingI;
 }
 
-QString HBlastEquipmentRecord::getRecordUuid() const { return recordUuid; }
+QString HBlastEquipmentRecord::getRecordUUID() const { return recordUuid; }
 
 void HBlastEquipmentRecord::setRecordUuid(const QString &newRecordUuid) {
     recordUuid = newRecordUuid;
@@ -104,10 +106,13 @@ qint64 HBlastEquipmentRecord::getUpdateBy() const { return updateBy; }
 
 void HBlastEquipmentRecord::setUpdateBy(qint64 newUpdateBy) { updateBy = newUpdateBy; }
 
+void HBlastEquipmentRecord::setDetRecords(QList<HBlastRecordDet *> data) { detRecords = data; }
+QList<HBlastRecordDet *> HBlastEquipmentRecord::getDetRecords() const { return detRecords; }
+
 QJsonObject HBlastEquipmentRecord::ToJson() {
     QJsonObject json;
     // json["id"] = this->getId();
-    // json["uuid"] = this->getUuid();
+    json["uuid"] = this->getUuid();
     json["equipment_sn"] = this->getEquipSn();
     json["equipment_version"] = this->getEquipVersion();
     json["reg_deto_count"] = QString::number(this->getRegDetoCount());
@@ -119,12 +124,21 @@ QJsonObject HBlastEquipmentRecord::ToJson() {
     json["net_charged_i"] = this->getNetChargedI();
     json["before_blasting_v"] = this->getBeforeBlastingV();
     json["before_blasting_i"] = this->getBeforeBlastingI();
-    // json["record_uuid"] = this->getRecordUuid();
-    // json["created_at"] = this->getCreatedAt().toString(Qt::ISODateWithMs);
-    // json["updated_at"] = this->getUpdatedAt().toString(Qt::ISODateWithMs);
-    // json["deleted_at"] = this->getDeletedAt().toString(Qt::ISODateWithMs);
-    // json["create_by"] = this->getCreateBy();
-    // json["update_by"] = this->getUpdateBy();
+
+    json["record_uuid"] = this->getRecordUUID();
+    json["created_at"] = this->getCreatedAt().toString(Qt::ISODateWithMs);
+    json["updated_at"] = this->getUpdatedAt().toString(Qt::ISODateWithMs);
+    json["deleted_at"] = this->getDeletedAt().toString(Qt::ISODateWithMs);
+    json["create_by"] = this->getCreateBy();
+    json["update_by"] = this->getUpdateBy();
+
+    QJsonArray detArray;
+    for (const auto &det : this->getDetRecords()) {
+        if (det) {
+            detArray.append(det->ToJson());
+        }
+    }
+    json["dets"] = detArray;
 
     return json;
 }

+ 8 - 2
blastRegRecord/hblastregrecord.h

@@ -7,6 +7,8 @@
 #include <QString>
 #include <QUuid>
 
+#include "../blastRecordDet/hblastrecorddet.h"
+
 class HBlastEquipmentRecord : public QObject {
     Q_OBJECT
     // 定义属性
@@ -23,7 +25,7 @@ class HBlastEquipmentRecord : public QObject {
     Q_PROPERTY(QString netChargedI READ getNetChargedI WRITE setNetChargedI)
     Q_PROPERTY(QString beforeBlastingV READ getBeforeBlastingV WRITE setBeforeBlastingV)
     Q_PROPERTY(QString beforeBlastingI READ getBeforeBlastingI WRITE setBeforeBlastingI)
-    Q_PROPERTY(QString recordUuid READ getRecordUuid WRITE setRecordUuid)
+    Q_PROPERTY(QString recordUuid READ getRecordUUID WRITE setRecordUuid)
     Q_PROPERTY(QDateTime createdAt READ getCreatedAt WRITE setCreatedAt)
     Q_PROPERTY(QDateTime updatedAt READ getUpdatedAt WRITE setUpdatedAt)
     Q_PROPERTY(QDateTime deletedAt READ getDeletedAt WRITE setDeletedAt)
@@ -72,7 +74,7 @@ class HBlastEquipmentRecord : public QObject {
     QString getBeforeBlastingI() const;
     void setBeforeBlastingI(const QString &newBeforeBlastingI);
 
-    QString getRecordUuid() const;
+    QString getRecordUUID() const;
     void setRecordUuid(const QString &newRecordUuid);
 
     QDateTime getCreatedAt() const;
@@ -90,6 +92,9 @@ class HBlastEquipmentRecord : public QObject {
     qint64 getUpdateBy() const;
     void setUpdateBy(qint64 newUpdateBy);
 
+    QList<HBlastRecordDet *> getDetRecords() const;
+    void setDetRecords(QList<HBlastRecordDet *> detRecords);
+
     QJsonObject ToJson();
 
    private:
@@ -112,6 +117,7 @@ class HBlastEquipmentRecord : public QObject {
     QDateTime deletedAt;
     qint64 createBy;
     qint64 updateBy;
+    QList<HBlastRecordDet *> detRecords;
 };
 
 #endif  // HBLASTREGRECORD_H

+ 5 - 5
blastRegRecord/hblastregrecorddao.cpp

@@ -25,10 +25,10 @@ bool HBlastRegRecordDao::saveHBlastRegRecord(const HBlastEquipmentRecord &record
     query.bindValue(":net_charged_i", record.getNetChargedI());
     query.bindValue(":before_blasting_v", record.getBeforeBlastingV());
     query.bindValue(":before_blasting_i", record.getBeforeBlastingI());
-    query.bindValue(":record_uuid", record.getRecordUuid());
-    query.bindValue(":created_at", record.getCreatedAt());
-    query.bindValue(":updated_at", record.getUpdatedAt());
-    query.bindValue(":deleted_at", record.getDeletedAt());
+    query.bindValue(":record_uuid", record.getRecordUUID());
+    query.bindValue(":created_at", record.getCreatedAt().toString(Qt::ISODateWithMs));
+    query.bindValue(":updated_at", record.getUpdatedAt().toString(Qt::ISODateWithMs));
+    query.bindValue(":deleted_at", record.getDeletedAt().toString(Qt::ISODateWithMs));
     query.bindValue(":create_by", record.getCreateBy());
     query.bindValue(":update_by", record.getUpdateBy());
 
@@ -64,7 +64,7 @@ bool HBlastRegRecordDao::updateHBlastEquipmentRecord(const HBlastEquipmentRecord
     query.bindValue(":net_charged_i", record.getNetChargedI());
     query.bindValue(":before_blasting_v", record.getBeforeBlastingV());
     query.bindValue(":before_blasting_i", record.getBeforeBlastingI());
-    query.bindValue(":record_uuid", record.getRecordUuid());
+    query.bindValue(":record_uuid", record.getRecordUUID());
     query.bindValue(":created_at", record.getCreatedAt());
     query.bindValue(":updated_at", record.getUpdatedAt());
     query.bindValue(":deleted_at", record.getDeletedAt());

+ 10 - 1
blastopepage.cpp

@@ -8,6 +8,7 @@
 #include "global.h"
 #include "loadingwidget.h"
 #include "logger.h"
+#include "registryManager/registrymanager.h"
 #include "ui_blastopepage.h"
 
 BlastOpePage::BlastOpePage(QWidget *parent)
@@ -219,7 +220,15 @@ QJsonObject BlastOpePage::getMetaInfo() {
 
     // TODO: 获取登录用户信息
     QProcessEnvironment env = QProcessEnvironment::systemEnvironment();  //  获取系统环境变量
-    QString certName = env.value("certName", "");                        // 第二个参数为默认值
+    if (env.contains("certName") && env.contains("certNo")) {
+        qDebug() << "Environment variables 'certName' or 'certNo' not found.";
+        return metaInfo;  // 如果没有找到相关环境变量,返回空的 QJsonObject
+    } /*else {
+        certName = RegistryManager::getInstance().getCertName(env.value("certName", ""));
+        certID = RegistryManager::getInstance().setCertNo(env.value("certNo", ""));
+    }
+        */
+    QString certName = env.value("certName", "");  // 第二个参数为默认值
     QString certNo = env.value("certNo", "");
     metaInfo["certName"] = certName;
     metaInfo["certNo"] = certNo;

+ 5 - 5
detInfo/detinfopage.cpp

@@ -50,7 +50,7 @@ void DetInfoPage::dataTable(const QJsonDocument& jsonDoc) {
     parseJsonString(jsonDoc);
     model = new QStandardItemModel(this);
     model->setHorizontalHeaderLabels(
-        {"工程名称", "设备编号", "管码", "uid码", "工作码", "有效期", "是否使用", "创建时间"});
+        {"设备编号", "管码", "uid码", "工作码", "有效期", "是否使用", "创建时间"});
     for (const QJsonValue& jsonValue : dataArray) {
         QJsonObject jsonObj = jsonValue.toObject();
         QList<QStandardItem*> items = jsonToItem(jsonObj);
@@ -61,8 +61,8 @@ void DetInfoPage::dataTable(const QJsonDocument& jsonDoc) {
     ui->tableView->setAlternatingRowColors(true);
 }
 QList<QStandardItem*> DetInfoPage::jsonToItem(const QJsonObject& jsonObj) {
-    QStandardItem* nameItem = new QStandardItem(jsonObj["name"].toString());
-    nameItem->setTextAlignment(Qt::AlignCenter);
+    // QStandardItem* nameItem = new QStandardItem(jsonObj["name"].toString());
+    // nameItem->setTextAlignment(Qt::AlignCenter);
     QStandardItem* equipItem = new QStandardItem(jsonObj["equipmentSn"].toString());
     QStandardItem* fbhItem = new QStandardItem(jsonObj["fbh"].toString());
     QStandardItem* uidItem = new QStandardItem(jsonObj["uid"].toString());
@@ -78,8 +78,8 @@ QList<QStandardItem*> DetInfoPage::jsonToItem(const QJsonObject& jsonObj) {
     QString formattedCreatedAt = createdAt.toString("yyyy-MM-dd HH:mm:ss");
     QStandardItem* createdItem = new QStandardItem(formattedCreatedAt);
 
-    return QList<QStandardItem*>() << nameItem << equipItem << fbhItem << uidItem << gzmItem
-                                   << yxqItem << isUseItem << createdItem;
+    return QList<QStandardItem*>()
+           << equipItem << fbhItem << uidItem << gzmItem << yxqItem << isUseItem << createdItem;
 }
 
 void DetInfoPage::parseJsonString(const QJsonDocument& jsonDoc) {

+ 86 - 130
fireWidget/firingwidget.cpp

@@ -141,40 +141,6 @@ bool firingWidget::uploadToDanLing(const QJsonObject &jsonObj) {
     return true;
 }
 
-QList<HBlastEquipmentRecord *> firingWidget::recordBlastEquipments(const QJsonObject &jsonObj) {
-    QList<HBlastEquipmentRecord *> savedRecords;
-    QJsonArray regsArray = jsonObj["regs"].toArray();
-    for (const auto &regValue : regsArray) {
-        QJsonObject regObj = regValue.toObject();
-        HBlastEquipmentRecord *recordReg = new HBlastEquipmentRecord();
-        reg_uuid =
-            QUuid::createUuid().toString(QUuid::WithoutBraces).remove(QRegularExpression("-"));
-        recordReg->setUuid(reg_uuid);
-        recordReg->setEquipSn(regObj["equipment_sn"].toString());
-        recordReg->setEquipVersion(regObj["equipment_version"].toString());
-        recordReg->setRegDetoCount(regObj["reg_deto_count"].toString().toInt());
-        recordReg->setErrorDetoCount(regObj["error_deto_count"].toString().toInt());
-        recordReg->setAfterTestBusV(regObj["after_test_bus_v"].toString());
-        recordReg->setAfterTestBusI(regObj["after_test_bus_i"].toString());
-        recordReg->setBusLeakageCurrentI(regObj["bus_leakage_current_i"].toString());
-        recordReg->setNetChargedV(regObj["net_charged_v"].toString());
-        recordReg->setNetChargedI(regObj["net_charged_i"].toString());
-        recordReg->setBeforeBlastingV(regObj["before_blasting_v"].toString());
-        recordReg->setBeforeBlastingI(regObj["before_blasting_i"].toString());
-        recordReg->setRecordUuid(blast_uuid);
-        recordReg->setCreatedAt(QDateTime::currentDateTime());
-
-        if (daoReg.saveHBlastRegRecord(*recordReg)) {
-            savedRecords.append(recordReg);
-        } else {
-            Logger::getInstance().error(
-                QString("Failed to save HBlastRegRecord: %1").arg(recordReg->getEquipSn()));
-            delete recordReg;
-        }
-    }
-    return savedRecords;
-}
-
 void firingWidget::handleMessageAndTopic(const QByteArray &message, const QMqttTopicName &topic) {
     QString msgText = QString("Topic: %1, Message: %2").arg(topic.name(), QString(message));
     QTextEdit *textEdit = ui->scrollAreaWidgetContents->findChild<QTextEdit *>("textEdit");
@@ -389,62 +355,6 @@ void firingWidget::onBlastSucess(const QJsonObject &jsonObj) {
     }
 }
 
-void firingWidget::uploadBlastRecordToServer(HBlastRecord *blastRecord,
-                                             const QList<HBlastEquipmentRecord *> &equipmentRecords,
-                                             const QList<HBlastRecordDet *> &detsRecords) {
-    // upload blast project
-    if (blastRecord == nullptr) {
-        return;
-    }
-    if (!backendAPIManager::uploadBlastProject(blastRecord->BlastRecordToJson())) {
-        Logger::getInstance().error(QString("Failed to upload blast project. data: %1")
-                                        .arg(QJsonDocument(blastRecord->BlastRecordToJson())
-                                                 .toJson(QJsonDocument::Indented)));
-    }
-    if (!equipmentRecords.isEmpty()) {
-        for (const auto &equipmentRecord : equipmentRecords) {
-            if (!backendAPIManager::uploadBlastEquipments(equipmentRecord->ToJson())) {
-                Logger::getInstance().error(QString("Failed to upload blast equipment. data: %1")
-                                                .arg(QJsonDocument(equipmentRecord->ToJson())
-                                                         .toJson(QJsonDocument::Indented)));
-            } else {
-                Logger::getInstance().info(
-                    QString("Successfully uploaded blast equipment. data: %1")
-                        .arg(QJsonDocument(equipmentRecord->ToJson())
-                                 .toJson(QJsonDocument::Indented)));
-            }
-        }
-    } else {
-        Logger::getInstance().warn("No equipment records to upload.");
-    }
-
-    // dets数量可能较多,切片最多50条分批次发送
-    if (!detsRecords.isEmpty()) {
-        int batchSize = 50;  // 每批次最多50条
-        for (int i = 0; i < detsRecords.size(); i += batchSize) {
-            QList<HBlastRecordDet *> batch = detsRecords.mid(i, batchSize);
-            QJsonArray detsArray;
-            for (const auto &det : batch) {
-                detsArray.append(det->ToJson());
-            }
-            QJsonObject detsJsonObject;
-            detsJsonObject["blast_record_dets"] = detsArray;
-
-            if (!backendAPIManager::uploadBlastProjectDets(detsJsonObject)) {
-                Logger::getInstance().error(
-                    QString("Failed to upload blast dets. data: %1")
-                        .arg(QString(QJsonDocument(detsArray).toJson(QJsonDocument::Indented))));
-            } else {
-                Logger::getInstance().info(
-                    QString("Successfully uploaded blast dets. data: %1")
-                        .arg(QString(QJsonDocument(detsArray).toJson(QJsonDocument::Indented))));
-            }
-        }
-    } else {
-        Logger::getInstance().warn("No det records to upload.");
-    }
-}
-
 void firingWidget::saveAndUploadRecord(const QJsonObject &jsonObj) {
     QSqlDatabase db = DatabaseManager::getInstance().getDatabase();
     if (!db.transaction()) {
@@ -462,9 +372,22 @@ void firingWidget::saveAndUploadRecord(const QJsonObject &jsonObj) {
                             db.rollback() ? "success" : "failed"));
         return;
     }
+    QList<HBlastEquipmentRecord *> blastEquipmentRecords;
+    for (const auto &regValue : jsonObj["regs"].toArray()) {
+        QJsonObject equipmentJsonObject = regValue.toObject();
+        HBlastEquipmentRecord *hBlastEquipmentRecord =
+            recordBlastEquipment(blastRecord->getUuid(), equipmentJsonObject);
+        if (hBlastEquipmentRecord != nullptr) {
+            blastEquipmentRecords.append(hBlastEquipmentRecord);
+        }
+
+        QList<HBlastRecordDet *> hBlastRecordDets =
+            recordBlastProjectDets(blastRecord->getUuid(), hBlastEquipmentRecord->getUuid(),
+                                   equipmentJsonObject["dets"].toArray());
+        hBlastEquipmentRecord->setDetRecords(hBlastRecordDets);
+    }
 
-    QList<HBlastRecordDet *> detsRecords = recordBlastProjectDets(jsonObj);
-    QList<HBlastEquipmentRecord *> equipmentRecords = recordBlastEquipments(jsonObj);
+    blastRecord->setEquipmentRecords(blastEquipmentRecords);
 
     if (db.commit()) {
         Logger::getInstance().info(
@@ -476,7 +399,18 @@ void firingWidget::saveAndUploadRecord(const QJsonObject &jsonObj) {
         return;
     }
 
-    uploadBlastRecordToServer(blastRecord, equipmentRecords, detsRecords);
+    uploadBlastRecordToServer(blastRecord);
+}
+
+void firingWidget::uploadBlastRecordToServer(HBlastRecord *blastRecord) {
+    if (blastRecord == nullptr) {
+        return;
+    }
+    if (!backendAPIManager::uploadBlastProjectFull(blastRecord->ToJson())) {
+        Logger::getInstance().error(
+            QString("Failed to upload blast project. data: %1")
+                .arg(QJsonDocument(blastRecord->ToJson()).toJson(QJsonDocument::Indented)));
+    }
 }
 
 HBlastRecord *firingWidget::recordBlastProject(const QJsonObject &jsonObj) {
@@ -500,7 +434,6 @@ HBlastRecord *firingWidget::recordBlastProject(const QJsonObject &jsonObj) {
     record->setErrorDetCount(jsonObj["error_deto_count"].toString().toInt());
     QDateTime blastTime =
         QDateTime::fromString(jsonObj["blast_time"].toString(), "yyyy-MM-dd hh:mm:ss");
-    // blastTime.setTimeZone(QTimeZone(QByteArrayLiteral("Asia/Shanghai")));
     record->setBlastAt(blastTime);
     record->setCreatedAt(QDateTime::currentDateTime());
     record->setUuid(blast_uuid);
@@ -515,43 +448,66 @@ HBlastRecord *firingWidget::recordBlastProject(const QJsonObject &jsonObj) {
     }
 }
 
-QList<HBlastRecordDet *> firingWidget::recordBlastProjectDets(const QJsonObject &jsonObj) {
+HBlastEquipmentRecord *firingWidget::recordBlastEquipment(const QString blastProjectUuid,
+                                                          const QJsonObject &regObj) {
+    HBlastEquipmentRecord *recordReg = new HBlastEquipmentRecord();
+    reg_uuid = QUuid::createUuid().toString(QUuid::WithoutBraces).remove(QRegularExpression("-"));
+    recordReg->setUuid(reg_uuid);
+    recordReg->setEquipSn(regObj["equipment_sn"].toString());
+    recordReg->setEquipVersion(regObj["equipment_version"].toString());
+    recordReg->setRegDetoCount(regObj["reg_deto_count"].toString().toInt());
+    recordReg->setErrorDetoCount(regObj["error_deto_count"].toString().toInt());
+    recordReg->setAfterTestBusV(regObj["after_test_bus_v"].toString());
+    recordReg->setAfterTestBusI(regObj["after_test_bus_i"].toString());
+    recordReg->setBusLeakageCurrentI(regObj["bus_leakage_current_i"].toString());
+    recordReg->setNetChargedV(regObj["net_charged_v"].toString());
+    recordReg->setNetChargedI(regObj["net_charged_i"].toString());
+    recordReg->setBeforeBlastingV(regObj["before_blasting_v"].toString());
+    recordReg->setBeforeBlastingI(regObj["before_blasting_i"].toString());
+    recordReg->setRecordUuid(blastProjectUuid);
+    recordReg->setCreatedAt(QDateTime::currentDateTime());
+
+    if (!daoReg.saveHBlastRegRecord(*recordReg)) {
+        Logger::getInstance().error(
+            QString("Failed to save HBlastRegRecord: %1").arg(recordReg->getEquipSn()));
+        delete recordReg;
+        return nullptr;
+    }
+    return recordReg;
+}
+
+QList<HBlastRecordDet *> firingWidget::recordBlastProjectDets(const QString projectUuid,
+                                                              const QString equipmentUuid,
+                                                              const QJsonArray detsArray) {
     QList<HBlastRecordDet *> recordDets;
-    QJsonArray regsArray = jsonObj["regs"].toArray();
-
-    for (const auto &regValue : regsArray) {
-        QJsonObject regObj = regValue.toObject();
-        QJsonArray detsArray = regObj["dets"].toArray();
-
-        for (const auto &detValue : detsArray) {
-            QJsonObject detObj = detValue.toObject();
-            HBlastRecordDet *recordDet = new HBlastRecordDet();
-
-            recordDet->setId(0);
-            recordDet->setUuid(
-                QUuid::createUuid().toString(QUuid::WithoutBraces).remove(QRegularExpression("-")));
-            recordDet->setOutCode(detObj["out_code"].toString());
-            recordDet->setInnerCode(detObj["in_code"].toString());
-            recordDet->setUid(detObj["uid"].toString());
-            recordDet->setStatus(detObj["status"].toString());
-            recordDet->setFreq(detObj["freq"].toString());
-            recordDet->setDelayTime(detObj["delay_time"].toString());
-            recordDet->setTag(detObj["tag"].toString());
-            recordDet->setCreatedAt(QDateTime::currentDateTime());
-            recordDet->setBlastRecordId(blast_uuid);
-            recordDet->setRegId(reg_uuid);
-            recordDet->setCreatedAt(QDateTime::currentDateTime());
-
-            if (daoDet.addHBlastRecordDet(*recordDet)) {
-                recordDets.append(recordDet);
-            } else {
-                Logger::getInstance().error(
-                    QString("Failed to insert record det. data %1")
-                        .arg(QJsonDocument(recordDet->ToJson()).toJson(QJsonDocument::Compact)));
-                delete recordDet;
-                continue;
-            }
+
+    for (const auto &detValue : detsArray) {
+        QJsonObject detObj = detValue.toObject();
+        HBlastRecordDet *recordDet = new HBlastRecordDet();
+
+        recordDet->setId(0);
+        recordDet->setUuid(
+            QUuid::createUuid().toString(QUuid::WithoutBraces).remove(QRegularExpression("-")));
+        recordDet->setOutCode(detObj["out_code"].toString());
+        recordDet->setInnerCode(detObj["in_code"].toString());
+        recordDet->setUid(detObj["uid"].toString());
+        recordDet->setStatus(detObj["status"].toString());
+        recordDet->setFreq(detObj["freq"].toString());
+        recordDet->setDelayTime(detObj["delay_time"].toString());
+        recordDet->setTag(detObj["tag"].toString());
+        recordDet->setBlastRecordUuid(projectUuid);
+        recordDet->setEquipmentRecordUuid(equipmentUuid);
+        recordDet->setCreatedAt(QDateTime::currentDateTime());
+
+        if (daoDet.addHBlastRecordDet(*recordDet)) {
+            recordDets.append(recordDet);
+        } else {
+            Logger::getInstance().error(
+                QString("Failed to insert record det. data %1")
+                    .arg(QJsonDocument(recordDet->ToJson()).toJson(QJsonDocument::Compact)));
+            delete recordDet;
+            continue;
         }
     }
     return recordDets;
-}
+}

+ 7 - 6
fireWidget/firingwidget.h

@@ -55,13 +55,14 @@ class firingWidget : public QWidget {
     void closeFiring(QString uuid);
 
    private:
-    void uploadBlastRecordToServer(HBlastRecord *blastRecord,
-                                   const QList<HBlastEquipmentRecord *> &equipmentRecords,
-                                   const QList<HBlastRecordDet *> &detsRecords);
-    QList<HBlastEquipmentRecord *> recordBlastEquipments(const QJsonObject &jsonObj);
-    QList<HBlastRecordDet *> recordBlastProjectDets(const QJsonObject &jsonObj);
-    bool uploadToDanLing(const QJsonObject &jsonObj);
+    void uploadBlastRecordToServer(HBlastRecord *blastRecord);
     HBlastRecord *recordBlastProject(const QJsonObject &jsonObj);
+    HBlastEquipmentRecord *recordBlastEquipment(const QString blastProjectUUID,
+                                                const QJsonObject &regObj);
+    QList<HBlastRecordDet *> recordBlastProjectDets(const QString projectUUID,
+                                                    const QString equipmentUUID,
+                                                    const QJsonArray regsArray);
+    bool uploadToDanLing(const QJsonObject &jsonObj);
     void saveAndUploadRecord(const QJsonObject &jsonObj);
     void sendMqttMessage(const QString &topic, const QByteArray &message);
     void startBlasting();

+ 20 - 7
login/loginwindow.cpp

@@ -33,15 +33,29 @@ void LoginWindow::on_btnLogin_clicked() {
         return;
     }
     try {
+        this->ui->btnLogin->setStyleSheet(
+            "QPushButton#btnLogin {"
+            "    background-color: rgb(33, 46, 224);"
+            "    color: white;"
+            "    border-radius: 5px;"
+            "    font: normal 18px 'Microsoft YaHei';"
+            "}"
+            "QPushButton#btnLogin:disabled {"
+            "    background-color: rgb(200, 200, 200);"
+            "    color: rgb(0, 0, 0);"
+            "}");
+        this->ui->btnLogin->setEnabled(false);
+        this->ui->btnLogin->setText("登录中...");
+
         // 构造请求数据
         QJsonObject jsonData;
         jsonData["username"] = username;
         jsonData["password"] = password;
         QJsonDocument doc(jsonData);
         QByteArray data = doc.toJson();
-        QUrl localUrl("login/pc");
-        QUrl fullUrl = apiBackendUrl.resolved(localUrl);
-        QNetworkRequest request(fullUrl);  // 替换为实际的服务器接口地址
+
+        QUrl fullUrl = apiBackendUrl.resolved(QUrl("login/pc"));  // 替换为实际的服务器接口地址
+        QNetworkRequest request(fullUrl);                         // 替换为实际的服务器接口地址
         request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
         // 发送 POST 请求
         QNetworkReply *reply = manager->post(request, data);
@@ -118,9 +132,6 @@ void LoginWindow::on_btnLogin_clicked() {
                                     "\"equipment_version\":\"null\",\"error_deto_count\":\"0\","
                                     "\"net_charged_i\":\"49\",\"net_charged_v\":\"13501\",\"reg_"
                                     "deto_count\":\"2\"}]}";
-                                // 使用 QJsonDocument::fromJson 直接解析 QByteArray 并获取
-                                // QJsonObject 这是一个非常简洁的单行操作,假设你知道顶层是 JSON
-                                // 对象且不关心详细的错误信息
                                 QJsonObject myJsonObject =
                                     QJsonDocument::fromJson(jsonString.toUtf8()).object();
                                 qDebug()
@@ -151,7 +162,7 @@ void LoginWindow::on_btnLogin_clicked() {
                         }
                     }
                 } else {
-                    QMessageBox::critical(nullptr, "网络请求错误",
+                    QMessageBox::critical(nullptr, "无法登录,网络请求错误",
                                           QString("错误信息: %1\n错误代码: %2")
                                               .arg(reply->errorString())
                                               .arg(reply->error()));
@@ -159,6 +170,8 @@ void LoginWindow::on_btnLogin_clicked() {
             } catch (const std::exception &e) {
                 qDebug() << "Exception in response handling: " << e.what();
             }
+            this->ui->btnLogin->setEnabled(true);
+            this->ui->btnLogin->setText("登录");
             reply->deleteLater();
         };
 

+ 1 - 1
mainwindow.ui

@@ -621,7 +621,7 @@ left_buttonsBox里的QPushButton
                    </size>
                   </property>
                   <property name="text">
-                   <string>电子雷管</string>
+                   <string>密文下发</string>
                   </property>
                   <property name="iconSize">
                    <size>

+ 57 - 98
projectdialog.cpp

@@ -1,57 +1,44 @@
 #include "projectdialog.h"
-#include "ui_projectdialog.h"
+
 #include "regex.h"
+#include "ui_projectdialog.h"
 
-ProjectDialog::ProjectDialog(QWidget *parent) :
-    QDialog(parent),
-    ui(new Ui::ProjectDialog)
-{
+ProjectDialog::ProjectDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ProjectDialog) {
     ui->setupUi(this);
     connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &ProjectDialog::validateInput);
     connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &ProjectDialog::clearFormData);
 }
 
-//初始化爆破员列表
-void ProjectDialog::SetComboBoxBlast(const QJsonArray& bapoYuanArray)
-{
-    blasterArray =bapoYuanArray;
+// 初始化爆破员列表
+void ProjectDialog::SetComboBoxBlast(const QJsonArray &bapoYuanArray) {
+    blasterArray = bapoYuanArray;
     ui->comboBoxBlast->clear();
     fillComboBox(ui->comboBoxBlast, bapoYuanArray);
-    ui->comboBoxBlast->setCurrentIndex(-1); // 设置当前索引为 -1
+    ui->comboBoxBlast->setCurrentIndex(-1);  // 设置当前索引为 -1
 }
 
-//初始化操作员列表
-void ProjectDialog::SetComboBoxOperator(const QJsonArray& anQuanYuanArray)
-{
-    operatorArray =anQuanYuanArray;
+// 初始化操作员列表
+void ProjectDialog::SetComboBoxOperator(const QJsonArray &anQuanYuanArray) {
+    operatorArray = anQuanYuanArray;
     ui->comboBoxOperator->clear();
     fillComboBox(ui->comboBoxOperator, anQuanYuanArray);
-    ui->comboBoxOperator->setCurrentIndex(-1); // 设置当前索引为 -1
+    ui->comboBoxOperator->setCurrentIndex(-1);  // 设置当前索引为 -1
 }
 
-void ProjectDialog::on_comboBoxOperator_currentIndexChanged(int index)
-{
+void ProjectDialog::on_comboBoxOperator_currentIndexChanged(int index) {
     if (index >= 0 && index < operatorArray.size()) {
         operatorId = operatorArray[index].toObject()["identity"].toString();
     }
 }
 
-
-
-
-void ProjectDialog::on_comboBoxBlast_currentIndexChanged(int index)
-{
+void ProjectDialog::on_comboBoxBlast_currentIndexChanged(int index) {
     if (index >= 0 && index < blasterArray.size()) {
         blasterId = blasterArray[index].toObject()["identity"].toString();
     }
-
 }
 
-
-
-void ProjectDialog::fillComboBox(QComboBox* comboBox, const QJsonArray& jsonArray) {
+void ProjectDialog::fillComboBox(QComboBox *comboBox, const QJsonArray &jsonArray) {
     for (const QJsonValue &value : jsonArray) {
-
         if (value.isObject()) {
             QJsonObject obj = value.toObject();
             if (obj.contains("name")) {
@@ -62,18 +49,17 @@ void ProjectDialog::fillComboBox(QComboBox* comboBox, const QJsonArray& jsonArra
     }
 }
 
-//初始化一级地址列表
-void ProjectDialog::SetComboBoxAddress(const QJsonArray& Options)
-{       parentOptions = Options;
-        ui->comboBoxAddr->clear();
-            for (const QJsonValue &option : Options) {
-                ui->comboBoxAddr->addItem(option.toString());
-            }
-                ui->comboBoxAddr->setCurrentIndex(-1); // 设置当前索引为 -1
+// 初始化一级地址列表
+void ProjectDialog::SetComboBoxAddress(const QJsonArray &Options) {
+    parentOptions = Options;
+    ui->comboBoxAddr->clear();
+    for (const QJsonValue &option : Options) {
+        ui->comboBoxAddr->addItem(option.toString());
+    }
+    ui->comboBoxAddr->setCurrentIndex(-1);  // 设置当前索引为 -1
 }
-//初始化二级地址列表
-void ProjectDialog::SetComboBoxAddress2(const QString &parentName)
-{
+// 初始化二级地址列表
+void ProjectDialog::SetComboBoxAddress2(const QString &parentName) {
     ui->comboBoxAddr_2->clear();
     for (const QJsonValue &item : dataOptions) {
         const QJsonObject &obj = item.toObject();
@@ -87,12 +73,10 @@ void ProjectDialog::SetComboBoxAddress2(const QString &parentName)
             break;  // 找到对应的 parentName 后,跳出循环
         }
     };
-    ui->comboBoxAddr_2->setCurrentIndex(-1); // 设置当前索引为 -1
+    ui->comboBoxAddr_2->setCurrentIndex(-1);  // 设置当前索引为 -1
 }
 
-
-void ProjectDialog::SetComboBoxAddress3(const QString &childName)
-{
+void ProjectDialog::SetComboBoxAddress3(const QString &childName) {
     ui->comboBoxAddr_3->clear();
     for (const QJsonValue &item : dataOptions) {
         const QJsonArray &childrenArray = item["children"].toArray();
@@ -109,59 +93,50 @@ void ProjectDialog::SetComboBoxAddress3(const QString &childName)
         };
     }
 
-    ui->comboBoxAddr_3->setCurrentIndex(-1); // 设置当前索引为 -1
+    ui->comboBoxAddr_3->setCurrentIndex(-1);  // 设置当前索引为 -1
 }
 
-void ProjectDialog::setChildOptions( const QJsonArray& newDataOptions)
-{
+void ProjectDialog::setChildOptions(const QJsonArray &newDataOptions) {
     dataOptions = newDataOptions;
 }
 
-void ProjectDialog::clearFormData()
-{
+void ProjectDialog::clearFormData() {
     // 清除所有 QLineEdit 的文本
-    QList<QLineEdit*> lineEdits = findChildren<QLineEdit*>();
-    for (QLineEdit* lineEdit : lineEdits) {
+    QList<QLineEdit *> lineEdits = findChildren<QLineEdit *>();
+    for (QLineEdit *lineEdit : lineEdits) {
         lineEdit->clear();
     }
 
     // 清除所有 QComboBox 的选择
-    QList<QComboBox*> comboBoxes = findChildren<QComboBox*>();
-    for (QComboBox* comboBox : comboBoxes) {
+    QList<QComboBox *> comboBoxes = findChildren<QComboBox *>();
+    for (QComboBox *comboBox : comboBoxes) {
         comboBox->setCurrentIndex(-1);
     }
     // 可按需添加更多控件类型的清除逻辑
-
 }
 
-void ProjectDialog::on_comboBoxAddr_currentIndexChanged(int index)
-{
+void ProjectDialog::on_comboBoxAddr_currentIndexChanged(int index) {
     if (index >= 0 && index < parentOptions.size()) {
         QString parentName = parentOptions[index].toString();
         SetComboBoxAddress2(parentName);
     }
 }
 
-
-void ProjectDialog::on_comboBoxAddr_2_currentIndexChanged(int index)
-{
-
+void ProjectDialog::on_comboBoxAddr_2_currentIndexChanged(int index) {
     if (index >= 0 && index < childOptions.size()) {
         QString childName = childOptions[index].toObject()["name"].toString();
         SetComboBoxAddress3(childName);
     }
 }
 
-
-void ProjectDialog::validateInput()
-{
+void ProjectDialog::validateInput() {
     QString detNum = ui->editDetNum->text().trimmed();
     QString projectName = ui->editName->text().trimmed();
-    QString blastName= ui->comboBoxBlast->currentText().trimmed();
-    QString operatorName= ui->comboBoxOperator->currentText().trimmed();
-    QString parentAddress= ui->comboBoxAddr->currentText().trimmed();
-    QString childAddress= ui->comboBoxAddr_2->currentText().trimmed();
-    QString grandChildAddress= ui->comboBoxAddr_3->currentText().trimmed();
+    QString blastName = ui->comboBoxBlast->currentText().trimmed();
+    QString operatorName = ui->comboBoxOperator->currentText().trimmed();
+    QString parentAddress = ui->comboBoxAddr->currentText().trimmed();
+    QString childAddress = ui->comboBoxAddr_2->currentText().trimmed();
+    QString grandChildAddress = ui->comboBoxAddr_3->currentText().trimmed();
 
     // 检查电子邮件是否为空或格式是否正确
     if (detNum.isEmpty() || !ui->editDetNum->hasAcceptableInput()) {
@@ -177,7 +152,7 @@ void ProjectDialog::validateInput()
     // 拼接 addressUuid
     QString addressUuid = parentAddress;
     if (!childAddress.isEmpty()) {
-        qDebug()<<"childAddress"<<childAddress;
+        qDebug() << "childAddress" << childAddress;
         addressUuid += "/" + childAddress;
         if (!grandChildAddress.isEmpty()) {
             addressUuid += "/" + grandChildAddress;
@@ -186,47 +161,41 @@ void ProjectDialog::validateInput()
     data["addressUuid"] = addressUuid;
     data["blasterIdentity"] = blasterId;
     data["operatorIdentity"] = operatorId;
-    if(operationStatus==0){
+    if (operationStatus == 0) {
         // 发射信号
         emit validateDetNum(data);
-    } else if (operationStatus==1) {
+    } else if (operationStatus == 1) {
         emit validateDetNumUpdate(data);
     }
 
-    clearFormData(); // 清除表单数据
-    qDebug() << "Emitting validateDetNum signal with data*******:" << data; // 确认信号发射
+    clearFormData();                                                         // 清除表单数据
+    qDebug() << "Emitting validateDetNum signal with data*******:" << data;  // 确认信号发射
     // this->accept();
 }
 
-int ProjectDialog::getOperationStatus() const
-{
-    return operationStatus;
-}
+int ProjectDialog::getOperationStatus() const { return operationStatus; }
 
-void ProjectDialog::setOperationStatus(int newOperationStatus)
-{
+void ProjectDialog::setOperationStatus(int newOperationStatus) {
     operationStatus = newOperationStatus;
 }
 
-
-void ProjectDialog::setFormData(const HProject &Project)
-{
+void ProjectDialog::setFormData(const HProject &Project) {
     try {
         ui->editName->setText(Project.getName());
         ui->editDetNum->setText(Project.getDetSum());
         ui->editHTID->setText(Project.getHtid());
         ui->editXMBH->setText(Project.getXmbh());
         int indexBlast = ui->comboBoxBlast->findText(Project.getBlasterName());
-        if (indexBlast!= -1) {
+        if (indexBlast != -1) {
             ui->comboBoxBlast->setCurrentIndex(indexBlast);
         } else {
-            qDebug() << "未找到选项 " <<  "。";
+            qDebug() << "未找到选项 " << "。";
         }
         int indexOper = ui->comboBoxOperator->findText(Project.getOperatorName());
-        if (indexOper!= -1) {
+        if (indexOper != -1) {
             ui->comboBoxOperator->setCurrentIndex(indexOper);
         } else {
-            qDebug() << "未找到选项 " <<  "。";
+            qDebug() << "未找到选项 " << "。";
         }
         QStringList addressParts = Project.getAddressUuid().split("/");
         int numAddresses = addressParts.size();
@@ -235,7 +204,6 @@ void ProjectDialog::setFormData(const HProject &Project)
         for (int i = 0; i < numAddresses; ++i) {
             QString part = addressParts[i];
             addressVariables.append(part);
-
         }
         // 查找目标文本对应的索引
         int indexAddr = ui->comboBoxAddr->findText(addressVariables[0]);
@@ -248,7 +216,7 @@ void ProjectDialog::setFormData(const HProject &Project)
             // 如果没找到,输出提示信息
             qDebug() << "未找到选项 " << addressVariables[0];
         }
-        if(addressVariables.size()>=2){
+        if (addressVariables.size() >= 2) {
             int indexAddr_2 = ui->comboBoxAddr_2->findText(addressVariables[1]);
 
             if (indexAddr_2 != -1) {
@@ -261,7 +229,7 @@ void ProjectDialog::setFormData(const HProject &Project)
             }
         }
 
-        if(addressVariables.size()>=3){
+        if (addressVariables.size() >= 3) {
             int indexAddr_3 = ui->comboBoxAddr_3->findText(addressVariables[2]);
 
             if (indexAddr_3 != -1) {
@@ -273,20 +241,11 @@ void ProjectDialog::setFormData(const HProject &Project)
                 qDebug() << "未找到选项 " << addressVariables[2];
             }
         }
-    } catch (const std::exception& e) {
+    } catch (const std::exception &e) {
         qDebug() << "发生异常: " << e.what();
     } catch (...) {
         qDebug() << "发生未知异常";
     }
-
-
-}
-
-ProjectDialog::~ProjectDialog()
-{
-    delete ui;
 }
 
-
-
-
+ProjectDialog::~ProjectDialog() { delete ui; }

+ 15 - 24
registryManager/registrymanager.cpp

@@ -1,35 +1,30 @@
 #include "registrymanager.h"
-#include <QSettings>
+
 #include <QDebug>
+#include <QSettings>
 
-RegistryManager::RegistryManager(QObject *parent) : QObject(parent)
-{
-}
+RegistryManager::RegistryManager(QObject *parent) : QObject(parent) {}
 
-RegistryManager::~RegistryManager()
-{
-}
+RegistryManager::~RegistryManager() {}
 
-bool RegistryManager::saveUserInfo(const QString &userId, const QString &username, const QString &password,const QString &identity)
-{
+bool RegistryManager::saveUserInfo(const QString &userId, const QString &username,
+                                   const QString &password, const QString &identity) {
     QSettings settings(organizationName, applicationName);
     settings.beginGroup(userId);
     settings.setValue("Username", username);
     settings.setValue("Password", password);
     settings.setValue("Identity", identity);
+    qDebug() << "saved user info" << username << password << identity;
     settings.endGroup();
 
     if (settings.status() == QSettings::NoError) {
-
         return true;
     } else {
-
         return false;
     }
 }
 
-bool RegistryManager::readUserInfo(const QString &userId, QString &username, QString &password)
-{
+bool RegistryManager::readUserInfo(const QString &userId, QString &username, QString &password) {
     QSettings settings(organizationName, applicationName);
     settings.beginGroup(userId);
     if (settings.contains("Username") && settings.contains("Password")) {
@@ -45,35 +40,31 @@ bool RegistryManager::readUserInfo(const QString &userId, QString &username, QSt
     }
 }
 
-QStringList RegistryManager::getAllUserIds()
-{
+QStringList RegistryManager::getAllUserIds() {
     QSettings settings(organizationName, applicationName);
     return settings.childGroups();
 }
 
-QStringList RegistryManager::getAllUsernames()
-{
+QStringList RegistryManager::getAllUsernames() {
     QStringList usernames;
     QMap<QString, QPair<QString, QString>> allUserInfos = getAllUserInfos();
-    for (const auto& userInfo : allUserInfos) {
+    for (const auto &userInfo : allUserInfos) {
         usernames.append(userInfo.first);
     }
     return usernames;
 }
 
-QString RegistryManager::getPasswordByUsername(const QString &username)
-{
+QString RegistryManager::getPasswordByUsername(const QString &username) {
     QMap<QString, QPair<QString, QString>> allUserInfos = getAllUserInfos();
-    for (const auto& userInfo : allUserInfos) {
+    for (const auto &userInfo : allUserInfos) {
         if (userInfo.first == username) {
             return userInfo.second;
         }
     }
-    return ""; // 如果未找到匹配的用户名,返回空字符串
+    return "";  // 如果未找到匹配的用户名,返回空字符串
 }
 
-QMap<QString, QPair<QString, QString>> RegistryManager::getAllUserInfos()
-{
+QMap<QString, QPair<QString, QString>> RegistryManager::getAllUserInfos() {
     QMap<QString, QPair<QString, QString>> allUserInfos;
     QStringList userIds = getAllUserIds();