From 5b2273f021372a6e916d01ebc55e02ae53e91387 Mon Sep 17 00:00:00 2001 From: baiYue Date: Fri, 25 Jul 2025 19:42:20 +0800 Subject: [PATCH] fix bug --- common/include/global.h | 58 ++++++++++++++++--- .../diagramEditor/diagramEditorWizard.cpp | 15 +++-- diagramUtils/include/dataBase.h | 4 +- diagramUtils/source/dataBase.cpp | 24 ++++++-- 4 files changed, 78 insertions(+), 23 deletions(-) diff --git a/common/include/global.h b/common/include/global.h index 5e26e1d..52068aa 100644 --- a/common/include/global.h +++ b/common/include/global.h @@ -382,20 +382,41 @@ struct gridInfo //grid //===================组态编辑器使用================ struct DiagramEditorWizardInfo //组态编辑向导信息 { - int nIndex = 0; + /*int nIndex = 0; double dVoltage = 0; int nLineType = 1; //1单母线,2双母线 QMap mapDivide; //母线划分数,false为1母线,true为2母 + int connectType = 0;*/ //接线方式,1为分段连接 +}; + +struct DiagramEditorWizardBusInfo //组态编辑母线信息 +{ + int nIndex = 0; + double dVoltage = 0; //电压等级 + int nLineType = 1; //1单母线,2双母线 + int nNum1 = 0; //1母 + int nNum2 = 0; //2母 int connectType = 0; //接线方式,1为分段连接 }; -struct DiagramEditorBusInfo //组态编辑母线信息 +enum class BayType //间隔类型 { - int nIndex = 0; - double dVoltage = 0; - int nLineType = 1; //1单母线,2双母线 - QMap mapDivide; //母线划分数,false为1母线,true为2母 - int connectType = 0; //接线方式,1为分段连接 + busSectionBay = 0, //分段 + busCouplerBay, //母联 + ptBay, //pt + incomingBay, //进线 + outcomingBay, //出线 + compensationBay, //无功补偿 + bypassBay, //旁路 + mainTransformerBay //主变 +}; + + +struct DiagramEditorWizardBayInfo //组态间隔信息 +{ + QString sName; + BayType nType; + QList lstBindObj; //连接的对象 }; enum class DiagramEditorStructType @@ -404,6 +425,28 @@ enum class DiagramEditorStructType rowData //母线对应的一行数据 }; +struct DiagramEditorConnectType //组态编辑连接信息 +{ + QString sName; + int nType = 0; //1母线,2间隔 +}; + +struct DiagramEditorBriefConnect //组态编辑时连接信息 +{ + DiagramEditorConnectType con1; + DiagramEditorConnectType con2; + + bool operator==(const DiagramEditorBriefConnect& obj) + { + if(this == &obj) + return false; + if((con1.sName == obj.con1.sName && con2.sName == obj.con2.sName)||(con1.sName == obj.con2.sName && con2.sName == obj.con1.sName)) + return true; + else + return false; + } +}; + //==================组态图使用===================== enum HandleType { @@ -688,6 +731,7 @@ struct bayInfo QJsonObject dynSense; QJsonObject instruct; QJsonObject etc; + QJsonObject context; QList components; }; diff --git a/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp b/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp index 9e9c275..d632057 100644 --- a/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp +++ b/diagramCavas/source/diagramEditor/diagramEditorWizard.cpp @@ -84,7 +84,7 @@ void DiagramEditorWizard::generateBayPage() sVoltage = QString::number(iter->dVoltage)+"kV"; if(iter->nLineType == 1){ //单母 - int nDivide = iter->mapDivide.value(0); + int nDivide = iter->nNum1; for(int i = 0;i < nDivide;++i){ QString sDivPre; //分段前缀 @@ -103,8 +103,8 @@ void DiagramEditorWizard::generateBayPage() } } else{ //双母 - int nDivide1 = iter->mapDivide.value(0); // Ⅰ母 - int nDivide2 = iter->mapDivide.value(1); // Ⅱ母 + int nDivide1 = iter->nNum1; // Ⅰ母 + int nDivide2 = iter->nNum2; // Ⅱ母 if(nDivide1 == nDivide2){ //双母线划分相同 for(int i = 0;i < nDivide1;++i){ @@ -302,15 +302,14 @@ void DiagramEditorWizard::onDelegateFinishEdit(const QModelIndex &index, const Q divideItem->setData(Qt::UserRole,0); } else if(col == 3){ - _mapBus[row].mapDivide.clear(); QStringList lst = value.split(","); if(lst.size() > 1) //双母 { - _mapBus[row].mapDivide[0] = lst[0].toInt(); - _mapBus[row].mapDivide[1] = lst[1].toInt(); + _mapBus[row].nNum1 = lst[0].toInt(); + _mapBus[row].nNum2= lst[1].toInt(); } else{ //单母 - _mapBus[row].mapDivide[0] = lst[0].toInt(); + _mapBus[row].nNum1 = lst[0].toInt(); } } else if(col == 4){ @@ -347,7 +346,7 @@ void DiagramEditorWizard::onBusDeleteClicked() QModelIndex indexName = index.sibling(index.row(),0); int nIndex = indexName.data(Qt::UserRole).toInt(); if(_mapBus.contains(nIndex)){ - DiagramEditorWizardBusInfo info = _mapBus.take(nIndex); + _mapBus.remove(nIndex); } int currentRow = ui->tableWidget_bus->currentRow(); diff --git a/diagramUtils/include/dataBase.h b/diagramUtils/include/dataBase.h index e6994db..1711873 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); - 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); + 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); bayInfo getBay(QUuid uuid); QList getAllBay(); bool ifBayExist(QUuid uuid); diff --git a/diagramUtils/source/dataBase.cpp b/diagramUtils/source/dataBase.cpp index f8349a1..f19cc02 100644 --- a/diagramUtils/source/dataBase.cpp +++ b/diagramUtils/source/dataBase.cpp @@ -1059,7 +1059,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, QString station,QJsonObject business,QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense, - QJsonObject instruct,QJsonObject etc,QList components) + QJsonObject instruct,QJsonObject etc,QList components,QJsonObject context) { QJsonDocument businessDoc(business); QString strBusiness = businessDoc.toJson(QJsonDocument::Compact); @@ -1088,7 +1088,10 @@ bool DataBase::insertBay(QUuid uuid,QString name,QString type,double unom,double QJsonDocument etcDoc(etc); QString strEtc = etcDoc.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) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + 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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; QStringList uuidStrings; for (const QUuid &uuid : components) { @@ -1120,6 +1123,7 @@ bool DataBase::insertBay(QUuid uuid,QString name,QString type,double unom,double params.append(strInstruct); params.append(strEtc); params.append(arrayUuid); + params.append(strContext); try { @@ -1135,7 +1139,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, QJsonObject fromUuid,QJsonObject toUuid,QJsonObject protect,QJsonObject faultRec,QJsonObject status,QJsonObject dynSense,QJsonObject instruct, - QJsonObject etc,QList components) + QJsonObject etc,QList components,QJsonObject context) { QJsonDocument businessDoc(business); QString strBusiness = businessDoc.toJson(QJsonDocument::Compact); @@ -1164,6 +1168,9 @@ bool DataBase::updateBay(QUuid uuid,QString name,double unom,double fla,double c QJsonDocument etcDoc(etc); QString strEtc = etcDoc.toJson(QJsonDocument::Compact); + QJsonDocument contextDoc(etc); + QString strContext = contextDoc.toJson(QJsonDocument::Compact); + QStringList uuidStrings; for (const QUuid &uuid : components) { // 使用WithoutBraces确保无花括号,符合PG数组元素格式 @@ -1171,7 +1178,7 @@ 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 = ? WHERE bay_uuid = ?"; + 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 = ?"; QVariantList params; params.append(name); params.append(unom); @@ -1190,6 +1197,7 @@ bool DataBase::updateBay(QUuid uuid,QString name,double unom,double fla,double c params.append(strInstruct); params.append(strEtc); params.append(arrayUuid); + params.append(strContext); params.append(uuid); try @@ -1207,7 +1215,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 FROM bay WHERE bay_uuid = ?"; + 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 = ?"; QVariantList params; params.append(uuid); @@ -1248,6 +1256,8 @@ bayInfo DataBase::getBay(QUuid uuid) info.etc = QstringToJson(strEtc); QString rawData = query.value(21).toString(); info.components = parseUuidArray(rawData); + QString strContext= query.value(22).toString(); + info.context = QstringToJson(strContext); } query.clear(); return info; @@ -1261,7 +1271,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 FROM bay"; + 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"; try { @@ -1301,6 +1311,8 @@ QList DataBase::getAllBay() info.etc = QstringToJson(strEtc); QString rawData = query.value(21).toString(); info.components = parseUuidArray(rawData); + QString strContext= query.value(22).toString(); + info.context = QstringToJson(strContext); lstInfo.append(info); } query.clear();