feat:完成查看所有‘历史事件’和‘实时事件’的展示逻辑
This commit is contained in:
parent
34b38b7f27
commit
a01d290469
|
|
@ -25,7 +25,7 @@ public:
|
||||||
static AlarmEventDataService* instance();
|
static AlarmEventDataService* instance();
|
||||||
void start();
|
void start();
|
||||||
void stop();
|
void stop();
|
||||||
void queryHistoricalEvents(const QDateTime& startTime, const QDateTime& endTime);
|
void queryHistoricalEvents(const QDateTime& startTime, const QDateTime& endTime, int confirmStatus = -1);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void realTimeEventReceived(const EventData& event);
|
void realTimeEventReceived(const EventData& event);
|
||||||
|
|
@ -58,7 +58,7 @@ private:
|
||||||
EventData parseEventFromMessage(const QByteArray& data, QString& errorString);
|
EventData parseEventFromMessage(const QByteArray& data, QString& errorString);
|
||||||
bool validateEvent(const EventData& event);
|
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);
|
void processHistoricalResponse(const QByteArray& data);
|
||||||
//QNetworkRequest createHistoricalRequest(const QUrl& url);
|
//QNetworkRequest createHistoricalRequest(const QUrl& url);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ public:
|
||||||
|
|
||||||
//自定义功能函数
|
//自定义功能函数
|
||||||
const QVector<SectionData> headerData() const {return m_headerData;}
|
const QVector<SectionData> headerData() const {return m_headerData;}
|
||||||
//void setMode(AlarmDataMode mode);
|
void setMode(AlarmDataMode mode);
|
||||||
void setMaxRealTimeEvents(int value);
|
void setMaxRealTimeEvents(int value);
|
||||||
const int getMaxRealTimeEvents() const {return m_maxRealTimeEvents;}
|
const int getMaxRealTimeEvents() const {return m_maxRealTimeEvents;}
|
||||||
void setFilter(const AlarmEventDataFilter& filter);
|
void setFilter(const AlarmEventDataFilter& filter);
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,8 @@
|
||||||
enum AlarmDataMode
|
enum AlarmDataMode
|
||||||
{
|
{
|
||||||
RealTime = 0,
|
RealTime = 0,
|
||||||
Historical
|
Historical_All, //所有事件
|
||||||
|
Historical_Unconfirmed //未确认事件(查看所有实时报警事件时用)
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PaginationInfo
|
struct PaginationInfo
|
||||||
|
|
|
||||||
|
|
@ -221,6 +221,7 @@ public:
|
||||||
void setSeverityFilter(const QString& severity) {m_severity = severity;}
|
void setSeverityFilter(const QString& severity) {m_severity = severity;}
|
||||||
void setDescriptionFilter(const QString& description) {m_description = description;}
|
void setDescriptionFilter(const QString& description) {m_description = description;}
|
||||||
void setConfirmStatusFilter(int status) {m_status = status;}
|
void setConfirmStatusFilter(int status) {m_status = status;}
|
||||||
|
int confirmStatus() {return m_status;}
|
||||||
|
|
||||||
bool matches(const EventData& event);
|
bool matches(const EventData& event);
|
||||||
void clear();
|
void clear();
|
||||||
|
|
|
||||||
|
|
@ -95,9 +95,9 @@ void AlarmEventDataService::stop()
|
||||||
m_serviceStatus = ServiceStatus::Disconnected;
|
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;
|
//QUrl url = m_config.historicalConfig.baseUrl;
|
||||||
if(!url.isValid())
|
if(!url.isValid())
|
||||||
return;
|
return;
|
||||||
|
|
@ -225,12 +225,16 @@ bool AlarmEventDataService::validateEvent(const EventData& event)
|
||||||
return true;
|
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;
|
QUrl url = m_config.historicalConfig.baseUrl;
|
||||||
QUrlQuery query;
|
QUrlQuery query;
|
||||||
query.addQueryItem("begin", QString::number(startTime.toMSecsSinceEpoch()));
|
query.addQueryItem("begin", QString::number(startTime.toMSecsSinceEpoch()));
|
||||||
query.addQueryItem("end", QString::number(endTime.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);
|
url.setQuery(query);
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
@ -280,7 +284,7 @@ void AlarmEventDataService::processHistoricalResponse(const QByteArray& data)
|
||||||
// ==================== 槽函数 ====================
|
// ==================== 槽函数 ====================
|
||||||
void AlarmEventDataService::onRabbitMQConnected()
|
void AlarmEventDataService::onRabbitMQConnected()
|
||||||
{
|
{
|
||||||
qInfo() << "RabbitMQ connectecd";
|
//qInfo() << "RabbitMQ connectecd";
|
||||||
m_serviceStatus = ServiceStatus::Connected;
|
m_serviceStatus = ServiceStatus::Connected;
|
||||||
//Exchange
|
//Exchange
|
||||||
m_amqpExchange = m_amqpClient->createExchange(m_config.rabbitMQConfig.exchangeName);
|
m_amqpExchange = m_amqpClient->createExchange(m_config.rabbitMQConfig.exchangeName);
|
||||||
|
|
@ -313,7 +317,7 @@ void AlarmEventDataService::onRabbitMQSocketError(QAbstractSocket::SocketError e
|
||||||
|
|
||||||
void AlarmEventDataService::onAmqpQueueOpend()
|
void AlarmEventDataService::onAmqpQueueOpend()
|
||||||
{
|
{
|
||||||
qInfo() << "AmqpQueue opend";
|
//qInfo() << "AmqpQueue opend";
|
||||||
m_amqpQueue->declare(QAmqpQueue::AutoDelete);
|
m_amqpQueue->declare(QAmqpQueue::AutoDelete);
|
||||||
m_amqpQueue->bind(m_amqpExchange, m_config.rabbitMQConfig.routingKey); //对于广播类型的交换机,消息会发送给所有与之绑定的队列,所以此时routingKey无所谓
|
m_amqpQueue->bind(m_amqpExchange, m_config.rabbitMQConfig.routingKey); //对于广播类型的交换机,消息会发送给所有与之绑定的队列,所以此时routingKey无所谓
|
||||||
connect(m_amqpQueue, SIGNAL(messageReceived()), this, SLOT(onMessageReceived()));
|
connect(m_amqpQueue, SIGNAL(messageReceived()), this, SLOT(onMessageReceived()));
|
||||||
|
|
@ -352,7 +356,7 @@ void AlarmEventDataService::onHistoricalRequestFinished(QNetworkReply* reply)
|
||||||
}
|
}
|
||||||
else
|
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);
|
emit historicalQueryError(errorMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
connect(m_simulatedDataTimer, &QTimer::timeout, this, &AlarmEventDataModel::onTimeoutSimulateData);
|
||||||
m_simulatedDataTimer->start(3000);
|
m_simulatedDataTimer->start(3000);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
AlarmEventDataModel::~AlarmEventDataModel()
|
AlarmEventDataModel::~AlarmEventDataModel()
|
||||||
|
|
@ -180,17 +180,17 @@ void AlarmEventDataModel::iniHeaderData()
|
||||||
m_headerData.emplace_back(SectionData("操作", 180, Operation));
|
m_headerData.emplace_back(SectionData("操作", 180, Operation));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*void AlarmEventDataModel::setMode(AlarmDataMode mode)
|
void AlarmEventDataModel::setMode(AlarmDataMode mode)
|
||||||
{
|
{
|
||||||
if(m_dataMode == mode)
|
if(m_dataMode == mode)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_dataMode = mode;
|
m_dataMode = mode;
|
||||||
if(mode == Historical)
|
/*if(mode == Historical_All)
|
||||||
{}
|
{}
|
||||||
else
|
else if(mode == Historical_Unconfirmed)
|
||||||
{}
|
{}*/
|
||||||
}*/
|
}
|
||||||
|
|
||||||
void AlarmEventDataModel::setMaxRealTimeEvents(int count)
|
void AlarmEventDataModel::setMaxRealTimeEvents(int count)
|
||||||
{
|
{
|
||||||
|
|
@ -221,7 +221,7 @@ void AlarmEventDataModel::setMaxRealTimeEvents(int count)
|
||||||
|
|
||||||
void AlarmEventDataModel::setFilter(const AlarmEventDataFilter& filter)
|
void AlarmEventDataModel::setFilter(const AlarmEventDataFilter& filter)
|
||||||
{
|
{
|
||||||
if(m_dataMode != Historical)
|
if(m_dataMode == RealTime)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_currentFilter = filter;
|
m_currentFilter = filter;
|
||||||
|
|
@ -238,8 +238,11 @@ void AlarmEventDataModel::applyFilter()
|
||||||
|
|
||||||
void AlarmEventDataModel::refresh()
|
void AlarmEventDataModel::refresh()
|
||||||
{
|
{
|
||||||
//通过服务获取当前时间段的所有事件-m_allEvents
|
//通过服务获取当前时间段的所有对应类型(所有or确认or未确认)事件-m_allEvents
|
||||||
AlarmEventDataService::instance()->queryHistoricalEvents(m_currentFilter.beginTime(), m_currentFilter.endTime());
|
if(m_dataMode == RealTime)
|
||||||
|
return;
|
||||||
|
|
||||||
|
AlarmEventDataService::instance()->queryHistoricalEvents(m_currentFilter.beginTime(), m_currentFilter.endTime(), m_currentFilter.confirmStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
void AlarmEventDataModel::updatePaginationInfo()
|
void AlarmEventDataModel::updatePaginationInfo()
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
AlarmEventMainDialog::AlarmEventMainDialog(QWidget *parent)
|
AlarmEventMainDialog::AlarmEventMainDialog(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
, ui(new Ui::alarmEventMainDialog)
|
, ui(new Ui::alarmEventMainDialog)
|
||||||
, m_mode(Historical)
|
, m_mode(Historical_All)
|
||||||
, m_pTransparentMask(nullptr)
|
, m_pTransparentMask(nullptr)
|
||||||
, m_pMessageDialog(nullptr)
|
, m_pMessageDialog(nullptr)
|
||||||
{
|
{
|
||||||
|
|
@ -23,7 +23,7 @@ AlarmEventMainDialog::AlarmEventMainDialog(QWidget *parent)
|
||||||
ui->beginTime->setDateTime(beginTime);
|
ui->beginTime->setDateTime(beginTime);
|
||||||
m_eventFilter.setTimeRange(beginTime, endTime);
|
m_eventFilter.setTimeRange(beginTime, endTime);
|
||||||
|
|
||||||
m_tableView = new AlarmEventDataView(Historical, this);
|
m_tableView = new AlarmEventDataView(Historical_All, this);
|
||||||
m_tableView->model()->setFilter(m_eventFilter);
|
m_tableView->model()->setFilter(m_eventFilter);
|
||||||
ui->tableLayout->addWidget(m_tableView);
|
ui->tableLayout->addWidget(m_tableView);
|
||||||
connect(m_tableView->model(), &AlarmEventDataModel::syncDataStatus, this, &AlarmEventMainDialog::onSyncDataStatus);
|
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)
|
void AlarmEventMainDialog::setMode(AlarmDataMode mode)
|
||||||
{
|
{
|
||||||
if(mode == RealTime)
|
if(mode == Historical_Unconfirmed)
|
||||||
{
|
{
|
||||||
ui->label_WindowlTitle->setText("实时报警");
|
ui->label_WindowlTitle->setText("实时事件");
|
||||||
ui->dataFilteringPanel->setVisible(false);
|
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->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;
|
m_mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -112,7 +118,8 @@ void AlarmEventMainDialog::onSyncDataStatus(const PaginationInfo& paginationInfo
|
||||||
|
|
||||||
void AlarmEventMainDialog::onLoadDataError(const QString& error)
|
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()
|
void AlarmEventMainDialog::onBtnClicked_close()
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,8 @@ bool AlarmEventDataFilter::matches(const EventData& event)
|
||||||
if(!m_description.isEmpty() && event.description != m_description)
|
if(!m_description.isEmpty() && event.description != m_description)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(m_status != -1 && event.status != m_status)
|
// if(m_status != -1 && event.status != m_status)
|
||||||
return false;
|
// return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -609,7 +609,7 @@ void DashboardFrame::onBtnClicked_showRealtimeEvents()
|
||||||
connect(m_pAlarmEventMainDialog, SIGNAL(sgl_hide()), this, SLOT(onSignal_subDialogClose()));
|
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 nWidth = this->width() * 0.8;
|
||||||
int nHeight = this->height() * 0.8;
|
int nHeight = this->height() * 0.8;
|
||||||
int nX = this->geometry().x() + (this->width() - nWidth) * 0.5;
|
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()));
|
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 nWidth = this->width() * 0.8;
|
||||||
int nHeight = this->height() * 0.8;
|
int nHeight = this->height() * 0.8;
|
||||||
int nX = this->geometry().x() + (this->width() - nWidth) * 0.5;
|
int nX = this->geometry().x() + (this->width() - nWidth) * 0.5;
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,7 @@ font: 700 18pt "微软雅黑";
|
||||||
</string>
|
</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>全部事件</string>
|
<string>历史事件</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
@ -546,6 +546,16 @@ icon: url(:/images/icon_configuration.png);
|
||||||
<string>请选择</string>
|
<string>请选择</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>未确认</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>已确认</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue