#ifndef TOPOLOGYVIEW_H #define TOPOLOGYVIEW_H #include #include #include "global.h" QT_BEGIN_NAMESPACE namespace Ui { class topologyView; } QT_END_NAMESPACE class TopologyTree; class ExtraPropertyManager; class StructDataSource; class TopologyView : public QDialog { Q_OBJECT public: TopologyView(QWidget *parent = nullptr); ~TopologyView(); void initial(); void loadTopologyFromDB(); //加载拓扑关系 signals: void entityCreate(EntityInfo); void entityChange(EntityInfo); void entityDelete(EntityInfo); void entitySelected(EntityInfo); public slots: void onItemChanged(QStandardItem *item); void onItemClicked(const QModelIndex &index); void onUpdateTopology(QList lst,bool refresh,bool bFull); void onMonitorUpdate(QList); //更新运行时 private: void clearItems(); QString getLevelType(int index); void buildTreeStructure(QStandardItemModel* model, const QVector& properties); QVector getPropertiesForNode(QStandardItem* node); QString getNodeInfo(QStandardItem* node); QStandardItem* findBayItem(const QString& voltageLevel, const QString& bayName); QStandardItem* findOrCreateVoltageLevel(const QString& voltageLevel); // 查找或创建电压层级节点 QStandardItem* createBayItem(const QString& cacheKey, const RelationSturctItem& bayInfo); void createDeviceItem(QStandardItem* pParent, const RelationSturctItem& deviceInfo); // 创建设备节点 void onUpdateTopologyFull(QList lst, bool refresh); void onUpdateTopologySimple(QList lst, bool refresh); QStandardItem* findOrCreateTopLevelItem(const QString& name, int level, QHash& cache); //// 查找或创建顶级节点(电网) QStandardItem* findOrCreateChildItem(QStandardItem* pParent, const QString& name, const QString& cacheKey, int level,QHash& cache);// 查找或创建子节点 QStandardItem* findBayItemInFullTree(const QString& grid, const QString& zone, const QString& station, const QString& voltageLevel, const QString& bayName);// 在完整树中查找间隔节点 private: Ui::topologyView *ui; QStandardItemModel* _treeModel; ExtraPropertyManager* _pExtraProManager; StructDataSource* m_dataSource; TopologyTree* _treeView; // 完整层级结构缓存 QHash m_mapGrids; // 电网节点 QHash m_mapZones; // 区域节点 QHash m_mapStations; // 变电站节点 QHash m_mapVoltageLevels; // 电压层级节点 QHash m_mapBayItems; // 间隔节点 // 原简化层级缓存 QHash m_simpleVoltageLevels; // 只用于简化模式 QHash m_simpleBayItems; // 只用于简化模式 }; #endif