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 historicalQueryError(const QString& msg);
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:
void onRabbitMQConnected();

View File

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

View File

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

View File

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

View File

@ -116,7 +116,7 @@ void AlarmEventDataService::queryHistoricalEvents(const QDateTime& startTime, co
void AlarmEventDataService::confirmEvents(const QStringList& uuids)
{
QUrl url = buildConfirmEventsUrl();
if(url.isValid())
if(!url.isValid())
return;
//创建网络请求
@ -404,6 +404,7 @@ void AlarmEventDataService::onHistoricalRequestFinished(QNetworkReply* reply)
void AlarmEventDataService::onConfirmEventsRequestFinished(QNetworkReply* reply)
{
QStringList successUuids;
if(reply->error() == QNetworkReply::NoError)
{
QByteArray data = reply->readAll();
@ -413,20 +414,33 @@ void AlarmEventDataService::onConfirmEventsRequestFinished(QNetworkReply* reply)
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)));
QJsonValue dataValue = docObj.value("data");
if(dataValue.isObject())
{
QJsonObject dataObj = dataValue.toObject();
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());
}
emit confirmEventsResult(true, "", successUuids);
return;
}
}
}
else
emit confirmEventsResult(false, QString("确认事件失败(Json错误)"));
emit confirmEventsResult(false, QString("确认事件失败(Json错误)"), successUuids);
}
else
{
QString errorMsg = QString("ConfirmEvents error: %1").arg(reply->errorString());
LOG_ERROR("Http", errorMsg);
emit confirmEventsResult(false, QString("确认事件失败(%1)").arg(errorMsg));
emit confirmEventsResult(false, QString("确认事件失败(%1)").arg(errorMsg), successUuids);
}
reply->deleteLater();

View File

@ -282,6 +282,23 @@ void AlarmEventDataModel::updateEventData(int index, const EventData& updatedEve
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()
{
m_displayEvents.clear();
@ -420,13 +437,33 @@ void AlarmEventDataModel::onHistoricalQueryError(const QString& 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)
{
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)
@ -697,7 +734,8 @@ AlarmEventDataView::~AlarmEventDataView()
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)

View File

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

View File

@ -190,6 +190,7 @@ void AlarmEventRealTimeDock::onBtnClicked_close()
void AlarmEventRealTimeDock::onBtnClicked_confirmAll()
{
//stopAlarmAlert();
m_tableView->model()->confirmCurPageEvents();
}
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();
}
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"};
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)
return;
QString formatMessage = formatLogMessage(level, context, message);
QString formatMessage = fromatLogMessage(level, context, message);
if(m_outputToConsole)
QTextStream(stderr) << formatMessage << Qt::endl;
if(m_outputOtFile)