123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- #include "SchemePlanManager.h"
- #include "ProjectManager.h"
- #include <QMetaEnum>
- #include <QDebug>
- QString SchemePlanManager::stringFromDataSource(SchemePlanManager::SchemeDataSource src)
- {
- switch (src) {
- case NoData:
- return "无";
- case FromExpert:
- return "导入专家数据";
- case FromMeasurement:
- return "添加实测数据";
- case FromScheme:
- return "专家导入";
- }
- }
- QString SchemePlanManager::stringFromAlgorithm(SchemePlanManager::Algorithm alg)
- {
- switch (alg) {
- case NoAlg:
- return "无";
- case PrincipalComponents:
- return "主成分分析法";
- case Entropy:
- return "熵值法";
- case AHP:
- return "层次分析法";
- case HWM:
- return "层次加权法";
- case SPA:
- return "集对分析法";
- case MEA:
- return "物元分析法";
- case GCE:
- return "灰色聚类评估法";
- case WeightedSum:
- return "加权求和法";
- }
- }
- QString SchemePlanManager::stringFromIndexCostType(SchemePlanManager::IndexCostType t)
- {
- switch (t) {
- case IndexCostTypeCost:
- return "成本型";
- case IndexCostTypeBenefit:
- return "效益型";
- }
- }
- QString SchemePlanManager::processName(const SchemeProcessInfo &process)
- {
- QList<QString> l1 = { "构建权重分析指标体系", "收集权重分析数据", "指标体系优化", "指标权重计算", "", "",
- "分析结果展示", "生成分析评估报告" };
- QList<QString> l2 = {
- "构建技术措施指标体系", "", "", "", "收集评估数据", "评估计算", "评估结果展示", "生成评估报告"
- };
- QList<QString> l3 = { "构建方案优选指标体系", "收集方案优选权重分析数据",
- "指标体系优化", "指标权重计算",
- "评估数据采集", "方案优选计算",
- "方案优选结果展示", "生成方案优选报告" };
- QList<QString> l4 = { "构建效能评估指标体系", "收集效能评估权重分析数据", "指标体系优化",
- "效能评估权重计算", "收集效能评估数据", "效能评估计算",
- "效能评估结果展示", "生成效能评估报告" };
- QList<QList<QString>> names = { l1, l2, l3, l4 };
- /// 获取指标类型枚举值 index
- /// 由于枚举值不是连续自然数, 故不能作为下表来索引数组
- /// 故须使用 index 替代
- int index = 0;
- QMetaEnum indexEnum = QMetaEnum::fromType<ProjectManager::IndexType>();
- for (int i = 0; i < indexEnum.keyCount(); i++) {
- if (indexEnum.value(i) == process.indexType) {
- index = i;
- break;
- }
- }
- if (index >= 0 && index < names.count() && process.type >= 0 && process.type < names[index].count()) {
- return names[index][process.type];
- }
- return "";
- }
- QString SchemePlanManager::processDescription(const SchemePlanManager::SchemeProcessInfo &process)
- {
- switch (process.type) {
- case IndexSystem:
- return "在指标体系设计页面,录入项目包含的指标,注意指标名称不能重复。";
- case ImportWeightData:
- case ImportEvalData: {
- if (process.dSource == FromExpert) {
- return "在评估数据采集页面给项目配置专家和权重。从评估项目管理页面找到对应的项目,导出资源包分发给专家。收"
- "集到专家填写的数据后,在评估数据采集页面导入专家数据。";
- } else if (process.dSource == FromMeasurement) {
- return "在评估数据采集页面添加实测数据。";
- } else if (process.dSource == FromScheme) {
- return "在评估数据采集页面添加专家方案。";
- }
- break;
- }
- case OptimizeIndex:
- return "";
- case CalculateWeight: {
- QString algName = stringFromAlgorithm(process.algorithm);
- return QString("使用%1计算各个指标的权重。").arg(algName);
- }
- case RunEvaluate: {
- QString algName = stringFromAlgorithm(process.algorithm);
- if (process.indexType == ProjectManager::TechIndex) {
- return QString("使用%1进行技术措施重要度评估。").arg(algName);
- } else if (process.indexType == ProjectManager::OptimalIndex) {
- return QString("使用%1进行方案优选评估。").arg(algName);
- } else if (process.indexType == ProjectManager::EfficiencyIndex) {
- return QString("使用%1进行综合效能评估。").arg(algName);
- }
- }
- case ShowEvalResult: {
- if (process.indexType == ProjectManager::AbilityIndex) {
- return "在评估数据处理页面查看权重分析结果";
- } else {
- return "在评估数据处理页面查看评估结果";
- }
- case GenerateReport:
- return "";
- default:
- break;
- }
- }
- return "";
- }
- QList<SchemePlanManager::SchemeDataSource>
- SchemePlanManager::processOptionalDataSource(const SchemeProcessInfo &process)
- {
- if (process.type == ImportEvalData && process.indexType == ProjectManager::EfficiencyIndex) {
- return { FromMeasurement };
- }
- if (process.type == ImportEvalData && process.indexType == ProjectManager::OptimalIndex) {
- return { FromScheme };
- }
- if (process.type == ImportWeightData || process.type == ImportEvalData) {
- return { FromExpert, FromMeasurement };
- }
- return {};
- }
- /**
- * 根据指标体系类型和方案步骤类型, 返回可选算法
- * date: 2023-11-03 by chengxr
- */
- QList<SchemePlanManager::Algorithm> SchemePlanManager::processOptionalAlgorithms(const SchemeProcessInfo &process)
- {
- switch (process.type) {
- case OptimizeIndex:
- return { PrincipalComponents };
- case CalculateWeight: {
- return { AHP, Entropy, PrincipalComponents };
- }
- case RunEvaluate: {
- if (process.indexType == ProjectManager::TechIndex) {
- return { WeightedSum };
- } else if (process.indexType == ProjectManager::OptimalIndex) {
- return { HWM, SPA };
- } else if (process.indexType == ProjectManager::EfficiencyIndex) {
- return { MEA, GCE };
- }
- return {};
- }
- case IndexSystem:
- case ImportWeightData:
- case ImportEvalData:
- case ShowEvalResult:
- case GenerateReport:
- return {};
- }
- }
- bool SchemePlanManager::processIsOptional(const SchemeProcessInfo &process)
- {
- return (process.type == GenerateReport);
- }
- SchemePlanManager::SchemePlanManager(QObject *parent) : QObject(parent) { }
|