Browse Source

选择刷新专家数据

chengxr 1 year ago
parent
commit
4b669c7d95

+ 1 - 1
QFD/dbService/NodeMatrixService.cpp

@@ -599,7 +599,7 @@ bool NodeMatrixService::QueryDataByProjectAndIndex(QList<NodeMatrixInfo *> *data
                 nodeMatrixInfo->abscissa       = query.value(4).toString();
                 nodeMatrixInfo->ordinate       = query.value(5).toString();
                 nodeMatrixInfo->nodeValue      = query.value(6).toString();
-                nodeMatrixInfo->expertId       = query.value(7).toInt();
+                nodeMatrixInfo->expertId       = query.value(7).toString();
                 nodeMatrixInfo->mindId         = query.value(8).toInt();
                 nodeMatrixInfo->writeDate      = query.value(9).toDateTime();
                 nodeMatrixInfo->mark           = query.value(10).toString();

+ 67 - 9
QFD/widgets/ConfigExpertDataWidget.cpp

@@ -139,7 +139,8 @@ void ConfigExpertDataWidget::connectSignalsAndSlots()
 {
     connect(m_saveButton, &QPushButton::clicked, this, &ConfigExpertDataWidget::slotSave);
     connect(m_refreshButton, &QPushButton::clicked, this, &ConfigExpertDataWidget::slotRefresh);
-    connect(m_configListWidget, &QListWidget::itemClicked, this, &ConfigExpertDataWidget::slotUserConfigClicked);
+    connect(m_configListWidget, &QListWidget::itemSelectionChanged, this,
+            &ConfigExpertDataWidget::slotUserConfigCurrentChanged);
 }
 
 void ConfigExpertDataWidget::setProcess(SchemePlanManager::SchemeProcessInfo process)
@@ -149,6 +150,13 @@ void ConfigExpertDataWidget::setProcess(SchemePlanManager::SchemeProcessInfo pro
 }
 
 void ConfigExpertDataWidget::loadData()
+{
+    loadExpert();
+    loadConfig();
+    loadNodeData();
+}
+
+void ConfigExpertDataWidget::loadExpert()
 {
     // 获取专家列表数据
     qDeleteAll(m_expertList);
@@ -157,6 +165,11 @@ void ConfigExpertDataWidget::loadData()
         QFDAlert::showAlertWithCode(QF_CODE_DATA_ERROR, this);
     }
 
+    refreshExpList();
+}
+
+void ConfigExpertDataWidget::loadConfig()
+{
     // 获取项目专家配置
     qDeleteAll(m_configList);
     m_configList.clear();
@@ -164,6 +177,12 @@ void ConfigExpertDataWidget::loadData()
         QFDAlert::showAlertWithCode(QF_CODE_DATA_ERROR, this);
     }
 
+    refreshExpList();
+    refreshConfigList();
+}
+
+void ConfigExpertDataWidget::loadNodeData()
+{
     // 获取专家录入数据
     QString indexName = ProjectManager::nameOfIndexType((ProjectManager::IndexType)m_process.indexType);
     QList<NodeMatrixInfo *> dataList;
@@ -175,11 +194,43 @@ void ConfigExpertDataWidget::loadData()
         }
         m_nodeData[info->expertId].append(info);
     }
+    refreshConfigList();
+}
 
-    qDebug() << __FUNCTION__ << __LINE__ << m_nodeData.size() << endl;
+void ConfigExpertDataWidget::selectFirstImported()
+{
+    int index = 0;
+    for (int i = 0; i < m_configList.count(); i++) {
+        UserConfig *config = m_configList[i];
+        bool imported      = m_nodeData.keys().contains(QString("%1").arg(config->userId));
+        if (imported) {
+            index = i;
+            break;
+        }
+    }
+    m_configListWidget->setCurrentRow(index);
+}
 
-    refreshExpList();
-    refreshConfigList();
+void ConfigExpertDataWidget::selectConfig(UserConfig *config)
+{
+    int index = m_configList.indexOf(config);
+    if (index >= 0 && index < m_configList.count()) {
+        m_configListWidget->setCurrentRow(index);
+    }
+}
+
+QList<NodeMatrixInfo *> ConfigExpertDataWidget::selectedData()
+{
+    QList<NodeMatrixInfo *> list;
+    if (m_nodeData.size() <= 0) {
+        return list;
+    }
+
+    int row     = m_configListWidget->currentRow();
+    QString key = QString("%1").arg(m_configList[row]->userId);
+    list        = m_nodeData[key];
+
+    return list;
 }
 
 void ConfigExpertDataWidget::showEvent(QShowEvent *event)
