fix project model layout

This commit is contained in:
baiYue 2026-06-09 15:46:04 +08:00
parent 660a7649c9
commit 8c1b772f50
17 changed files with 161 additions and 113 deletions

View File

@ -191,6 +191,8 @@ public:
QString zone() const {return sZone;}
void setStation(const QString& s) {sStation = s;}
QString station() const {return sStation;}
void setStationId(int id) {nStationId = id;}
int stationId() const{return nStationId;}
void setSourceItemId(const QString& s) {sSourceItemId = s;}
QString getSourceItemId() {return sSourceItemId;}
void setMeasurement(QMap<QString,MeasurementInfo> map) {mMeasurement = map;}
@ -201,6 +203,7 @@ protected:
QString sGrid;
QString sZone;
QString sStation;
int nStationId = 0;
bool bInService;
int nState;
int nStatus;
@ -219,6 +222,6 @@ public:
VariableProperty(QObject* parent = nullptr);
~VariableProperty();
ModelDataInfo& getPropertyValue() const;
ModelDataInfo& getPropertyValue(bool useCatch = false) const;
};
#endif // DATABASE_H

View File

@ -90,7 +90,7 @@ VariableProperty::~VariableProperty()
}
ModelDataInfo& VariableProperty::getPropertyValue() const
ModelDataInfo& VariableProperty::getPropertyValue(bool useCatch) const
{
return DataManager::instance().modelData()[sModelName];
return DataManager::instance().modelData(useCatch)[sModelName];
}

View File

@ -59,6 +59,7 @@ signals:
void updateMonitorTopology(QList<QUuid>);
void pannelSelected(QString sPanel,int nType); //界面选择信号,名称,类型(0:editor)
void clearTopology();
void projectSaved(const QString,int);
public slots:
void onSignal_addDrawingPanel(PowerEntity* p,DiagramMode = DM_edit,QString parent = QString()); //parent:派生运行时的page
void onSignal_addGraphicsItem(ModelStateInfo&);

View File

