浏览代码

方案流程图与数据业务解耦

chengxr 1 年之前
父节点
当前提交
f99538135a
共有 4 个文件被更改,包括 86 次插入117 次删除
  1. 22 91
      QFD/widgets/SchemeFlowWidget.cpp
  2. 3 15
      QFD/widgets/SchemeFlowWidget.h
  3. 57 9
      QFD/widgets/SchemePlanWidget.cpp
  4. 4 2
      QFD/widgets/SchemePlanWidget.h

+ 22 - 91
QFD/widgets/SchemeFlowWidget.cpp

@@ -90,7 +90,7 @@ static void setStyle_()
   )");
 }
 
-SchemeFlowWidget::SchemeFlowWidget(ProjectInfo *proj, QWidget *parent) : QWidget(parent), m_proj(proj)
+SchemeFlowWidget::SchemeFlowWidget(QWidget *parent) : QWidget(parent)
 {
     setStyle_();
     initWidget();
@@ -101,31 +101,6 @@ SchemeFlowWidget::~SchemeFlowWidget()
     delete m_graphModel;
 }
 
-ProjectInfo *SchemeFlowWidget::proj() const
-{
-    return m_proj;
-}
-
-void SchemeFlowWidget::setType(int t)
-{
-    m_indexType = t;
-
-    QList<SchemePlanManager::SchemeProcessInfo> schemes;
-
-    bool ret = SchemeProcessService().QueryAllByProjectIdAndIndexType(schemes);
-
-    if (ret && schemes.count() <= 1) {
-        schemes = templateSchemes(m_proj->id, m_indexType);
-        emit sigSchemeProcessCreated();
-    }
-    loadSchemes(schemes);
-}
-
-int SchemeFlowWidget::indexType() const
-{
-    return m_indexType;
-}
-
 QList<SchemePlanManager::SchemeProcessInfo> SchemeFlowWidget::schemes() const
 {
     QList<SchemePlanManager::SchemeProcessInfo> schemes;
@@ -139,71 +114,6 @@ QList<SchemePlanManager::SchemeProcessInfo> SchemeFlowWidget::schemes() const
     return schemes;
 }
 
