SchemePlanManager.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. FromScheme, // 添加方案
  33. };
  34. static QString stringFromDataSource(SchemeDataSource src);
  35. /**
  36. * @brief The Algorithm enum
  37. * 算法
  38. */
  39. enum Algorithm
  40. {
  41. NoAlg = -1,
  42. PrincipalComponents, // principal components analysis 主成分分析法
  43. Entropy, // entropy methods 熵值法
  44. AHP, // aanalytical hierarchy process 层次分析法
  45. HWM, // hierarchical weighting method 层次加权法
  46. SPA, // set pair analysis 集对分析法
  47. MEA, // matter element analysis 物元分析法
  48. GCE, // Grey clustering evaluation method 灰色聚类评估法
  49. WeightedSum, // Weighted Sum 加权求和算法
  50. };
  51. static QString stringFromAlgorithm(Algorithm alg);
  52. /**
  53. * @brief The AlgorithmCategory enum
  54. * 算法分类
  55. */
  56. enum AlgorithmCategory
  57. {
  58. NoCategory = -1,
  59. };
  60. /**
  61. * @brief The AlgorithmInfo struct
  62. * 算法信息
  63. */
  64. struct AlgorithmInfo
  65. {
  66. Algorithm alg = NoAlg;
  67. AlgorithmCategory category = NoCategory;
  68. };
  69. /**
  70. * @brief The SchemeProcessInfo struct
  71. * 方案步骤详情
  72. */
  73. struct SchemeProcessInfo
  74. {
  75. int id = -1; // 对应数据库中主键
  76. int projectId = -1; // 所属项目id
  77. int indexType; // 指标体系类型
  78. int step; // 步骤编号
  79. SchemeProcessType type; // 步骤类型
  80. /// 数据来源
  81. /// 导入数据(权重数据或者评估数据)时有效
  82. SchemeDataSource dSource = NoData;
  83. /// 算法
  84. /// 优化指标体系, 计算权重, 计算评估结果时, 需要用到的算法
  85. Algorithm algorithm = NoAlg;
  86. /// 效能分级, 选择灰色聚类算法计算效能评估时用到
  87. int efficiencyGrades = 3;
  88. bool isChecked = false; // 是否选择了执行
  89. QString createTime; // 创建时间
  90. QString updateTime; // 更新时间
  91. };
  92. /// 方案步骤的名称
  93. static QString processName(const SchemeProcessInfo &process);
  94. /// 给定方案步骤中可选的数据来源
  95. static QList<SchemeDataSource> processOptionalDataSource(const SchemeProcessInfo &process);
  96. /// 给定方案步骤中可选的算法
  97. static QList<Algorithm> processOptionalAlgorithms(const SchemeProcessInfo &process);
  98. /// 给定方案步骤是否可以选择执行
  99. static bool processIsOptional(const SchemeProcessInfo &process);
  100. explicit SchemePlanManager(QObject *parent = nullptr);
  101. signals:
  102. };
  103. #endif // SCHEMEPLANMANAGER_H