fix:修复‘历史事件列表’中‘确认状态’等属性不同状态下没有区分显示的bug

This commit is contained in:
duanshengchao 2025-12-04 18:05:44 +08:00
parent 001c4459f0
commit 6c8f2e0618
5 changed files with 84 additions and 6 deletions

View File

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

View File

@ -81,6 +81,7 @@ private slots:
void onRealTimeEventReceived(const EventData& event);
void onHistoricalEventsReceived(const QList<EventData>& events);
void onHistoricalQueryError(const QString&);
void onConfirmEventsResult(bool success, const QString& mesg);
private:
void iniHeaderData();

View File

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

View File

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

View File

@ -709,8 +709,9 @@ QHeaderView::section
font: 700 12pt &quot;黑体&quot;;
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