Browse Source

1. 设置效能评估书签。
2. 输入效能评估指标体系。

Ulricy 1 year ago
parent
commit
450173b45a

+ 62 - 0
QFD/common/ExportReportManager.cpp

@@ -69,6 +69,10 @@ bool ExportReportManager::exportReport()
         insertSchemeWeightData();
     }
 
+    if (m_evalType == ProjectManager::EfficiencyEval) {
+        insertEffiIndex();
+    }
+
     m_word->setVisible(true);
     QAxObject *doc = m_word->getWordApp()->querySubObject("ActiveDocument");
     doc->dynamicCall("SaveAs(const QString&))", QDir::toNativeSeparators(m_word->getFilePath()));
@@ -193,6 +197,7 @@ void ExportReportManager::insertSchemeIndex()
     //    bmIndexTable
     QAxObject *table = insertTable("bmIndexTable", rowCount, columnCount);
     if (table == nullptr) {
+        delete mind;
         return;
     }
 
@@ -480,6 +485,63 @@ void ExportReportManager::insertSchemeWeightData()
     }
 }
 
+void ExportReportManager::insertEffiIndex()
+{
+    insertText("bmProjName21", m_proj->projectName);
+    insertText("bmProjName22", m_proj->projectName);
+
+    QList<CNodeData> nodeList;
+    bool ret = CNodeDataService().QueryAllValid(nodeList, m_proj->id, 8);
+    if (ret == false) {
+        return;
+    }
+
+    CMind *mind = new CMind();
+    mind->setNodeList(nodeList);
+
+    QList<CNodeData> leaveNodes = mind->leaves();
+    int rowCount                = leaveNodes.size() + 1;
+    int columnCount             = mind->levels();
+
+    //    bmIndexTable
+    QAxObject *table = insertTable("bmIndexTable", rowCount, columnCount);
+    if (table == nullptr) {
+        delete mind;
+        return;
+    }
+
+    for (int i = 2; i <= mind->levels(); ++i) {
+        if (i < mind->levels()) {
+            setCellString(table, 1, i - 1, QString("%1级指标\n(能力项)").arg(i - 1));
+        } else {
+            setCellString(table, 1, i - 1, QString("指标"));
+            setCellString(table, 1, i, QString("量纲"));
+        }
+
+        QList<CNodeData> nodes = mind->nodesInLevel(i);
+        int rowPos             = 2;
+        for (int j = 0; j < nodes.size(); ++j) {
+            CNodeData node = nodes[j];
+            int leaves     = mind->leavesCountOfNode(node);
+            int textPos    = (rowPos + leaves / 2);
+            setCellString(table, textPos, i - 1, node.name);
+
+            if (leaves > 1) {
+                mergeCells(table, rowPos, i - 1, leaves, 1);
+            }
+
+            rowPos += leaves;
+        }
+    }
+
+    for (int i = 0; i < leaveNodes.size(); ++i) {
+        CNodeData node = leaveNodes[i];
+        setCellString(table, i + 2, columnCount, node.dimension);
+    }
+
+    delete mind;
+}
+
 bool ExportReportManager::insertText(const QString &bookmark, const QString &text)
 {
     bool ret              = false;

+ 35 - 1
QFD/common/ExportReportManager.h

@@ -41,6 +41,9 @@ private:
     // 填充方案评估权重数据
     void insertSchemeWeightData();
 
+    // 插入效能评估指标体系
+    void insertEffiIndex();
+
     // 在一个书签位置插入文字
     bool insertText(const QString &bookmark, const QString &text);
 
@@ -81,7 +84,7 @@ private:
 */
 
 /**
- * 方案优选评估标签名称
+ * 方案优选评估报告标签名称
  *
  * 封面
  * 项目名称:bmProjName,单位:bmProjUnit,时间:bmProjDate
@@ -110,6 +113,37 @@ private:
  * 2023-12-13 by chengxr
  */
 
+/**
+ * 效能评估报告标签名称
+ *
+ * 封面
+ * 项目名称:bmProjName,单位:bmProjUnit,时间:bmProjDate
+ *
+ * 评估目的
+ * 评估目的:bmEvalPurpose
+ *
+ * 指标体系
+ * 描述项目名称:bmProjName21
+ * 表格项目名称:bmProjName22
+ * 表格:bmIndexTable
+ *
+ * 评估矩阵设置
+ * 描述项目名称:bmProjName31
+ * 表格项目名称:bmProjName32
+ * 表格:bmConfigTable
+ *
+ * 评估数据采集
+ * 表格:bmEffiDataTable
+ *
+ * 计算
+ * 权重算法:bmWeightAlg,指标权重表:bmWeightTable,指标权重图:bmWeightPic
+ * 评估算法:bmEvalAlg,指标权重表:bmEvalTable,指标权重图:bmEvalPic
+ *
+ * 评估结论:bmEffiConclusion
+ *
+ * 2023-12-14 by chengxr
+ */
+
 /**
 
 【中文字号】    【英文字号】      【毫米】           【像素】

+ 0 - 10
QFD/widgets/EvalReportWidget.cpp

@@ -766,19 +766,14 @@ void EvalReportWidget::showEffiResultLev()
             model->setVerticalHeaderItem(j + 1, vHeader);
         }
 
-        qDebug() << __FUNCTION__ << __LINE__ << model->rowCount() << endl;
         for (int r = 0; r < model->rowCount(); ++r) {
             QStandardItem *vHeader = model->verticalHeaderItem(r);
-
-            qDebug() << __FUNCTION__ << __LINE__ << vHeader->text() << endl;
-
             QList<double> rowValues;
 
             if (m_curSchemeLev == m_mind->levels() || r == 0) {
                 rowValues = effData[effData.keys()[i]][vHeader->text()];
             } else {
                 QList<CNodeData> subNodes = m_mind->leavesOfNode(nodeList[r - 1]);
-                qDebug() << __FUNCTION__ << __LINE__ << vHeader->text() << endl;
                 for (int l = 0; l < levels; l++) {
                     double sumValue  = 0;
                     double sumWeight = 0;
@@ -847,18 +842,14 @@ void EvalReportWidget::slotIndexTabIndexChanged(int)
 
 void EvalReportWidget::slotEffiTabIndexChanged(int index)
 {
-    qDebug() << __FUNCTION__ << __LINE__ << endl;
-
     QTableView *table = (QTableView *)m_EffiTab->currentWidget();
     if (table == nullptr) {
         return;
     }
-    qDebug() << __FUNCTION__ << __LINE__ << endl;
     DataTableItemModel *model = (DataTableItemModel *)table->model();
     if (model == nullptr) {
         return;
     }
-    qDebug() << __FUNCTION__ << __LINE__ << endl;
     QVector<PlotView::Data> values;
     for (int i = 0; i < model->columnCount(); i++) {
         QStandardItem *header = model->horizontalHeaderItem(i);
@@ -868,7 +859,6 @@ void EvalReportWidget::slotEffiTabIndexChanged(int index)
             values.append(data);
         }
     }
-    qDebug() << __FUNCTION__ << __LINE__ << endl;
     if (m_schemePlot != nullptr) {
         m_gridLayout->removeWidget(m_schemePlot);
         m_schemePlot->deleteLater();