Jelajahi Sumber

导出方案评估指标体系。

Ulricy 1 tahun lalu
induk
melakukan
d00c168fbc
1 mengubah file dengan 45 tambahan dan 7 penghapusan
  1. 45 7
      QFD/common/ExportReportManager.cpp

+ 45 - 7
QFD/common/ExportReportManager.cpp

@@ -4,6 +4,7 @@
 
 #include <dbService/ClassSet.h>
 #include <dbService/SchemeInfoService.h>
+#include <dbService/CNodeDataService.h>
 
 #include <QWord/QWord.h>
 #include <QWord/QWordDemo.h>
@@ -167,18 +168,55 @@ void ExportReportManager::insertSchemeIndex()
     insertText("bmProjName31", m_proj->projectName);
     insertText("bmProjName32", m_proj->projectName);
 
+    QList<CNodeData> nodeList;
+    bool ret = CNodeDataService().QueryAllValid(nodeList, m_proj->id, 4);
+    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", 15, 5);
+    QAxObject *table = insertTable("bmIndexTable", rowCount, columnCount);
     if (table == nullptr) {
         return;
     }
 
-    m_word->setFontName(QString::fromLocal8Bit("仿宋_GB2312"));
-    m_word->setFontSize(9);
-    m_word->setParagraphAlignment(0);
-    setCellString(table, 1, 1, "index");
-    mergeCells(table, 1, 1, 2, 2);
-    setCellString(table, 3, 1, "index2");
+    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;
 }
 
 void ExportReportManager::insertSchemeData()