|
@@ -12,6 +12,8 @@
|
|
|
#include <dbService/SchemeProcessService.h>
|
|
|
#include <dbService/MindWeightService.h>
|
|
|
#include <dbService/MindScoreService.h>
|
|
|
+#include <dbService/EffectResultService.h>
|
|
|
+#include <dbService/GradeInfoService.h>
|
|
|
|
|
|
#include <QLabel>
|
|
|
#include <QBoxLayout>
|
|
@@ -92,18 +94,20 @@ void EvalReportWidget::initWidgets()
|
|
|
m_indexCombo = new QComboBox(this);
|
|
|
m_indexCombo->setFixedSize(QSize(150, 35));
|
|
|
m_indexCombo->addItems(plots);
|
|
|
- m_indexCombo->setCurrentIndex(2);
|
|
|
+ m_indexCombo->setCurrentIndex(1);
|
|
|
connect(m_indexCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSelectIndexPlotType(int)));
|
|
|
|
|
|
// plots = QStringList { "竖向柱状图" };
|
|
|
m_techCombo = new QComboBox(this);
|
|
|
m_techCombo->setFixedSize(QSize(150, 35));
|
|
|
m_techCombo->addItems(plots);
|
|
|
+ m_techCombo->setCurrentIndex(1);
|
|
|
connect(m_techCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSelectTechPlotType(int)));
|
|
|
|
|
|
m_schemeCombo = new QComboBox(this);
|
|
|
m_schemeCombo->setFixedSize(QSize(150, 35));
|
|
|
m_schemeCombo->addItems(plots);
|
|
|
+ m_schemeCombo->setCurrentIndex(2);
|
|
|
connect(m_schemeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSelectSchemePlotType(int)));
|
|
|
}
|
|
|
|
|
@@ -520,11 +524,42 @@ void EvalReportWidget::showEffiResult()
|
|
|
{
|
|
|
m_EffiTab->clear();
|
|
|
|
|
|
- QList<QString> tabList = { "建设前", "建设后" };
|
|
|
- if (m_evalAlg == SchemePlanManager::MEA) {
|
|
|
- tabList = { "方案一", "方案二" };
|
|
|
+ QList<GradeInfo *> gradeInfoList;
|
|
|
+ int type = m_evalAlg == SchemePlanManager::MEA ? 0 : 1;
|
|
|
+ bool gradeRet = GradeInfoService().QueryGradeByProjectIdAndType(&gradeInfoList, m_proj->id, type);
|
|
|
+ if (gradeRet == false) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ QStringList gradeNames;
|
|
|
+ for (int i = 0; i < gradeInfoList.size(); ++i) {
|
|
|
+ gradeNames.append(gradeInfoList[i]->gradeValue);
|
|
|
}
|
|
|
- for (int i = 0; i < tabList.size(); i++) {
|
|
|
+
|
|
|
+ QList<EffectResult> effList;
|
|
|
+ bool effRet = EffectResultService().queryDataList(effList, m_proj->id);
|
|
|
+ if (effRet == false) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ QMap<int, QMap<QString, QList<double>>> effData;
|
|
|
+ QMap<int, QString> schemeNames;
|
|
|
+ int levels = 0;
|
|
|
+ for (EffectResult effect : effList) {
|
|
|
+ if (effData.keys().contains(effect.schemeId) == false) {
|
|
|
+ effData[effect.schemeId] = QMap<QString, QList<double>>();
|
|
|
+ schemeNames[effect.schemeId] = effect.schemeName;
|
|
|
+ }
|
|
|
+ QStringList values = effect.value.split(",");
|
|
|
+ levels = values.size();
|
|
|
+ QList<double> valueList;
|
|
|
+ for (int v = 0; v < values.size(); ++v) {
|
|
|
+ valueList.append(values[v].toDouble());
|
|
|
+ }
|
|
|
+
|
|
|
+ effData[effect.schemeId][effect.indexName] = valueList;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < effData.keys().size(); i++) {
|
|
|
QTableView *t = new QTableView();
|
|
|
t->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
|
|
|
t->verticalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
|
|
@@ -533,9 +568,8 @@ void EvalReportWidget::showEffiResult()
|
|
|
DataTableItemModel *model = new DataTableItemModel();
|
|
|
t->setModel(model);
|
|
|
|
|
|
- QList<QString> levList = { "差", "中", "良", "优" };
|
|
|
- for (int lev = 0; lev < levList.size(); lev++) {
|
|
|
- QStandardItem *hHeader = new QStandardItem(levList[lev]);
|
|
|
+ for (int lev = 0; lev < levels; lev++) {
|
|
|
+ QStandardItem *hHeader = new QStandardItem(gradeNames[lev]);
|
|
|
model->setHorizontalHeaderItem(lev, hHeader);
|
|
|
}
|
|
|
|
|
@@ -551,13 +585,16 @@ void EvalReportWidget::showEffiResult()
|
|
|
|
|
|
for (int r = 0; r < model->rowCount(); ++r) {
|
|
|
for (int c = 0; c < model->columnCount(); ++c) {
|
|
|
- QStandardItem *item = new QStandardItem();
|
|
|
+ QStandardItem *vHeader = model->verticalHeaderItem(r);
|
|
|
+ QStandardItem *item = new QStandardItem();
|
|
|
+ QString text = QString("%1").arg(effData[effData.keys()[i]][vHeader->text()][c]);
|
|
|
+ item->setText(text);
|
|
|
item->setEditable(false);
|
|
|
model->setItem(r, c, item);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- m_EffiTab->addTab(t, tabList[i]);
|
|
|
+ m_EffiTab->addTab(t, schemeNames[effData.keys()[i]]);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -616,9 +653,13 @@ void EvalReportWidget::slotSelectTechPlotType(int)
|
|
|
|
|
|
void EvalReportWidget::slotSelectSchemePlotType(int)
|
|
|
{
|
|
|
- showSchemeScorePlot();
|
|
|
- // makePlotClear(m_schemePlot);
|
|
|
- // m_schemePlot->updateType(PlotView::PlotType(type));
|
|
|
+ if (m_indexType == ProjectManager::OptimalIndex) {
|
|
|
+ showSchemeScorePlot();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (m_indexType == ProjectManager::EfficiencyIndex) {
|
|
|
+ slotEffiTabIndexChanged(m_EffiTab->currentIndex());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void EvalReportWidget::slotIndexTabIndexChanged(int)
|
|
@@ -628,146 +669,57 @@ void EvalReportWidget::slotIndexTabIndexChanged(int)
|
|
|
|
|
|
void EvalReportWidget::slotEffiTabIndexChanged(int index)
|
|
|
{
|
|
|
- if (m_proj->id != 113) {
|
|
|
+ QTableView *table = (QTableView *)m_EffiTab->currentWidget();
|
|
|
+ if (table == nullptr) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ DataTableItemModel *model = (DataTableItemModel *)table->model();
|
|
|
+ if (model == nullptr) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- // 灰色聚类: 0:建设前, 1:建设后
|
|
|
- // 物元分析: 0:方案一, 1:方案二
|
|
|
- QList<double> values;
|
|
|
- if (index == 0) {
|
|
|
- if (m_evalAlg == SchemePlanManager::GCE) {
|
|
|
- values = { 0.228928, 0.715073, 0.394897, 0.00254005,
|
|
|
-
|
|
|
- 0, 0.666667, 0, 0,
|
|
|
-
|
|
|
- 0.111111, 0.75, 0.6, 0,
|
|
|
-
|
|
|
- 0, 0.666667, 0.666667, 0,
|
|
|
-
|
|
|
- 0.833333, 0.210526, 0, 0,
|
|
|
-
|
|
|
- 0.010101, 1, 0.333333, 0,
|
|
|
-
|
|
|
- 0.428571, 0.875, 0.142857, 0,
|
|
|
-
|
|
|
- 0.2, 1, 0.363636, 0,
|
|
|
-
|
|
|
- 0, 0, 0.992366, 0.020202,
|
|
|
-
|
|
|
- 0.428571, 0.875, 0.333333, 0,
|
|
|
-
|
|
|
- 1, 0.428571, 0, 0,
|
|
|
-
|
|
|
- 0.020202, 0.992366, 0, 0,
|
|
|
-
|
|
|
- 0.2, 1, 0.363636, 0,
|
|
|
-
|
|
|
- 0.714286, 0.625, 0, 0,
|
|
|
-
|
|
|
- 0.4, 1, 0.333333, 0,
|
|
|
-
|
|
|
- 0.142857, 0.888889, 0.444444, 0,
|
|
|
-
|
|
|
- 0.666667, 0.666667, 0, 0,
|
|
|
-
|
|
|
- 0.142857, 0.875, 0.428571, 0,
|
|
|
-
|
|
|
- 0.266667, 0.96, 0.3, 0,
|
|
|
+ QVector<PlotView::Data> values;
|
|
|
+ for (int i = 0; i < model->columnCount(); i++) {
|
|
|
+ QStandardItem *header = model->horizontalHeaderItem(i);
|
|
|
+ QStandardItem *item = model->item(0, i);
|
|
|
+ PlotView::Data data { header->text(), item->text().toDouble() };
|
|
|
+ qDebug() << __FUNCTION__ << __LINE__ << data.name << data.value << endl;
|
|
|
+ values.append(data);
|
|
|
+ }
|
|
|
|
|
|
- 0.666667, 0.666667, 0, 0,
|
|
|
+ if (m_schemePlot != nullptr) {
|
|
|
+ m_gridLayout->removeWidget(m_schemePlot);
|
|
|
+ m_schemePlot->deleteLater();
|
|
|
+ m_schemePlot = nullptr;
|
|
|
+ }
|
|
|
+ if (m_schemePie != nullptr) {
|
|
|
+ m_gridLayout->removeWidget(m_schemePie);
|
|
|
+ m_schemePie->deleteLater();
|
|
|
+ m_schemePie = nullptr;
|
|
|
+ }
|
|
|
|
|
|
- 0.666667, 0.666667, 0, 0 };
|
|
|
- } else {
|
|
|
- values = { 0.228397, 0.174062, -0.139881, -0.192361, -0.333333, 0, -0.333333, -0.6,
|
|
|
- 0.214286, -0.26087, 0.0625, 0.214286, -0.333333, 0, 0, -0.333333,
|
|
|
- -0.1, 0.5, 1, 2, 0.00364964, -0.00362319, 0.00364964, 0.0110294,
|
|
|
- -0.125, 0.166667, -0.3, -0.5625, -0.25, 0.5, -0.25, -0.454545,
|
|
|
- -0.375, -0.285714, -0.166667, 0.25, -0.125, 0.166667, -0.3, -0.5625,
|
|
|
- 29, -0.5, -0.625, -0.684211, 0.25, -0.166667, -0.285714, -0.375,
|
|
|
- -0.25, 0.5, -0.25, -0.454545, 0.25, -0.166667, -0.5, -0.6875,
|
|
|
- -0.333333, 1, -0.333333, -0.6, 0.125, -0.0526316, 0.0588235, 0.285714,
|
|
|
- 0, 0, -0.5, -0.666667, -0.25, 0.125, -0.1, -0.4375,
|
|
|
- -0.272727, 0.333333, -0.2, -0.6, -0.111111, 0.142857, 0.6, 1,
|
|
|
- 0, 0, -0.5, -0.666667 };
|
|
|
- }
|
|
|
+ if (m_schemeCombo->currentIndex() < 5) {
|
|
|
+ PlotView::PlotType type = (PlotView::PlotType)m_schemeCombo->currentIndex();
|
|
|
+ m_schemePlot = new PlotView(type, values, "", this);
|
|
|
+ m_schemePlot->setFixedSize(kFigureSize);
|
|
|
+ m_schemePlot->plot();
|
|
|
+ m_gridLayout->addWidget(m_schemePlot, 3, 1);
|
|
|
} else {
|
|
|
- if (m_evalAlg == SchemePlanManager::GCE) {
|
|
|
- values = {
|
|
|
- 0.0406435, 0.311878, 0.735938, 0.316491,
|
|
|
-
|
|
|
- 0, 0, 0.666667, 0,
|
|
|
-
|
|
|
- 0, 0, 0.8, 0.5,
|
|
|
-
|
|
|
- 0, 0, 0.994872, 0.020202,
|
|
|
-
|
|
|
- 0, 0.444444, 0.888889, 0.166667,
|
|
|
-
|
|
|
- 0, 0, 0.333333, 1,
|
|
|
-
|
|
|
- 0, 0.625, 0.714286, 0.125,
|
|
|
-
|
|
|
- 0, 0.2, 0.8, 0.571429,
|
|
|
-
|
|
|
- 0.3, 0.96, 0.266667, 0,
|
|
|
-
|
|
|
- 0, 0.625, 0.777778, 0.125,
|
|
|
-
|
|
|
- 0.2, 1, 0.363636, 0,
|
|
|
-
|
|
|
- 0, 0.266667, 0.96, 0.3,
|
|
|
-
|
|
|
- 0, 0.2, 0.8, 0.571429,
|
|
|
-
|
|
|
- 0, 0.5, 0.857143, 0.25,
|
|
|
-
|
|
|
- 0, 0, 0.979167, 0.0606061,
|
|
|
-
|
|
|
- 0, 0, 0.533333, 0.833333,
|
|
|
|
|
|
- 0, 0, 0.994872, 0.020202,
|
|
|
-
|
|
|
- 0, 0.125, 0.714286, 0.625,
|
|
|
-
|
|
|
- 0, 0, 0.882353, 0.3,
|
|
|
-
|
|
|
- 0, 0.25, 1, 0.25,
|
|
|
+ QStringList tagList;
|
|
|
+ QList<double> dataList;
|
|
|
+ QList<QColor> colorList;
|
|
|
|
|
|
- 0, 0, 0.994872, 0.020202,
|
|
|
- };
|
|
|
- } else {
|
|
|
- values = { -0.406858, -0.219394, 0.364666, -0.228834, -0.428571, -0.2, 0, -0.2,
|
|
|
- 0.428571, -0.130435, 0, 0, -0.4, -0.25, 0, 0,
|
|
|
- 0.25, 0.0526316, -0.047619, 0.111111, 0.0182482, 0.0108696, 0.00359712, -0.00357143,
|
|
|
- -0.357143, -0.1, 0.125, -0.357143, -0.75, -0.5, 1, -0.333333,
|
|
|
- -0.142857, 0.2, -0.2, -0.4, -0.357143, -0.1, 0.125, -0.357143,
|
|
|
- -0.25, 0.5, -0.25, -0.454545, -0.4, -0.2, 0.2, -0.142857,
|
|
|
- -0.75, -0.5, 1, -0.333333, -0.428571, -0.2, 0.333333, -0.333333,
|
|
|
- -0.454545, -0.333333, -0.142857, 0.2, 0.5, 0.263158, 0.0909091, -0.0769231,
|
|
|
- -0.4, -0.25, 0, 0, -0.642857, -0.5, 0.25, -0.166667,
|
|
|
- -0.444444, -0.375, -0.166667, 0.25, 0.277778, 0.0454545, -0.0416667, 0.0454545,
|
|
|
- -0.4, -0.25, 0, 0 };
|
|
|
+ for (int i = 0; i < values.size(); i++) {
|
|
|
+ tagList.append("");
|
|
|
+ double t = values[i].value;
|
|
|
+ dataList.append(t);
|
|
|
+ QColor color(20 + 200 / values.size() * i, 70 * (1.6 - i / values.size()), 150, 255);
|
|
|
+ colorList.append(color);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- QTableView *table = (QTableView *)m_EffiTab->widget(index);
|
|
|
- DataTableItemModel *model = (DataTableItemModel *)table->model();
|
|
|
-
|
|
|
- for (int i = 0; i < values.size(); i++) {
|
|
|
- QStandardItem *item = new QStandardItem();
|
|
|
- item->setEditable(false);
|
|
|
|
|
|
- item->setText(QString("%1").arg(values[i]));
|
|
|
- model->setItem(i / 4, i % 4, item);
|
|
|
- }
|
|
|
-
|
|
|
- QVector<PlotView::Data> plotValues;
|
|
|
- QList<QString> strList = { "差", "中", "良", "优" };
|
|
|
- for (int i = 0; i < 4; i++) {
|
|
|
- PlotView::Data data { strList[i], values[i] };
|
|
|
- plotValues.append(data);
|
|
|
+ m_schemePie = new CustomPieChart("", tagList, dataList, colorList);
|
|
|
+ m_schemePie->setFixedSize(kFigureSize);
|
|
|
+ m_gridLayout->addWidget(m_schemePie, 3, 1);
|
|
|
}
|
|
|
- makePlotClear(m_schemePlot);
|
|
|
- m_schemePlot->updateData(plotValues);
|
|
|
}
|