Browse Source

加载完整流程

chengxr 1 year ago
parent
commit
ba29ecd150

+ 5 - 5
QFD/common/SchemePlanManager.h

@@ -86,7 +86,7 @@ public:
 
         int step;                // 步骤编号
         SchemeProcessType type;  // 步骤类型
-        QString name;            // 步骤名称
+        QString name;            // 步骤名称, 这个字段要删掉
 
         /// 数据来源
         /// 导入数据(权重数据或者评估数据)时有效
@@ -99,10 +99,10 @@ public:
         /// 效能分级, 选择灰色聚类算法计算效能评估时用到
         int efficiencyGrades = 0;
 
-        bool isOptional;     // 是否可以选择执行
-        bool isChecked;      // 是否选择了执行
-        QString createTime;  // 创建时间
-        QString updateTime;  // 更新时间
+        bool isOptional;         // 是否可以选择执行, 这个字段要删掉
+        bool isChecked = false;  // 是否选择了执行
+        QString createTime;      // 创建时间
+        QString updateTime;      // 更新时间
     };
 
     /// 方案步骤的名称

+ 12 - 8
QFD/shemeFlow/FlowGraphNodeWidget.cpp

@@ -114,7 +114,7 @@ bool FlowGraphCommonNodeWidget::isTitleHidden() const
     QList<SchemePlanManager::SchemeDataSource> dsrc = SchemePlanManager::processOptionalDataSource(m_process);
     bool opt                                        = SchemePlanManager::processIsOptional(m_process);
 
-    return (algs.count() > 0 || dsrc.count() > 0 || opt);
+    return (algs.count() > 1 || dsrc.count() > 1 || opt);
 }
 
 void FlowGraphCommonNodeWidget::initWidget()
@@ -148,28 +148,32 @@ void FlowGraphCommonNodeWidget::loadInfo()
 
     /// 标题
     /// 在其他子控件都不显示时, 将标题居中显示
-    m_label->setHidden(algs.count() > 0 || dsrc.count() > 0 || opt);
+    m_label->setHidden(algs.count() > 1 || dsrc.count() > 1 || opt);
     m_label->setText(title());
 
     /// 算法选择组件
-    m_algCombo->setHidden(algs.count() <= 0);
+    m_algCombo->setHidden(algs.count() < 2);
     m_algCombo->clear();
     for (SchemePlanManager::Algorithm alg : algs) {
         m_algCombo->addItem(SchemePlanManager::stringFromAlgorithm(alg));
     }
