diff --git a/include/alarmEventDataService.h b/include/alarmEventDataService.h index 9e91812..fe89e0c 100644 --- a/include/alarmEventDataService.h +++ b/include/alarmEventDataService.h @@ -26,21 +26,24 @@ public: void start(); void stop(); void queryHistoricalEvents(const QDateTime& startTime, const QDateTime& endTime, int confirmStatus = -1); + void confirmEvents(const QStringList& uuids); signals: void realTimeEventReceived(const EventData& event); void historicalQueryError(const QString& msg); void historicalQueryData(const QList& events); + void confirmEventsResult(bool success, const QString& mesg); private slots: void onRabbitMQConnected(); void onRabbitMQDisconnected(); void onRabbitMQError(QAMQP::Error error); void onRabbitMQSocketError(QAbstractSocket::SocketError error); - void onAmqpQueueOpend(); + void onAmqpQueueOpened(); void onMessageReceived(); void onReconnectTimeout(); void onHistoricalRequestFinished(QNetworkReply* reply); + void onConfirmEventsRequestFinished(QNetworkReply* reply); private: explicit AlarmEventDataService(); @@ -61,6 +64,8 @@ private: QUrl bulidHistoricalQueryUrl(const QDateTime& startTime, const QDateTime& endTime, int confirmStatus); void processHistoricalResponse(const QByteArray& data); //QNetworkRequest createHistoricalRequest(const QUrl& url); + //事件确认 + QUrl buildConfirmEventsUrl(); ServiceConfig m_config; ServiceStatus m_serviceStatus; diff --git a/include/alarmEventDataView.h b/include/alarmEventDataView.h index 16e939b..c292f45 100644 --- a/include/alarmEventDataView.h +++ b/include/alarmEventDataView.h @@ -81,6 +81,7 @@ private slots: void onRealTimeEventReceived(const EventData& event); void onHistoricalEventsReceived(const QList& events); void onHistoricalQueryError(const QString&); + void onConfirmEventsResult(bool success, const QString& mesg); private: void iniHeaderData(); diff --git a/source/alarmEventDataService.cpp b/source/alarmEventDataService.cpp index 7ebf4b1..8866324 100644 --- a/source/alarmEventDataService.cpp +++ b/source/alarmEventDataService.cpp @@ -113,6 +113,29 @@ void AlarmEventDataService::queryHistoricalEvents(const QDateTime& startTime, co }); } +void AlarmEventDataService::confirmEvents(const QStringList& uuids) +{ + QUrl url = buildConfirmEventsUrl(); + if(url.isValid()) + return; + + //创建网络请求 + QNetworkRequest request(url); + request.setTransferTimeout(m_config.historicalConfig.timeout); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + //将uuis转换为json数组 + QJsonArray jsonArray; + for(const QString& uuid : uuids) + jsonArray.append(uuid); + QJsonDocument doc(jsonArray); + QByteArray jsonData = doc.toJson(); + //发送请求 + QNetworkReply* reply = m_networkManager->post(request, jsonData); + connect(reply, &QNetworkReply::finished, this, [this, reply](){ + onConfirmEventsRequestFinished(reply); + }); +} + void AlarmEventDataService::startRealTimeDataService() { cleanupRabbitMQConnection(); @@ -282,6 +305,15 @@ void AlarmEventDataService::processHistoricalResponse(const QByteArray& data) emit historicalQueryData(historicalEvents); } +QUrl AlarmEventDataService::buildConfirmEventsUrl() +{ + QUrl url = m_config.historicalConfig.baseUrl; + QUrlQuery query; + query.addQueryItem("status", "3"); + url.setQuery(query); + return url; +} + // ==================== 槽函数 ==================== void AlarmEventDataService::onRabbitMQConnected() { @@ -292,7 +324,7 @@ void AlarmEventDataService::onRabbitMQConnected() m_amqpExchange->declare(QAmqpExchange::FanOut, QAmqpExchange::Durable); //Queue m_amqpQueue = m_amqpClient->createQueue(m_config.rabbitMQConfig.queueName); - connect(m_amqpQueue, SIGNAL(opened()), this, SLOT(onAmqpQueueOpend())); + connect(m_amqpQueue, SIGNAL(opened()), this, SLOT(onAmqpQueueOpened())); } void AlarmEventDataService::onRabbitMQDisconnected() @@ -319,7 +351,7 @@ void AlarmEventDataService::onRabbitMQSocketError(QAbstractSocket::SocketError e scheduleReconnect(); } -void AlarmEventDataService::onAmqpQueueOpend() +void AlarmEventDataService::onAmqpQueueOpened() { LOG_INFO("RabbitMQ", "AmqpQueue opend"); m_amqpQueue->declare(QAmqpQueue::AutoDelete); @@ -369,3 +401,33 @@ void AlarmEventDataService::onHistoricalRequestFinished(QNetworkReply* reply) reply->deleteLater(); } + +void AlarmEventDataService::onConfirmEventsRequestFinished(QNetworkReply* reply) +{ + if(reply->error() == QNetworkReply::NoError) + { + QByteArray data = reply->readAll(); + QJsonParseError parseError; + QJsonDocument doc = QJsonDocument::fromJson(data, &parseError); + + if(parseError.error == QJsonParseError::NoError && doc.isObject()) + { + QJsonObject docObj = doc.object(); + int code = docObj.value("code").toInt(); + if(code == 0) + emit confirmEventsResult(true, ""); + else + emit confirmEventsResult(false, QString("确认事件失败, error code = %1").arg(QString::number(code))); + } + else + emit confirmEventsResult(false, QString("确认事件失败(Json错误)")); + } + else + { + QString errorMsg = QString("ConfirmEvents error: %1").arg(reply->errorString()); + LOG_ERROR("Http", errorMsg); + emit confirmEventsResult(false, QString("确认事件失败(%1)").arg(errorMsg)); + } + + reply->deleteLater(); +} diff --git a/source/alarmEventDataView.cpp b/source/alarmEventDataView.cpp index 9811aaf..edaa30b 100644 --- a/source/alarmEventDataView.cpp +++ b/source/alarmEventDataView.cpp @@ -36,6 +36,7 @@ AlarmEventDataModel::AlarmEventDataModel(AlarmDataMode mode, QObject* parent) { connect(AlarmEventDataService::instance(), &AlarmEventDataService::historicalQueryData, this, &AlarmEventDataModel::onHistoricalEventsReceived); connect(AlarmEventDataService::instance(), &AlarmEventDataService::historicalQueryError, this, &AlarmEventDataModel::onHistoricalQueryError); + connect(AlarmEventDataService::instance(), &AlarmEventDataService::confirmEventsResult, this, &AlarmEventDataModel::onConfirmEventsResult); } //实时数据测试 @@ -419,6 +420,15 @@ void AlarmEventDataModel::onHistoricalQueryError(const QString& error) emit loadDataError(error); } +void AlarmEventDataModel::onConfirmEventsResult(bool success, const QString& mesg) +{ + if(!success) + { + return; + } + //从列表中进行删除 +} + bool AlarmEventDataModel::setCurrentPage(int page) { if(m_paginationInfo.currentPage != page && page > 0 && page <= m_paginationInfo.totalPages) diff --git a/ui/alarmEventMainDialog.ui b/ui/alarmEventMainDialog.ui index b7ade39..979577a 100644 --- a/ui/alarmEventMainDialog.ui +++ b/ui/alarmEventMainDialog.ui @@ -709,8 +709,9 @@ QHeaderView::section font: 700 12pt "黑体"; color: rgb(250, 250, 250); background-color:transparent; - border:0px; - border-right: 1px solid rgb(60,60,60); + padding-left:-1px; + border: 0px; + border-right: 1px dotted rgb(60,60,60); } QHeaderView::section:horizontal:last { @@ -726,7 +727,6 @@ QTableView } QTableView::item { - color: rgb(250, 250, 250); background-color:transparent; } QTableView::item:hover