GridFrame/diagramCavas/source/diagramEditor/hierarchyItemBuilder.cpp

65 lines
2.1 KiB
C++

// HierarchyItemBuilder.cpp
#include "diagramEditor/hierarchyItemBuilder.h"
HierarchyItemBuilder& HierarchyItemBuilder::instance() {
static HierarchyItemBuilder instance;
return instance;
}
HierarchyItem HierarchyItemBuilder::buildBayItem(BlockDataPtr blockData) {
if (!blockData) return {};
HierarchyItem item;
item.item.nEquipType = 0; // 间隔的设备类型为0
item.item.nCategory = 1; // 类别为1表示间隔
item.item.sName = blockData->getName();
item.item.uid = blockData->getId();
item.item.sVoltageLevel = QString::number(blockData->getVoltage());
return item;
}
HierarchyItem HierarchyItemBuilder::buildDeviceItem(BlockDataPtr blockData, int deviceType) {
if (!blockData) return {};
HierarchyItem item;
item.item.nEquipType = deviceType;
item.item.nCategory = 0; // 类别为0表示设备
item.item.sName = blockData->getName();
item.item.uid = blockData->getId();
item.item.sVoltageLevel = QString::number(blockData->getVoltage());
return item;
}
HierarchyItem HierarchyItemBuilder::buildDeviceWithParent(BlockDataPtr deviceBlock,
BlockDataPtr parentBlock,
int deviceType) {
if (!deviceBlock) return {};
HierarchyItem item = buildDeviceItem(deviceBlock, deviceType);
if (parentBlock) {
item.parent.nEquipType = 0;
item.parent.nCategory = 1;
item.parent.sName = parentBlock->getName();
item.parent.uid = parentBlock->getId();
item.parent.sVoltageLevel = QString::number(parentBlock->getVoltage());
}
return item;
}
HierarchyItem HierarchyItemBuilder::buildAutoFromBlock(BlockDataPtr blockData) {
if (!blockData) return {};
int blockType = blockData->getType();
switch (blockType) {
case 1: // 母线
return buildDeviceWithParent(blockData, blockData, 1);
case 2: // 间隔
return buildBayItem(blockData);
case 3: // 变压器
return buildDeviceWithParent(blockData, blockData, 16);
default:
return {};
}
}