|
@@ -15,6 +15,7 @@
|
|
|
#include <dbService/UserConfigService.h>
|
|
|
#include <dbService/MindWeightService.h>
|
|
|
#include <dbService/MindScoreService.h>
|
|
|
+#include <dbService/SchemeInfoService.h>
|
|
|
|
|
|
#include <QMap>
|
|
|
#include <QDebug>
|
|
@@ -327,7 +328,7 @@ bool DataEvaluator::evaluateWeightFromMeasure()
|
|
|
bool DataEvaluator::evaluateTech()
|
|
|
{
|
|
|
QMap<QString, double> weightData;
|
|
|
- bool weightRet = getWeight(weightData);
|
|
|
+ bool weightRet = getWeightData(weightData);
|
|
|
|
|
|
QMap<QString, QMap<QString, NodeMatrixInfo *>> nodeData;
|
|
|
bool dataRet = getNodeData(nodeData);
|
|
@@ -380,14 +381,31 @@ bool DataEvaluator::evaluateTech()
|
|
|
}
|
|
|
QString valueStr = valueList.join(";");
|
|
|
bool ret = MindScoreService().saveUniqueScoreData(m_process.projectId, valueStr);
|
|
|
- qDebug() << __FUNCTION__ << __LINE__ << valueStr << endl;
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
bool DataEvaluator::evaluateScheme()
|
|
|
{
|
|
|
- return false;
|
|
|
+ QMap<QString, double> weightData;
|
|
|
+ bool weightRet = getWeightData(weightData);
|
|
|
+
|
|
|
+ QMap<int, QMap<QString, double>> schemeData;
|
|
|
+ bool schemeRet = getSchemeData(schemeData);
|
|
|
+
|
|
|
+ if (weightRet == false || schemeRet == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int schemeId : schemeData.keys()) {
|
|
|
+ double score = 0;
|
|
|
+ for (QString key : schemeData[schemeId].keys()) {
|
|
|
+ score += schemeData[schemeId][key] * weightData[key];
|
|
|
+ }
|
|
|
+ SchemeInfoService().updateSchemeScore(schemeId, score);
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
bool DataEvaluator::evaluateEfficiencyMEA()
|
|
@@ -471,7 +489,7 @@ bool DataEvaluator::getUserConfig(QMap<QString, double> &cfg) const
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-bool DataEvaluator::getWeight(QMap<QString, double> &weight) const
|
|
|
+bool DataEvaluator::getWeightData(QMap<QString, double> &weightData) const
|
|
|
{
|
|
|
MindWeightInfo info;
|
|
|
int indexType = m_process.indexType;
|
|
@@ -492,7 +510,36 @@ bool DataEvaluator::getWeight(QMap<QString, double> &weight) const
|
|
|
for (QString keyValueStr : weightList) {
|
|
|
QStringList keyValue = keyValueStr.split(":");
|
|
|
if (keyValue.size() == 2) {
|
|
|
- weight[keyValue.first()] = keyValue.last().toDouble();
|
|
|
+ weightData[keyValue.first()] = keyValue.last().toDouble();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+bool DataEvaluator::getSchemeData(QMap<int, QMap<QString, double>> &schemeData) const
|
|
|
+{
|
|
|
+ QList<SchemaEval *> schemeList;
|
|
|
+ int type = m_process.indexType == ProjectManager::OptimalIndex ? 0 : 1;
|
|
|
+ bool ret = SchemeInfoService().QuerySchemeInfoByEngineerId(&schemeList, m_process.projectId, type);
|
|
|
+ if (ret == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (schemeList.size() <= 0) {
|
|
|
+ qDebug() << __FUNCTION__ << __LINE__ << "未创建方案" << endl;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (SchemaEval *scheme : schemeList) {
|
|
|
+ if (schemeData.keys().contains(scheme->id) == false) {
|
|
|
+ schemeData[scheme->id] = QMap<QString, double>();
|
|
|
+ }
|
|
|
+ QStringList keyValueStringList = scheme->valueStr.split(";");
|
|
|
+ for (QString keyValueStr : keyValueStringList) {
|
|
|
+ QStringList keyValue = keyValueStr.split(":");
|
|
|
+ if (keyValue.size() == 2) {
|
|
|
+ schemeData[scheme->id][keyValue.first()] = keyValue.last().toDouble();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return true;
|