diff --git a/common/include/global.h b/common/include/global.h index eef8c30..38b1a36 100644 --- a/common/include/global.h +++ b/common/include/global.h @@ -519,6 +519,8 @@ struct DiagramEditorBayInfo //组态编辑间隔信息 { QString name; //间隔名 int nLayout; //布局 0纵向1横向 + QList lstFrom; //起始 + QList lstTo; //结束 QMap mapRoute; //线路信息 QMap mapComponent; //设备信息 }; @@ -843,6 +845,7 @@ struct bayInfo { QUuid uuid; QString name; + QString tag; QString type; double unom; double fla; @@ -871,6 +874,7 @@ struct itemPageInfo //page中保存的item信息(大小,位置etc) QPointF pos; double dWidth = 0.0; double dHeight = 0.0; + double dRotate = 0.0; }; /*struct busStability diff --git a/diagramCavas/include/diagramCavas.h b/diagramCavas/include/diagramCavas.h index e6253ac..9811d23 100644 --- a/diagramCavas/include/diagramCavas.h +++ b/diagramCavas/include/diagramCavas.h @@ -14,6 +14,7 @@ class PowerEntity; class DiagramEditorWizard; class EditPanel; class GraphicsBaseModelItem; +class EditBaseItem; class DIAGRAM_DESIGNER_PUBLIC DiagramCavas : public QMdiArea { @@ -54,12 +55,11 @@ public slots: void onSignal_createEditPanel(QString); EditPanel* onSignal_addEditPanel(QString); void onSignal_addEditWizard(QString); - void onSignal_wizardFinished(QString,QMap); + void onSignal_wizardFinished(QString,QMap,QList); /*********************************间隔**************************************/ void onSignl_openCurrentBay(); private: void removePanel(PowerEntity*); - void autoSetModelName(GraphicsBaseModelItem*); //如果此页的工程模已被设置,将projectName更新到item private: QMap> m_mapDrawPanel; int _pageIndex; diff --git a/diagramCavas/include/diagramEditor/editItems.h b/diagramCavas/include/diagramEditor/editItems.h index 026f3a3..58709de 100644 --- a/diagramCavas/include/diagramEditor/editItems.h +++ b/diagramCavas/include/diagramEditor/editItems.h @@ -20,7 +20,7 @@ public: virtual void setType(EditorItemType tpe) {nType = tpe;} virtual EditorItemType getType(){return nType;} virtual void setBoundingRect(QRectF rec) {m_boundingRect = rec;} - virtual QRectF boundingRect() const {return m_boundingRect;} + virtual QRectF boundingRect() const override {return m_boundingRect;} virtual void setBlockData(QPointer p){_pBlock = p;} virtual QPointer getBlockData(){return _pBlock;} virtual QString getShowType(){return QString();} //获取显示类别 diff --git a/diagramCavas/include/graphicsDataModel/diagramEditorModel.h b/diagramCavas/include/graphicsDataModel/diagramEditorModel.h index 1153bb5..f5b0a7f 100644 --- a/diagramCavas/include/graphicsDataModel/diagramEditorModel.h +++ b/diagramCavas/include/graphicsDataModel/diagramEditorModel.h @@ -12,6 +12,7 @@ class DiagramEditorTransformerBlock; class EditPanel; class DiagramEditorWizard; class DiagramCavas; +class EditBaseItem; int const g_nHorizontalBlockSpacing = 100; //间隔横向间距 @@ -58,13 +59,13 @@ public: void generateItemByModel(QStandardItemModel* pModel,int nFrom = 0,QPoint delta = QPoint(0,0)); //0间隔1变压器 QList generateItemByInfo(QMap mapRoute,QMap mapCompo,QPointF delta = QPointF(0,0)); //根据data生成item - void generateOutConnection(QList,int nTypeTransCon,int nPos = 0); //生成外部连接(手动bind的连接) nTypeTransCon变压器连线类型,1中性点连接2外部连接,nPos中性点连接时的位置 + QMultiMap generateOutConnection(QList,int nTypeTransCon,int nPos = 0); //生成外部连接(手动bind的连接) nTypeTransCon变压器连线类型,1中性点连接2外部连接,nPos中性点连接时的位置 QRectF updateTarget(QMap&,QMap&,int nLayout,int nSource,bool saveToModel = true); //更新位置 nLayout主次朝向:8421,8421 上下左右,上下左右 nSource:0间隔1变压器 regenerate重新生成标志 saveToModel:生成到模型或map void clearCompoDir(QMap&,QMap&,int nSource); //清空component中的dir(updateTarget前调用) + + QList getRouteItemInfoList(QMap,QMap); //返回线路中包含的设备信息列表 private: void bulidAndLinkComponent(QList,QMap); //生成并连接线路上的设备 lst,mapComponents(从map中获取正确数据) - //DiagramEditorComponentInfo getCompoDataFromName(const QString&,QMap); //根据名称获取数据 - QList getRouteItemInfoList(QMap,QMap); //返回线路中包含的设备信息列表 private: QMap _tempItem; //临时预览对象 QMap _previewItem; //预览对象 diff --git a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h index 03f14fd..789e79b 100644 --- a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h +++ b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h @@ -29,6 +29,7 @@ class BayProperty; class BayManagerDlg; class ModelProperty; struct itemPageInfo; +class EditBaseItem; class FixedPortsModel : public BaseModel, public Serializable { @@ -42,7 +43,7 @@ public: QVector allConnectionProperty(); QMap& allItems(); bool addNodeItem(QUuid uuid,GraphicsProjectModelItem*); - void addNodeItem(QUuid id,QPointF pos,double width = 0,double height = 0); + void addNodeItem(QUuid id,QPointF pos,double width = 0,double height = 0,double rotate = 0); GraphicsProjectModelItem* nodeItem(QUuid uuid); BaseProperty* addNodeData(QUuid id,int type,QString name,QString modelName); //对应component数据,一个data可对应多个item(id,类型,名称,工程模名) void loadNodeDataFromDataBase(); //从数据库加载数据 @@ -78,17 +79,18 @@ public: void showProjectModelSettingDlg(GraphicsBaseModelItem*); //在基模拓扑图上打开工程模设置对话框 void generateProjectModel(const QString&,QList,QList); //由基模生成工程模 void addProjectItemByBaseData(DrawingPanel*,GraphicsBaseModelItem*,BaseProperty*); //从基模item生成工程模item + void onWizardFinished(QMap mapItem,QList mapBay); //editor结束生成基模 /*************************间隔*****************************/ - void addBayItem(QUuid); - bool addBayItem(QUuid,ElectricBayItem*); + void addBayItem(QUuid,ModelFunctionType = ModelFunctionType::ProjectModel); + bool addBayItem(QUuid,ElectricBayItem*,ModelFunctionType = ModelFunctionType::ProjectModel); void addItemsToBay(QList,ElectricBayItem*); //将对象添加到间隔 - BayProperty* addBayData(QUuid uuid); + BayProperty* addBayData(QUuid uuid,ModelFunctionType = ModelFunctionType::ProjectModel); QMap& allBayItem(); //返回所有间隔对象 BayProperty* generateBayData(BayProperty*,QList); //生成新间隔数据(间隔数据结构相同) QList getCorrespondId(QList,QList); //获取基模id对应的工程模id QRectF calculateItemsBoundingRect(QList items); //返回包含所有item的rect - void addBayByData(BayProperty*); //基模bay生成工程模bay + void addBayByData(BayProperty*,ModelFunctionType = ModelFunctionType::ProjectModel); //data生成bay void addTestData(); //生成测试基模 QJsonObject turnListToJson(QList lst,QString sInerTag,QString sOutTag); //将list转换为QJsonObject, @@ -109,10 +111,12 @@ public Q_SLOTS: void onSignal_openBayManager(); private: void addPortsToItem_json(PortState,QJsonArray,GraphicsProjectModelItem*); //将json格式的port添加到item + void autoSetModelName(GraphicsBaseModelItem*); //如果此页的工程模已被设置,将projectName更新到item private: QMap _nodeItem; //工程模对象 QMap _baseItem; //基模对象 + QMap _baseBayItem; //基模间隔对象 QMap _bayItem; //间隔对象 QString _pageName; diff --git a/diagramCavas/source/bayManagerContentDlg.cpp b/diagramCavas/source/bayManagerContentDlg.cpp index 64b09ec..6b4ca0c 100644 --- a/diagramCavas/source/bayManagerContentDlg.cpp +++ b/diagramCavas/source/bayManagerContentDlg.cpp @@ -82,6 +82,25 @@ void BayManagerContentDlg::updateByProperty() ui->tw_zhuangTai->setRowCount(0); ui->tw_qiTa->setRowCount(0); + ui->le_index->setText(_pData->uuid().toString()); + ui->le_type->setText(_pData->getType()); + + QStringList lstFrom; + for(auto uid:_pData->getLstFrom()){ + lstFrom.append(uid.toString()); + } + ui->le_from->setText(lstFrom.join(" ")); + + QStringList lstTo; + for(auto uid:_pData->getLstTo()){ + lstTo.append(uid.toString()); + } + ui->le_to->setText(lstTo.join(" ")); + + ui->le_voltage->setText(QString::number(_pData->getVoltage())); + ui->le_fla->setText(QString::number(_pData->getFla())); + ui->le_capacity->setText(QString::number(_pData->getCapacity())); + QList lstPro; QList lstId = _pData->getLstComponent(); QList lstProtectId = _pData->getLstProtect(); //综合保护 diff --git a/diagramCavas/source/diagramCavas.cpp b/diagramCavas/source/diagramCavas.cpp index abd28c7..e0e83e1 100644 --- a/diagramCavas/source/diagramCavas.cpp +++ b/diagramCavas/source/diagramCavas.cpp @@ -348,21 +348,6 @@ void DiagramCavas::removePanel(PowerEntity* pEntity) } } -void DiagramCavas::autoSetModelName(GraphicsBaseModelItem* pItem) -{ - ModelProperty* p = pItem->getProperty(); - BaseModelProperty* pro = dynamic_cast(p); - if(pro){ - QString sMeta = pro->metaModelName(); - QString sModel = sMeta+"_"+_curPage; - bool exist = ProjectModelManager::instance().getData()[sMeta].contains(sModel); - if(exist){ - pro->setModelName(sModel); - pro->getModelProperty().modelSetting.modelName = sModel; - } - } -} - void DiagramCavas::onCreateTestBaseModelDiagram() { PowerEntity* pEntity; @@ -415,7 +400,7 @@ void DiagramCavas::onSignal_addEditWizard(QString name) _pEditorWizard->show(); } -void DiagramCavas::onSignal_wizardFinished(QString sName,QMap mapItem) +void DiagramCavas::onSignal_wizardFinished(QString sName,QMap mapItem,QList mapBay) { PowerEntity* pEntity; QUuid id = QUuid::createUuid(); @@ -427,60 +412,19 @@ void DiagramCavas::onSignal_wizardFinished(QString sName,QMapname()); TopologyManager::instance().cloneEditorToBase(); //拷贝拓扑结构 - - QMap mapEditor = BasePropertyManager::instance().getEditorData(); - for(auto& pro:mapEditor){ - if(BasePropertyManager::instance().findBaseEntityData(pro->uuid()) == nullptr){ //拷贝editor数据到basemodel中 - auto pPro = pPanel->getModelController()->addBaseNodeData(pro->uuid(),pro->type(),pro->name(),pro->metaModelName(),pro->getBlock()); - pPro->setConnection(pro->getConnection()); - pPro->setGraphicsType(pro->graphicsType()); - } + auto pModel = pPanel->getModelController(); + if(pModel){ + pModel->onWizardFinished(mapItem,mapBay); } - //pPanel->getModelController()->addTestData(); - - for(auto pItem:mapItem){ - auto cloneItem = pItem->clone(); - BaseModelProperty* pPro = BasePropertyManager::instance().findBaseEntityData(cloneItem->itemId()); - if(pPro){ - cloneItem->setProperty(pPro); - pPanel->getScene()->addItem(cloneItem); - cloneItem->setPos(pItem->pos()); - pPanel->getModelController()->addBaseItem(cloneItem->itemId(),cloneItem); - pPro->setDataChanged(true); - autoSetModelName(cloneItem); - - if(pPro->type() != 8){ - PowerEntity* pEntity = TopologyManager::instance().findEntity(pPro->uuid().toString(),ModelFunctionType::BaseModel); - if(pEntity) - cloneItem->setEntity(pEntity); - } - else - { - } - } - } - - QList items = pPanel->getScene()->items(); - - if (items.isEmpty()) { - return; // 没有 items 时返回 - } - - // 计算所有 items 的联合包围盒 - QRectF totalBoundingRect; - foreach (QGraphicsItem *item, items) { - totalBoundingRect |= item->sceneBoundingRect(); - } - - // 计算中心点 - QPointF center = totalBoundingRect.center(); - pPanel->getView()->centerOn(center); } } /*******************bay************************/ void DiagramCavas::onSignl_openCurrentBay() { QWidget* pWindow= currentSubWindow()->widget(); + if(pWindow == nullptr){ + QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"当前无打开的工程模")); + } DrawingPanel* pPanel = dynamic_cast(pWindow); if(pPanel) { diff --git a/diagramCavas/source/diagramEditor/editPanel.cpp b/diagramCavas/source/diagramEditor/editPanel.cpp index 6ac2de8..d56bd49 100644 --- a/diagramCavas/source/diagramEditor/editPanel.cpp +++ b/diagramCavas/source/diagramEditor/editPanel.cpp @@ -373,7 +373,11 @@ void EditPanel::showConfirmDlg() connect(_confirmEditor,&ConfirmEditorDlg::onConfirmEditor,this,[&](QString sAuthor,QString sTime){ auto pCavas = _pModel->getCavas(); if(pCavas){ - pCavas->onSignal_wizardFinished(_projectName,_pModel->getPreviewItem()); + + //QList lstBocks; + QList pBays = getBlockItems(EditorItemType::bay); + + pCavas->onSignal_wizardFinished(_projectName,_pModel->getPreviewItem(),pBays); } }); } diff --git a/diagramCavas/source/drawingPanel.cpp b/diagramCavas/source/drawingPanel.cpp index 65d198b..40a551d 100644 --- a/diagramCavas/source/drawingPanel.cpp +++ b/diagramCavas/source/drawingPanel.cpp @@ -193,6 +193,7 @@ QJsonObject DrawingPanel::getDiagramInfo() const node["y"] = iter.value().pos.y(); node["width"] = iter.value().dWidth; node["height"] = iter.value().dHeight; + node["rotate"] = iter.value().dRotate; arr.append(node); } obj["nodes"] = arr; @@ -240,11 +241,12 @@ void DrawingPanel::loadNodes(QJsonObject obj) double dY = node["y"].toDouble(); double dWidth = node["width"].toDouble(); double dHeight = node["height"].toDouble(); + double dRotate = node["rotate"].toDouble(); //componentInfo info =DataBase::GetInstance()->getComponentInfoByUuid(uuid); if(_pModel) { - _pModel->addNodeItem(QUuid(uuid)/*,info.type*/,QPointF(dX,dY),dWidth,dHeight); + _pModel->addNodeItem(QUuid(uuid)/*,info.type*/,QPointF(dX,dY),dWidth,dHeight,dRotate); } } diff --git a/diagramCavas/source/graphicsDataModel/diagramEditorModel.cpp b/diagramCavas/source/graphicsDataModel/diagramEditorModel.cpp index d79c4a3..d9b1ac6 100644 --- a/diagramCavas/source/graphicsDataModel/diagramEditorModel.cpp +++ b/diagramCavas/source/graphicsDataModel/diagramEditorModel.cpp @@ -557,8 +557,86 @@ void DiagramEditorModel::generatePreview() } } - for(auto &lst:baysCompo){ - generateOutConnection(lst,2); + for(auto iter = baysCompo.begin();iter != baysCompo.end();++iter){ + QMultiMap mapId = generateOutConnection(iter.value(),2); + + QList lstFrom; //处理进出链接 + QList lstTo; + + for(auto item:lst){ + if(item->getType() == EditorItemType::bay){ + auto p = item->getBlockData(); //获取blockitem对应的data + DiagramEditorBayBlock* pBay = dynamic_cast(p.data()); + if(pBay){ + if(pBay->getName() == iter.key()){ //相同间隔 + switch (pBay->getBayType()) { + case BayType::busSectionBay:{ + QList values = mapId.values(1); + + if (!values.isEmpty()) { + // 第一个值放入lstFrom + lstFrom.append(values.first()); + + // 如果有第二个值,放入lstTo + if (values.size() > 1) { + lstTo.append(values.at(1)); + } + } + } + break; + case BayType::busCouplerBay:{ + QList values = mapId.values(1); + + if (!values.isEmpty()) { + // 第一个值放入lstFrom + lstFrom.append(values.first()); + + // 如果有第二个值,放入lstTo + if (values.size() > 1) { + lstTo.append(values.at(1)); + } + } + } + break; + case BayType::ptBay:{ + QList values = mapId.values(1); + + if (!values.isEmpty()) { + // 第一个值放入lstTo + lstTo.append(values.first()); + } + } + break; + case BayType::incomingBay:{ + for (auto it = mapId.begin(); it != mapId.end(); ++it) { + if (it.key() == 1) { + lstTo.append(it.value()); // 连接母线,放入 lstTo + } else { + lstFrom.append(it.value()); // 其他,放入 lstFrom + } + } + } + break; + case BayType::outcomingBay:{ + for (auto it = mapId.begin(); it != mapId.end(); ++it) { + if (it.key() != 1) { + lstTo.append(it.value()); // 不连接母线,放入 lstTo + } else { + lstFrom.append(it.value()); // 连接母线,放入 lstFrom + } + } + } + break; + default: + break; + } + + pBay->getBayInfo().lstFrom = lstFrom; + pBay->getBayInfo().lstTo = lstTo; + } + } + } + } } for(auto &map:transCompo){ @@ -1015,14 +1093,17 @@ QList DiagramEditorModel::generateItemByInfo(QMap lstBind,int nTypeTransCon,int nPos) +QMultiMap DiagramEditorModel::generateOutConnection(QList lstBind,int nTypeTransCon,int nPos) { + QMultiMap bindId; //返回关联的对象id<类型,id> for(auto& compo:lstBind){ //遍历关联外部的item,进行连线 if(compo.nBindType == 1){ //关联的是母线 母线没有数据,获取绘制的母线item for(auto& pItem:_previewItem){ auto pro = pItem->getProperty(); if(pro){ QString sName = pro->name(); + QUuid uId = pro->uuid(); + int nType = pro->type(); if(sName == compo.sBindObj){ GraphicsBaseModelItem* pSrc = _previewItem.value(compo.uid); GraphicsBaseModelItem* pTarget = pItem; @@ -1041,6 +1122,7 @@ void DiagramEditorModel::generateOutConnection(QList if(pLine) establishConnection(pSrc,pTarget,pLine,ModelFunctionType::EditorModel); } + bindId.insert(nType,uId); } } } @@ -1050,6 +1132,8 @@ void DiagramEditorModel::generateOutConnection(QList auto pro = pItem->getProperty(); if(pro){ QString sName = pro->name(); + QUuid uId = pro->uuid(); + int nType = pro->type(); if(sName == compo.sBindParent){ //判断变压器名 GraphicsBaseModelItem* pSrc = _previewItem.value(compo.uid); GraphicsBaseModelItem* pTarget = pItem; @@ -1076,11 +1160,13 @@ void DiagramEditorModel::generateOutConnection(QList establishConnection(pSrc,pTarget,pLine,ModelFunctionType::EditorModel,nTypeTransCon,nPos); } } + bindId.insert(nType,uId); } } } } } + return bindId; } void DiagramEditorModel::clearCompoDir(QMap& data,QMap& compos,int nSource) diff --git a/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp b/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp index a2945b6..bcda20a 100644 --- a/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp +++ b/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp @@ -22,6 +22,9 @@ #include "baseModelItem/electricBaseModelSvgBus.h" #include "baseModelItem/electricBaseModelLineItem.h" #include "graphicsItem/electricBayItem.h" +#include "diagramEditor/diagramEditorBaseBlock.h" +#include "graphicsItem/electricBayItem.h" +#include "diagramEditor/editItems.h" #include "graphicsItem/itemPort.h" #include "designerScene.h" #include "dataBase.h" @@ -83,6 +86,7 @@ QMap FixedPortsModel::allNodePos() const info.pos = pItem->scenePos()/*+QPointF(dWidth*0.5,dHeight*0.5)*/; info.dWidth = dWidth; info.dHeight = dHeight; + info.dRotate = pItem->rotation(); map.insert(pItem->itemId(),info); } } @@ -132,7 +136,7 @@ bool FixedPortsModel::addNodeItem(QUuid uuid,GraphicsProjectModelItem* pItem) } } -void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width,double height) +void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width,double height,double rotate) { //todo:load图形时必有拓扑实体,关联到对应的entity BaseProperty* pro = nullptr; @@ -535,6 +539,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width item->setItemId(id); item->editShape(0, pos); item->setPos(pos); + item->setRotation(rotate); //item->setSelected(true); _scene->addItem(item); item->addPoint(pos); @@ -773,7 +778,7 @@ void FixedPortsModel::saveNode(int nPageId) QJsonObject objIns= turnListToJson(pBay->getLstInstruct(),"id","ids"); QJsonObject objEtc= turnListToJson(pBay->getLstEtc(),"id","ids"); - DataBase::GetInstance()->insertBay(pBay->uuid(),pBay->name(),pBay->getType(),pBay->getVoltage(),pBay->getFla(),pBay->getCapacity(),"1",pBay->getInService(),0,"1","1","1",QJsonObject(),objFrom,objTo,objProtec,objFalRec,objStatus,objDynSen,objIns,objEtc,pBay->getLstComponent(),QJsonObject()); + DataBase::GetInstance()->insertBay(pBay->uuid(),pBay->name(),pBay->tag(),pBay->getType(),pBay->getVoltage(),pBay->getFla(),pBay->getCapacity(),"1",pBay->getInService(),0,"1","1","1",QJsonObject(),objFrom,objTo,objProtec,objFalRec,objStatus,objDynSen,objIns,objEtc,pBay->getLstComponent(),QJsonObject()); } else{ QJsonObject objFrom = turnListToJson(pBay->getLstFrom(),"id","ids"); @@ -785,7 +790,7 @@ void FixedPortsModel::saveNode(int nPageId) QJsonObject objIns= turnListToJson(pBay->getLstInstruct(),"id","ids"); QJsonObject objEtc= turnListToJson(pBay->getLstEtc(),"id","ids"); - DataBase::GetInstance()->updateBay(pBay->uuid(),pBay->name(),pBay->getVoltage(),pBay->getFla(),pBay->getCapacity(),"",pBay->getInService(),0,QJsonObject(),objFrom,objTo,objProtec,objFalRec,objStatus,objDynSen,objIns,objEtc,pBay->getLstComponent(),QJsonObject()); + DataBase::GetInstance()->updateBay(pBay->uuid(),pBay->name(),pBay->tag(),pBay->getVoltage(),pBay->getFla(),pBay->getCapacity(),"",pBay->getInService(),0,QJsonObject(),objFrom,objTo,objProtec,objFalRec,objStatus,objDynSen,objIns,objEtc,pBay->getLstComponent(),QJsonObject()); } } } @@ -1037,7 +1042,7 @@ void FixedPortsModel::onSignal_generateDiagram(const QString& sName) } QList lstBay; - for(auto& item:_bayItem) + for(auto& item:_baseBayItem) { lstBay.append(item); } @@ -1081,6 +1086,22 @@ void FixedPortsModel::addPortsToItem_json(PortState sta,QJsonArray jArr,Graphics } } +void FixedPortsModel::autoSetModelName(GraphicsBaseModelItem* pItem) +{ + ModelProperty* p = pItem->getProperty(); + BaseModelProperty* pro = dynamic_cast(p); + if(pro){ + QString sMeta = pro->metaModelName(); + QString sModel = sMeta+"_"+_pageName; + bool exist = ProjectModelManager::instance().getData()[sMeta].contains(sModel); + if(exist){ + pro->setModelName(sModel); + pro->getModelProperty().modelSetting.modelName = sModel; + } + } +} + + QWidget* FixedPortsModel::getTopWidget() { return dynamic_cast(_widget); @@ -1378,6 +1399,140 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList mapItem,QList mapBay) +{ + QMap mapEditor = BasePropertyManager::instance().getEditorData(); + for(auto& pro:mapEditor){ + if(BasePropertyManager::instance().findBaseEntityData(pro->uuid()) == nullptr){ //拷贝editor数据到basemodel中 + auto pPro = _widget->getModelController()->addBaseNodeData(pro->uuid(),pro->type(),pro->name(),pro->metaModelName(),pro->getBlock()); + pPro->setConnection(pro->getConnection()); + pPro->setGraphicsType(pro->graphicsType()); + } + } + //pPanel->getModelController()->addTestData(); + + for(auto pItem:mapItem){ + auto cloneItem = pItem->clone(); + BaseModelProperty* pPro = BasePropertyManager::instance().findBaseEntityData(cloneItem->itemId()); + if(pPro){ + cloneItem->setProperty(pPro); + _scene->addItem(cloneItem); + cloneItem->setPos(pItem->pos()); + addBaseItem(cloneItem->itemId(),cloneItem); + pPro->setDataChanged(true); + autoSetModelName(cloneItem); + + if(pPro->type() != 8){ + PowerEntity* pEntity = TopologyManager::instance().findEntity(pPro->uuid().toString(),ModelFunctionType::BaseModel); + if(pEntity) + cloneItem->setEntity(pEntity); + } + else + { + } + } + } + + QList items = _scene->items(); + + if (items.isEmpty()) { + return; // 没有 items 时返回 + } + + // 计算所有 items 的联合包围盒 + QRectF totalBoundingRect; + foreach (QGraphicsItem *item, items) { + totalBoundingRect |= item->sceneBoundingRect(); + } + + // 计算中心点 + QPointF center = totalBoundingRect.center(); + //_widget->getView()->centerOn(center); + + //**************间隔************* + for(auto item:mapBay){ + auto p = item->getBlockData(); //获取blockitem对应的data + DiagramEditorBayBlock* pBay = dynamic_cast(p.data()); + if(pBay){ + QString sBay = pBay->getName(); + auto bayInfo = pBay->getBayInfo(); + auto mapRoute = bayInfo.mapRoute; + auto mapCompo = bayInfo.mapComponent; + + QList lstInfo; + for(auto& route:mapRoute){ //获取路线中使用的设备 + for(auto& compo:route.lstCompo){ + auto info = mapCompo.value(compo.sName); + + bool exist = false; + for(auto& inf:lstInfo){ + if(inf == info){ + exist = true; + break; + } + } + if(!exist){ + lstInfo.append(info); + } + } + } + + QList lst; + for(auto &inf:lstInfo){ + if(_baseItem.contains(inf.uid)) + lst.append(_baseItem.value(inf.uid)); + } + QRectF rec = calculateItemsBoundingRect(lst); + ElectricBayItem* pNew = new ElectricBayItem(rec); + pNew->setItemType(GIT_bay); + pNew->setText(sBay); + QString sType; + switch (pBay->getBayType()) { + case BayType::busSectionBay: + sType = QString("分段间隔"); + break; + case BayType::busCouplerBay: + sType = QString("母联间隔"); + break; + case BayType::ptBay: + sType = QString("PT间隔"); + break; + case BayType::incomingBay: + sType = QString("进线间隔"); + break; + case BayType::outcomingBay: + sType = QString("出线间隔"); + break; + case BayType::compensationBay: + sType = QString("无功补偿间隔"); + break; + case BayType::bypassBay: + sType = QString("旁路间隔"); + break; + default: + break; + } + + QUuid bayId = pBay->getId(); + BayProperty* pBayData = addBayData(bayId,ModelFunctionType::BaseModel); + pNew->setProperty(pBayData); + pBayData->setName(sBay); + pBayData->setTag(sBay); + pBayData->setType(sType); + pBayData->setLstFrom(pBay->getBayInfo().lstFrom); + pBayData->setLstTo(pBay->getBayInfo().lstTo); + + for(auto &info:lstInfo){ + pBayData->getLstComponent().append(info.uid); + } + + addBayItem(bayId,pNew,ModelFunctionType::BaseModel); + //pModel->addItemsToBay(lst,pNew); + _scene->addItem(pNew); + } + } +} + void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBaseModelItem* pItem,BaseProperty* pPro) { BaseModelProperty* pBase = dynamic_cast(pItem->getProperty()); @@ -1810,28 +1965,55 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase } } -void FixedPortsModel::addBayItem(QUuid id) +void FixedPortsModel::addBayItem(QUuid id,ModelFunctionType tpe) { - QMap mapData = BasePropertyManager::instance().getBayData(); //加载的图形必定关联component(todo:完善判断条件,如判断拓扑节点) - if(mapData.contains(id)) - { - BayProperty* pro = mapData.value(id); - if(pro) + if(tpe == ModelFunctionType::BaseModel){ + QMap mapData = BasePropertyManager::instance().getBaseBayData(); //加载的图形必定关联component(todo:完善判断条件,如判断拓扑节点) + if(mapData.contains(id)) { - addBayByData(pro); + BayProperty* pro = mapData.value(id); + if(pro) + { + addBayByData(pro,tpe); + } } } + else if(tpe == ModelFunctionType::ProjectModel) + { + QMap mapData = BasePropertyManager::instance().getBayData(); //加载的图形必定关联component(todo:完善判断条件,如判断拓扑节点) + if(mapData.contains(id)) + { + BayProperty* pro = mapData.value(id); + if(pro) + { + addBayByData(pro); + } + } + } + } -bool FixedPortsModel::addBayItem(QUuid id,ElectricBayItem* pBay) +bool FixedPortsModel::addBayItem(QUuid id,ElectricBayItem* pBay,ModelFunctionType typ) { - if(_bayItem.contains(id)) - return false; - else - { - _bayItem.insert(id,pBay); - return true; + if(typ == ModelFunctionType::BaseModel){ + if(_baseBayItem.contains(id)) + return false; + else + { + _baseBayItem.insert(id,pBay); + return true; + } } + else if(typ == ModelFunctionType::ProjectModel){ + if(_bayItem.contains(id)) + return false; + else + { + _bayItem.insert(id,pBay); + return true; + } + } + return false; } void FixedPortsModel::addItemsToBay(QList lstItem,ElectricBayItem* pBay) @@ -1852,20 +2034,37 @@ void FixedPortsModel::addItemsToBay(QList lstItem,ElectricBay } } -BayProperty* FixedPortsModel::addBayData(QUuid uuid) +BayProperty* FixedPortsModel::addBayData(QUuid uuid,ModelFunctionType typ) { - BayProperty* pData = BasePropertyManager::instance().findBayData(uuid); //已存在不不创建 - if(pData != nullptr) - return pData; + if(typ == ModelFunctionType::BaseModel){ + BayProperty* pData = BasePropertyManager::instance().findBaseBayData(uuid); //已存在不不创建 + if(pData != nullptr) + return pData; - BayProperty* item = new BayProperty(); + BayProperty* item = new BayProperty(); - if(item) - { - item->setUuid(uuid); - BasePropertyManager::instance().insertBayData(uuid,item); + if(item) + { + item->setUuid(uuid); + BasePropertyManager::instance().insertBaseBayData(uuid,item); + } + return item; } - return item; + else if(typ == ModelFunctionType::ProjectModel){ + BayProperty* pData = BasePropertyManager::instance().findBayData(uuid); //已存在不不创建 + if(pData != nullptr) + return pData; + + BayProperty* item = new BayProperty(); + + if(item) + { + item->setUuid(uuid); + BasePropertyManager::instance().insertBayData(uuid,item); + } + return item; + } + return nullptr; } QMap& FixedPortsModel::allBayItem() @@ -1875,8 +2074,7 @@ QMap& FixedPortsModel::allBayItem() BayProperty* FixedPortsModel::generateBayData(BayProperty* pData,QList lst) { - QUuid id = QUuid::createUuid(); - BayProperty* p = addBayData(id); + BayProperty* p = addBayData(pData->uuid()); p->setTag(pData->tag()); p->setName(pData->name()); p->setType(pData->getType()); @@ -1957,23 +2155,42 @@ QRectF FixedPortsModel::calculateItemsBoundingRect(QList item return boundingRect.adjusted(-10,-10,10,10); } -void FixedPortsModel::addBayByData(BayProperty* pData) +void FixedPortsModel::addBayByData(BayProperty* pData,ModelFunctionType typ) { - QList items; - QList lstCompo = pData->getLstComponent(); - for(auto& id:lstCompo){ - if(_nodeItem.contains(id)){ - items.append(_nodeItem.value(id)); + if(typ == ModelFunctionType::BaseModel){ + QList items; + QList lstCompo = pData->getLstComponent(); + for(auto& id:lstCompo){ + if(_baseItem.contains(id)){ + items.append(_baseItem.value(id)); + } } - } - QRectF rec = calculateItemsBoundingRect(items); - auto pBay = new ElectricBayItem(rec); - pBay->setItemType(GIT_bay); - pBay->setProperty(pData); - pBay->setText(pData->name()); - addBayItem(pData->uuid(),pBay); - getScene()->addItem(pBay); + QRectF rec = calculateItemsBoundingRect(items); + auto pBay = new ElectricBayItem(rec); + pBay->setItemType(GIT_bay); + pBay->setProperty(pData); + pBay->setText(pData->name()); + addBayItem(pData->uuid(),pBay,typ); + getScene()->addItem(pBay); + } + else if(typ == ModelFunctionType::ProjectModel){ + QList items; + QList lstCompo = pData->getLstComponent(); + for(auto& id:lstCompo){ + if(_nodeItem.contains(id)){ + items.append(_nodeItem.value(id)); + } + } + + QRectF rec = calculateItemsBoundingRect(items); + auto pBay = new ElectricBayItem(rec); + pBay->setItemType(GIT_bay); + pBay->setProperty(pData); + pBay->setText(pData->name()); + addBayItem(pData->uuid(),pBay); + getScene()->addItem(pBay); + } } void FixedPortsModel::addTestData() diff --git a/diagramCavas/source/graphicsItem/electricBayItem.cpp b/diagramCavas/source/graphicsItem/electricBayItem.cpp index 1960b0c..26df9d6 100644 --- a/diagramCavas/source/graphicsItem/electricBayItem.cpp +++ b/diagramCavas/source/graphicsItem/electricBayItem.cpp @@ -7,6 +7,7 @@ ElectricBayItem::ElectricBayItem(const QRectF &rect,QGraphicsItem *parent) : GraphicsNonStandardItem(parent) { m_showRect = rect; + //m_boundingRect = rect; m_dWidth = rect.width(); m_dHeight = rect.height(); m_font.setPointSize(12); @@ -48,6 +49,7 @@ void ElectricBayItem::updateTextShape() QFontMetricsF metrics(m_font); QRectF recText = metrics.boundingRect(m_text); //_recLabel = recText.translated(g_offsetX,g_offsetY); + recText.moveTo(m_showRect.topLeft()-QPointF(recText.width(),recText.height())); _recLabel = recText; shape(); } diff --git a/diagramUtils/include/basePropertyManager.h b/diagramUtils/include/basePropertyManager.h index d5c4788..6cdb831 100644 --- a/diagramUtils/include/basePropertyManager.h +++ b/diagramUtils/include/basePropertyManager.h @@ -32,6 +32,11 @@ public: void deleteBaseEntityData(QUuid); QMap getBaseEntityData() const; + void insertBaseBayData(QUuid,BayProperty*); //基模间隔 + BayProperty* findBaseBayData(QUuid); + void deleteBaseBayData(QUuid); + QMap getBaseBayData() const; + void insertBayData(QUuid,BayProperty*); BayProperty* findBayData(QUuid); void deleteBayData(QUuid); @@ -54,6 +59,7 @@ public slots: private: QMap m_entityData; //工程模实例化元件的唯一数据 QMap m_baseEntityData; //基模实例元件数据 + QMap m_baseBayData; //基模间隔数据 QMap m_bayData; //间隔数据 QMap m_editorTempData; //编辑时临时预览对象 QMap m_editorData; //编辑时预览对象 diff --git a/diagramUtils/include/dataBase.h b/diagramUtils/include/dataBase.h index 1711873..6f0d578 100644 --- a/diagramUtils/include/dataBase.h +++ b/diagramUtils/include/dataBase.h @@ -61,8 +61,8 @@ public: QJsonObject getPageContextByName(QString name); QList getAllPage(); /*********************************************************************************/ - bool insertBay(QUuid uuid,QString name,QString type,double unom,double fla,double capacity,QString description,bool inService,int nState,QString grid,QString zone,QString station,QJsonObject business,QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense,QJsonObject instruct,QJsonObject etc,QList components,QJsonObject context); - bool updateBay(QUuid uuid,QString name,double unom,double fla,double capacity,QString description,bool inService,int nState,QJsonObject business,QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense,QJsonObject instruct,QJsonObject etc,QList components,QJsonObject context); + bool insertBay(QUuid uuid,QString name,QString tag,QString type,double unom,double fla,double capacity,QString description,bool inService,int nState,QString grid,QString zone,QString station,QJsonObject business,QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense,QJsonObject instruct,QJsonObject etc,QList components,QJsonObject context); + bool updateBay(QUuid uuid,QString name,QString tag,double unom,double fla,double capacity,QString description,bool inService,int nState,QJsonObject business,QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense,QJsonObject instruct,QJsonObject etc,QList components,QJsonObject context); bayInfo getBay(QUuid uuid); QList getAllBay(); bool ifBayExist(QUuid uuid); diff --git a/diagramUtils/source/basePropertyManager.cpp b/diagramUtils/source/basePropertyManager.cpp index 22f8d4d..107ff68 100644 --- a/diagramUtils/source/basePropertyManager.cpp +++ b/diagramUtils/source/basePropertyManager.cpp @@ -71,6 +71,30 @@ QMap BasePropertyManager::getBaseEntityData() const return m_baseEntityData; } +/*****************************基模间隔数据*******************************/ +void BasePropertyManager::insertBaseBayData(QUuid id,BayProperty* p) +{ + if(!m_baseBayData.contains(id)) + m_baseBayData.insert(id,p); +} + +BayProperty* BasePropertyManager::findBaseBayData(QUuid id) +{ + return m_baseBayData.value(id,nullptr); +} + +void BasePropertyManager::deleteBaseBayData(QUuid id) +{ + BayProperty* pData = m_baseBayData.value(id,nullptr); + if(pData) + delete pData; +} + +QMap BasePropertyManager::getBaseBayData() const +{ + return m_baseBayData; +} + /*****************************间隔数据*******************************/ void BasePropertyManager::insertBayData(QUuid id,BayProperty* p) { diff --git a/diagramUtils/source/dataBase.cpp b/diagramUtils/source/dataBase.cpp index f19cc02..6763449 100644 --- a/diagramUtils/source/dataBase.cpp +++ b/diagramUtils/source/dataBase.cpp @@ -1057,7 +1057,7 @@ bool DataBase::deleteComponentById(int id) } /*****************************************************************************/ -bool DataBase::insertBay(QUuid uuid,QString name,QString type,double unom,double fla,double capacity,QString description,bool inService,int nState,QString grid,QString zone, +bool DataBase::insertBay(QUuid uuid,QString name,QString tag,QString type,double unom,double fla,double capacity,QString description,bool inService,int nState,QString grid,QString zone, QString station,QJsonObject business,QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense, QJsonObject instruct,QJsonObject etc,QList components,QJsonObject context) { @@ -1091,7 +1091,7 @@ bool DataBase::insertBay(QUuid uuid,QString name,QString type,double unom,double QJsonDocument contextDoc(etc); QString strContext = contextDoc.toJson(QJsonDocument::Compact); - QString strSQL = "INSERT INTO bay(bay_uuid, name, type, unom, fla, capacity, description, in_service, state, grid, zone, station, business, from_uuids, to_uuids, dev_protect, dev_fault_record, dev_status, dev_dyn_sense, dev_instruct, dev_etc, components, context) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + QString strSQL = "INSERT INTO bay(bay_uuid, name, tag, type, unom, fla, capacity, description, in_service, state, grid, zone, station, business, from_uuids, to_uuids, dev_protect, dev_fault_record, dev_status, dev_dyn_sense, dev_instruct, dev_etc, components, context) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; QStringList uuidStrings; for (const QUuid &uuid : components) { @@ -1103,6 +1103,7 @@ bool DataBase::insertBay(QUuid uuid,QString name,QString type,double unom,double QVariantList params; params.append(uuid.toString()); params.append(name); + params.append(tag); params.append(type); params.append(unom); params.append(fla); @@ -1137,7 +1138,7 @@ bool DataBase::insertBay(QUuid uuid,QString name,QString type,double unom,double } } -bool DataBase::updateBay(QUuid uuid,QString name,double unom,double fla,double capacity,QString description,bool inService,int nState,QJsonObject business, +bool DataBase::updateBay(QUuid uuid,QString name,QString tag,double unom,double fla,double capacity,QString description,bool inService,int nState,QJsonObject business, QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense,QJsonObject instruct, QJsonObject etc,QList components,QJsonObject context) { @@ -1178,9 +1179,10 @@ bool DataBase::updateBay(QUuid uuid,QString name,double unom,double fla,double c } QString arrayUuid = "{" + uuidStrings.join(",") + "}"; - QString strSQL = "UPDATE bay SET name = ?,unom = ?,fla = ?,capacity = ?,description = ?,in_service = ?, state = ?, business = ?,from_uuids = ?,to_uuids = ?,dev_protect = ?,dev_fault_record = ?, dev_status = ?,dev_dyn_sense = ?,dev_instruct = ?,dev_etc = ?,components = ?,context = ? WHERE bay_uuid = ?"; + QString strSQL = "UPDATE bay SET name = ?,tag = ?,unom = ?,fla = ?,capacity = ?,description = ?,in_service = ?, state = ?, business = ?,from_uuids = ?,to_uuids = ?,dev_protect = ?,dev_fault_record = ?, dev_status = ?,dev_dyn_sense = ?,dev_instruct = ?,dev_etc = ?,components = ?,context = ? WHERE bay_uuid = ?"; QVariantList params; params.append(name); + params.append(tag); params.append(unom); params.append(fla); params.append(capacity); @@ -1215,7 +1217,7 @@ bool DataBase::updateBay(QUuid uuid,QString name,double unom,double fla,double c bayInfo DataBase::getBay(QUuid uuid) { bayInfo info; - QString strSQL = "SELECT bay_uuid, name, type, unom, fla, capacity, description, in_service, state, grid, zone, station, business, from_uuids, to_uuids, dev_protect, dev_fault_record, dev_status, dev_dyn_sense, dev_instruct, dev_etc, components, context FROM bay WHERE bay_uuid = ?"; + QString strSQL = "SELECT bay_uuid, name, tag, type, unom, fla, capacity, description, in_service, state, grid, zone, station, business, from_uuids, to_uuids, dev_protect, dev_fault_record, dev_status, dev_dyn_sense, dev_instruct, dev_etc, components, context FROM bay WHERE bay_uuid = ?"; QVariantList params; params.append(uuid); @@ -1226,37 +1228,38 @@ bayInfo DataBase::getBay(QUuid uuid) { info.uuid = QUuid(query.value(0).toString()); info.name = query.value(1).toString(); - info.type = query.value(2).toString(); - info.unom = query.value(3).toDouble(); - info.fla = query.value(4).toDouble(); - info.capacity = query.value(5).toDouble(); - info.description = query.value(6).toString(); - info.inService = query.value(7).toBool(); - info.nState = query.value(8).toInt(); - info.grid = query.value(9).toString(); - info.zone = query.value(10).toString(); - info.station = query.value(11).toString(); - QString strBusi = query.value(12).toString(); + info.tag = query.value(2).toString(); + info.type = query.value(3).toString(); + info.unom = query.value(4).toDouble(); + info.fla = query.value(5).toDouble(); + info.capacity = query.value(6).toDouble(); + info.description = query.value(7).toString(); + info.inService = query.value(8).toBool(); + info.nState = query.value(9).toInt(); + info.grid = query.value(10).toString(); + info.zone = query.value(11).toString(); + info.station = query.value(12).toString(); + QString strBusi = query.value(13).toString(); info.business = QstringToJson(strBusi); - QString strFrom = query.value(13).toString(); + QString strFrom = query.value(14).toString(); info.fromUuid = QstringToJson(strFrom); - QString strTo = query.value(14).toString(); + QString strTo = query.value(15).toString(); info.toUuid = QstringToJson(strTo); - QString strProtect = query.value(15).toString(); + QString strProtect = query.value(16).toString(); info.protect = QstringToJson(strProtect); - QString strFaultRec= query.value(16).toString(); + QString strFaultRec= query.value(17).toString(); info.faultRec = QstringToJson(strFaultRec); - QString strStatus= query.value(17).toString(); + QString strStatus= query.value(18).toString(); info.status = QstringToJson(strStatus); - QString strDynSense= query.value(18).toString(); + QString strDynSense= query.value(19).toString(); info.dynSense = QstringToJson(strDynSense); - QString strInstructe= query.value(19).toString(); + QString strInstructe= query.value(20).toString(); info.instruct = QstringToJson(strInstructe); - QString strEtc= query.value(20).toString(); + QString strEtc= query.value(21).toString(); info.etc = QstringToJson(strEtc); - QString rawData = query.value(21).toString(); + QString rawData = query.value(22).toString(); info.components = parseUuidArray(rawData); - QString strContext= query.value(22).toString(); + QString strContext= query.value(23).toString(); info.context = QstringToJson(strContext); } query.clear(); @@ -1271,7 +1274,7 @@ bayInfo DataBase::getBay(QUuid uuid) QList DataBase::getAllBay() { QList lstInfo; - QString strSQL = "SELECT bay_uuid, name, type, unom, fla, capacity, description, in_service, state, grid, zone, station, business, from_uuids, to_uuids, dev_protect, dev_fault_record, dev_status, dev_dyn_sense, dev_instruct, dev_etc, components, context FROM bay"; + QString strSQL = "SELECT bay_uuid, name, tag, type, unom, fla, capacity, description, in_service, state, grid, zone, station, business, from_uuids, to_uuids, dev_protect, dev_fault_record, dev_status, dev_dyn_sense, dev_instruct, dev_etc, components, context FROM bay"; try { @@ -1281,37 +1284,38 @@ QList DataBase::getAllBay() bayInfo info; info.uuid = QUuid(query.value(0).toString()); info.name = query.value(1).toString(); - info.type = query.value(2).toString(); - info.unom = query.value(3).toDouble(); - info.fla = query.value(4).toDouble(); - info.capacity = query.value(5).toDouble(); - info.description = query.value(6).toString(); - info.inService = query.value(7).toBool(); - info.nState = query.value(8).toInt(); - info.grid = query.value(9).toString(); - info.zone = query.value(10).toString(); - info.station = query.value(11).toString(); - QString strBusi = query.value(12).toString(); + info.tag = query.value(2).toString(); + info.type = query.value(3).toString(); + info.unom = query.value(4).toDouble(); + info.fla = query.value(5).toDouble(); + info.capacity = query.value(6).toDouble(); + info.description = query.value(7).toString(); + info.inService = query.value(8).toBool(); + info.nState = query.value(9).toInt(); + info.grid = query.value(10).toString(); + info.zone = query.value(11).toString(); + info.station = query.value(12).toString(); + QString strBusi = query.value(13).toString(); info.business = QstringToJson(strBusi); - QString strFrom = query.value(13).toString(); + QString strFrom = query.value(14).toString(); info.fromUuid = QstringToJson(strFrom); - QString strTo = query.value(14).toString(); + QString strTo = query.value(15).toString(); info.toUuid = QstringToJson(strTo); - QString strProtect = query.value(15).toString(); + QString strProtect = query.value(16).toString(); info.protect = QstringToJson(strProtect); - QString strFaultRec= query.value(16).toString(); + QString strFaultRec= query.value(17).toString(); info.faultRec = QstringToJson(strFaultRec); - QString strStatus= query.value(17).toString(); + QString strStatus= query.value(18).toString(); info.status = QstringToJson(strStatus); - QString strDynSense= query.value(18).toString(); + QString strDynSense= query.value(19).toString(); info.dynSense = QstringToJson(strDynSense); - QString strInstructe= query.value(19).toString(); + QString strInstructe= query.value(20).toString(); info.instruct = QstringToJson(strInstructe); - QString strEtc= query.value(20).toString(); + QString strEtc= query.value(21).toString(); info.etc = QstringToJson(strEtc); - QString rawData = query.value(21).toString(); + QString rawData = query.value(22).toString(); info.components = parseUuidArray(rawData); - QString strContext= query.value(22).toString(); + QString strContext= query.value(23).toString(); info.context = QstringToJson(strContext); lstInfo.append(info); }