SchemePlanManager.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #ifndef SCHEMEPLANMANAGER_H
  2. #define SCHEMEPLANMANAGER_H
  3. #include <QObject>
  4. class SchemePlanManager : public QObject
  5. {
  6. Q_OBJECT
  7. public:
  8. /**
  9. * @brief The SchemeProcessType enum
  10. * 方案步骤类型
  11. */
  12. enum SchemeProcessType
  13. {
  14. IndexSystem, // 构建指标体系
  15. ImportWeightData, // 导入权重数据
  16. OptimizeIndex, // 指标体系优化
  17. CalculateWeight, // 指标权重计算
  18. ImportEvalData, // 导入评估数据
  19. RunEvaluate, // 运行评估算法
  20. ShowEvalResult, // 显示评估结果
  21. GenerateReport, // 生成报告
  22. };
  23. /**
  24. * @brief The SchemeDataSource enum
  25. * 数据来源
  26. */
  27. enum SchemeDataSource
  28. {
  29. NoData = -1,
  30. FromExpert, // 来自专家评估
  31. FromMeasurement, // 来自实测
  32. };
  33. static QString stringFromDataSource(SchemeDataSource src);
  34. /**
  35. * @brief The Algorithm enum
  36. * 算法
  37. */
  38. enum Algorithm
  39. {
  40. NoAlg = -1,
  41. PrincipalComponents, // principal components analysis 主成分分析法
  42. Entropy, // entropy methods 熵值法
  43. AHP, // aanalytical hierarchy process 层次分析法
  44. HWM, // hierarchical weighting method 层次加权法
  45. SPA, // set pair analysis 集对分析法
  46. MEA, // matter element analysis 物元分析法
  47. GCE, // Grey clustering evaluation method 灰色聚类评估法
  48. WeightedSum, // Weighted Sum 加权求和算法
  49. };
  50. static QString stringFromAlgorithm(Algorithm alg);
  51. /**
  52. * @brief The AlgorithmCategory enum
  53. * 算法分类
  54. */
  55. enum AlgorithmCategory
  56. {
  57. NoCategory = -1,
  58. };
  59. /**
  60. * @brief The AlgorithmInfo struct
  61. * 算法信息
  62. */
  63. struct AlgorithmInfo
  64. {
  65. Algorithm alg = NoAlg;
  66. AlgorithmCategory category = NoCategory;
  67. };
  68. /**
  69. * @brief The SchemeProcessInfo struct
  70. * 方案步骤详情
  71. */
  72. struct SchemeProcessInfo
  73. {
  74. int id = -1; // 对应数据库中主键
  75. int projectId = -1; // 所属项目id
  76. int indexType; // 指标体系类型
  77. int step; // 步骤编号
  78. SchemeProcessType type; // 步骤类型
  79. /// 数据来源
  80. /// 导入数据(权重数据或者评估数据)时有效
  81. SchemeDataSource dSource = NoData;
  82. /// 算法
  83. /// 优化指标体系, 计算权重, 计算评估结果时, 需要用到的算法
  84. Algorithm algorithm = NoAlg;
  85. /// 效能分级, 选择灰色聚类算法计算效能评估时用到
  86. int efficiencyGrades = 3;
  87. bool isChecked = false; // 是否选择了执行
  88. QString createTime; // 创建时间
  89. QString updateTime; // 更新时间
  90. };
  91. /// 方案步骤的名称
  92. static QString processName(const SchemeProcessInfo &process);
  93. /// 给定方案步骤中可选的数据来源
  94. static QList<SchemeDataSource> processOptionalDataSource(const SchemeProcessInfo &process);
  95. /// 给定方案步骤中可选的算法
  96. static QList<Algorithm> processOptionalAlgorithms(const SchemeProcessInfo &process);
  97. /// 给定方案步骤是否可以选择执行
  98. static bool processIsOptional(const SchemeProcessInfo &process);
  99. explicit SchemePlanManager(QObject *parent = nullptr);
  100. signals:
  101. };
  102. #endif // SCHEMEPLANMANAGER_H