@@ -187,6 +238,7 @@ void ConfigExpertDataWidget::showEvent(QShowEvent *event)
     Q_UNUSED(event)
     if (m_isProcessChanged) {
         loadData();
+        selectFirstImported();
     }
 }
 
@@ -208,6 +260,7 @@ void ConfigExpertDataWidget::refreshConfigList()
         connect(widget, &ConfigListItemWidget::sigImport, this, &ConfigExpertDataWidget::slotImportData);
         connect(widget, &ConfigListItemWidget::sigRemove, this, &ConfigExpertDataWidget::slotRemoveConfig);
         widget->setUserConfig(config);
+        widget->setImported(m_nodeData.keys().contains(QString("%1").arg(config->userId)));
         m_configListWidget->setItemWidget(item, widget);
     }
 }
@@ -291,15 +344,13 @@ void ConfigExpertDataWidget::slotRemoveConfig(UserConfig *config)
 void ConfigExpertDataWidget::slotImportData(UserConfig *config)
 {
     int index = m_configList.indexOf(config);
-    m_configListWidget->setItemSelected(m_configListWidget->item(index), true);
+    m_configListWidget->setCurrentRow(index);
     emit sigImportData(config);
 }
 
-void ConfigExpertDataWidget::slotUserConfigClicked()
+void ConfigExpertDataWidget::slotUserConfigCurrentChanged()
 {
-    int s              = m_configListWidget->currentRow();
-    UserConfig *config = m_configList[s];
-    emit sigConfigSelected(config);
+    emit sigConfigCurrentChanged();
 }
 
 ConfigListItemWidget::ConfigListItemWidget(QWidget *parent) : QWidget(parent)
@@ -321,6 +372,13 @@ void ConfigListItemWidget::setUserConfig(UserConfig *config)
     m_weight->setValue(m_config->weight);
 }
 
+void ConfigListItemWidget::setImported(bool imported)
+{
+    m_import->setEnabled(!imported);
+    m_import->setToolTip(imported ? "已导入" : "导入专家数据");
+    m_import->setIcon(imported ? NEWFLICON(FluentIcon, ACCEPT)->icon() : NEWFLICON(FluentIcon, DOWNLOAD)->icon());
+}
+
 int ConfigListItemWidget::spinValue() const
 {
     return m_weight->value();

+ 14 - 2
QFD/widgets/ConfigExpertDataWidget.h

@@ -38,6 +38,8 @@ public:
     UserConfig *userConfig() const;
     void setUserConfig(UserConfig *config);
 
+    void setImported(bool imported);
+
     int spinValue() const;
 
 signals:
@@ -120,9 +122,19 @@ public:
 
     void loadData();
 
+    void loadExpert();
+    void loadConfig();
+    void loadNodeData();
+
+    void selectFirstImported();
+
+    void selectConfig(UserConfig *config);
+
+    QList<NodeMatrixInfo *> selectedData();
+
 signals:
     void sigImportData(UserConfig *config);
-    void sigConfigSelected(UserConfig *config);
+    void sigConfigCurrentChanged();
 
 protected:
     virtual void showEvent(QShowEvent *event) override;
@@ -139,7 +151,7 @@ private slots:
     void slotAddUser(QFUser *user);
     void slotRemoveConfig(UserConfig *config);
     void slotImportData(UserConfig *config);
-    void slotUserConfigClicked();
+    void slotUserConfigCurrentChanged();
 
 private:
     SchemePlanManager::SchemeProcessInfo m_process;

+ 7 - 18
QFD/widgets/DataCollectionWidget.cpp

@@ -72,8 +72,8 @@ DataCollectionWidget::DataCollectionWidget(ProjectInfo *proj, QWidget *parent) :
 
     connect(m_tab, &QTabWidget::currentChanged, this, &DataCollectionWidget::slotTabCurrentChanged);
     connect(m_configExpert, &ConfigExpertDataWidget::sigImportData, this, &DataCollectionWidget::slotImportData);
-    connect(m_configExpert, &ConfigExpertDataWidget::sigConfigSelected, this,
-            &DataCollectionWidget::slotConfigSelected);
+    connect(m_configExpert, &ConfigExpertDataWidget::sigConfigCurrentChanged, this,
+            &DataCollectionWidget::slotConfigSelectionChanged);
     connect(m_configScheme, &ConfigSchemeDataWidget::sigAddScheme, this, &DataCollectionWidget::slotAddScheme);
     connect(m_configMeasure, &ConfigMeasureDataWidget::sigAddData, this, &DataCollectionWidget::slotAddMeasureData);
     connect(m_configMeasure, &ConfigMeasureDataWidget::sigCurrentRowChanged, this,
@@ -400,26 +400,15 @@ void DataCollectionWidget::slotImportData(UserConfig *config)
     }
 
     QMessageBox::information(this, tr("成功"), tr("数据保存成功"));
+
+    m_configExpert->loadNodeData();
+    m_configExpert->selectConfig(config);
 }
 
