SchemePlanManager.h 3.8 KB

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