DataCollectionWidget.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "DataCollectionWidget.h"
  2. #include "DataTableWidget.h"
  3. #include "ConfigExpertDataWidget.h"
  4. #include "ConfigMeasureDataWidget.h"
  5. #include "dbService/SchemeProcessService.h"
  6. #include "dbService/ClassSet.h"
  7. #include "dbService/CNodeDataService.h"
  8. #include <CNode.h>
  9. #include <QTabWidget>
  10. #include <QBoxLayout>
  11. #include <QMap>
  12. #include <QDebug>
  13. DataCollectionWidget::DataCollectionWidget(ProjectInfo *proj, QWidget *parent) : EvalWidget(proj, parent)
  14. {
  15. setTitle("评估数据采集");
  16. m_configExpert = new ConfigExpertDataWidget(this);
  17. m_configMeasure = new ConfigMeasureDataWidget(this);
  18. m_configMeasure->setFixedWidth(256);
  19. m_contentLayout->addWidget(m_configExpert);
  20. m_contentLayout->addWidget(m_configMeasure);
  21. m_configExpert->setHidden(true);
  22. m_configMeasure->setHidden(true);
  23. connect(m_tab, &QTabWidget::currentChanged, this, &DataCollectionWidget::slotTabCurrentChanged);
  24. }
  25. void DataCollectionWidget::setType(int type)
  26. {
  27. EvalWidget::setType(type);
  28. setupTabWidget();
  29. qDebug() << __FUNCTION__ << __LINE__ << m_configExpert->size() << endl;
  30. }
  31. void DataCollectionWidget::setupTabWidget()
  32. {
  33. m_tab->clear();
  34. QMap<int, QList<CNodeData>> nodeListMap;
  35. for (int i : indexList()) {
  36. // 获取指标体系数据
  37. QList<CNodeData> nodeList;
  38. bool ret = CNodeDataService().QueryAll(nodeList, m_proj->id, i);
  39. if (ret) {
  40. nodeListMap[i] = nodeList;
  41. } else {
  42. return;
  43. }
  44. // 获取方案规划数据
  45. QList<SchemePlanManager::SchemeProcessInfo> processList;
  46. ret = SchemeProcessService().QueryAllByProjectIdAndIndexType(processList, m_proj->id, i);
  47. if (ret == false) {
  48. return;
  49. }
  50. for (SchemePlanManager::SchemeProcessInfo process : processList) {
  51. if (process.dSource >= 0) {
  52. DataTableWidget *table = new DataTableWidget(process, this);
  53. table->mind1()->setNodeList(nodeListMap[i]);
  54. if (i == ProjectManager::TechIndex) {
  55. table->mind2()->setNodeList(nodeListMap[ProjectManager::AbilityIndex]);
  56. }
  57. table->setCurrentPage(1);
  58. ProjectManager::IndexType t = (ProjectManager::IndexType)i;
  59. QString indexName = ProjectManager::nameOfIndexType(t);
  60. QString processName = SchemePlanManager::processName(process);
  61. m_tab->addTab(table, indexName + " - " + processName);
  62. }
  63. }
  64. }
  65. }
  66. void DataCollectionWidget::slotTabCurrentChanged(int index)
  67. {
  68. DataTableWidget *table = (DataTableWidget *)m_tab->widget(index);
  69. if (index >= 0) {
  70. bool expert = (table->process().dSource == SchemePlanManager::FromExpert);
  71. if (expert) {
  72. m_configExpert->setProcess(table->process());
  73. }
  74. m_configExpert->setVisible(expert);
  75. bool meaure = (table->process().dSource == SchemePlanManager::FromMeasurement);
  76. if (meaure) {
  77. m_configMeasure->setProcess(table->process());
  78. }
  79. m_configMeasure->setVisible(meaure);
  80. }
  81. }