diff --git a/include/alarmEventDataService.h b/include/alarmEventDataService.h index 92bd770..9e91812 100644 --- a/include/alarmEventDataService.h +++ b/include/alarmEventDataService.h @@ -25,7 +25,7 @@ public: static AlarmEventDataService* instance(); void start(); void stop(); - void queryHistoricalEvents(const QDateTime& startTime, const QDateTime& endTime); + void queryHistoricalEvents(const QDateTime& startTime, const QDateTime& endTime, int confirmStatus = -1); signals: void realTimeEventReceived(const EventData& event); @@ -58,7 +58,7 @@ private: EventData parseEventFromMessage(const QByteArray& data, QString& errorString); bool validateEvent(const EventData& event); //历史数据处理 - QUrl bulidHistoricalQueryUrl(const QDateTime& startTime, const QDateTime& endTime); + QUrl bulidHistoricalQueryUrl(const QDateTime& startTime, const QDateTime& endTime, int confirmStatus); void processHistoricalResponse(const QByteArray& data); //QNetworkRequest createHistoricalRequest(const QUrl& url); diff --git a/include/alarmEventDataView.h b/include/alarmEventDataView.h index 9e55b19..3c162a7 100644 --- a/include/alarmEventDataView.h +++ b/include/alarmEventDataView.h @@ -58,7 +58,7 @@ public: //自定义功能函数 const QVector headerData() const {return m_headerData;} - //void setMode(AlarmDataMode mode); + void setMode(AlarmDataMode mode); void setMaxRealTimeEvents(int value); const int getMaxRealTimeEvents() const {return m_maxRealTimeEvents;} void setFilter(const AlarmEventDataFilter& filter); diff --git a/include/alarmEventGlobal.h b/include/alarmEventGlobal.h index 11872e2..9f1cf88 100644 --- a/include/alarmEventGlobal.h +++ b/include/alarmEventGlobal.h @@ -8,7 +8,8 @@ enum AlarmDataMode { RealTime = 0, - Historical + Historical_All, //所有事件 + Historical_Unconfirmed //未确认事件(查看所有实时报警事件时用) }; struct PaginationInfo diff --git a/include/alarmEventUtils.h b/include/alarmEventUtils.h index e9016f6..6f4c2f6 100644 --- a/include/alarmEventUtils.h +++ b/include/alarmEventUtils.h @@ -221,6 +221,7 @@ public: void setSeverityFilter(const QString& severity) {m_severity = severity;} void setDescriptionFilter(const QString& description) {m_description = description;} void setConfirmStatusFilter(int status) {m_status = status;} + int confirmStatus() {return m_status;} bool matches(const EventData& event); void clear(); diff --git a/source/alarmEventDataService.cpp b/source/alarmEventDataService.cpp index ee8378d..c3429fb 100644 --- a/source/alarmEventDataService.cpp +++ b/source/alarmEventDataService.cpp @@ -95,9 +95,9 @@ void AlarmEventDataService::stop() m_serviceStatus = ServiceStatus::Disconnected; } -void AlarmEventDataService::queryHistoricalEvents(const QDateTime& startTime, const QDateTime& endTime) +void AlarmEventDataService::queryHistoricalEvents(const QDateTime& startTime, const QDateTime& endTime, int confirmStatus) { - QUrl url = bulidHistoricalQueryUrl(startTime, endTime); + QUrl url = bulidHistoricalQueryUrl(startTime, endTime, confirmStatus); //QUrl url = m_config.historicalConfig.baseUrl; if(!url.isValid()) return; @@ -225,12 +225,16 @@ bool AlarmEventDataService::validateEvent(const EventData& event) return true; } -QUrl AlarmEventDataService::bulidHistoricalQueryUrl(const QDateTime& startTime, const QDateTime& endTime) +QUrl AlarmEventDataService::bulidHistoricalQueryUrl(const QDateTime& startTime, const QDateTime& endTime, int confirmStatus) { QUrl url = m_config.historicalConfig.baseUrl; QUrlQuery query; query.addQueryItem("begin", QString::number(startTime.toMSecsSinceEpoch())); query.addQueryItem("end", QString::number(endTime.toMSecsSinceEpoch())); + if(confirmStatus == 0) //未确认 + query.addQueryItem("status", "0,1,2"); + if(confirmStatus == 1) //已确认 + query.addQueryItem("status", "3,4,5"); url.setQuery(query); return url; } @@ -280,7 +284,7 @@ void AlarmEventDataService::processHistoricalResponse(const QByteArray& data) // ==================== 槽函数 ==================== void AlarmEventDataService::onRabbitMQConnected() { - qInfo() << "RabbitMQ connectecd"; + //qInfo() << "RabbitMQ connectecd"; m_serviceStatus = ServiceStatus::Connected; //Exchange m_amqpExchange = m_amqpClient->createExchange(m_config.rabbitMQConfig.exchangeName); @@ -313,7 +317,7 @@ void AlarmEventDataService::onRabbitMQSocketError(QAbstractSocket::SocketError e void AlarmEventDataService::onAmqpQueueOpend() { - qInfo() << "AmqpQueue opend"; + //qInfo() << "AmqpQueue opend"; m_amqpQueue->declare(QAmqpQueue::AutoDelete); m_amqpQueue->bind(m_amqpExchange, m_config.rabbitMQConfig.routingKey); //对于广播类型的交换机,消息会发送给所有与之绑定的队列,所以此时routingKey无所谓 connect(m_amqpQueue, SIGNAL(messageReceived()), this, SLOT(onMessageReceived())); @@ -352,7 +356,7 @@ void AlarmEventDataService::onHistoricalRequestFinished(QNetworkReply* reply) } else { - QString errorMsg = QString("Request HistoricalEvents error: %1").arg(reply->errorString()); + QString errorMsg = QString("Request HistoricalData error: %1").arg(/*reply->request().url().toDisplayString(),*/ reply->errorString()); emit historicalQueryError(errorMsg); } diff --git a/source/alarmEventDataView.cpp b/source/alarmEventDataView.cpp index 9402219..36fae81 100644 --- a/source/alarmEventDataView.cpp +++ b/source/alarmEventDataView.cpp @@ -37,9 +37,9 @@ AlarmEventDataModel::AlarmEventDataModel(AlarmDataMode mode, QObject* parent) } //实时数据测试 - m_simulatedDataTimer = new QTimer(this); + /*m_simulatedDataTimer = new QTimer(this); connect(m_simulatedDataTimer, &QTimer::timeout, this, &AlarmEventDataModel::onTimeoutSimulateData); - m_simulatedDataTimer->start(3000); + m_simulatedDataTimer->start(3000);*/ } AlarmEventDataModel::~AlarmEventDataModel() @@ -180,17 +180,17 @@ void AlarmEventDataModel::iniHeaderData() m_headerData.emplace_back(SectionData("操作", 180, Operation)); } -/*void AlarmEventDataModel::setMode(AlarmDataMode mode) +void AlarmEventDataModel::setMode(AlarmDataMode mode) { if(m_dataMode == mode) return; m_dataMode = mode; - if(mode == Historical) + /*if(mode == Historical_All) {} - else - {} -}*/ + else if(mode == Historical_Unconfirmed) + {}*/ +} void AlarmEventDataModel::setMaxRealTimeEvents(int count) { @@ -221,7 +221,7 @@ void AlarmEventDataModel::setMaxRealTimeEvents(int count) void AlarmEventDataModel::setFilter(const AlarmEventDataFilter& filter) { - if(m_dataMode != Historical) + if(m_dataMode == RealTime) return; m_currentFilter = filter; @@ -238,8 +238,11 @@ void AlarmEventDataModel::applyFilter() void AlarmEventDataModel::refresh() { - //通过服务获取当前时间段的所有事件-m_allEvents - AlarmEventDataService::instance()->queryHistoricalEvents(m_currentFilter.beginTime(), m_currentFilter.endTime()); + //通过服务获取当前时间段的所有对应类型(所有or确认or未确认)事件-m_allEvents + if(m_dataMode == RealTime) + return; + + AlarmEventDataService::instance()->queryHistoricalEvents(m_currentFilter.beginTime(), m_currentFilter.endTime(), m_currentFilter.confirmStatus()); } void AlarmEventDataModel::updatePaginationInfo() diff --git a/source/alarmEventMainDialog.cpp b/source/alarmEventMainDialog.cpp index 0c5e140..1d56c9c 100644 --- a/source/alarmEventMainDialog.cpp +++ b/source/alarmEventMainDialog.cpp @@ -8,7 +8,7 @@ AlarmEventMainDialog::AlarmEventMainDialog(QWidget *parent) : QDialog(parent) , ui(new Ui::alarmEventMainDialog) - , m_mode(Historical) + , m_mode(Historical_All) , m_pTransparentMask(nullptr) , m_pMessageDialog(nullptr) { @@ -23,7 +23,7 @@ AlarmEventMainDialog::AlarmEventMainDialog(QWidget *parent) ui->beginTime->setDateTime(beginTime); m_eventFilter.setTimeRange(beginTime, endTime); - m_tableView = new AlarmEventDataView(Historical, this); + m_tableView = new AlarmEventDataView(Historical_All, this); m_tableView->model()->setFilter(m_eventFilter); ui->tableLayout->addWidget(m_tableView); connect(m_tableView->model(), &AlarmEventDataModel::syncDataStatus, this, &AlarmEventMainDialog::onSyncDataStatus); @@ -84,17 +84,23 @@ void AlarmEventMainDialog::showMessageDialog(MessageDialogType type,const QStrin void AlarmEventMainDialog::setMode(AlarmDataMode mode) { - if(mode == RealTime) + if(mode == Historical_Unconfirmed) { - ui->label_WindowlTitle->setText("实时报警"); - ui->dataFilteringPanel->setVisible(false); + ui->label_WindowlTitle->setText("实时事件"); + ui->conboBox_confirmStatus->setEnabled(false); + ui->conboBox_confirmStatus->setCurrentIndex(1); + m_eventFilter.setConfirmStatusFilter(0); } - else + else if(mode == Historical_All) { ui->label_WindowlTitle->setText("历史事件"); - ui->dataFilteringPanel->setVisible(true); + ui->conboBox_confirmStatus->setEnabled(true); + ui->conboBox_confirmStatus->setCurrentIndex(0); + m_eventFilter.setConfirmStatusFilter(-1); //-1表示所有事件(确认+未确认) } + m_tableView->model()->setMode(mode); + m_tableView->model()->setFilter(m_eventFilter); m_mode = mode; } @@ -112,7 +118,8 @@ void AlarmEventMainDialog::onSyncDataStatus(const PaginationInfo& paginationInfo void AlarmEventMainDialog::onLoadDataError(const QString& error) { - showMessageDialog(type_information, QString("错误"), QString("加载数据失败(%1)").arg(error)); + showTransparentMask(); + showMessageDialog(type_warning, QString("错误"), QString("加载数据失败(%1)").arg(error)); } void AlarmEventMainDialog::onBtnClicked_close() diff --git a/source/alarmEventUtils.cpp b/source/alarmEventUtils.cpp index 5052f5c..8f1cd19 100644 --- a/source/alarmEventUtils.cpp +++ b/source/alarmEventUtils.cpp @@ -53,8 +53,8 @@ bool AlarmEventDataFilter::matches(const EventData& event) if(!m_description.isEmpty() && event.description != m_description) return false; - if(m_status != -1 && event.status != m_status) - return false; + // if(m_status != -1 && event.status != m_status) + // return false; return true; } diff --git a/source/dashboardFrame.cpp b/source/dashboardFrame.cpp index 2385504..a92b785 100644 --- a/source/dashboardFrame.cpp +++ b/source/dashboardFrame.cpp @@ -609,7 +609,7 @@ void DashboardFrame::onBtnClicked_showRealtimeEvents() connect(m_pAlarmEventMainDialog, SIGNAL(sgl_hide()), this, SLOT(onSignal_subDialogClose())); } - m_pAlarmEventMainDialog->setMode(RealTime); + m_pAlarmEventMainDialog->setMode(Historical_Unconfirmed); int nWidth = this->width() * 0.8; int nHeight = this->height() * 0.8; int nX = this->geometry().x() + (this->width() - nWidth) * 0.5; @@ -628,7 +628,7 @@ void DashboardFrame::onBtnClicked_showHistoricalEvents() connect(m_pAlarmEventMainDialog, SIGNAL(sgl_hide()), this, SLOT(onSignal_subDialogClose())); } - m_pAlarmEventMainDialog->setMode(Historical); + m_pAlarmEventMainDialog->setMode(Historical_All); int nWidth = this->width() * 0.8; int nHeight = this->height() * 0.8; int nX = this->geometry().x() + (this->width() - nWidth) * 0.5; diff --git a/ui/alarmEventMainDialog.ui b/ui/alarmEventMainDialog.ui index a7ee1dd..93980ad 100644 --- a/ui/alarmEventMainDialog.ui +++ b/ui/alarmEventMainDialog.ui @@ -219,7 +219,7 @@ font: 700 18pt "微软雅黑"; - 全部事件 + 历史事件 @@ -546,6 +546,16 @@ icon: url(:/images/icon_configuration.png); 请选择 + + + 未确认 + + + + + 已确认 + +