// 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 {}; } }