-void DataCollectionWidget::slotConfigSelected(UserConfig *config)
+void DataCollectionWidget::slotConfigSelectionChanged()
 {
     DataTableWidget *table = (DataTableWidget *)m_tab->currentWidget();
-    QString indexName      = ProjectManager::nameOfIndexType((ProjectManager::IndexType)table->process().indexType);
-
-    //    MindEvaluation *eval =
-    //            new MindEvaluation(table->mind1(), MindEvaluation::NoMerge, indexName, table->process().dSource);
-    //    eval->updateSeqNodes();
-    //    eval->computeWeights();
-
-    //    for (MindNodeItem item : eval->mindNodeWeights) {
-    //        qDebug() << __FUNCTION__ << __LINE__ << item.name << item.value << item.score << endl;
-    //    }
-
-    QList<NodeMatrixInfo *> data;
-    NodeMatrixService().QueryNodeMatrixListByExpertIdAndEngineerId(&data, config->userId, config->engineerId,
-                                                                   indexName);
-    table->setNodeMatrixData(data, true);
+    table->setNodeMatrixData(m_configExpert->selectedData(), true);
 }
 
 void DataCollectionWidget::slotAddScheme()

+ 1 - 1
QFD/widgets/DataCollectionWidget.h

@@ -43,7 +43,7 @@ private slots:
 
     void slotImportData(UserConfig *config);
 
-    void slotConfigSelected(UserConfig *config);
+    void slotConfigSelectionChanged();
 
     void slotAddScheme();
 

+ 19 - 4
QFD/widgets/DataTableWidget.cpp

@@ -433,12 +433,27 @@ CMind *DataTableWidget::mind2() const
 
 void DataTableWidget::setNodeMatrixData(QList<NodeMatrixInfo *> data, bool isExpertData)
 {
+    m_isFillingData = true;
+
+    /// 清空表中数据
+    for (QList<DataTableItemModel *> modelList : m_models.values()) {
+        for (DataTableItemModel *model : modelList) {
+            for (int r = 0; r < model->rowCount(); r++) {
+                for (int c = 0; c < model->columnCount(); c++) {
+                    QStandardItem *item = model->item(r, c);
+                    if (item != nullptr) {
+                        item->setText("");
+                    }
+                }
+            }
+        }
+    }
+
     if (data.size() <= 0) {
+        m_isFillingData = false;
         return;
     }
 
-    isFillingData = true;
-
     m_data    = data;
     m_uuidStr = data.first()->strUuid;
 
@@ -503,7 +518,7 @@ void DataTableWidget::setNodeMatrixData(QList<NodeMatrixInfo *> data, bool isExp
         }
     }
 
-    isFillingData = false;
+    m_isFillingData = false;
 }
 
 void DataTableWidget::addTestMesureData()
@@ -581,7 +596,7 @@ void DataTableWidget::slotTabCurrentChanged(int c)
 void DataTableWidget::itemChanged(QStandardItem *item)
 {
     // 排除程序的填充数据操作, 只关心用户操作
-    if (isFillingData == true) {
+    if (m_isFillingData == true) {
         return;
     }
 

+ 1 - 1
QFD/widgets/DataTableWidget.h

@@ -113,7 +113,7 @@ private:
     QList<NodeMatrixInfo *> m_data;
     QString m_uuidStr;
 
-    bool isFillingData = false;
+    bool m_isFillingData = false;
 };
 
 #endif  // DATATABLEWIDGET_H