aicomparewidget.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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::saveConfig()
  46. {
  47. AICompareConfig_t aiConfig;
  48. aiConfig.nAiComputeDuration = ui->lineEdit_length->text().toInt();
  49. aiConfig.nAiCompareCount = ui->lineEdit_compareCount->text().toInt();
  50. aiConfig.fSimilarThrehold = ui->lineEdit_similarThrehold->text().toFloat();
  51. aiConfig.fNotSimilarThrehold = ui->lineEdit_notSimilarThrehold->text().toFloat();
  52. aiConfig.bNoConsistencyAlarmOtherAlarm = ui->checkBox_noConsistencyOtherAlarm->isChecked();
  53. /* 和历史数据进行对比 */
  54. const AICompareConfig_t &oldConfig = SysConfig.getAICompareConfig();
  55. if(aiConfig == oldConfig)
  56. {
  57. SPDLOG_LOGGER_DEBUG(m_logger, "AI对比配置没有变化,不需要更新");
  58. return true;
  59. }
  60. /* 将AI对比配置转换成json */
  61. std::string strJson;
  62. if(!SysConfig.setAICompareConfigToJson(aiConfig, strJson))
  63. {
  64. SPDLOG_LOGGER_ERROR(m_logger, "设置AI对比配置转换成JSON失败");
  65. return false;
  66. }
  67. /* 更新数据库信息 */
  68. if(!m_fromWebAPI->updateSystemConfig(Config_CompareAI, strJson, SysConfig.mapSysConfigDesc[eSystemConfigType::eSCT_CompareAI]))
  69. {
  70. SPDLOG_LOGGER_ERROR(m_logger, "更新AI对比配置失败");
  71. return false;
  72. }
  73. /* 更新系统设置 */
  74. SysConfig.setAICompareConfig(aiConfig);
  75. SPDLOG_LOGGER_DEBUG(m_logger, "AI对比配置更新成功");
  76. return true;
  77. }
  78. /* 恢复配置项 */
  79. void AICompareWidget::do_pBtn_restore_clicked()
  80. {
  81. const AICompareConfig_t &aiConfig = SysConfig.getAICompareConfig();
  82. ui->lineEdit_length->setText(QString::number(aiConfig.nAiComputeDuration));
  83. ui->lineEdit_compareCount->setText(QString::number(aiConfig.nAiCompareCount));
  84. ui->lineEdit_similarThrehold->setText(QString::number(aiConfig.fSimilarThrehold, 'f', 3));
  85. ui->lineEdit_notSimilarThrehold->setText(QString::number(aiConfig.fNotSimilarThrehold, 'f', 3));
  86. ui->checkBox_noConsistencyOtherAlarm->setChecked(aiConfig.bNoConsistencyAlarmOtherAlarm);
  87. }