fix header include configManager

This commit is contained in:
baiYue 2025-12-15 14:38:17 +08:00
parent 314d53ab98
commit a2b45ca406
10 changed files with 196 additions and 10 deletions

View File

@ -19,6 +19,7 @@ class MonitorPanel;
class CornerMonitorLauncher;
class LoadMonitorPageDlg;
class DiagramConnectSetting;
class DataAccessor;
class DIAGRAM_DESIGNER_PUBLIC DiagramCavas : public QMdiArea
{
@ -108,6 +109,7 @@ private:
CornerMonitorLauncher* _cornerButton; //简略菜单呼出按钮
LoadMonitorPageDlg* _loadMonitorPageDlg;
DiagramConnectSetting* _connectSetting;
DataAccessor* _dataAccessor;
};
#endif

View File

@ -4,6 +4,7 @@
/*********中转、处理网络数据*********/
#include <QObject>
#include <QMap>
#include <QMutex>
class DataAccessor : public QObject
{
@ -11,8 +12,12 @@ class DataAccessor : public QObject
public:
DataAccessor(QObject *parent = nullptr);
~DataAccessor();
public slots:
void onReceiveHttpData(const QString& sType,const QVariant& data);
void onReceiveWebsocketData(const QVariant& data);
private:
QMap<QString,QMap<quint64,double>> _realTimeData;
mutable QMutex m_mutex;
};
#endif

View File

@ -21,12 +21,15 @@
#include "diagramConnectSetting.h"
#include "diagramCommunication/include/communicationManager.h"
#include "diagramCommunication/include/configManager.h"
#include "instance/dataAccessor.h"
#include "uiCommunicationBus.h"
DiagramCavas::DiagramCavas(QWidget *parent)
: QMdiArea(parent)
,_cornerButton(nullptr)
,_loadMonitorPageDlg(nullptr)
,_connectSetting(nullptr)
,_dataAccessor(nullptr)
{
_pageIndex = 0;
}
@ -94,6 +97,18 @@ void DiagramCavas::initial()
// 应用配置
comm->updateHttpConfig(config->getHttpConfig());
comm->updateWebSocketConfig(config->getWebSocketConfig());
_dataAccessor = new DataAccessor(this);
connect(UiCommunicationBus::instance(),
SIGNAL(httpDataProcessed(QString,QVariant)),
_dataAccessor,
SLOT(onReceiveHttpData(QString,QVariant)),
Qt::AutoConnection);
connect(UiCommunicationBus::instance(),
SIGNAL(websocketDataProcessed(QVariant)),
_dataAccessor,
SLOT(onReceiveWebsocketData(QVariant)),
Qt::AutoConnection);
}
void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,QString parent)

View File

@ -1,4 +1,7 @@
#include "instance/dataAccessor.h"
#include <QVariant>
#include <QJsonObject>
#include <QJsonArray>
DataAccessor::DataAccessor(QObject* parent)
: QObject(parent)
@ -10,3 +13,55 @@ DataAccessor::~DataAccessor()
{
}
void DataAccessor::onReceiveHttpData(const QString& sType,const QVariant& data)
{
if(sType == "subscriptions"){
QJsonObject dataObj = data.toJsonObject();
QString sClientId = dataObj.value("client_id").toString();
QMap<QString,QString> lstRequest;
QJsonArray measureArr = dataObj.value("measurements").toArray();
for(const QJsonValue& value : measureArr){
QJsonObject obj = value.toObject();
QString sId = obj["id"].toString();
QString sCode = obj["code"].toString();
if(sId == "1001"){
if(!lstRequest.contains(sId)){
lstRequest.insert(sId,sCode);
}
}
}
/*QString input = dataObj.value("input").toString();
int offSet = dataObj.value("offset").toInt();
QJsonArray recommendedList = dataObj.value("recommended_list").toArray();
for(const QJsonValue& value : recommendedList){
QString content = value.toString();
}*/
}
}
void DataAccessor::onReceiveWebsocketData(const QVariant& data)
{
QJsonObject dataObj = data.toJsonObject();
if(dataObj.contains("targets")){
QJsonArray arrTarget = dataObj.value("targets").toArray();
for (const QJsonValue& value : arrTarget) {
QJsonObject targetObj = value.toObject();
QString targetId = targetObj["id"].toString();
QJsonArray arrData = targetObj["datas"].toArray();
for (const QJsonValue& data : arrData){
QJsonObject dataObj = data.toObject();
QString sTime = dataObj["time"].toString();
bool ok = false;
quint64 value = sTime.toULongLong(&ok);
if (ok) {
// 使用 value
}
double dVal = dataObj["value"].toDouble();
}
}
}
QMutexLocker locker(&m_mutex);
}

View File

