feat:完成事件确认的操作逻辑

This commit is contained in:
duanshengchao 2025-12-09 10:30:05 +08:00
parent 6c8f2e0618
commit 8e3239fe71
9 changed files with 81 additions and 17 deletions

View File

@ -32,7 +32,7 @@ signals:
void realTimeEventReceived(const EventData& event); void realTimeEventReceived(const EventData& event);
void historicalQueryError(const QString& msg); void historicalQueryError(const QString& msg);
void historicalQueryData(const QList<EventData>& events); void historicalQueryData(const QList<EventData>& events);
void confirmEventsResult(bool success, const QString& mesg); void confirmEventsResult(bool success, const QString& mesg, const QStringList& successUuids);
private slots: private slots:
void onRabbitMQConnected(); void onRabbitMQConnected();

View File

@ -63,6 +63,8 @@ public:
const int getMaxRealTimeEvents() const {return m_maxRealTimeEvents;} const int getMaxRealTimeEvents() const {return m_maxRealTimeEvents;}
void setFilter(const AlarmEventDataFilter& filter); void setFilter(const AlarmEventDataFilter& filter);
void refresh(); void refresh();
void confirmEvent(const QModelIndex);
void confirmCurPageEvents();
bool setCurrentPage(int); bool setCurrentPage(int);
int currentPage() const; int currentPage() const;
@ -81,7 +83,7 @@ private slots:
void onRealTimeEventReceived(const EventData& event); void onRealTimeEventReceived(const EventData& event);
void onHistoricalEventsReceived(const QList<EventData>& events); void onHistoricalEventsReceived(const QList<EventData>& events);
void onHistoricalQueryError(const QString&); void onHistoricalQueryError(const QString&);
void onConfirmEventsResult(bool success, const QString& mesg); void onConfirmEventsResult(bool success, const QString& mesg, const QStringList& successUuids);
private: private:
void iniHeaderData(); void iniHeaderData();
@ -102,6 +104,8 @@ private:
AlarmDataMode m_dataMode; AlarmDataMode m_dataMode;
AlarmEventDataFilter m_currentFilter; AlarmEventDataFilter m_currentFilter;
int m_maxRealTimeEvents; int m_maxRealTimeEvents;
//QMap<qint64, QVector<QModelIndex>> m_confirmedEvents;
}; };
class AlarmEventDataDelegate : public QStyledItemDelegate class AlarmEventDataDelegate : public QStyledItemDelegate

View File

@ -45,6 +45,7 @@ private slots:
public slots: public slots:
void onBtnClicked_close(); void onBtnClicked_close();
void onBtnClicked_confirmAll();
void onBtnClicked_firstPage(); void onBtnClicked_firstPage();
void onBtnClicked_previousPage(); void onBtnClicked_previousPage();

View File

