SchemePlanManager.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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 nameOfAlgorithm(Algorithm alg);
  52. static QString descriptionOfAlgorithm(Algorithm alg);
  53. /**
  54. * @brief The AlgorithmCategory enum
  55. * 算法分类
  56. */
  57. enum AlgorithmCategory
  58. {
  59. NoCategory = -1,
  60. };
  61. /**
  62. * @brief The AlgorithmInfo struct
  63. * 算法信息
  64. */
  65. struct AlgorithmInfo
  66. {
  67. Algorithm alg = NoAlg;
  68. AlgorithmCategory category = NoCategory;
  69. };
  70. enum IndexCostType
  71. {
  72. IndexCostTypeBenefit, // 效益型
  73. IndexCostTypeCost, // 成本型
  74. };
  75. Q_ENUM(IndexCostType)
  76. static QString stringFromIndexCostType(IndexCostType t);
  77. /**
  78. * @brief The SchemeProcessInfo struct
  79. * 方案步骤详情
  80. */
  81. struct SchemeProcessInfo
  82. {
  83. int id = -1; // 对应数据库中主键
  84. int projectId = -1; // 所属项目id
  85. int indexType; // 指标体系类型
  86. int step; // 步骤编号
  87. SchemeProcessType type; // 步骤类型
  88. /// 数据来源
  89. /// 导入数据(权重数据或者评估数据)时有效
  90. SchemeDataSource dSource = NoData;
  91. /// 算法
  92. /// 优化指标体系, 计算权重, 计算评估结果时, 需要用到的算法
  93. Algorithm algorithm = NoAlg;
  94. /// 效能分级, 选择灰色聚类算法计算效能评估时用到
  95. int efficiencyGrades = 3;
  96. bool isChecked = false; // 是否选择了执行
  97. QString createTime; // 创建时间
  98. QString updateTime; // 更新时间
  99. };
  100. /// 方案步骤的名称
  101. static QString processName(const SchemeProcessInfo &process);
  102. static QString processDescription(const SchemeProcessInfo &process);
  103. /// 给定方案步骤中可选的数据来源
  104. static QList<SchemeDataSource> processOptionalDataSource(const SchemeProcessInfo &process);
  105. /// 给定方案步骤中可选的算法
  106. static QList<Algorithm> processOptionalAlgorithms(const SchemeProcessInfo &process);
  107. /// 给定方案步骤是否可以选择执行
  108. static bool processIsOptional(const SchemeProcessInfo &process);
  109. explicit SchemePlanManager(QObject *parent = nullptr);
  110. signals:
  111. };
  112. #endif // SCHEMEPLANMANAGER_H