-    if (algs.count() > 0) {
-        m_algCombo->setCurrentIndex(algs.indexOf(m_process.algorithm));
+    int algIndex = 0;
+    if (algs.count() > 0 && m_process.algorithm != SchemePlanManager::NoAlg) {
+        algIndex = algs.indexOf(m_process.algorithm);
     }
+    m_algCombo->setCurrentIndex(algIndex);
 
     /// 数据来源选择组件
-    m_dataCombo->setHidden(dsrc.count() <= 0);
+    m_dataCombo->setHidden(dsrc.count() < 2);
     m_dataCombo->clear();
     for (SchemePlanManager::SchemeDataSource scr : dsrc) {
         m_dataCombo->addItem(SchemePlanManager::stringFromDataSource(scr));
     }
-    if (dsrc.count() > 0) {
-        m_dataCombo->setCurrentIndex(dsrc.indexOf(m_process.dSource));
+    int dataIndex = 0;
+    if (dsrc.count() > 0 && m_process.dSource != SchemePlanManager::NoData) {
+        dataIndex = dsrc.indexOf(m_process.dSource);
     }
+    m_dataCombo->setCurrentIndex(dataIndex);
 
     /// 选择执行组件
     m_checkBox->setVisible(opt);

+ 43 - 97
QFD/widgets/SchemeFlowWidget.cpp

@@ -134,116 +134,62 @@ void SchemeFlowWidget::refresh()
 {
     clearAllNodes();
 
-    qreal h = 200;
+    int y         = 0;
+    int space     = 50;
+    NodeId lastId = -1;
+    QList<SchemePlanManager::SchemeProcessType> scheme;
 
     switch (m_indexType) {
-    case ProjectManager::AbilityIndex:
-        break;
-    case ProjectManager::TechIndex: {
-        NodeId id11 = m_graphModel->addNode(FlowCommonData().type().id);
-        m_graphModel->setNodeData(id11, NodeRole::Position, QPointF(0, 0));
-        FlowGraphCommonNodeWidget *w11 = new FlowGraphCommonNodeWidget();
-        SchemePlanManager::SchemeProcessInfo process11;
-        process11.indexType = m_indexType;
-        process11.type      = SchemePlanManager::IndexSystem;
-        w11->setProcess(process11);
-        m_graphModel->setNodeData(id11, NodeRole::Widget, QVariant::fromValue(w11));
-
-        QSize s11   = m_graphModel->nodeData(id11, NodeRole::Size).toSize();
-        NodeId id12 = m_graphModel->addNode(FlowCommonData().type().id);
-        m_graphModel->setNodeData(id12, NodeRole::Position, QPointF(0, s11.height() + 50));
-        FlowGraphCommonNodeWidget *w12 = new FlowGraphCommonNodeWidget();
-        SchemePlanManager::SchemeProcessInfo process12;
-        process12.indexType = m_indexType;
-        process12.type      = SchemePlanManager::ImportEvalData;
-        process12.dSource   = SchemePlanManager::FromExpert;
-        w12->setProcess(process12);
-        if (w12->isTitleHidden()) {
-            m_graphModel->setNodeData(id12, NodeRole::Caption, SchemePlanManager::processName(process12));
-        }
-        m_graphModel->setNodeData(id12, NodeRole::Widget, QVariant::fromValue(w12));
-
-        m_graphModel->addConnection(ConnectionId { id11, 0, id12, 0 });
-
+    case ProjectManager::AbilityIndex: {
+        scheme = { SchemePlanManager::IndexSystem,    SchemePlanManager::ImportWeightData,
+                   SchemePlanManager::OptimizeIndex,  SchemePlanManager::CalculateWeight,
+                   SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
         break;
+    }
 
-        NodeId id1 = m_graphModel->addNode(FlowCommonData().type().id);
-        m_graphModel->setNodeData(id1, NodeRole::Position, QPointF(0, h * 0));
-        FlowGraphPlainNodeWidget *w1 = new FlowGraphPlainNodeWidget();
-        w1->setText("构建权重分析指标体系");
-        m_graphModel->setNodeData(id1, NodeRole::Widget, QVariant::fromValue(w1));
-
-        NodeId id2 = m_graphModel->addNode(FlowCommonData().type().id);
-        m_graphModel->setNodeData(id2, NodeRole::Position, QPointF(0, h * 1));
-        m_graphModel->setNodeData(id2, NodeRole::Caption, QString("收集权重分析数据"));
-        m_graphModel->addConnection(ConnectionId { id1, 0, id2, 0 });
-
-        NodeId id3 = m_graphModel->addNode(FlowCommonData().type().id);
-        m_graphModel->setNodeData(id3, NodeRole::Position, QPointF(0, h * 2));
-        m_graphModel->setNodeData(id3, NodeRole::Caption, QString("指标体系优化"));
-        m_graphModel->addConnection(ConnectionId { id2, 0, id3, 0 });
-
-        NodeId id4 = m_graphModel->addNode(FlowCommonData().type().id);
-        m_graphModel->setNodeData(id4, NodeRole::Position, QPointF(0, h * 3));
-        m_graphModel->setNodeData(id4, NodeRole::Caption, QString("指标权重计算"));
-        m_graphModel->addConnection(ConnectionId { id3, 0, id4, 0 });
-
-        NodeId id5 = m_graphModel->addNode(FlowCommonData().type().id);
-        m_graphModel->setNodeData(id5, NodeRole::Position, QPointF(0, h * 4));
-        FlowGraphPlainNodeWidget *w5 = new FlowGraphPlainNodeWidget();
-        w5->setText("分析结果展示");
-        m_graphModel->setNodeData(id5, NodeRole::Widget, QVariant::fromValue(w5));
-        m_graphModel->addConnection(ConnectionId { id4, 0, id5, 0 });
-
-        NodeId id6 = m_graphModel->addNode(FlowCommonData().type().id);
-        m_graphModel->setNodeData(id6, NodeRole::Position, QPointF(0, h * 5));
-        m_graphModel->setNodeData(id6, NodeRole::Caption, QString("生成分析评估报告"));
-        m_graphModel->addConnection(ConnectionId { id5, 0, id6, 0 });
+    case ProjectManager::TechIndex: {
+        scheme = { SchemePlanManager::IndexSystem, SchemePlanManager::ImportEvalData, SchemePlanManager::RunEvaluate,
+                   SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
         break;
     }
     case ProjectManager::OptimalIndex: {
-        NodeId id1 = m_graphModel->addNode(FlowIndexData().type().id);
-        m_graphModel->setNodeData(id1, NodeRole::Position, QPointF(0, h * 0));
-
-        NodeId id2 = m_graphModel->addNode(FlowSampleData().type().id);
-        m_graphModel->setNodeData(id2, NodeRole::Position, QPointF(0, h * 1));
-        m_graphModel->addConnection(ConnectionId { id1, 0, id2, 0 });
-
-        NodeId id8 = m_graphModel->addNode(FlowSchemeData().type().id);
-        m_graphModel->setNodeData(id8, NodeRole::Position, QPointF(0, h * 2));
-        m_graphModel->addConnection(ConnectionId { id2, 0, id8, 0 });
-
-        NodeId id5 = m_graphModel->addNode(FlowResultData().type().id);
-        m_graphModel->setNodeData(id5, NodeRole::Position, QPointF(0, h * 3));
-        m_graphModel->addConnection(ConnectionId { id8, 0, id5, 0 });
-
-        NodeId id6 = m_graphModel->addNode(FlowReportData().type().id);
-        m_graphModel->setNodeData(id6, NodeRole::Position, QPointF(0, h * 4));
-        m_graphModel->addConnection(ConnectionId { id5, 0, id6, 0 });
-
+        scheme = { SchemePlanManager::IndexSystem,    SchemePlanManager::ImportWeightData,
+                   SchemePlanManager::OptimizeIndex,  SchemePlanManager::CalculateWeight,
+                   SchemePlanManager::ImportEvalData, SchemePlanManager::RunEvaluate,
+                   SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
         break;
     }
     case ProjectManager::EfficiencyIndex: {
-        NodeId id1 = m_graphModel->addNode(FlowIndexData().type().id);
-        m_graphModel->setNodeData(id1, NodeRole::Position, QPointF(0, h * 0));
-
-        NodeId id7 = m_graphModel->addNode(FlowEffiLevData().type().id);
-        m_graphModel->setNodeData(id7, NodeRole::Position, QPointF(0, h * 1));
-        m_graphModel->addConnection(ConnectionId { id1, 0, id7, 0 });
+        scheme = { SchemePlanManager::IndexSystem,    SchemePlanManager::ImportWeightData,
+                   SchemePlanManager::OptimizeIndex,  SchemePlanManager::CalculateWeight,
+                   SchemePlanManager::ImportEvalData, SchemePlanManager::RunEvaluate,
+                   SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
+        break;
+    }
+    }
 
-        NodeId id9 = m_graphModel->addNode(FlowEffiData().type().id);
-        m_graphModel->setNodeData(id9, NodeRole::Position, QPointF(0, h * 2));
-        m_graphModel->addConnection(ConnectionId { id7, 0, id9, 0 });
+    for (int i = 0; i < scheme.count(); i++) {
+        NodeId id = m_graphModel->addNode(FlowCommonData().type().id);
+        m_graphModel->setNodeData(id, NodeRole::Position, QPointF(0, y));
+        FlowGraphCommonNodeWidget *w = new FlowGraphCommonNodeWidget();
+        SchemePlanManager::SchemeProcessInfo process;
+        process.projectId = m_proj->id;
+        process.indexType = m_indexType;
+        process.type      = scheme[i];
+        process.step      = i;
+        w->setProcess(process);
+        if (w->isTitleHidden()) {
+            m_graphModel->setNodeData(id, NodeRole::Caption, SchemePlanManager::processName(process));
+        }
+        m_graphModel->setNodeData(id, NodeRole::Widget, QVariant::fromValue(w));
+        if (lastId >= 0) {
+            m_graphModel->addConnection(ConnectionId { lastId, 0, id, 0 });
+        }
 
-        NodeId id5 = m_graphModel->addNode(FlowResultData().type().id);
-        m_graphModel->setNodeData(id5, NodeRole::Position, QPointF(0, h * 3));
-        m_graphModel->addConnection(ConnectionId { id9, 0, id5, 0 });
+        QSize s = m_graphModel->nodeData(id, NodeRole::Size).toSize();
+        y += (s.height() + space);
 
-        NodeId id6 = m_graphModel->addNode(FlowReportData().type().id);
-        m_graphModel->setNodeData(id6, NodeRole::Position, QPointF(0, h * 4));
-        m_graphModel->addConnection(ConnectionId { id5, 0, id6, 0 });
-        break;
-    }
+        lastId = id;
     }
 
     //    std::unordered_set<NodeId> set = m_graphModel->allNodeIds();