@ -46,7 +46,7 @@ private:
void writeToFile(const QString&); void writeToFile(const QString&);
void rollLogFiles(); //当文件大小超过设置上线时会触发'滚动' void rollLogFiles(); //当文件大小超过设置上线时会触发'滚动'
QString formatLogMessage(LogLevel, const QString&, const QString&); QString fromatLogMessage(LogLevel, const QString&, const QString&);
struct LogEntry struct LogEntry
{ {

View File

@ -116,7 +116,7 @@ void AlarmEventDataService::queryHistoricalEvents(const QDateTime& startTime, co
void AlarmEventDataService::confirmEvents(const QStringList& uuids) void AlarmEventDataService::confirmEvents(const QStringList& uuids)
{ {
QUrl url = buildConfirmEventsUrl(); QUrl url = buildConfirmEventsUrl();
if(url.isValid()) if(!url.isValid())
return; return;
//创建网络请求 //创建网络请求
@ -404,6 +404,7 @@ void AlarmEventDataService::onHistoricalRequestFinished(QNetworkReply* reply)
void AlarmEventDataService::onConfirmEventsRequestFinished(QNetworkReply* reply) void AlarmEventDataService::onConfirmEventsRequestFinished(QNetworkReply* reply)
{ {
QStringList successUuids;
if(reply->error() == QNetworkReply::NoError) if(reply->error() == QNetworkReply::NoError)
{ {
QByteArray data = reply->readAll(); QByteArray data = reply->readAll();
@ -413,20 +414,33 @@ void AlarmEventDataService::onConfirmEventsRequestFinished(QNetworkReply* reply)
if(parseError.error == QJsonParseError::NoError && doc.isObject()) if(parseError.error == QJsonParseError::NoError && doc.isObject())
{ {
QJsonObject docObj = doc.object(); QJsonObject docObj = doc.object();
int code = docObj.value("code").toInt(); QJsonValue dataValue = docObj.value("data");
if(code == 0) if(dataValue.isObject())
emit confirmEventsResult(true, ""); {
else QJsonObject dataObj = dataValue.toObject();
emit confirmEventsResult(false, QString("确认事件失败, error code = %1").arg(QString::number(code))); QJsonValue uuidValue = dataObj.value("success_uuids");
if(uuidValue.isArray())
{
QJsonArray uuidArray = uuidValue.toArray();
for(const QJsonValue& value : uuidArray)
{
if(value.isString())
successUuids.append(value.toString());
} }
else
emit confirmEventsResult(false, QString("确认事件失败(Json错误)")); emit confirmEventsResult(true, "", successUuids);
return;
}
}
}
emit confirmEventsResult(false, QString("确认事件失败(Json错误)"), successUuids);
} }
else else
{ {
QString errorMsg = QString("ConfirmEvents error: %1").arg(reply->errorString()); QString errorMsg = QString("ConfirmEvents error: %1").arg(reply->errorString());
LOG_ERROR("Http", errorMsg); LOG_ERROR("Http", errorMsg);
emit confirmEventsResult(false, QString("确认事件失败(%1)").arg(errorMsg)); emit confirmEventsResult(false, QString("确认事件失败(%1)").arg(errorMsg), successUuids);
} }
reply->deleteLater(); reply->deleteLater();

View File

@ -282,6 +282,23 @@ void AlarmEventDataModel::updateEventData(int index, const EventData& updatedEve
emit dataChanged(modelIndex, modelIndex); emit dataChanged(modelIndex, modelIndex);
} }
void AlarmEventDataModel::confirmEvent(const QModelIndex index)
{
int row = index.row();
QString uuid = m_displayEvents.at(row).id;
QStringList uuids;
uuids.append(uuid);
AlarmEventDataService::instance()->confirmEvents(uuids);
}
void AlarmEventDataModel::confirmCurPageEvents()
{
QStringList uuids;
for(const EventData& event : m_displayEvents)
uuids.append(event.id);
AlarmEventDataService::instance()->confirmEvents(uuids);
}
void AlarmEventDataModel::updateCurPageData() void AlarmEventDataModel::updateCurPageData()
{ {
m_displayEvents.clear(); m_displayEvents.clear();
@ -420,13 +437,33 @@ void AlarmEventDataModel::onHistoricalQueryError(const QString& error)
emit loadDataError(error); emit loadDataError(error);
} }
void AlarmEventDataModel::onConfirmEventsResult(bool success, const QString& mesg) void AlarmEventDataModel::onConfirmEventsResult(bool success, const QString& mesg, const QStringList& successUuids)
{ {
if(!success) if(!success)
{ {
return; return;
} }
//从列表中进行删除
if(m_dataMode == RealTime)
{
beginResetModel();
for(const QString& uuid : successUuids)
{
for(EventData& event : m_displayEvents)
{
if(event.id == uuid)
{
event.status = 3;
break;
}
}
}
endResetModel();
}
else
refresh();
} }
bool AlarmEventDataModel::setCurrentPage(int page) bool AlarmEventDataModel::setCurrentPage(int page)
@ -697,7 +734,8 @@ AlarmEventDataView::~AlarmEventDataView()
void AlarmEventDataView::onBtnClicked_Confirm(const QModelIndex& index) void AlarmEventDataView::onBtnClicked_Confirm(const QModelIndex& index)
{ {
qDebug() << QString("confirmBtnClicked, row: %1").arg(index.row()); //qDebug() << QString("confirmBtnClicked, row: %1").arg(index.row());
m_tableModel->confirmEvent(index);
} }
void AlarmEventDataView::onBtnClicked_Replay(const QModelIndex& index) void AlarmEventDataView::onBtnClicked_Replay(const QModelIndex& index)

View File

@ -40,6 +40,7 @@ AlarmEventMainDialog::AlarmEventMainDialog(QWidget *parent)
connect(m_tableView->model(), &AlarmEventDataModel::loadDataError, this, &AlarmEventMainDialog::onLoadDataError); connect(m_tableView->model(), &AlarmEventDataModel::loadDataError, this, &AlarmEventMainDialog::onLoadDataError);
connect(ui->btnClose, &QPushButton::clicked, this, &AlarmEventMainDialog::onBtnClicked_close); connect(ui->btnClose, &QPushButton::clicked, this, &AlarmEventMainDialog::onBtnClicked_close);
connect(ui->btnConfirmAll, &QPushButton::clicked, this, &AlarmEventMainDialog::onBtnClicked_confirmAll);
connect(ui->btnFirstPage, &QPushButton::clicked, this, &AlarmEventMainDialog::onBtnClicked_firstPage); connect(ui->btnFirstPage, &QPushButton::clicked, this, &AlarmEventMainDialog::onBtnClicked_firstPage);
connect(ui->btnPreviousPage, &QPushButton::clicked, this, &AlarmEventMainDialog::onBtnClicked_previousPage); connect(ui->btnPreviousPage, &QPushButton::clicked, this, &AlarmEventMainDialog::onBtnClicked_previousPage);
@ -231,6 +232,11 @@ void AlarmEventMainDialog::onBtnClicked_close()
emit sgl_hide(); emit sgl_hide();
} }
void AlarmEventMainDialog::onBtnClicked_confirmAll()
{
m_tableView->model()->confirmCurPageEvents();
}
void AlarmEventMainDialog::onBtnClicked_firstPage() void AlarmEventMainDialog::onBtnClicked_firstPage()
{ {
m_tableView->model()->firstPage(); m_tableView->model()->firstPage();

View File

@ -190,6 +190,7 @@ void AlarmEventRealTimeDock::onBtnClicked_close()
void AlarmEventRealTimeDock::onBtnClicked_confirmAll() void AlarmEventRealTimeDock::onBtnClicked_confirmAll()
{ {
//stopAlarmAlert(); //stopAlarmAlert();
m_tableView->model()->confirmCurPageEvents();
} }
void AlarmEventRealTimeDock::onBtnClicked_checkAll() void AlarmEventRealTimeDock::onBtnClicked_checkAll()

View File

@ -141,7 +141,7 @@ void Logger::rollLogFiles()
qWarning() << "Failed to open new log file after rolling:" << m_logFile.errorString(); qWarning() << "Failed to open new log file after rolling:" << m_logFile.errorString();
} }
QString Logger::formatLogMessage(LogLevel level, const QString& context, const QString& message) QString Logger::fromatLogMessage(LogLevel level, const QString& context, const QString& message)
{ {
static const char* levelStrings[] = {"FATAL", "ERROR", "WARNING", "INFO", "DEBUG"}; static const char* levelStrings[] = {"FATAL", "ERROR", "WARNING", "INFO", "DEBUG"};
return QString("[%1] [%2] [%3] %4") return QString("[%1] [%2] [%3] %4")
@ -156,7 +156,7 @@ void Logger::log(LogLevel level, const QString& context, const QString& message)
if(level > m_logLevel) if(level > m_logLevel)
return; return;
QString formatMessage = formatLogMessage(level, context, message); QString formatMessage = fromatLogMessage(level, context, message);
if(m_outputToConsole) if(m_outputToConsole)
QTextStream(stderr) << formatMessage << Qt::endl; QTextStream(stderr) << formatMessage << Qt::endl;
if(m_outputOtFile) if(m_outputOtFile)