From a2ab901d1d552616b605449ce7fc402ab049dcad Mon Sep 17 00:00:00 2001 From: duanshengchao <519970194@qq.com> Date: Tue, 13 Jan 2026 11:34:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=9E=E6=97=B6=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=B8=AD=E5=A2=9E=E5=8A=A0stop=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/measurementDataManager.h | 5 +++-- source/measurementDataManager.cpp | 22 +++++++++++++++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/include/measurementDataManager.h b/include/measurementDataManager.h index d41af80..9bf6af7 100644 --- a/include/measurementDataManager.h +++ b/include/measurementDataManager.h @@ -1,6 +1,7 @@ #ifndef MEASUREMENTDATAMANAGER_H #define MEASUREMENTDATAMANAGER_H +#include "measurementDataUtils.h" #include #include #include @@ -9,7 +10,6 @@ class QSettings; class QNetworkAccessManager; class QNetworkReply; class WebSocketClient; -class MeasurementData; class MeasurementDataManager : public QObject { @@ -23,7 +23,7 @@ public: void stopSubscription(); void addSubscriptionData(const QStringList& measurements); void removeSubscriptionData(const QStringList& measurements); - void getSubscriptionRealtimeData(); + MeasurementDataPoint getLatestRealtimeData(const QString& dataID); void queryHistoricalEvents(const QString& dataID, const QDateTime& startTime, const QDateTime& endTime, const QString& step, const QString& type = "phasor"); private slots: @@ -76,6 +76,7 @@ private: void processSubscriptionResponse(const QString& action, QNetworkReply* reply); QUrl buildHistoricalQueryUrl(const QString& dataID,const QDateTime& startTime, const QDateTime& endTime, const QString& step, const QString& type); void processHistoricalResponse(const QString& dataID, const QByteArray& data); + void getSubscriptionRealtimeData(); //配置相关 ServiceConfig m_serviceConfig; diff --git a/source/measurementDataManager.cpp b/source/measurementDataManager.cpp index 6f6a293..fc22b0c 100644 --- a/source/measurementDataManager.cpp +++ b/source/measurementDataManager.cpp @@ -1,6 +1,5 @@ #include "measurementDataManager.h" #include "logger.h" -#include "measurementDataUtils.h" #include #include #include @@ -126,6 +125,11 @@ void MeasurementDataManager::removeSubscriptionData(const QStringList& measureme buildSubscriptionRequest("stop", measurements); } +void MeasurementDataManager::stopSubscription() +{ + //暂时不需要,m_webSocketClient析构的时候会断开链接xigous +} + void MeasurementDataManager::processSubscriptionResponse(const QString& action, QNetworkReply* reply) { if(reply->error() == QNetworkReply::NoError) @@ -286,10 +290,22 @@ void MeasurementDataManager::getSubscriptionRealtimeData() if(!m_webSocketClient->connectToServer(url)) { QString errorMsg = QString("Connect to WebSocketServer failed"); - LOG_ERROR("WebSocket", errorMsg); + LOG_ERROR("WebSocket-MeasurementData", errorMsg); } } +MeasurementDataPoint MeasurementDataManager::getLatestRealtimeData(const QString& dataID) +{ + if(!m_dataCache.contains(dataID)) + return MeasurementDataPoint(); + + QVector result = m_dataCache.value(dataID)->getLatestData(1); + if(result.size() > 0) + return result.at(0); + else + return MeasurementDataPoint(); +} + void MeasurementDataManager::queryHistoricalEvents(const QString& dataID, const QDateTime& startTime, const QDateTime& endTime, const QString& step, const QString& type) { QUrl url = buildHistoricalQueryUrl(dataID, startTime, endTime, step, type); @@ -360,7 +376,7 @@ void MeasurementDataManager::onReceiveRealtimeData(const QString& dataMsg) else { QString errorMsg = QString("Realtime measurementData reply Json 'payload' is not object: %1").arg(dataMsg); - LOG_ERROR("WebSockt-MeasurementDat", errorMsg); + LOG_ERROR("WebSockt-MeasurementData", errorMsg); } } else