-QList<SchemePlanManager::SchemeProcessInfo> SchemeFlowWidget::templateSchemes(int projId, int indexType)
-{
-    QList<SchemePlanManager::SchemeProcessType> types;
-    switch (indexType) {
-    case ProjectManager::AbilityIndex: {
-        types = { SchemePlanManager::IndexSystem,    SchemePlanManager::ImportWeightData,
-                  SchemePlanManager::OptimizeIndex,  SchemePlanManager::CalculateWeight,
-                  SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
-        break;
-    }
-    case ProjectManager::TechIndex: {
-        types = { SchemePlanManager::IndexSystem, SchemePlanManager::ImportEvalData, SchemePlanManager::RunEvaluate,
-                  SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
-        break;
-    }
-    case ProjectManager::OptimalIndex: {
-        types = { SchemePlanManager::IndexSystem,    SchemePlanManager::ImportWeightData,
-                  SchemePlanManager::OptimizeIndex,  SchemePlanManager::CalculateWeight,
-                  SchemePlanManager::ImportEvalData, SchemePlanManager::RunEvaluate,
-                  SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
-        break;
-    }
-    case ProjectManager::EfficiencyIndex: {
-        types = { SchemePlanManager::IndexSystem,    SchemePlanManager::ImportWeightData,
-                  SchemePlanManager::OptimizeIndex,  SchemePlanManager::CalculateWeight,
-                  SchemePlanManager::ImportEvalData, SchemePlanManager::RunEvaluate,
-                  SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
-        break;
-    }
-    }
-
-    QList<SchemePlanManager::SchemeProcessInfo> schemes;
-    for (int i = 0; i < types.count(); i++) {
-        SchemePlanManager::SchemeProcessInfo process;
-        process.projectId = projId;
-        process.indexType = indexType;
-        process.type      = types[i];
-        process.step      = i;
-        schemes.append(process);
-    }
-
-    return schemes;
-}
-
-void SchemeFlowWidget::initWidget()
-{
-    m_graphModel = new DataFlowModel(registerDataModels());
-    m_graphModel->setNodesLocked(true);
-    m_graphModel->setDetachPossible(false);
-
-    auto scene         = new DataFlowGraphicsScene(*m_graphModel);
-    GraphicsView *view = new GraphicsView(scene);
-    scene->setOrientation(Qt::Vertical);
-
-    QHBoxLayout *l = new QHBoxLayout(this);
-    l->addWidget(view);
-}
-
-void SchemeFlowWidget::clearAllNodes()
-{
-    for (int id : m_graphModel->allNodeIds()) {
-        m_graphModel->deleteNode(id);
-    }
-}
-
 void SchemeFlowWidget::loadSchemes(const QList<SchemePlanManager::SchemeProcessInfo> &schems)
 {
     clearAllNodes();
@@ -235,6 +145,27 @@ void SchemeFlowWidget::loadSchemes(const QList<SchemePlanManager::SchemeProcessI
     }
 }
 
+void SchemeFlowWidget::initWidget()
+{
+    m_graphModel = new DataFlowModel(registerDataModels());
+    m_graphModel->setNodesLocked(true);
+    m_graphModel->setDetachPossible(false);
+
+    auto scene         = new DataFlowGraphicsScene(*m_graphModel);
+    GraphicsView *view = new GraphicsView(scene);
+    scene->setOrientation(Qt::Vertical);
+
+    QHBoxLayout *l = new QHBoxLayout(this);
+    l->addWidget(view);
+}
+
+void SchemeFlowWidget::clearAllNodes()
+{
+    for (int id : m_graphModel->allNodeIds()) {
+        m_graphModel->deleteNode(id);
+    }
+}
+
 void SchemeFlowWidget::slotSchemeProcessEdited(const SchemePlanManager::SchemeProcessInfo &process)
 {
     emit sigSchemeProcessEdited(process);

+ 3 - 15
QFD/widgets/SchemeFlowWidget.h

@@ -40,23 +40,16 @@ class SchemeFlowWidget : public QWidget
 {
     Q_OBJECT
 public:
-    explicit SchemeFlowWidget(ProjectInfo *proj, QWidget *parent = nullptr);
+    explicit SchemeFlowWidget(QWidget *parent = nullptr);
 
     ~SchemeFlowWidget();
 
-    ProjectInfo *proj() const;
-
-    void setType(int t);
-    int indexType() const;
-
     /// 当前页面的评估方案
     QList<SchemePlanManager::SchemeProcessInfo> schemes() const;
 
-    /// 方案流程模板
-    /// 当项目中没有评估方案时, 可加载此处的模板
-    static QList<SchemePlanManager::SchemeProcessInfo> templateSchemes(int projId, int indexType);
+    void loadSchemes(const QList<SchemePlanManager::SchemeProcessInfo> &schems);
+
 signals:
-    void sigSchemeProcessCreated();
     void sigSchemeProcessEdited(const SchemePlanManager::SchemeProcessInfo &process);
 
 private:
@@ -64,15 +57,10 @@ private:
 
     void clearAllNodes();
 
-    void loadSchemes(const QList<SchemePlanManager::SchemeProcessInfo> &schems);
-
 private slots:
     void slotSchemeProcessEdited(const SchemePlanManager::SchemeProcessInfo &process);
 
 private:
-    ProjectInfo *m_proj = nullptr;
-    int m_indexType     = 0;
-
     DataFlowModel *m_graphModel = nullptr;
 
     QHBoxLayout *m_layout = nullptr;

+ 57 - 9
QFD/widgets/SchemePlanWidget.cpp

@@ -1,6 +1,10 @@
 #include "SchemePlanWidget.h"
 
 #include "SchemeFlowWidget.h"
+#include "ProjectManager.h"
+
+#include <dbService/ClassSet.h>
+#include <dbService/SchemeProcessService.h>
 
 #include <CSchemeView.h>
 
@@ -34,15 +38,64 @@ void SchemePlanWidget::setupUI()
     connect(m_export, &PushButton::clicked, this, &SchemePlanWidget::slotExportClicked);
 }
 
+QList<SchemePlanManager::SchemeProcessInfo> SchemePlanWidget::templateSchemes(int projId, int indexType)
+{
+    QList<SchemePlanManager::SchemeProcessType> types;
+    switch (indexType) {
+    case ProjectManager::AbilityIndex: {
+        types = { SchemePlanManager::IndexSystem,    SchemePlanManager::ImportWeightData,
+                  SchemePlanManager::OptimizeIndex,  SchemePlanManager::CalculateWeight,
+                  SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
+        break;
+    }
+    case ProjectManager::TechIndex: {
+        types = { SchemePlanManager::IndexSystem, SchemePlanManager::ImportEvalData, SchemePlanManager::RunEvaluate,
+                  SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
+        break;
+    }
+    case ProjectManager::OptimalIndex: {
+        types = { SchemePlanManager::IndexSystem,    SchemePlanManager::ImportWeightData,
+                  SchemePlanManager::OptimizeIndex,  SchemePlanManager::CalculateWeight,
+                  SchemePlanManager::ImportEvalData, SchemePlanManager::RunEvaluate,
+                  SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
+        break;
+    }
+    case ProjectManager::EfficiencyIndex: {
+        types = { SchemePlanManager::IndexSystem,    SchemePlanManager::ImportWeightData,
+                  SchemePlanManager::OptimizeIndex,  SchemePlanManager::CalculateWeight,
+                  SchemePlanManager::ImportEvalData, SchemePlanManager::RunEvaluate,
+                  SchemePlanManager::ShowEvalResult, SchemePlanManager::GenerateReport };
+        break;
+    }
+    }
+
+    QList<SchemePlanManager::SchemeProcessInfo> schemes;
+    for (int i = 0; i < types.count(); i++) {
+        SchemePlanManager::SchemeProcessInfo process;
+        process.projectId = projId;
+        process.indexType = indexType;
+        process.type      = types[i];
+        process.step      = i;
+        schemes.append(process);
+    }
+
+    return schemes;
+}
+
 void SchemePlanWidget::setupTabWidget()
 {
     m_tab->clear();
 
     for (int i : indexList()) {
-        SchemeFlowWidget *m = new SchemeFlowWidget(proj(), this);
-        connect(m, &SchemeFlowWidget::sigSchemeProcessCreated, this, &SchemePlanWidget::slotSchemeCreated);
+        SchemeFlowWidget *m = new SchemeFlowWidget(this);
         connect(m, &SchemeFlowWidget::sigSchemeProcessEdited, this, &SchemePlanWidget::slotSchemeProcessEdited);
-        m->setType(i);
+
+        QList<SchemePlanManager::SchemeProcessInfo> schemes;
+        bool ret = SchemeProcessService().QueryAllByProjectIdAndIndexType(schemes);
+        if (ret && schemes.count() <= 1) {
+            schemes = templateSchemes(m_proj->id, i);
+        }
+        m->loadSchemes(schemes);
 
         ProjectManager::IndexType t = (ProjectManager::IndexType)i;
         QString s                   = ProjectManager::nameOfIndexType(t);
@@ -52,18 +105,13 @@ void SchemePlanWidget::setupTabWidget()
 
 void SchemePlanWidget::slotExportClicked()
 {
+
     for (int i = 0; i < m_tab->count(); i++) {
         SchemeFlowWidget *w                                 = (SchemeFlowWidget *)m_tab->widget(i);
         QList<SchemePlanManager::SchemeProcessInfo> schemes = w->schemes();
     }
 }
 
-void SchemePlanWidget::slotSchemeCreated()
-{
-    SchemeFlowWidget *w = (SchemeFlowWidget *)sender();
-    qDebug() << __FUNCTION__ << __LINE__ << w->indexType() << endl;
-}
-
 void SchemePlanWidget::slotSchemeProcessEdited(const SchemePlanManager::SchemeProcessInfo &process)
 {
     qDebug() << __FUNCTION__ << __LINE__ << process.id << endl;

+ 4 - 2
QFD/widgets/SchemePlanWidget.h

@@ -21,14 +21,16 @@ public:
 
     void setupUI();
 
+    /// 方案流程模板
+    /// 当项目中没有评估方案时, 可加载此处的模板
+    static QList<SchemePlanManager::SchemeProcessInfo> templateSchemes(int projId, int indexType);
+
 private:
     void setupTabWidget();
 
 private slots:
     void slotExportClicked();
 
-    void slotSchemeCreated();
-
     void slotSchemeProcessEdited(const SchemePlanManager::SchemeProcessInfo &process);
 
 private: