EvalDataManager.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "EvalDataManager.h"
  2. #include "ProjectManager.h"
  3. EvalDataManager::EvalDataManager(QObject *parent) : QObject(parent) { }
  4. QList<NodeMatrixInfo> EvalDataManager::dataSample(SchemePlanManager::SchemeProcessInfo process, CMind *mind1,
  5. CMind *mind2)
  6. {
  7. QList<NodeMatrixInfo> list;
  8. if (mind1->levels() < 2) {
  9. return list;
  10. }
  11. unsigned seed = 1;
  12. srand(seed);
  13. // 权重数据
  14. if (process.type == SchemePlanManager::ImportWeightData) {
  15. // 来自专家数据, 子指标间的权重比
  16. if (process.dSource == SchemePlanManager::FromExpert) {
  17. for (int lev = 1; lev < mind1->levels(); lev++) {
  18. QList<CNodeData> nodes = mind1->nodesInLevel(lev);
  19. for (CNodeData node : nodes) {
  20. QList<CNodeData> subNodes = mind1->subNodes(node);
  21. for (int i = 0; i < subNodes.count(); i++) {
  22. CNodeData vNode = subNodes[i];
  23. for (int j = i; j < subNodes.count(); j++) {
  24. CNodeData hNode = subNodes[j];
  25. NodeMatrixInfo data;
  26. data.engineerId = node.projectId;
  27. data.mark = QString("%1").arg(lev);
  28. data.abscissa = QString("%1").arg(hNode.id);
  29. data.ordinate = QString("%1").arg(vNode.id);
  30. if (i == j) {
  31. data.nodeValue = "1";
  32. list.append(data);
  33. continue;
  34. }
  35. int r = rand() % 8 + 2;
  36. data.nodeValue = QString("%1").arg(r);
  37. list.append(data);
  38. NodeMatrixInfo data1;
  39. data1.engineerId = node.projectId;
  40. data1.mark = QString("%1").arg(lev);
  41. data1.abscissa = QString("%1").arg(vNode.id);
  42. data1.ordinate = QString("%1").arg(hNode.id);
  43. data1.nodeValue = QString("1/%1").arg(r);
  44. list.append(data1);
  45. }
  46. }
  47. }
  48. }
  49. } else if (process.dSource == SchemePlanManager::FromMeasurement) {
  50. for (int i = 0; i < mind1->nodeList().count(); i++) {
  51. CNodeData node = mind1->nodeList()[i];
  52. NodeMatrixInfo data;
  53. data.engineerId = node.projectId;
  54. data.abscissa = QString("%1").arg(node.id);
  55. int r = rand() % 8 + 2;
  56. data.nodeValue = QString("%1").arg(r);
  57. list.append(data);
  58. }
  59. }
  60. } else if (process.type == SchemePlanManager::ImportEvalData) {
  61. if (process.indexType == ProjectManager::TechIndex) {
  62. for (int i = 0; i < mind1->nodeList().count(); i++) {
  63. CNodeData hNode = mind1->nodeList()[i];
  64. for (int j = 0; j < mind2->nodeList().count(); j++) {
  65. CNodeData vNode = mind2->nodeList()[j];
  66. NodeMatrixInfo data;
  67. data.engineerId = hNode.projectId;
  68. data.abscissa = QString("%1").arg(hNode.id);
  69. data.ordinate = QString("%1").arg(vNode.id);
  70. int r = rand() % 8 + 2;
  71. data.nodeValue = QString("%1").arg(r);
  72. list.append(data);
  73. }
  74. }
  75. }
  76. }
  77. return list;
  78. }