|
@@ -13,9 +13,9 @@
|
|
#include <QUrl>
|
|
#include <QUrl>
|
|
#include <QUrlQuery>
|
|
#include <QUrlQuery>
|
|
|
|
|
|
-#include "../backendapimanager.h"
|
|
|
|
-#include "../global.h"
|
|
|
|
-#include "../logger.h"
|
|
|
|
|
|
+#include "../utils/backendapimanager.h"
|
|
|
|
+#include "../utils/global.h"
|
|
|
|
+#include "../utils/logger.h"
|
|
#include "ui_firingwidget.h"
|
|
#include "ui_firingwidget.h"
|
|
|
|
|
|
#define ANSI_COLOR_GREEN "\x1B[32m"
|
|
#define ANSI_COLOR_GREEN "\x1B[32m"
|
|
@@ -51,7 +51,6 @@ firingWidget::firingWidget(const int &row, const bool &select, const QString &uu
|
|
connect(m_subscription, &QMqttSubscription::messageReceived, this, &firingWidget::handleProjectFiringMqttMessage);
|
|
connect(m_subscription, &QMqttSubscription::messageReceived, this, &firingWidget::handleProjectFiringMqttMessage);
|
|
|
|
|
|
connect(this, &firingWidget::lastStageChanged, this, &firingWidget::handleFiringStageChanged);
|
|
connect(this, &firingWidget::lastStageChanged, this, &firingWidget::handleFiringStageChanged);
|
|
- connect(this, &firingWidget::updateData, this, &firingWidget::onBlastSuccess);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
firingWidget::~firingWidget() {
|
|
firingWidget::~firingWidget() {
|
|
@@ -114,75 +113,6 @@ void firingWidget::checkBlasterConnection() {
|
|
});
|
|
});
|
|
m_connectionCheckTimer->start(1000);
|
|
m_connectionCheckTimer->start(1000);
|
|
}
|
|
}
|
|
-void firingWidget::on_pushButton_2_clicked() { emit countdown(m_curProjUuid, m_topic, "message"); }
|
|
|
|
-
|
|
|
|
-// NOTE: aborted, changed to upload in the smartmine server side.
|
|
|
|
-bool firingWidget::uploadToDanLing(const QJsonObject &jsonObj) {
|
|
|
|
- QString htid = jsonObj["project_htid"].toString();
|
|
|
|
- QString htm = ""; //
|
|
|
|
- QString xmbh = jsonObj["project_xmbh"].toString();
|
|
|
|
- QString sbbh = jsonObj["equipment_sn"].toString();
|
|
|
|
- QString bprysfz = jsonObj["operator_identity"].toString();
|
|
|
|
- QString dwdm = jsonObj["company_code"].toString();
|
|
|
|
- QString xtm = ""; //
|
|
|
|
- QString jd = jsonObj["blast_longitude"].toString();
|
|
|
|
- QString bpsj = jsonObj["blast_time"].toString();
|
|
|
|
- QString wd = jsonObj["blast_latitude"].toString();
|
|
|
|
- QStringList uidList;
|
|
|
|
- QJsonArray regs = jsonObj["regs"].toArray();
|
|
|
|
- for (const auto ® : regs) {
|
|
|
|
- QJsonObject regObj = reg.toObject();
|
|
|
|
- QJsonArray dets = regObj["dets"].toArray();
|
|
|
|
- for (const auto &det : dets) {
|
|
|
|
- QJsonObject detObj = det.toObject();
|
|
|
|
- uidList.append(detObj["uid"].toString());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- QString uid = uidList.join(",");
|
|
|
|
-
|
|
|
|
- QString plainText = QString(
|
|
|
|
- "{\"htid\":\"%1\",\"htm\":\"%2\",\"xmbh\":\"%3\",\"sbbh\":\"%4\","
|
|
|
|
- "\"bprysfz\":\"%5\",\"dwdm\":\"%6\",\"xtm\":\"%7\",\"jd\":\"%8\","
|
|
|
|
- "\"bpsj\":\"%9\",\"wd\":\"%10\",\"uid\":\"%11\"}")
|
|
|
|
- .arg(htid)
|
|
|
|
- .arg(htm)
|
|
|
|
- .arg(xmbh)
|
|
|
|
- .arg(sbbh)
|
|
|
|
- .arg(bprysfz)
|
|
|
|
- .arg(dwdm)
|
|
|
|
- .arg(xtm)
|
|
|
|
- .arg(jd)
|
|
|
|
- .arg(bpsj)
|
|
|
|
- .arg(wd)
|
|
|
|
- .arg(uid);
|
|
|
|
- Des3Encryption des3;
|
|
|
|
- QByteArray key = "jadl12345678912345678912";
|
|
|
|
- QByteArray encryptedData = des3.des3Encrypt(plainText.toUtf8(), key);
|
|
|
|
- QByteArray base64Encoded = encryptedData.toBase64();
|
|
|
|
- QString encodedJson = QUrl::toPercentEncoding(base64Encoded);
|
|
|
|
- QString baseUrl = "http://test.mbdzlg.com/mbdzlgtxzx/servlet/DzlgSysbJsonServlert";
|
|
|
|
- QUrl url(baseUrl);
|
|
|
|
- QUrlQuery query;
|
|
|
|
- query.addQueryItem("param", encodedJson);
|
|
|
|
- url.setQuery(query);
|
|
|
|
-
|
|
|
|
- QNetworkAccessManager manager;
|
|
|
|
- QNetworkRequest request(url);
|
|
|
|
- request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
|
|
|
|
- QByteArray postData;
|
|
|
|
- QNetworkReply *reply = manager.post(request, postData);
|
|
|
|
- QEventLoop loop;
|
|
|
|
- QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
|
|
|
|
- loop.exec();
|
|
|
|
- if (reply->error() == QNetworkReply::NoError) {
|
|
|
|
- QByteArray responseData = reply->readAll();
|
|
|
|
- qDebug() << "Response:" << QString(responseData);
|
|
|
|
- } else {
|
|
|
|
- qDebug() << "Error:" << reply->errorString();
|
|
|
|
- }
|
|
|
|
- reply->deleteLater();
|
|
|
|
- return true;
|
|
|
|
-}
|
|
|
|
|
|
|
|
void firingWidget::handleProjectFiringMqttMessage(const QMqttMessage &message) {
|
|
void firingWidget::handleProjectFiringMqttMessage(const QMqttMessage &message) {
|
|
QString msgText = QString("Topic: %1, Message: %2").arg(message.topic().name(), QString(message.payload()));
|
|
QString msgText = QString("Topic: %1, Message: %2").arg(message.topic().name(), QString(message.payload()));
|
|
@@ -302,13 +232,6 @@ void firingWidget::handleProjectFiringMqttMessage(const QMqttMessage &message) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (jsonObj.contains("type") && jsonObj["type"].toInt() == MSG_DATA_TYPE_RECORD) {
|
|
|
|
- if (jsonObj.contains("data") && jsonObj["data"].isObject()) {
|
|
|
|
- QJsonObject dataObject = jsonObj["data"].toObject();
|
|
|
|
- emit updateData(dataObject);
|
|
|
|
- emit closeFiring(m_curProjUuid, m_row);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -434,162 +357,4 @@ void firingWidget::sendCancelFiringMsg() {
|
|
QString message = "取消流程";
|
|
QString message = "取消流程";
|
|
QString topic = "hxgc/" + m_curProjUuid + "/P";
|
|
QString topic = "hxgc/" + m_curProjUuid + "/P";
|
|
sendMqttMessage(topic, message.toUtf8());
|
|
sendMqttMessage(topic, message.toUtf8());
|
|
-}
|
|
|
|
-void firingWidget::on_sendTest_4_clicked() {}
|
|
|
|
-
|
|
|
|
-void firingWidget::testOnBlastSuccess(const QJsonObject &jsonObj) { onBlastSuccess(jsonObj); }
|
|
|
|
-// 处理爆破成功,安全验证装置通过MQTT传回的数据
|
|
|
|
-void firingWidget::onBlastSuccess(const QJsonObject &jsonObj) {
|
|
|
|
- Logger::getInstance("blastRecord.log").info(QJsonDocument(jsonObj).toJson(QJsonDocument::Indented));
|
|
|
|
- saveAndUploadRecord(jsonObj);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void firingWidget::saveAndUploadRecord(const QJsonObject &jsonObj) {
|
|
|
|
- return; // changed to use server to save the record
|
|
|
|
- QSqlDatabase db = DatabaseManager::getInstance().getDatabase();
|
|
|
|
- if (!db.transaction()) {
|
|
|
|
- Logger::getInstance().critical(QString("Failed to start DB transaction. Error: %1").arg(db.lastError().text()));
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- qDebug() << "Starting transaction for blast record with uuid:" << jsonObj;
|
|
|
|
- HBlastRecord *blastRecord = recordBlastProject(jsonObj);
|
|
|
|
- if (blastRecord == nullptr) {
|
|
|
|
- Logger::getInstance("error_blast_records.log")
|
|
|
|
- .error(QString("Failed to create blast record. projectName: %1, ProjectID: %2; "
|
|
|
|
- "rollback transaction: %3")
|
|
|
|
- .arg(jsonObj["project_name"].toString(), jsonObj["project_htid"].toString(),
|
|
|
|
- db.rollback() ? "success" : "failed"));
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- QList<HBlastEquipmentRecord *> blastEquipmentRecords;
|
|
|
|
- for (const auto ®Value : 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);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- blastRecord->setEquipmentRecords(blastEquipmentRecords);
|
|
|
|
-
|
|
|
|
- if (db.commit()) {
|
|
|
|
- Logger::getInstance().info(
|
|
|
|
- QString("Transaction committed successfully. blast_uuid: %1").arg(blastRecord->getUuid()));
|
|
|
|
- } else {
|
|
|
|
- Logger::getInstance().error(QString("Failed to commit transaction: %1. try to rollback: %2")
|
|
|
|
- .arg(db.lastError().text(), db.rollback() ? "success" : "failed"));
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- 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)));
|
|
|
|
- }
|
|
|
|
- Logger::getInstance().info(
|
|
|
|
- QString("Blast project uploaded to server successfully. blast_uuid: %1").arg(blastRecord->getUuid()));
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-HBlastRecord *firingWidget::recordBlastProject(const QJsonObject &jsonObj) {
|
|
|
|
- HBlastRecord *record = new HBlastRecord();
|
|
|
|
-
|
|
|
|
- record->setUuid(QUuid::createUuid().toString(QUuid::WithoutBraces).remove(QRegularExpression("-")));
|
|
|
|
- record->setIsOfflineBlast(jsonObj["is_offline_blast"].toString() == "true");
|
|
|
|
- record->setProjectName(jsonObj["project_name"].toString());
|
|
|
|
- record->setProjectHtid(jsonObj["project_htid"].toString());
|
|
|
|
- record->setProjectXmbh(jsonObj["project_xmbh"].toString());
|
|
|
|
- record->setOperatorName(jsonObj["operator_name"].toString());
|
|
|
|
- record->setPhone(jsonObj["phone"].toString());
|
|
|
|
- record->setOperatorIdentity(jsonObj["operator_identity"].toString());
|
|
|
|
- record->setEquipmentSn(jsonObj["equipment_sn"].toString());
|
|
|
|
- record->setCompanyCode(jsonObj["company_code"].toString());
|
|
|
|
- record->setAppVersion(jsonObj["app_version"].toString());
|
|
|
|
-
|
|
|
|
- // TODO: 如何获得坐标
|
|
|
|
- record->setLongitude(jsonObj["blast_longitude"].toString().left(10));
|
|
|
|
- record->setLatitude(jsonObj["blast_latitude"].toString().left(10));
|
|
|
|
-
|
|
|
|
- record->setRegDetCount(jsonObj["reg_deto_count"].toString().toInt());
|
|
|
|
- record->setErrorDetCount(jsonObj["error_deto_count"].toString().toInt());
|
|
|
|
- QDateTime blastTime = QDateTime::fromString(jsonObj["blast_time"].toString(), "yyyy-MM-dd hh:mm:ss");
|
|
|
|
- record->setBlastAt(blastTime);
|
|
|
|
- record->setCreatedAt(QDateTime::currentDateTime());
|
|
|
|
-
|
|
|
|
- if (daoProj.addHBlastRecord(*record)) {
|
|
|
|
- qDebug() << "Record inserted successfully.";
|
|
|
|
- return record;
|
|
|
|
- } else {
|
|
|
|
- qDebug() << "Failed to insert record.";
|
|
|
|
- delete record;
|
|
|
|
- return nullptr;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-HBlastEquipmentRecord *firingWidget::recordBlastEquipment(const QString blastProjectUuid, const QJsonObject ®Obj) {
|
|
|
|
- HBlastEquipmentRecord *recordReg = new HBlastEquipmentRecord();
|
|
|
|
- recordReg->setUuid(QUuid::createUuid().toString(QUuid::WithoutBraces).remove(QRegularExpression("-")));
|
|
|
|
- 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;
|
|
|
|
-
|
|
|
|
- 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;
|
|
|
|
-}
|
|
|
|
|
|
+}
|