#include "TriggerConfig.h" #include "ui_TriggerConfig.h" #include #include #include "ftpclient.h" #include "ViewTriggerConfig.h" CTriggerConfig::CTriggerConfig(QWidget *parent) : QWidget(parent), ui(new Ui::CTriggerConfig) { ui->setupUi(this); m_isConfirm = -1; headerStr = QObject::tr("通道名称,特征值,高于警报值,高于危险值,\ 低于警报值,低于危险值,警报触发状态,危险触发状态,警报延时触发时长,危险延时触发时长,触发类型"); model = new QStandardItemModel(ui->tableView); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选中行 QStringList headerList = headerStr.split(","); model->setHorizontalHeaderLabels(headerList); model->setColumnCount(headerList.size()); ui->tableView->setModel(model); ui->tableView->setAlternatingRowColors(true); for (int i = 0; i < model->columnCount() ; i++) { if(i == 0){ ui->tableView->setColumnWidth(i, 200); }else if(i == 8 || i == 9){ ui->tableView->setColumnWidth(i, 200); }else{ ui->tableView->setColumnWidth(i, 150); } } ui->comboBox_workCondition->setView(new QListView()); ui->comboBox_channelConfig->setView(new QListView()); connect(model, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(ReceiveChange(QStandardItem*))); QStringList strChannelConfigList; for (int i = 0; i < g_ChannelBaseInfo.size(); i++) { strChannelConfigList << g_ChannelBaseInfo[i].channelName; } QString wherecon = ""; wherecon = QString("Enable = \"1\" "); m_WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition",wherecon); QStringList strWorkConditionList; for (int i = 0; i < m_WorkCondition.size(); i++) { strWorkConditionList << m_WorkCondition.at(i).WorkConditionName; } ui->comboBox_workCondition->addItems(strWorkConditionList); ui->comboBox_channelConfig->clear(); ui->comboBox_channelConfig->addItems(strChannelConfigList); connect(ui->comboBox_channelConfig,SIGNAL(currentIndexChanged(const QString&)),this,SLOT(on_comboBox_channelConfig_currentTextChanged(const QString&))); connect(ui->comboBox_workCondition,SIGNAL(currentIndexChanged(const QString &)),this,SLOT(on_comboBox_WorkCondition_currentTextChanged(const QString&))); //LoadTriggerConfig(); } //void CTriggerConfig::LoadTriggerConfig() //{ // QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; // if(!fileName.isEmpty()) // { // qDebug() << "打开" << fileName ; // QFile file(fileName); // file.open(QIODevice::ReadOnly | QIODevice::Text); // QString value = file.readAll(); // file.close(); // QJsonParseError parseJsonErr; // QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr); // if (!(parseJsonErr.error == QJsonParseError::NoError)) { // QMessageBox::about(NULL, "提示", "读取文件错误!"); // return; // } // m_TriggerArray = document.array(); // } //} void CTriggerConfig::LoadTriggerConfig(QString& strChannelID) { QString strWC = ui->comboBox_workCondition->currentText(); int ii = 0,flag = -1; for (ii = 0; ii < m_WorkCondition.size(); ii++) { if(m_WorkCondition[ii].WorkConditionName == strWC){ flag = 1; break; } } if(flag == -1){ QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("工况信息加载失败!")); return; } QString strChanneName = ui->comboBox_channelConfig->currentText(); QString strWhere = QString(" WorkConditionID = %1 and ChannelID = '%2' and operate <> 3 ").arg(m_WorkCondition[ii].SN).arg(strChannelID); m_vecTriggerConfig.clear(); QVector().swap(m_vecTriggerConfig); m_vecTriggerConfig = g_SqliteDB->GetTriggerConfig("t_TriggerConfig",strWhere); QStringList trgType ,trgStatus; trgType.append("阈值"); //trgType.append("偏差"); trgStatus.append("单次触发"); trgStatus.append("连续触发"); if(m_vecTriggerConfig.size() > 0){ model->setRowCount(m_vecTriggerConfig.size()); for (int i = 0; i < m_vecTriggerConfig.size(); i++) { model->setData(model->index(i,0,QModelIndex()),m_vecTriggerConfig[i].ChannelName); model->setData(model->index(i,1,QModelIndex()),m_vecTriggerConfig[i].Characteristic); if(m_vecTriggerConfig[i].AlertOver == 1) model->setItem(i, 2, add_checkBox_model(1)); else model->setItem(i, 2, add_checkBox_model(0)); if(m_vecTriggerConfig[i].DangerOver) model->setItem(i, 3, add_checkBox_model(1)); else model->setItem(i, 3, add_checkBox_model(0)); if(m_vecTriggerConfig[i].AlertUnder) model->setItem(i, 4, add_checkBox_model(1)); else model->setItem(i, 4, add_checkBox_model(0)); if(m_vecTriggerConfig[i].DangerUnder) model->setItem(i, 5, add_checkBox_model(1)); else model->setItem(i, 5, add_checkBox_model(0)); model->setData(model->index(i,2,QModelIndex()),m_vecTriggerConfig[i].AlertOverSetpoint); model->setData(model->index(i,3,QModelIndex()),m_vecTriggerConfig[i].DangerOverSetpoint); model->setData(model->index(i,4,QModelIndex()),m_vecTriggerConfig[i].AlertUnderSetpoint); model->setData(model->index(i,5,QModelIndex()),m_vecTriggerConfig[i].DangerUnderSetpoint); if(m_vecTriggerConfig[i].AlertTriggerStatus == "Nonlatching") ui->tableView->setIndexWidget(model->index(i, 6), add_combox_model(trgStatus,"连续触发")); else if(m_vecTriggerConfig[i].AlertTriggerStatus == "Latching") ui->tableView->setIndexWidget(model->index(i, 6), add_combox_model(trgStatus,"单次触发")); if(m_vecTriggerConfig[i].DangerTriggerStatus == "Nonlatching") ui->tableView->setIndexWidget(model->index(i, 7), add_combox_model(trgStatus,"连续触发")); else if(m_vecTriggerConfig[i].DangerTriggerStatus == "Latching") ui->tableView->setIndexWidget(model->index(i, 7), add_combox_model(trgStatus,"单次触发")); model->setData(model->index(i,8,QModelIndex()),m_vecTriggerConfig[i].AlertTriggerDelay); model->setData(model->index(i,9,QModelIndex()),m_vecTriggerConfig[i].DangerTriggerDelay); if(m_vecTriggerConfig[i].TriggerType == "LEVEL") ui->tableView->setIndexWidget(model->index(i, 10), add_combox_model(trgType,"阈值")); else if(m_vecTriggerConfig[i].TriggerType == "DELTA") ui->tableView->setIndexWidget(model->index(i, 10), add_combox_model(trgType,"偏差")); } } } void CTriggerConfig::ReceiveChange(QStandardItem*) { //qDebug() << "ReceiveChange" <setCheckable(true); if(!flag){ item->setCheckState(Qt::Unchecked); }else{ item->setCheckState(Qt::Checked); } //item->setEditable(false); return item; } QComboBox* CTriggerConfig::add_combox_model(QStringList& item,QString curentText) { QComboBox* cmb = new QComboBox(this); cmb->addItems(item); cmb->setCurrentText(curentText); return cmb; } QRadioButton* CTriggerConfig::add_radio_model() { QRadioButton* radio = new QRadioButton(this); return radio; } QWidget *CTriggerConfig::add_checkBox(QTableView *table) { QWidget *widget = new QWidget(table); QCheckBox *checkbox = new QCheckBox(); QHBoxLayout *hLayout = new QHBoxLayout(); hLayout->addWidget(checkbox); hLayout->setMargin(0); // 必须添加, 否则CheckBox不能正常显示 hLayout->setAlignment(checkbox, Qt::AlignCenter); // 居中显示复选框 widget->setLayout(hLayout); return widget; } CTriggerConfig::~CTriggerConfig() { delete ui; } void CTriggerConfig::on_comboBox_WorkCondition_currentTextChanged(const QString &arg1) { qDebug() << "WorkCondition" << arg1 <comboBox_channelConfig->currentText(); on_comboBox_channelConfig_currentTextChanged(str); } void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString &arg1) { qDebug() << "arg" << arg1 <removeRows(0, model->rowCount()); int ii = 0; for (ii = 0; ii < g_ChannelBaseInfo.size(); ii++) { if(arg1 == g_ChannelBaseInfo[ii].channelName){ QMap::iterator iter = g_MapChannelType.begin(); for (; iter != g_MapChannelType.end(); iter++) { if(iter.key() == g_ChannelBaseInfo[ii].channelType){ ui->label_channelType->setText(iter.value()); break; } } channelType = g_ChannelBaseInfo[ii].channelType; break; } } QStringList trgType ,trgStatus; trgType.append("阈值"); //trgType.append("偏差"); trgStatus.append("单次触发"); trgStatus.append("连续触发"); if(g_ChannelBaseInfo[ii].channelType == "TACHOMETER"){ LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ model->setRowCount(1); model->setItem(0, 2, add_checkBox_model()); model->setItem(0, 3, add_checkBox_model()); model->setItem(0, 4, add_checkBox_model()); model->setItem(0, 5, add_checkBox_model()); ui->tableView->setIndexWidget(model->index(0, 10), add_combox_model(trgType)); ui->tableView->setIndexWidget(model->index(0, 6), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(0, 7), add_combox_model(trgStatus)); model->setData(model->index(0,0,QModelIndex()),g_ChannelBaseInfo[ii].channelName); model->setData(model->index(0,1,QModelIndex()),"转速"); } }else if(g_ChannelBaseInfo[ii].channelType == "ACCELEROMETER"){ LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ model->setRowCount(4); for (int i = 0; i < 4; i++) { model->setItem(i, 2, add_checkBox_model(0)); model->setItem(i, 3, add_checkBox_model(0)); model->setItem(i, 4, add_checkBox_model(0)); model->setItem(i, 5, add_checkBox_model(0)); model->setData(model->index(i,0,QModelIndex()),g_ChannelBaseInfo[ii].channelName); ui->tableView->setIndexWidget(model->index(i, 6), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(i, 7), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(i, 10), add_combox_model(trgType)); } model->setData(model->index(0,1,QModelIndex()),"有效值"); model->setData(model->index(1,1,QModelIndex()),"峰值"); model->setData(model->index(2,1,QModelIndex()),"速度峰值"); model->setData(model->index(3,1,QModelIndex()),"速度有效值"); } }else if(g_ChannelBaseInfo[ii].channelType == "PROXIMETER")//径向位移 { LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ model->setRowCount(4); for (int i = 0; i < 4; i++) { model->setItem(i, 2, add_checkBox_model()); model->setItem(i, 3, add_checkBox_model()); model->setItem(i, 4, add_checkBox_model()); model->setItem(i, 5, add_checkBox_model()); ui->tableView->setIndexWidget(model->index(i, 6), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(i, 7), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(i, 10), add_combox_model(trgType)); model->setData(model->index(i,0,QModelIndex()),g_ChannelBaseInfo[ii].channelName); } model->setData(model->index(0,1,QModelIndex()),"诊断峰峰值"); model->setData(model->index(1,1,QModelIndex()),"偏置电压/Gap"); model->setData(model->index(2,1,QModelIndex()),"监测保护峰峰值"); model->setData(model->index(3,1,QModelIndex()),"有效值"); } }else if(g_ChannelBaseInfo[ii].channelType == "THRUST")//轴向位移 { LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ model->setRowCount(1); model->setItem(0, 2, add_checkBox_model()); model->setItem(0, 3, add_checkBox_model()); model->setItem(0, 4, add_checkBox_model()); model->setItem(0, 5, add_checkBox_model()); model->setData(model->index(0,0,QModelIndex()),g_ChannelBaseInfo[ii].channelName); model->setData(model->index(0,1,QModelIndex()),"有效值"); ui->tableView->setIndexWidget(model->index(0, 10), add_combox_model(trgType)); ui->tableView->setIndexWidget(model->index(0, 6), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(0, 7), add_combox_model(trgStatus)); } }else if(g_ChannelBaseInfo[ii].channelType == "VELOCITY")//速度 { LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ model->setRowCount(4); for (int i = 0; i < 4; i++) { model->setItem(i, 2, add_checkBox_model()); model->setItem(i, 3, add_checkBox_model()); model->setItem(i, 4, add_checkBox_model()); model->setItem(i, 5, add_checkBox_model()); ui->tableView->setIndexWidget(model->index(i, 6), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(i, 7), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(i, 10), add_combox_model(trgType)); model->setData(model->index(i,0,QModelIndex()),g_ChannelBaseInfo[ii].channelName); } model->setData(model->index(0,1,QModelIndex()),"有效值"); model->setData(model->index(1,1,QModelIndex()),"峰值"); model->setData(model->index(2,1,QModelIndex()),"位移峰值"); model->setData(model->index(3,1,QModelIndex()),"位移有效值"); } }else if(g_ChannelBaseInfo[ii].channelType =="SLOW_CURRENT" || g_ChannelBaseInfo[ii].channelType =="PULSE_CURRENT"){ LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ model->setRowCount(1); model->setItem(0, 2, add_checkBox_model()); model->setItem(0, 3, add_checkBox_model()); model->setItem(0, 4, add_checkBox_model()); model->setItem(0, 5, add_checkBox_model()); model->setData(model->index(0,0,QModelIndex()),g_ChannelBaseInfo[ii].channelName); model->setData(model->index(0,1,QModelIndex()),"平均值"); ui->tableView->setIndexWidget(model->index(0, 10), add_combox_model(trgType)); ui->tableView->setIndexWidget(model->index(0, 6), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(0, 7), add_combox_model(trgStatus)); } }else if(g_ChannelBaseInfo[ii].channelType =="AIRGAP"){ LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ model->setRowCount(3); for (int i = 0; i < 3; i++){ model->setItem(i, 2, add_checkBox_model()); model->setItem(i, 3, add_checkBox_model()); model->setItem(i, 4, add_checkBox_model()); model->setItem(i, 5, add_checkBox_model()); ui->tableView->setIndexWidget(model->index(i, 6), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(i, 7), add_combox_model(trgStatus)); ui->tableView->setIndexWidget(model->index(i, 10), add_combox_model(trgType)); model->setData(model->index(i,0,QModelIndex()),g_ChannelBaseInfo[ii].channelName); } model->setData(model->index(0,1,QModelIndex()),"平均值"); model->setData(model->index(1,1,QModelIndex()),"最小值"); model->setData(model->index(2,1,QModelIndex()),"最大值"); } } } void CTriggerConfig::on_pushButton_submit_clicked() { qDebug() << "rowCount" << model->rowCount() <comboBox_workCondition->currentText() == m_WorkCondition[i].WorkConditionName){ WorkConditonSN = m_WorkCondition[i].SN; break; } } for (int i = 0; i < g_ChannelBaseInfo.size() ; i++) { if(ui->comboBox_channelConfig->currentText() == g_ChannelBaseInfo[i].channelName){ ChannelID = g_ChannelBaseInfo[i].channelID; ChannelName = g_ChannelBaseInfo[i].channelName; } } QJsonArray triggerArray; for (int i = 0; i < model->rowCount(); i++) { QJsonObject rowObj; QStringList rowList; for (int j = 0; j < model->columnCount(); j++) { QModelIndex index = model->index(i,j); QString strData = model->data(index).toString(); if(j == 0){ rowList << strData; } if(j == 1){ rowList << strData; } if(j == 2){ QStandardItem *item = model->itemFromIndex(index); if(item->checkState() == Qt::Unchecked) rowList << "0"; else if(item->checkState() == Qt::Checked) rowList << "1"; rowList << item->text(); }else if(j == 3){ QStandardItem *item = model->itemFromIndex(index); if(item->checkState() == Qt::Unchecked) rowList << "0"; else if(item->checkState() == Qt::Checked) rowList << "1"; rowList << item->text(); }else if(j == 4){ QStandardItem *item = model->itemFromIndex(index); if(item->checkState() == Qt::Unchecked) rowList << "0"; else if(item->checkState() == Qt::Checked) rowList << "1"; rowList << item->text(); }else if(j == 5){ QStandardItem *item = model->itemFromIndex(index); if(item->checkState() == Qt::Unchecked) rowList << "0"; else if(item->checkState() == Qt::Checked) rowList << "1"; rowList << item->text(); }else if(j == 6){ QComboBox *gg = (QComboBox*)(ui->tableView->indexWidget(model->index(i,6))); if(gg->currentText() == "单次触发"){ rowList << "Latching"; }else if(gg->currentText() == "连续触发"){ rowList << "Nonlatching"; } qDebug()<<"COOM6:" <currentText(); }else if(j == 7){ QComboBox *gg = (QComboBox*)(ui->tableView->indexWidget(model->index(i,7))); if(gg->currentText() == "单次触发"){ rowList << "Latching"; }else if(gg->currentText() == "连续触发"){ rowList << "Nonlatching"; } qDebug()<<"COOM7:" <currentText(); }else if(j == 8){ QStandardItem *item = model->itemFromIndex(index); rowList << item->text(); }else if(j == 9){ QStandardItem *item = model->itemFromIndex(index); rowList << item->text(); }else if(j == 10){ QComboBox *gg2 = (QComboBox*)(ui->tableView->indexWidget(model->index(i,10))); if(gg2->currentText() == "阈值"){ rowList << "LEVEL"; }else if(gg2->currentText() == "偏差"){ rowList << "DELTA"; } qDebug()<<"COOM10:" <currentText(); } } qDebug() << "rowList" << rowList << endl; QString strWhere = QString("ChannelID = '%1' and WorkConditionID = %2 and Characteristic = '%3' ").arg(ChannelID).arg(WorkConditonSN.toInt()).arg(rowList[1]); QString strTableName = "t_TriggerConfig"; QString strCol = "count(*)"; int count = g_SqliteDB->QueryData(strTableName,strCol,strWhere); if(count < 1){ if(rowList[2] == "1" || rowList[4] == "1" || rowList[6] == "1"||rowList[8] == "1"){ QString strSql = QString(" values('%1','%2',%3,'%4','%5',%6,'%7',%8,'%9',%10,'%11',%12,'%13','%14','%15','%16','%17','%18',0) ;").\ arg(ChannelID).arg(ChannelName).arg(WorkConditonSN).arg("").arg(rowList[1]).arg(rowList[2]).arg(rowList[3]).arg(rowList[4]).arg(rowList[5]).arg(rowList[6]).\ arg(rowList[7]).arg(rowList[8]).arg(rowList[9]).arg(rowList[10]).arg(rowList[11]).arg(rowList[12]).arg(rowList[13]).arg(rowList[14]); g_SqliteDB->InsertData(strTableName,strSql); } }else{ QString strWhere = QString(" AlertOver = %1 and AlertOverSetpoint = '%2' and DangerOver = %3 and DangerOverSetpoint = '%4' and AlertUnder = %5 and AlertUnderSetpoint = '%6' and DangerUnder = %7 and \ DangerUnderSetpoint = '%8' and AlertTriggerStatus = '%9' and DangerTriggerStatus = '%10' and AlertTriggerDelay = '%11' and DangerTriggerDelay = '%12' and TriggerType = '%13' and operate <> 3 ").arg(rowList[2]).arg(rowList[3]).arg(rowList[4]).arg(rowList[5]).arg(rowList[6]).\ arg(rowList[7]).arg(rowList[8]).arg(rowList[9]).arg(rowList[10]).arg(rowList[11]).arg(rowList[12]).arg(rowList[13]).arg(rowList[14]); QString strCol = "count(*)"; int count = g_SqliteDB->QueryData(strTableName,strCol,strWhere); qDebug() << "count " << count << endl; if(count == 0){ if(rowList[2] == "1" || rowList[4] == "1" || rowList[6] == "1"||rowList[8] == "1"){ QString strSql = QString(" set AlertOver = %1,AlertOverSetpoint = '%2',DangerOver = %3,DangerOverSetpoint = '%4',AlertUnder = %5,AlertUnderSetpoint = '%6',DangerUnder = %7,\ DangerUnderSetpoint = '%8',AlertTriggerStatus = '%9',DangerTriggerStatus = '%10',AlertTriggerDelay = '%11',DangerTriggerDelay = '%12',TriggerType = '%13', operate = 2 where ChannelID = '%14' and WorkConditionID = %15 and Characteristic = '%16' and operate <> 3; ").arg(rowList[2]).arg(rowList[3]).arg(rowList[4]).arg(rowList[5]).arg(rowList[6]).\ arg(rowList[7]).arg(rowList[8]).arg(rowList[9]).arg(rowList[10]).arg(rowList[11]).arg(rowList[12]).arg(rowList[13]).arg(rowList[14]).arg(ChannelID).arg(WorkConditonSN.toInt()).arg(rowList[1]); g_SqliteDB->UpdateDataSql(strTableName,strSql); } }else{ QString strSql = QString(" set AlertOver = %1,AlertOverSetpoint = '%2',DangerOver = %3,DangerOverSetpoint = '%4',AlertUnder = %5,AlertUnderSetpoint = '%6',DangerUnder = %7,\ DangerUnderSetpoint = '%8',AlertTriggerStatus = '%9',DangerTriggerStatus = '%10',AlertTriggerDelay = '%11',DangerTriggerDelay = '%12',TriggerType = '%13', operate = 1 where ChannelID = '%14' and WorkConditionID = %15 and Characteristic = '%16' and operate <> 3; ").arg(rowList[2]).arg(rowList[3]).arg(rowList[4]).arg(rowList[5]).arg(rowList[6]).\ arg(rowList[7]).arg(rowList[8]).arg(rowList[9]).arg(rowList[10]).arg(rowList[11]).arg(rowList[12]).arg(rowList[13]).arg(rowList[14]).arg(ChannelID).arg(WorkConditonSN.toInt()).arg(rowList[1]); g_SqliteDB->UpdateDataSql(strTableName,strSql); } } m_isConfirm = 1; // if(rowList[1] == "最小值") // rowObj["triggerFeatureName"] = "MinValues"; // else if(rowList[1] == "最大值") // rowObj["triggerFeatureName"] = "MaxValues"; // else if(rowList[1] == "平均值") // rowObj["triggerFeatureName"] = "DCValues"; // else if(rowList[1] == "有效值") // rowObj["triggerFeatureName"] = "RMSValues"; // else if(rowList[1] == "诊断峰峰值") // rowObj["triggerFeatureName"] = "DiagnosisPk2Pk"; // else if(rowList[1] == "速度有效值")//积分 // rowObj["triggerFeatureName"] = "IntegratRMS"; // else if(rowList[1] == "积分峰峰值") // rowObj["triggerFeatureName"] = "IntegratPk2Pk"; // else if(rowList[1] == "转速") // rowObj["triggerFeatureName"] = "ProfileSpeed"; // else if(rowList[1] == "速度峰值")//积分 // rowObj["triggerFeatureName"] = "IntegratPk2Pk/2"; // else if(rowList[1] == "峰值") // rowObj["triggerFeatureName"] = "DiagnosisPeak"; // QString triggerEventName = QString("%1-%2-%3").arg(rowObj["triggerFeatureName"].\ // toString()).arg(rowList[14]).arg(ChannelID); // if(rowList[2].toInt() || rowList[6].toInt() || rowList[4].toInt() || rowList[8].toInt()){ // rowObj["triggerEventName"] = triggerEventName; // rowObj["xAlertOverEnabled"] = rowList[2].toInt(); // rowObj["xAlertOverSetpoint"] = rowList[3].toInt(); // rowObj["xAlertTriggerDelay"] = rowList[12]; // rowObj["xAlertTriggerStatus"] = rowList[10]; // rowObj["xAlertUnderEnabled"] = rowList[6].toInt(); // rowObj["xAlertUnderSetpoint"] = rowList[7]; // rowObj["xDangerOverEnabled"] = rowList[4].toInt(); // rowObj["xDangerOverSetpoint"] = rowList[5].toInt(); // rowObj["xDangerTriggerDelay"] = rowList[13]; // rowObj["xDangerTriggerStatus"] = rowList[11]; // rowObj["xDangerUnderEnabled"] = rowList[8].toInt(); // rowObj["xDangerUnderSetpoint"] = rowList[9]; // triggerArray.append(rowObj); // } // } // QJsonObject triggerConfigObj,tempObj; // QJsonArray arraytriggerSettings; // triggerConfigObj["workConditionSN"] = WorkConditonSN.toInt(); // tempObj["triggerConfig"] = triggerArray; // tempObj["channelId"] = ChannelID; // tempObj["channelName"] = ChannelName; // arraytriggerSettings.append(tempObj); // triggerConfigObj["triggerSettings"] = arraytriggerSettings; // qDebug() << triggerConfigObj << endl; // m_channeltriggerArray.append(triggerConfigObj); } QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("应用成功!")); } void CTriggerConfig::dialogReleased() { on_comboBox_WorkCondition_currentTextChanged(ui->comboBox_workCondition->currentText()); } void CTriggerConfig::on_deleteTriggerEvent() { QString str = ui->comboBox_channelConfig->currentText(); on_comboBox_channelConfig_currentTextChanged(str); } void CTriggerConfig::on_pushButton_view_clicked() { ViewTriggerConfig *dialog = new ViewTriggerConfig(); //connect(dialog,SIGNAL(reject()),this,SLOT(dialogReleased())); dialog->setWindowModality(Qt::ApplicationModal); dialog->show(); connect(dialog,SIGNAL(deleteTriggerEvent_sg()),this,SLOT(on_deleteTriggerEvent())); } void CTriggerConfig::slotNetMgr(QString sAddr, const QVariant &msg) { QJsonObject objec = msg.value(); if(objec.contains("cmd")) { QJsonValue arrays_value = objec.take("cmd"); //qDebug()<<"cmd ="<DetectNet(); } void CTriggerConfig::PushData() { if(m_isConfirm == -1){ QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请先点击\"应用\"!")); return ; } m_isConfirm = -1; QJsonArray m_channeltriggerArray; QJsonObject triggerConfigObj; if(m_WorkCondition.size() < 1){ QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请先配置工况!")); return; } for (int i = 0; i< m_WorkCondition.size(); i++) { QJsonArray arraytriggerSettings; QString strWhere = QString(" WorkConditionID = %1 and operate <> 3 ").arg(m_WorkCondition[i].SN); QVector triggerConfig = g_SqliteDB->GetTriggerConfig("t_TriggerConfig",strWhere); for (int ii = 0; ii < g_ChannelBaseInfo.size(); ii++) { QJsonArray triggerArray; if(triggerConfig.size() > 0){ for (int j = 0; j < triggerConfig.size(); j++) { if(g_ChannelBaseInfo[ii].channelID == triggerConfig[j].ChannelID){ QJsonObject rowObj; if(triggerConfig[j].Characteristic == "最小值") rowObj["triggerFeatureName"] = "MinValues"; else if(triggerConfig[j].Characteristic == "最大值") rowObj["triggerFeatureName"] = "MaxValues"; else if( triggerConfig[j].Characteristic == "偏置电压/Gap") rowObj["triggerFeatureName"] = "DCValues"; else if(triggerConfig[j].Characteristic == "平均值" || triggerConfig[j].Characteristic == "有效值") rowObj["triggerFeatureName"] = "RMSValues"; else if(triggerConfig[j].Characteristic == "诊断峰峰值") rowObj["triggerFeatureName"] = "DiagnosisPk2Pk"; else if(triggerConfig[j].Characteristic == "速度有效值" || triggerConfig[j].Characteristic == "位移有效值")//积分 rowObj["triggerFeatureName"] = "IntegratRMS"; else if(triggerConfig[j].Characteristic == "积分峰峰值") rowObj["triggerFeatureName"] = "IntegratPk2Pk"; else if(triggerConfig[j].Characteristic == "转速") rowObj["triggerFeatureName"] = "SpeedProfileSpeed"; else if(triggerConfig[j].Characteristic == "速度峰值" || triggerConfig[j].Characteristic == "位移峰值")//积分 rowObj["triggerFeatureName"] = "IntegratPk2Pk/2"; else if(triggerConfig[j].Characteristic == "峰值") rowObj["triggerFeatureName"] = "DiagnosisPeak"; else if(triggerConfig[j].Characteristic == "监测保护峰峰值") rowObj["triggerFeatureName"] = "MonitorPk2Pk"; QString triggerEventName = QString("%1-%2-%3").arg(rowObj["triggerFeatureName"].toString()).arg(triggerConfig[j].TriggerType).arg(triggerConfig[j].ChannelID); rowObj["triggerEventName"] = triggerEventName; rowObj["xAlertOverEnabled"] = triggerConfig[j].AlertOver; rowObj["xAlertOverSetpoint"] = triggerConfig[j].AlertOverSetpoint.toDouble(); rowObj["xAlertTriggerDelay"] = triggerConfig[j].AlertTriggerDelay.toInt(); rowObj["xAlertTriggerStatus"] = triggerConfig[j].AlertTriggerStatus; rowObj["xAlertUnderEnabled"] = triggerConfig[j].AlertUnder; rowObj["xAlertUnderSetpoint"] = triggerConfig[j].AlertUnderSetpoint.toDouble(); rowObj["xDangerOverEnabled"] = triggerConfig[j].DangerOver; rowObj["xDangerOverSetpoint"] = triggerConfig[j].DangerOverSetpoint.toDouble(); rowObj["xDangerTriggerDelay"] = triggerConfig[j].DangerTriggerDelay.toInt(); rowObj["xDangerTriggerStatus"] = triggerConfig[j].DangerTriggerStatus; rowObj["xDangerUnderEnabled"] = triggerConfig[j].DangerUnder; rowObj["xDangerUnderSetpoint"] = triggerConfig[j].DangerUnderSetpoint.toDouble(); triggerArray.append(rowObj); } } } QJsonObject tempObj; tempObj["triggerConfig"] = triggerArray; tempObj["channelId"] = g_ChannelBaseInfo[ii].channelID; tempObj["channelName"] = g_ChannelBaseInfo[ii].channelName; arraytriggerSettings.append(tempObj); //qDebug() << arraytriggerSettings << endl; } triggerConfigObj["triggerSettings"] = arraytriggerSettings; triggerConfigObj["workConditionSN"] = m_WorkCondition[i].SN.toInt(); triggerConfigObj["workConditionName"] = m_WorkCondition[i].WorkConditionName; m_channeltriggerArray.append(triggerConfigObj); } QJsonDocument jsonDoc; jsonDoc.setArray(m_channeltriggerArray); QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; QFile file(fileName); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); file.close(); QJsonArray m_channeltriggerArray2; QJsonObject triggerConfigObj2; for (int i = 0; i< m_WorkCondition.size(); i++) { QJsonArray arraytriggerSettings; QString strWhere = QString(" WorkConditionID = %1 ").arg(m_WorkCondition[i].SN); QVector triggerConfig = g_SqliteDB->GetTriggerConfig("t_TriggerConfig",strWhere); for (int ii = 0; ii < g_ChannelBaseInfo.size(); ii++) { int operate = -1; QJsonArray triggerArray; if(triggerConfig.size() > 0){ for (int j = 0; j < triggerConfig.size(); j++) { if(g_ChannelBaseInfo[ii].channelID == triggerConfig[j].ChannelID){ QJsonObject rowObj; if(triggerConfig[j].Characteristic == "最小值") rowObj["triggerFeatureName"] = "MinValues"; else if(triggerConfig[j].Characteristic == "最大值") rowObj["triggerFeatureName"] = "MaxValues"; else if( triggerConfig[j].Characteristic == "偏置电压/Gap") rowObj["triggerFeatureName"] = "DCValues"; else if(triggerConfig[j].Characteristic == "平均值" || triggerConfig[j].Characteristic == "有效值") rowObj["triggerFeatureName"] = "RMSValues"; else if(triggerConfig[j].Characteristic == "诊断峰峰值") rowObj["triggerFeatureName"] = "DiagnosisPk2Pk"; else if(triggerConfig[j].Characteristic == "速度有效值" || triggerConfig[j].Characteristic == "位移有效值")//积分 rowObj["triggerFeatureName"] = "IntegratRMS"; else if(triggerConfig[j].Characteristic == "积分峰峰值") rowObj["triggerFeatureName"] = "IntegratPk2Pk"; else if(triggerConfig[j].Characteristic == "转速") rowObj["triggerFeatureName"] = "SpeedProfileSpeed"; else if(triggerConfig[j].Characteristic == "速度峰值" || triggerConfig[j].Characteristic == "位移峰值")//积分 rowObj["triggerFeatureName"] = "IntegratPk2Pk/2"; else if(triggerConfig[j].Characteristic == "峰值") rowObj["triggerFeatureName"] = "DiagnosisPeak"; else if(triggerConfig[j].Characteristic == "监测保护峰峰值") rowObj["triggerFeatureName"] = "MonitorPk2Pk"; QString triggerEventName = QString("%1-%2-%3").arg(rowObj["triggerFeatureName"].toString()).arg(triggerConfig[j].TriggerType).arg(triggerConfig[j].ChannelID); rowObj["triggerEventName"] = triggerEventName; rowObj["xAlertOverEnabled"] = triggerConfig[j].AlertOver; rowObj["xAlertOverSetpoint"] = triggerConfig[j].AlertOverSetpoint.toDouble(); rowObj["xAlertTriggerDelay"] = triggerConfig[j].AlertTriggerDelay.toInt(); rowObj["xAlertTriggerStatus"] = triggerConfig[j].AlertTriggerStatus; rowObj["xAlertUnderEnabled"] = triggerConfig[j].AlertUnder; rowObj["xAlertUnderSetpoint"] = triggerConfig[j].AlertUnderSetpoint.toDouble(); rowObj["xDangerOverEnabled"] = triggerConfig[j].DangerOver; rowObj["xDangerOverSetpoint"] = triggerConfig[j].DangerOverSetpoint.toDouble(); rowObj["xDangerTriggerDelay"] = triggerConfig[j].DangerTriggerDelay.toInt(); rowObj["xDangerTriggerStatus"] = triggerConfig[j].DangerTriggerStatus; rowObj["xDangerUnderEnabled"] = triggerConfig[j].DangerUnder; rowObj["xDangerUnderSetpoint"] = triggerConfig[j].DangerUnderSetpoint.toDouble(); operate = triggerConfig[j].operate; triggerArray.append(rowObj); } } } QJsonObject tempObj; tempObj["triggerConfig"] = triggerArray; tempObj["channelId"] = g_ChannelBaseInfo[ii].channelID; tempObj["channelName"] = g_ChannelBaseInfo[ii].channelName; tempObj["channelOperate"] = operate; arraytriggerSettings.append(tempObj); } triggerConfigObj2["triggerSettings"] = arraytriggerSettings; triggerConfigObj2["workConditionSN"] = m_WorkCondition[i].SN.toInt(); triggerConfigObj2["workConditionName"] = m_WorkCondition[i].WorkConditionName; m_channeltriggerArray2.append(triggerConfigObj2); } QJsonDocument jsonDoc2; jsonDoc2.setArray(m_channeltriggerArray2); QString fileName2 = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings2.json"; QFile file2(fileName2); file2.open(QIODevice::WriteOnly); file2.write(jsonDoc2.toJson()); file2.close(); QVector().swap(m_WorkCondition); QString wherecon = ""; wherecon = QString("Enable = \"1\" "); m_WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition",wherecon); QString tableName = " t_TriggerConfig "; QString strWhere = QString(" operate = 3 "); g_SqliteDB->DeleteDataW(tableName,strWhere); QString strSql = QString(" set operate = 1 where operate = 0 "); g_SqliteDB->UpdateDataSql(tableName,strSql); strSql = QString(" set operate = 1 where operate = 2 "); g_SqliteDB->UpdateDataSql(tableName,strSql); g_SqliteDB->GetTriggerConfig("t_TriggerConfig",""); QString str = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("TriggerSettings.json"); g_FtpClient->SetServerInfo(str); g_FtpClient->SetUserInfo("root","@#cidw!@123456"); g_FtpClient->UpLoadFile(fileName,"TriggerSettings.json"); QString str2 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("TriggerSettings2.json"); g_FtpClient->SetServerInfo(str2); g_FtpClient->SetUserInfo("root","@#cidw!@123456"); g_FtpClient->UpLoadFile(fileName2,"TriggerSettings2.json"); disconnect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&))); }