@ -0,0 +1,58 @@
project(diagramCommunication)
set(DIAGRACOMMUNICATION_HEADER_FILES
include/channelConfig.h
include/baseChannel.h
include/communicationManager.h
include/httpChannel.h
include/webSocketChannel.h
include/configManager.h
include/uiCommunicationBus.h
include/dataProcessor.h
../common/include/compiler.hpp
../common/include/export.hpp
../common/include/operatingSystem.hpp
)
set(DIAGRACOMMUNICATION_SOURCE_FILES
source/communicationManager.cpp
source/baseChannel.cpp
source/webSocketChannel.cpp
source/httpChannel.cpp
source/configManager.cpp
source/uiCommunicationBus.cpp
source/dataProcessor.cpp
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_library(diagramCommunication SHARED
MANUAL_FINALIZATION
${DIAGRACOMMUNICATION_HEADER_FILES}
${DIAGRACOMMUNICATION_SOURCE_FILES}
)
else()
add_library(diagramCommunication SHARED
${DIAGRACOMMUNICATION_HEADER_FILES}
${DIAGRACOMMUNICATION_SOURCE_FILES}
)
endif()
target_link_libraries(diagramCommunication PUBLIC Qt${QT_VERSION_MAJOR}::Core)
target_link_libraries(diagramCommunication PRIVATE Qt6::Xml)
target_link_libraries(diagramCommunication PRIVATE Qt6::Network)
target_link_libraries(diagramCommunication PRIVATE Qt6::WebSockets)
target_link_libraries(diagramCommunication PRIVATE Qt6::Sql ${PostgreSQL_LIBRARIES})
option(BUILD_SHARED_LIBS "Build as shared library" ON)
target_include_directories(diagramCommunication PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_compile_definitions(diagramCommunication
PUBLIC
DIAGRAM_DESIGNER_SHARED
PRIVATE
DIAGRAM_DESIGNER_EXPORTS
#QT_NO_KEYWORDS
)

View File

@ -0,0 +1,58 @@
project(diagramCommunication)
set(DIAGRACOMMUNICATION_HEADER_FILES
include/channelConfig.h
include/baseChannel.h
include/communicationManager.h
include/httpChannel.h
include/webSocketChannel.h
include/configManager.h
include/uiCommunicationBus.h
include/dataProcessor.h
../common/include/compiler.hpp
../common/include/export.hpp
../common/include/operatingSystem.hpp
)
set(DIAGRACOMMUNICATION_SOURCE_FILES
source/communicationManager.cpp
source/baseChannel.cpp
source/webSocketChannel.cpp
source/httpChannel.cpp
source/configManager.cpp
source/uiCommunicationBus.cpp
source/dataProcessor.cpp
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_library(diagramCommunication SHARED
MANUAL_FINALIZATION
${DIAGRACOMMUNICATION_HEADER_FILES}
${DIAGRACOMMUNICATION_SOURCE_FILES}
)
else()
add_library(diagramCommunication SHARED
${DIAGRACOMMUNICATION_HEADER_FILES}
${DIAGRACOMMUNICATION_SOURCE_FILES}
)
endif()
target_link_libraries(diagramCommunication PUBLIC Qt${QT_VERSION_MAJOR}::Core)
target_link_libraries(diagramCommunication PRIVATE Qt6::Xml)
target_link_libraries(diagramCommunication PRIVATE Qt6::Network)
target_link_libraries(diagramCommunication PRIVATE Qt6::WebSockets)
target_link_libraries(diagramCommunication PRIVATE Qt6::Sql ${PostgreSQL_LIBRARIES})
option(BUILD_SHARED_LIBS "Build as shared library" ON)
target_include_directories(diagramCommunication PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_compile_definitions(diagramCommunication
PUBLIC
DIAGRAM_DESIGNER_SHARED
PRIVATE
DIAGRAM_DESIGNER_EXPORTS
#QT_NO_KEYWORDS
)

View File

@ -17,6 +17,7 @@ struct DIAGRAM_DESIGNER_PUBLIC ChannelConfig {
int timeout = 30000; // 超时时间(ms)
bool enabled = true; // 是否启用
bool autoConnect = false; // 是否自动连接
QVariantMap headers; //头
// 认证
QString username;
@ -27,9 +28,6 @@ struct DIAGRAM_DESIGNER_PUBLIC ChannelConfig {
QDateTime lastConnectTime;
int errorCount = 0;
// HTTP特有
QVariantMap headers; // HTTP头
// WebSocket特有
int heartbeatInterval = 30000; // 心跳间隔

View File

@ -60,12 +60,7 @@ void DataProcessor::processJson( const QVariant& data,int conType)
}*/
}
else if(dataObj.contains("input")){
/*QString input = dataObj.value("input").toString();
int offSet = dataObj.value("offset").toInt();
QJsonArray recommendedList = dataObj.value("recommended_list").toArray();
for(const QJsonValue& value : recommendedList){
QString content = value.toString();
}*/
}
//QMutexLocker locker(&m_mutex);
//m_dataCache[dataType] = data;

View File

@ -161,7 +161,7 @@ void UiCommunicationBus::broadcastToUis(const QString& action, const QVariant& d
for (auto it = m_uiObjects.begin(); it != m_uiObjects.end(); ++it) {
QObject* uiObject = it.value();
QMetaObject::invokeMethod(uiObject, "onMessage",
QMetaObject::invokeMethod(uiObject, "onReceiveHttpData",
Q_ARG(QString, action),
Q_ARG(QVariant, data));
}