This commit is contained in:
baiYue 2025-07-25 19:42:20 +08:00
parent 54694f6425
commit 5b2273f021
4 changed files with 78 additions and 23 deletions

View File

@ -382,20 +382,41 @@ struct gridInfo //grid
//===================组态编辑器使用================
struct DiagramEditorWizardInfo //组态编辑向导信息
{
int nIndex = 0;
/*int nIndex = 0;
double dVoltage = 0;
int nLineType = 1; //1单母线2双母线
QMap<bool,int> 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<bool,int> 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<QString> 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<QUuid> components;
};

View File

@ -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();

View File

@ -61,8 +61,8 @@ public:
QJsonObject getPageContextByName(QString name);
QList<pageInfo> 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<QUuid> 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<QUuid> 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<QUuid> 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<QUuid> components,QJsonObject context);
bayInfo getBay(QUuid uuid);
QList<bayInfo> getAllBay();
bool ifBayExist(QUuid uuid);

View File

@ -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<QUuid> components)
QJsonObject instruct,QJsonObject etc,QList<QUuid> 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<QUuid> components)
QJsonObject etc,QList<QUuid> 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<bayInfo> DataBase::getAllBay()
{
QList<bayInfo> 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<bayInfo> 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();