aicomparewidget.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #include "aicomparewidget.h"
  2. #include "ui_aicomparewidget.h"
  3. #include <QIntValidator>
  4. #include "UIStyleManager.h"
  5. #include "SystemConfig.h"
  6. #include "FromWebAPI.h"
  7. #include "commonFunc.h"
  8. AICompareWidget::AICompareWidget(QWidget *parent) :
  9. QWidget(parent),
  10. ui(new Ui::AICompareWidget)
  11. {
  12. ui->setupUi(this);
  13. m_logger = spdlog::get("ACASetting");
  14. if(m_logger == nullptr)
  15. {
  16. fmt::print("AICompareWidget: Logger ACAServer not found\n");
  17. return;
  18. }
  19. /* 设置 lineEdit_length 只能输入数字 */
  20. ui->lineEdit_length->setValidator(new QIntValidator(1, 120, this));
  21. /* 设置输入栏的弱提示符 */
  22. ui->lineEdit_length->setPlaceholderText("请输入, 限制1-120秒");
  23. /* ai对比持续次数 */
  24. ui->lineEdit_compareCount->setValidator(new QIntValidator(1, 10, this));
  25. ui->lineEdit_compareCount->setPlaceholderText("请输入, 持续对比次数限制1-10次");
  26. /* 不相似度阈值 */
  27. ui->lineEdit_notSimilarThrehold->setValidator(new StrictDoubleValidator(0.0, 1.0, 3, this));
  28. ui->lineEdit_notSimilarThrehold->setPlaceholderText("请输入, 阈值限制0.0-1.0");
  29. /* 相似度阈值 */
  30. ui->lineEdit_similarThrehold->setValidator(new StrictDoubleValidator(0.0, 1.0, 3, this));
  31. ui->lineEdit_similarThrehold->setPlaceholderText("请输入, 阈值限制0.0-1.0");
  32. /* 设置初始化的参数 */
  33. do_pBtn_restore_clicked();
  34. /* 连接信号和槽 */
  35. connect(ui->pBtn_restore, &QPushButton::clicked, this, &AICompareWidget::do_pBtn_restore_clicked);
  36. /* 设置样式 */
  37. UIStyle.registerWidget(this);
  38. }
  39. AICompareWidget::~AICompareWidget()
  40. {
  41. UIStyle.unregisterWidget(this);
  42. delete ui;
  43. }
  44. /* 判断参数是否修改 */
  45. bool AICompareWidget::isDataChanged()
  46. {
  47. m_aiCompareConfig.nAiComputeDuration = ui->lineEdit_length->text().toInt();
  48. m_aiCompareConfig.nAiCompareCount = ui->lineEdit_compareCount->text().toInt();
  49. m_aiCompareConfig.fSimilarThrehold = ui->lineEdit_similarThrehold->text().toFloat();
  50. m_aiCompareConfig.fNotSimilarThrehold = ui->lineEdit_notSimilarThrehold->text().toFloat();
  51. m_aiCompareConfig.bNoConsistencyAlarmOtherAlarm = ui->checkBox_noConsistencyOtherAlarm->isChecked();
  52. /* 和历史数据进行对比 */
  53. const AICompareConfig_t &oldConfig = SysConfig.getAICompareConfig();
  54. if(m_aiCompareConfig == oldConfig)
  55. {
  56. SPDLOG_LOGGER_DEBUG(m_logger, "AI对比配置没有变化,不需要更新");
  57. return false;
  58. }
  59. return true;
  60. }
  61. /* 保存配置项 */
  62. bool AICompareWidget::saveConfig()
  63. {
  64. if(!isDataChanged())
  65. {
  66. return true; // 没有修改,直接返回成功
  67. }
  68. /* 将AI对比配置转换成json */
  69. std::string strJson;
  70. if(!SysConfig.setAICompareConfigToJson(m_aiCompareConfig, strJson))
  71. {
  72. SPDLOG_LOGGER_ERROR(m_logger, "设置AI对比配置转换成JSON失败");
  73. return false;
  74. }
  75. /* 更新数据库信息 */
  76. if(!m_fromWebAPI->updateSystemConfig(Config_CompareAI, strJson, SysConfig.mapSysConfigDesc[eSystemConfigType::eSCT_CompareAI]))
  77. {
  78. SPDLOG_LOGGER_ERROR(m_logger, "更新AI对比配置失败");
  79. return false;
  80. }
  81. /* 更新系统设置 */
  82. SysConfig.setAICompareConfig(m_aiCompareConfig);
  83. SPDLOG_LOGGER_DEBUG(m_logger, "AI对比配置更新成功");
  84. return true;
  85. }
  86. /* 恢复配置项 */
  87. void AICompareWidget::do_pBtn_restore_clicked()
  88. {
  89. const AICompareConfig_t &aiConfig = SysConfig.getAICompareConfig();
  90. ui->lineEdit_length->setText(QString::number(aiConfig.nAiComputeDuration));
  91. ui->lineEdit_compareCount->setText(QString::number(aiConfig.nAiCompareCount));
  92. ui->lineEdit_similarThrehold->setText(QString::number(aiConfig.fSimilarThrehold, 'f', 3));
  93. ui->lineEdit_notSimilarThrehold->setText(QString::number(aiConfig.fNotSimilarThrehold, 'f', 3));
  94. ui->checkBox_noConsistencyOtherAlarm->setChecked(aiConfig.bNoConsistencyAlarmOtherAlarm);
  95. }