@ -90,7 +90,7 @@ public:
void showProjectModelSettingDlg(GraphicsBaseModelItem*); //在基模拓扑图上打开工程模设置对话框
void generateProjectModel(const QString&,QList<GraphicsBaseModelItem*>,QList<GraphicsNonStandardItem*>); //由基模生成工程模
void addProjectItemByBaseData(DrawingPanel*,GraphicsBaseModelItem*,BaseProperty*,QString sGrid = "",QString sZone = "",QString sStation = ""); //从基模item生成工程模item
void addProjectItemByBaseData(DrawingPanel*,GraphicsBaseModelItem*,BaseProperty*,QString sGrid = "",QString sZone = "",QString sStation = "",int stationId = 0); //从基模item生成工程模item
void onWizardFinished(QMap<QUuid,GraphicsBaseModelItem*> mapItem,QList<EditBaseItem*> mapBay); //editor结束生成基模
/*************************间隔*****************************/
void addBayItem(QUuid,ModelFunctionType = ModelFunctionType::ProjectModel);
@ -142,6 +142,7 @@ Q_SIGNALS:
void dataUpdated(); //数据更新通知
void updateTopologyItems(QList<HierarchyItem>,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级>
void notifyUpdateMonitorTopology(QList<QUuid>); //使用列表中的item id更新总拓扑
void projectSaved(QString,int id); //工程模保存完成信号
public:
void setPageName(QString s) {_pageName = s;} //设置表名称
QString pageName() const {return _pageName;}
@ -149,6 +150,7 @@ public:
void startHttpRequest(); //开始请求数据(运行时)
void setCavas(QPointer<DiagramCavas> p) {_cavas = p;} //设置所属顶层容器
DiagramCavas* getCavas();
void refreshConnection();
void updateTopologyLst(); //更新拓扑列表
QMap<QUuid,GraphicsProjectModelItem*> getProjectItems(){return _nodeItem;}
@ -166,7 +168,7 @@ public Q_SLOTS:
private:
void addPortsToItem_json(PortState,QJsonArray,GraphicsBaseItem*); //将json格式的port添加到item
void autoSetModelName(GraphicsBaseModelItem*); //如果此页的工程模已被设置将projectName更新到item
QString removeSuffix(const QString& str); //移除最后一个下划线后的内容 (处理各种tag后缀)
QString removeSuffix(const QString& str,QChar symbol = '_'); //移除最后一个符号后的内容 (处理各种tag后缀,默认'_')
ModelProperty* getItemByUid(QList<GraphicsBaseItem*>,QUuid); //返回uid对应的data
void updateMonitor(QMap<QString,QMap<quint64,double>>); //使用当前数据更新运行时
void assignMeasureSymmetry(QMap<QString, MeasurementInfo>& measurementMap); //设置量测中互为double的name

View File

@ -203,6 +203,9 @@ void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,
connect(pModel,&FixedPortsModel::updateTopologyItems,this,&DiagramCavas::onSignal_updateTopology);
connect(pModel,&FixedPortsModel::itemSelected,this,&DiagramCavas::onSignal_selectedItems);
connect(pModel,&FixedPortsModel::notifyUpdateMonitorTopology,this,&DiagramCavas::onSignal_updateMonitorTopology);
connect(pModel,&FixedPortsModel::projectSaved,this,[&](const QString sPage,int id){
emit projectSaved(sPage,id);
});
connect(pPanel,&DrawingPanel::panelDelete,this,&DiagramCavas::onSignal_panelDelete);
}
else if(mode == DM_run){

View File

@ -930,7 +930,7 @@ void DiagramEditorModel::refreshConnection()
if(pTopoFrom && pTopoTo){
QPointF p1 = pFrom->pos();
QPointF p2 = pTo->pos();
pTopoFrom->setRelativePosition(p1);
pTopoFrom->setRelativePosition(p1); //重绘连接位置时保存
pTopoTo->setRelativePosition(p2);
}
}
@ -939,12 +939,6 @@ void DiagramEditorModel::refreshConnection()
}
}
}
if(_pCurPreviewScene){
for (QGraphicsItem *item : _pCurPreviewScene->items()) {
item->setSelected(true);
}
_pCurPreviewScene->clearSelection();
}
}
void DiagramEditorModel::applyLayoutResult(const LayoutResult& result) {

View File

@ -179,7 +179,7 @@ QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double he
QString sMeta = pro->metaModelName();
QString sProModel = pro->modelName();
ModelDataInfo mapValue = DataManager::instance().modelData()[sProModel];
ModelDataInfo mapValue = DataManager::instance().modelData(true)[sProModel];
PropertyValueInfo valueInfo; //属性组设置的数据 (ct,pt二次绕组)
if(mapValue.groupInfo.contains("base_extend"))
{
@ -735,8 +735,8 @@ void FixedPortsModel::loadNodeDataFromDataBase()
QList<ComponentInfo> lst= DataBase::GetInstance()->getAllComponents();
for(auto &info:lst)
{
QString preTag = removeSuffix(info.tag);
QString prePath = removeSuffix(info.nspath);
QString preTag = removeSuffix(info.tag,'-');
QString prePath = removeSuffix(info.nspath,'-');
BaseProperty* pData = addNodeData(info.uuid,info.type,info.name,info.modelName);
pData->setTag(preTag);
pData->setName(info.name);
@ -962,7 +962,7 @@ void FixedPortsModel::saveNode(int nPageId)
BayProperty* pBay = dynamic_cast<BayProperty*>(pro);
if(pBay){
bool val = DataBase::GetInstance()->ifBayExist(pBay->uuid());
QString tempTag = pBay->tag()+"_"+_pageName; //tag后加工程名保持全局唯一
QString tempTag = pBay->tag()+"-"+_pageName; //tag后加工程名保持全局唯一
if(!val){
QJsonObject objFrom = turnListToJson(pBay->getLstFrom(),"id","ids");
QJsonObject objTo= turnListToJson(pBay->getLstTo(),"id","ids");
@ -993,6 +993,7 @@ void FixedPortsModel::saveNode(int nPageId)
QString sZoneTag;
QString sZoneName;
QString sStationTag;
int nStationId;
QString sStationName;
QList<QUuid> lstId = pBay->getLstComponent(); //获取间隔下的所有item取一个item所属的层级关系
if(!lstId.isEmpty()){
@ -1017,6 +1018,7 @@ void FixedPortsModel::saveNode(int nPageId)
for(auto& stationInfo:lstStation){
if(pItemData->station() == stationInfo.tagname){
sStationTag = stationInfo.tagname;
nStationId = stationInfo.id;
sStationName = stationInfo.name;
break;
}
@ -1026,7 +1028,7 @@ void FixedPortsModel::saveNode(int nPageId)
if(!bExist){
if(!bSaveFlag){
DataBase::GetInstance()->insertComponent(QUuid("11111111-1111-1111-1111-111111111111"),"","","","","","","",sStationTag,-1,false,-1,-1,QJsonObject(),QJsonObject(),QJsonObject(),1);
DataBase::GetInstance()->insertComponent(QUuid("11111111-1111-1111-1111-111111111111"),"","","","","","","",sStationTag,nStationId,-1,false,-1,-1,QJsonObject(),QJsonObject(),QJsonObject(),1);
bSaveFlag = true;
}
}
@ -1184,6 +1186,7 @@ void FixedPortsModel::saveNode(int nPageId)
}
QMap<QUuid,GraphicsProjectModelItem*> mapItems = allItems();
bool updated = false;
for(auto& pItem:mapItems)
{
BaseProperty* pData = dynamic_cast<BaseProperty*>(pItem->getProperty());
@ -1213,8 +1216,11 @@ void FixedPortsModel::saveNode(int nPageId)
VariableProperty* pVariable = dynamic_cast<VariableProperty*>(pData);
if(pVariable)
{
ModelDataInfo& dataInfo = pVariable->getPropertyValue();
QString tempTag = pData->tag()+"_"+_pageName; //tag后加工程名使得全局唯一
bool useCatch = updated?true:false;
ModelDataInfo& dataInfo = pVariable->getPropertyValue(useCatch);
if(updated == false)
updated = true;
QString tempTag = pData->tag()+"-"+_pageName+pData->getBay(); //tag后加工程名使得全局唯一
if(exist) //已存在更新
{
DataBase::GetInstance()->updateComponent(pData->uuid(),tempTag,pData->name(),pData->context(),pData->inService(),pData->state(),pData->status());
@ -1234,8 +1240,8 @@ void FixedPortsModel::saveNode(int nPageId)
}
else
{
QString tempPath = pData->path()+"_"+_pageName;
DataBase::GetInstance()->insertComponent(pData->uuid(),pData->modelName(),tempPath,tempTag,pData->name(),pData->description(),pData->grid(),pData->zone(),pData->station(),pData->type(),true,pData->state(),pData->status(),pData->connectedBus(),pData->label(),pData->context(),1);
QString tempPath = pData->path()+"-"+_pageName;
DataBase::GetInstance()->insertComponent(pData->uuid(),pData->modelName(),tempPath,tempTag,pData->name(),pData->description(),pData->grid(),pData->zone(),pData->station(),pData->stationId(),pData->type(),true,pData->state(),pData->status(),pData->connectedBus(),pData->label(),pData->context(),1);
for(auto &val:dataInfo.groupInfo)
{
if(val.groupName == "component")
@ -1691,6 +1697,65 @@ DiagramCavas* FixedPortsModel::getCavas()
return nullptr;
}
void FixedPortsModel::refreshConnection()
{
for(auto& item:_nodeItem){
auto pData = item->getProperty();
if(pData){
int nType = pData->type();
QUuid uid = pData->uuid();
if(nType == 8){ //是电缆
auto pLine = dynamic_cast<ElectricConnectLineItem*>(item);
if(pLine){
PowerConnection* pCon = TopologyManager::instance().connection(uid.toString(),ModelFunctionType::EditorModel);
if(pCon){
QString fromTerId = pCon->fromTerminalId();
QString toTerId = pCon->toTerminalId();
QString fromId = pCon->fromComponent();
QString toId = pCon->toComponent();
GraphicsProjectModelItem* pFromItem = _nodeItem.value(QUuid(fromId));
GraphicsProjectModelItem* pToItem = _nodeItem.value(QUuid(toId));
auto pFromData = pFromItem->getProperty();
auto pToData = pToItem->getProperty();
if(pFromData->type() == 1){ //from是母线
auto pToPort = pToItem->getPortById(toTerId);
QPointF p = calculateBusPortPos(pFromItem,pToItem,pToPort->scenePos());
pFromItem->movePort(fromTerId,pFromItem->mapFromScene(p));
}
else if(pToData->type() == 1){ //to是母线
auto pFromPort = pFromItem->getPortById(fromTerId);
QPointF p = calculateBusPortPos(pToItem,pFromItem,pFromPort->scenePos());
pToItem->movePort(toTerId,pToItem->mapFromScene(p));
}
auto portsFrom = pFromItem->getPorts();
auto portsTo = pToItem->getPorts();
ItemPort* pFrom = portsFrom.value(fromTerId);
ItemPort* pTo = portsTo.value(toTerId);
if(pFrom && pTo){ //更新连线起点终点位置
pLine->setStartPoint(pFrom->scenePos());
pLine->setEndPoint(pTo->scenePos());
pLine->calculatePath();
PowerTerminal* pTopoFrom = TopologyManager::instance().getTerminal(fromTerId,ModelFunctionType::EditorModel);
PowerTerminal* pTopoTo = TopologyManager::instance().getTerminal(toTerId,ModelFunctionType::EditorModel);
if(pTopoFrom && pTopoTo){
QPointF p1 = pFrom->pos();
QPointF p2 = pTo->pos();
pTopoFrom->setRelativePosition(p1);
pTopoTo->setRelativePosition(p2);
}
}
}
}
}
}
}
}
void FixedPortsModel::updateTopologyLst()
{
QString sG;
@ -1834,9 +1899,9 @@ void FixedPortsModel::autoSetModelName(GraphicsBaseModelItem* pItem)
}
}
QString FixedPortsModel::removeSuffix(const QString& str)
QString FixedPortsModel::removeSuffix(const QString& str,QChar symbol)
{
int lastUnderscore = str.lastIndexOf('_');
int lastUnderscore = str.lastIndexOf(symbol);
if (lastUnderscore == -1) return str; // 没有下划线
return str.left(lastUnderscore);
@ -2149,6 +2214,8 @@ void FixedPortsModel::saveProject()
DataBase::GetInstance()->updatePage(sPage,sPage,context);
int pageId = DataBase::GetInstance()->getPageIdByName(sPage);
pPanel->saveNodes(pageId);
emit projectSaved(sPage,pageId);
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存完成"));
}
/*********************baseModel**********************/
@ -2246,12 +2313,16 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<Graphi
QString sG;
QString sZ;
QString sS;
int nStationId;
if(!lstGrid.isEmpty())
sG = lstGrid.first().tagname;
if(!lstZone.isEmpty())
sZ = lstZone.first().tagname;
if(!lstStation.isEmpty())
if(!lstStation.isEmpty()){
sS = lstStation.first().tagname;
nStationId = lstStation.first().id;
}
for(auto& pBaseItem:lstItem) //先处理连线递归处理连线连接的item
{
@ -2266,7 +2337,8 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<Graphi
pData->setGrid(sG);
pData->setZone(sZ);
pData->setStation(sS);
addProjectItemByBaseData(pProPanel,pBaseItem,pData,sG,sZ,sS);
pData->setStationId(nStationId);
addProjectItemByBaseData(pProPanel,pBaseItem,pData,sG,sZ,sS,nStationId);
}
}
}
@ -2386,6 +2458,7 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<Graphi
}
}
}
//refreshConnection();
}
void FixedPortsModel::onWizardFinished(QMap<QUuid,GraphicsBaseModelItem*> mapItem,QList<EditBaseItem*> mapBlock)
@ -2723,7 +2796,7 @@ void FixedPortsModel::onWizardFinished(QMap<QUuid,GraphicsBaseModelItem*> mapIte
emit updateTopologyItems(lstItem,false,false);
}
void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBaseModelItem* pItem,BaseProperty* pPro,QString sGrid,QString sZone,QString sStation)
void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBaseModelItem* pItem,BaseProperty* pPro,QString sGrid,QString sZone,QString sStation,int nStationId)
{
BaseModelProperty* pBase = dynamic_cast<BaseModelProperty*>(pItem->getProperty());
if(pBase){
@ -2737,6 +2810,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
pPro->setSubList(pBase->getSubList()); //传递sublist
pPro->setBay(sBay);
pPro->setVoltageLevel(pBase->getVoltageLevel());
QMap<QString,ItemPort*> basePorts = pItem->getPorts();
int nBaseTypeId = BaseTypeManager::getInstance()->getIdByModelType(pBase->metaModelName());
@ -3035,7 +3109,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
{
if(pProItem){
PowerEntity* pEntity = TopologyManager::instance().createEntity(EntityType::Component,pPro->uuid().toString(),pBase->name());
QList<PowerTerminal*> lstBase = TopologyManager::instance().getTerminalsForEntity(pBase->uuid().toString(),ModelFunctionType::BaseModel); //获取基模的逻辑点
/*QList<PowerTerminal*> lstBase = TopologyManager::instance().getTerminalsForEntity(pBase->uuid().toString(),ModelFunctionType::BaseModel); //获取基模的逻辑点
for(auto& baseTer:lstBase)
{
QUuid uid = QUuid::createUuid();
@ -3046,7 +3120,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
proTer->setGenerateBy(baseTer->id());
if(proTer->type() == TerminalType::PowerConnect)
{
pProItem->addPort(p_movable,proTer->relativePosition(),proTer->id());
pProItem->addPort(p_movable,pRelaPos,proTer->id(),T_lineInOut,PortPos(baseTer->getPortLocate()),dPerX,dPerY);
ItemPort* pPort = pProItem->getPortById(proTer->id());
pPort->setSourcePortId(baseTer->id());
}
@ -3071,6 +3145,17 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
ItemPort* pPort = pProItem->getPortById(proTer->id());
pPort->setSourcePortId(baseTer->id());
}
}*/
for(auto& pBasePort:basePorts){ //不使用拓扑携带的位置数据由base数据直接派生
double dPerX = pBasePort->getXPercent();
double dPerY = pBasePort->getYPercent();
QPointF pRelaPos = pBasePort->pos();
PowerTerminal* proTer = TopologyManager::instance().createTerminal(pEntity->id(),TerminalType::PowerConnect,"",pRelaPos,pBasePort->getId(),ModelFunctionType::ProjectModel,dPerX,dPerY);
proTer->setGenerateBy(pBasePort->getId());
pProItem->addPort(p_movable,pRelaPos,proTer->id(),pBasePort->getType(),pBasePort->portPos(),dPerX,dPerY);
ItemPort* pPort = pProItem->getPortById(proTer->id());
pPort->setSourcePortId(pBasePort->getId());
}
pProItem->setItemId(QUuid(pEntity->id()));
@ -3127,6 +3212,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
pData->setGrid(sGrid);
pData->setZone(sZone);
pData->setStation(sStation);
pData->setStationId(nStationId);
addProjectItemByBaseData(pPanel,pFromItem,pData);
proFromItemId = id.toString();
}
@ -3139,6 +3225,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
pData->setGrid(sGrid);
pData->setZone(sZone);
pData->setStation(sStation);
pData->setStationId(nStationId);
addProjectItemByBaseData(pPanel,pToItem,pData);
proToItemId = id.toString();
}

View File

@ -417,12 +417,12 @@ bool ElectricConnectLineItem::isSegmentSafe(const QPointF& p1, const QPointF& p2
bool ElectricConnectLineItem::isPathSafe(const QList<QPointF>& path,
const QList<QRectF>& components)
{
for (int i = 0; i < path.size() - 1; i++) {
/*for (int i = 0; i < path.size() - 1; i++) {
if (!isSegmentSafe(path[i], path[i+1], components)) {
return false;
}
}
return true;
}*/
return true; //相交判断暂时屏蔽
}
// 检查线段是否穿透元件

View File

@ -92,6 +92,12 @@ int GraphicsBaseItem::addPort(PortState typ,QPointF vec,QString id,HandleType hT
if(typ == p_movable)
{
pPort->setType(T_lineInOut);
if(dXPercent || dYPercent)
{
pPort->setPortPos(pos);
pPort->setXPercent(dXPercent);
pPort->setYPercent(dYPercent);
}
}
else
{

View File

@ -34,71 +34,6 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="widget" native="true">
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>25</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QWidget {
background: #2c5282;
color: white;
border: none;
}
QWidget QLabel {
color: white;
font-size: 12px;
background: transparent;
}</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>-1</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>输入组态图名称</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>227</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QVBoxLayout" name="verticalLayout">

View File

@ -51,7 +51,7 @@ public:
bool deleteTopologic(QUuid fromPin,QUuid toPin);
/*********************************************************************************/
bool updateComponent(QUuid uuid,QString tag,QString name,QJsonObject context,bool inService,int state,int status);
bool insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int type,bool inService,int state,int status,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int op);
bool insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int stationId,int type,bool inService,int state,int status,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int op);
bool insertDynamicProperty(QUuid uuid,GroupStateValue groupValue);
bool updateDynamicProperty(QUuid uuid,GroupStateValue groupValue);
ComponentInfo getComponentInfoByUuid(QString uuid);

View File

@ -27,7 +27,7 @@ public:
void updateModelData(const QString& sModel,QUuid uuid,const QString& sGroup,QMap<QString,PropertyStateInfo> mapPro);
ModleStateMap& modelState();
ModelDataMap& modelData();
ModelDataMap& modelData(bool useCatch = false); //bool:使用缓存数据
private:
ModleStateMap _modelStateInfo; //接收的模型结构信息(可直接返回引用)
ModelDataMap _modleDataInfo; //模型实时数据(使用接口获取数据)

View File

@ -268,7 +268,7 @@ QSqlQuery DataBase::executeBatchSQL(const QStringList& sqlStatements, bool creat
}
bool DataBase::insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int type,bool inService,int state,int status,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int op)
bool DataBase::insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int stationId,int type,bool inService,int state,int status,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int op)
{
QSqlDatabase db = getDB();
if(db.open())
@ -278,7 +278,7 @@ bool DataBase::insertComponent(QUuid uuid,QString modelName,QString nspath,QStri
QJsonDocument contextDoc(context);
QString strCon = contextDoc.toJson(QJsonDocument::Compact);
qry.prepare("INSERT INTO component(global_uuid, model_name, nspath, tag, name, grid, zone, station, type, in_service, state, status, context, op, ts) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
qry.prepare("INSERT INTO component(global_uuid, model_name, nspath, tag, name, grid, zone, station, station_id, type, in_service, state, status, context, op, ts) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
qry.bindValue(0,uuid);
qry.bindValue(1,modelName);
qry.bindValue(2,nspath);
@ -287,13 +287,14 @@ bool DataBase::insertComponent(QUuid uuid,QString modelName,QString nspath,QStri
qry.bindValue(5,grid);
qry.bindValue(6,zone);
qry.bindValue(7,station);
qry.bindValue(8,type);
qry.bindValue(9,inService);
qry.bindValue(10,state);
qry.bindValue(11,status);
qry.bindValue(12,strCon);
qry.bindValue(13,op);
qry.bindValue(14,QDateTime::currentDateTime());
qry.bindValue(8,stationId);
qry.bindValue(9,type);
qry.bindValue(10,inService);
qry.bindValue(11,state);
qry.bindValue(12,status);
qry.bindValue(13,strCon);
qry.bindValue(14,op);
qry.bindValue(15,QDateTime::currentDateTime());
bool res = qry.exec();
QString str = qry.lastQuery();
const QVariantList list = qry.boundValues();

View File

@ -282,11 +282,14 @@ ModleStateMap& DataManager::modelState()
return _modelStateInfo;
}
ModelDataMap& DataManager::modelData()
ModelDataMap& DataManager::modelData(bool useCatch)
{
if(!_dataInitialised)
initialModelData();
else
initialModelData(true);
if(!useCatch){
if(!_dataInitialised)
initialModelData();
else
initialModelData(true);
}
return _modleDataInfo;
}

View File

@ -36,6 +36,7 @@ public slots:
void onIndexRbtnClicked(const QPoint &pos); //索引列表右键菜单
void onItemChanged(QStandardItem *item);
void onItemClicked(const QModelIndex &index);
void onPageSaved(const QString,int);
void onEditorRbtnClicked(const QPoint &pos); //editor右键菜单
void onEditorDBClicked(QTreeWidgetItem* item, int column);

View File

@ -199,6 +199,18 @@ void DiagramView::onItemClicked(const QModelIndex &index)
}
}
void DiagramView::onPageSaved(const QString sPage,int id)
{
for (int row = 0; row < _pModel->rowCount(); ++row) {
QStandardItem *item = _pModel->item(row, 0);
if (item && item->data(Qt::DisplayRole) == sPage) {
QStandardItem* pItem = new QStandardItem(sPage);
pItem->setData(id,Qt::UserRole);
_pModel->appendRow(pItem);
}
}
}
void DiagramView::onEditorRbtnClicked(const QPoint &pos)
{
QTreeWidgetItem *item = ui->treeWidget->itemAt(pos);

View File

@ -191,13 +191,13 @@ void CMainWindow::initializeAction()
connect(m_pDiagramView,&DiagramView::diagramSelected,m_pDiagramCavas,&DiagramCavas::onSignal_selectDiagram);
connect(m_pDiagramView,&DiagramView::createProject,this,&CMainWindow::onAction_createEditor);
connect(m_pDiagramCavas,&DiagramCavas::pannelSelected,m_pDiagramView,&DiagramView::onPanelActive);
connect(m_pDiagramCavas,&DiagramCavas::projectSaved,m_pDiagramView,&DiagramView::onPageSaved);
connect(m_pDiagramCavas,&DiagramCavas::prepareUpdateItems,m_pMonitorItemsDlg,&MonitorItemsDlg::onUpdateItems);
connect(m_pDiagramCavas,&DiagramCavas::prepareSelectItems,m_pMonitorItemsDlg,&MonitorItemsDlg::onSelectItems);
connect(m_pDiagramCavas,&DiagramCavas::updateMonitorList,m_pMonitorPagesDlg,&MonitorPagesDlg::onMonitorCreated);
connect(m_pDiagramCavas,&DiagramCavas::createdMonitorItems,m_pMonitorItemsDlg,&MonitorItemsDlg::onMonitorCreated);
connect(m_pDiagramCavas,&DiagramCavas::updateMonitorTopology,m_pTopologyView,&TopologyView::onMonitorUpdate);
connect(m_pMonitorItemsDlg,&MonitorItemsDlg::generateMonitor,m_pDiagramCavas,&DiagramCavas::onSignal_generate);
connect(m_pMonitorPagesDlg,&MonitorPagesDlg::monitorSelected,m_pDiagramCavas,&DiagramCavas::onSignal_monitorSelected);
connect(m_pMonitorPagesDlg,&MonitorPagesDlg::prepareSaveMonitor,m_pDiagramCavas,&DiagramCavas::onSignal_saveMonitor);