65 lines
2.1 KiB
C++
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 {};
|
|
}
|
|
}
|