feat:完成查看所有‘历史事件’和‘实时事件’的展示逻辑

This commit is contained in:
duanshengchao 2025-11-25 11:54:16 +08:00
parent 34b38b7f27
commit a01d290469
10 changed files with 59 additions and 33 deletions

View File

@ -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);

View File

@ -58,7 +58,7 @@ public:
//自定义功能函数
const QVector<SectionData> 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);

View File

@ -8,7 +8,8 @@
enum AlarmDataMode
{
RealTime = 0,
Historical
Historical_All, //所有事件
Historical_Unconfirmed //未确认事件(查看所有实时报警事件时用)
};
struct PaginationInfo

View File

@ -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();

View File

@ -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);
}

View File

@ -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()

View File

@ -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()

View File

@ -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;
}

View File

@ -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;

View File

@ -219,7 +219,7 @@ font: 700 18pt &quot;微软雅黑&quot;;
</string>
</property>
<property name="text">
<string>全部事件</string>
<string>历史事件</string>
</property>
</widget>
</item>
@ -546,6 +546,16 @@ icon: url(:/images/icon_configuration.png);
<string>请选择</string>
</property>
</item>
<item>
<property name="text">
<string>未确认</string>
</property>
</item>
<item>
<property name="text">
<string>已确认</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">