feat:添加报警事件数据条件过滤模块

This commit is contained in:
duanshengchao 2025-10-27 11:43:13 +08:00
parent b22eedf228
commit 8a524a5e0d
2 changed files with 32 additions and 0 deletions

View File

@ -22,8 +22,11 @@ public:
bool matches(const EventData& event); bool matches(const EventData& event);
void clear(); void clear();
QVector<EventData> apply(const QVector<EventData>& events);
private: private:
bool isEmpty();
QDateTime m_startTime; QDateTime m_startTime;
QDateTime m_endTime; QDateTime m_endTime;
QString m_station; QString m_station;

View File

@ -55,6 +55,35 @@ void AlarmEventDataFilter::clear()
m_status = -1; m_status = -1;
} }
QVector<EventData> AlarmEventDataFilter::apply(const QVector<EventData>& events)
{
if(isEmpty())
return events;
QVector<EventData> filteredEvents;
filteredEvents.reserve(events.size()); //分配好内存防止后面执行append时造成的多次扩容开销
for(const EventData& event : events)
{
if(matches(event))
filteredEvents.append(event);
}
return filteredEvents; //RVO + QT的隐式共享(QVector),不用担心开销
}
bool AlarmEventDataFilter::isEmpty()
{
return !m_startTime.isValid() &&
!m_endTime.isValid() &&
m_station.isEmpty() &&
m_bay.isEmpty() &&
m_type == -1 &&
m_severity.isEmpty() &&
m_description.isEmpty() &&
m_status == -1;
}
///////------AlarmEventDataModel----- ///////------AlarmEventDataModel-----
AlarmEventDataModel::AlarmEventDataModel(QObject* parent) AlarmEventDataModel::AlarmEventDataModel(QObject* parent)