#ifndef SCHEMEPLANMANAGER_H #define SCHEMEPLANMANAGER_H #include class SchemePlanManager : public QObject { Q_OBJECT public: /** * @brief The SchemeProcessType enum * 方案步骤类型 */ enum SchemeProcessType { IndexSystem, // 构建指标体系 ImportWeightData, // 导入权重数据 OptimizeIndex, // 指标体系优化 CalculateWeight, // 指标权重计算 ImportEvalData, // 导入评估数据 RunEvaluate, // 运行评估算法 ShowEvalResult, // 显示评估结果 GenerateReport, // 生成报告 }; /** * @brief The SchemeDataSource enum * 数据来源 */ enum SchemeDataSource { NoData = -1, FromExpert, // 来自专家评估 FromMeasurement, // 来自实测 FromScheme, // 添加方案 }; static QString stringFromDataSource(SchemeDataSource src); /** * @brief The Algorithm enum * 算法 */ enum Algorithm { NoAlg = -1, PrincipalComponents, // principal components analysis 主成分分析法 Entropy, // entropy methods 熵值法 AHP, // aanalytical hierarchy process 层次分析法 HWM, // hierarchical weighting method 层次加权法 SPA, // set pair analysis 集对分析法 MEA, // matter element analysis 物元分析法 GCE, // Grey clustering evaluation method 灰色聚类评估法 WeightedSum, // Weighted Sum 加权求和算法 }; static QString nameOfAlgorithm(Algorithm alg); static QString descriptionOfAlgorithm(Algorithm alg); /** * @brief The AlgorithmCategory enum * 算法分类 */ enum AlgorithmCategory { NoCategory = -1, }; /** * @brief The AlgorithmInfo struct * 算法信息 */ struct AlgorithmInfo { Algorithm alg = NoAlg; AlgorithmCategory category = NoCategory; }; enum IndexCostType { IndexCostTypeBenefit, // 效益型 IndexCostTypeCost, // 成本型 }; Q_ENUM(IndexCostType) static QString stringFromIndexCostType(IndexCostType t); /** * @brief The SchemeProcessInfo struct * 方案步骤详情 */ struct SchemeProcessInfo { int id = -1; // 对应数据库中主键 int projectId = -1; // 所属项目id int indexType; // 指标体系类型 int step; // 步骤编号 SchemeProcessType type; // 步骤类型 /// 数据来源 /// 导入数据(权重数据或者评估数据)时有效 SchemeDataSource dSource = NoData; /// 算法 /// 优化指标体系, 计算权重, 计算评估结果时, 需要用到的算法 Algorithm algorithm = NoAlg; /// 效能分级, 选择灰色聚类算法计算效能评估时用到 int efficiencyGrades = 3; bool isChecked = false; // 是否选择了执行 QString createTime; // 创建时间 QString updateTime; // 更新时间 }; /// 方案步骤的名称 static QString processName(const SchemeProcessInfo &process); static QString processDescription(const SchemeProcessInfo &process); /// 给定方案步骤中可选的数据来源 static QList processOptionalDataSource(const SchemeProcessInfo &process); /// 给定方案步骤中可选的算法 static QList processOptionalAlgorithms(const SchemeProcessInfo &process); /// 给定方案步骤是否可以选择执行 static bool processIsOptional(const SchemeProcessInfo &process); explicit SchemePlanManager(QObject *parent = nullptr); signals: }; #endif // SCHEMEPLANMANAGER_H