|
@@ -12,6 +12,8 @@
|
|
|
#include <dbService/SchemeProcessService.h>
|
|
|
#include <dbService/MindWeightService.h>
|
|
|
#include <dbService/GradeInfoService.h>
|
|
|
+#include <dbService/GradeIndexInfoService.h>
|
|
|
+#include <dbService/EffectIndexInfoService.h>
|
|
|
#include <dbService/EffectResultService.h>
|
|
|
|
|
|
#include <QWord/QWord.h>
|
|
@@ -63,6 +65,9 @@ bool ExportReportManager::exportReport()
|
|
|
}
|
|
|
|
|
|
insertProjectInfo();
|
|
|
+
|
|
|
+ if (m_evalType == ProjectManager::DemandEval) { }
|
|
|
+
|
|
|
if (m_evalType == ProjectManager::OptimalEval) {
|
|
|
insertSchemeDesignInfo();
|
|
|
insertSchemeIndex();
|
|
@@ -582,6 +587,117 @@ void ExportReportManager::insertEffiConfigData()
|
|
|
// bmProjName31, bmProjName32, bmConfigTable
|
|
|
insertText("bmProjName31", m_proj->projectName);
|
|
|
insertText("bmProjName32", m_proj->projectName);
|
|
|
+
|
|
|
+ QList<GradeInfo *> gradeInfoList;
|
|
|
+ int type = m_schemeType == 1 ? 0 : 1;
|
|
|
+ bool ret = GradeInfoService().QueryGradeByProjectIdAndType(&gradeInfoList, m_proj->id, type);
|
|
|
+ if (ret == false || gradeInfoList.size() <= 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ QStringList gradeNames;
|
|
|
+ for (int i = 0; i < gradeInfoList.size(); ++i) {
|
|
|
+ gradeNames.append(gradeInfoList[i]->gradeValue);
|
|
|
+ }
|
|
|
+
|
|
|
+ QMap<QString, QString> gradeInfoData;
|
|
|
+
|
|
|
+ if (m_schemeType == 2) {
|
|
|
+ QList<GradeIndexInfo *> gradeIndexInfoList;
|
|
|
+ ret = GradeIndexInfoService().QueryGradeIndexInfoByProjectId(&gradeIndexInfoList, m_proj->id);
|
|
|
+ if (ret == false || gradeIndexInfoList.size() <= 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = gradeIndexInfoList.size() - 1; i >= 0; --i) {
|
|
|
+ QString name = gradeIndexInfoList[i]->gradeIndexName;
|
|
|
+ QString value = gradeInfoData[name];
|
|
|
+ if (gradeNames.size() > gradeIndexInfoList[i]->gradeLevel - 1) {
|
|
|
+ QString grade = gradeNames[gradeIndexInfoList[i]->gradeLevel - 1];
|
|
|
+ if (value.contains(grade)) {
|
|
|
+ continue;
|
|
|
+ } else {
|
|
|
+ value += grade;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value += ":";
|
|
|
+ value += gradeIndexInfoList[i]->gradeIndexValue;
|
|
|
+ if (gradeIndexInfoList[i]->gradeLevel > 1) {
|
|
|
+ value += "\n";
|
|
|
+ }
|
|
|
+ gradeInfoData[name] = value;
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ QList<EffectIndexInfo *> effectIndexInfoList;
|
|
|
+ ret = EffectIndexInfoService().QueryEffectIndexInfoByProjectId(&effectIndexInfoList, m_proj->id);
|
|
|
+ if (ret == false) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (EffectIndexInfo *info : effectIndexInfoList) {
|
|
|
+ QStringList valueList = info->effectIndexValue.split(",");
|
|
|
+ QString value;
|
|
|
+ for (int i = valueList.size() - 1; i >= 0; --i) {
|
|
|
+ if (gradeNames.size() > i) {
|
|
|
+ value += gradeNames[i];
|
|
|
+ }
|
|
|
+ value += ":";
|
|
|
+ value += (valueList[i].replace(":", ","));
|
|
|
+ if (i > 0) {
|
|
|
+ value += "\n";
|
|
|
+ }
|
|
|
+ gradeInfoData[info->effectIndexName] = value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ QList<CNodeData> nodeList;
|
|
|
+ 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();
|
|
|
+
|
|
|
+ // bmConfigTable
|
|
|
+ QAxObject *table = insertTable("bmConfigTable", 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];
|
|
|
+ QString value = QString("%1").arg(gradeInfoData[node.name]);
|
|
|
+ setCellString(table, i + 2, columnCount, value);
|
|
|
+ }
|
|
|
+ delete mind;
|
|
|
}
|
|
|
|
|
|
void ExportReportManager::insertEffiSchemeData()
|