3500/TriggerConfig.cpp

827 lines
40 KiB
C++
Raw Normal View History

2023-04-14 19:30:30 +08:00
#include "TriggerConfig.h"
#include "ui_TriggerConfig.h"
#include <QCheckBox>
#include <QListView>
#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);
2023-10-19 14:15:31 +08:00
ui->comboBox_channelConfig->clear();
2023-04-14 19:30:30 +08:00
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();
2024-03-14 09:35:39 +08:00
QString strWhere = QString(" WorkConditionID = %1 and ChannelID = '%2' and operate <> 3 ").arg(m_WorkCondition[ii].SN).arg(strChannelID);
2023-04-14 19:30:30 +08:00
m_vecTriggerConfig.clear();
QVector<TriggerConfig_t>().swap(m_vecTriggerConfig);
m_vecTriggerConfig = g_SqliteDB->GetTriggerConfig("t_TriggerConfig",strWhere);
QStringList trgType ,trgStatus;
trgType.append("阈值");
2023-10-19 14:15:31 +08:00
//trgType.append("偏差");
2023-04-14 19:30:30 +08:00
trgStatus.append("单次触发");
trgStatus.append("连续触发");
2023-04-27 19:48:15 +08:00
2023-04-14 19:30:30 +08:00
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" <<endl;
}
QStandardItem* CTriggerConfig::add_checkBox_model(int flag)
{
QStandardItem *item = new QStandardItem();
item->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 <<endl;
QString str = ui->comboBox_channelConfig->currentText();
on_comboBox_channelConfig_currentTextChanged(str);
}
void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString &arg1)
{
qDebug() << "arg" << arg1 <<endl;
QString channelType ;
model->removeRows(0, model->rowCount());
int ii = 0;
for (ii = 0; ii < g_ChannelBaseInfo.size(); ii++) {
if(arg1 == g_ChannelBaseInfo[ii].channelName){
QMap<QString,QString>::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("阈值");
2023-10-19 14:15:31 +08:00
//trgType.append("偏差");
2023-04-14 19:30:30 +08:00
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()),"位移有效值");
}
2023-04-27 19:48:15 +08:00
}else if(g_ChannelBaseInfo[ii].channelType =="SLOW_CURRENT" || g_ChannelBaseInfo[ii].channelType =="PULSE_CURRENT"){
2023-04-14 19:30:30 +08:00
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));
}
2023-10-19 14:15:31 +08:00
}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()),"最大值");
}
2023-04-14 19:30:30 +08:00
}
}
void CTriggerConfig::on_pushButton_submit_clicked()
{
qDebug() << "rowCount" << model->rowCount() <<endl;
QString WorkConditonSN = "" ;
QString ChannelID = "", ChannelName = "";
2024-03-14 09:35:39 +08:00
int i = 0;
for (i = 0; i < m_WorkCondition.size() ; i++) {
if(ui->comboBox_workCondition->currentText() == m_WorkCondition[i].WorkConditionName){
2023-04-14 19:30:30 +08:00
WorkConditonSN = m_WorkCondition[i].SN;
2024-03-14 09:35:39 +08:00
break;
}
2023-04-14 19:30:30 +08:00
}
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;
}
2024-03-14 09:35:39 +08:00
if(j == 2){
2023-04-14 19:30:30 +08:00
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){
2023-10-19 14:15:31 +08:00
QComboBox *gg = (QComboBox*)(ui->tableView->indexWidget(model->index(i,6)));
2023-04-14 19:30:30 +08:00
if(gg->currentText() == "单次触发"){
rowList << "Latching";
}else if(gg->currentText() == "连续触发"){
rowList << "Nonlatching";
}
qDebug()<<"COOM6:" <<gg->currentText();
}else if(j == 7){
2023-10-19 14:15:31 +08:00
QComboBox *gg = (QComboBox*)(ui->tableView->indexWidget(model->index(i,7)));
2023-04-14 19:30:30 +08:00
if(gg->currentText() == "单次触发"){
rowList << "Latching";
}else if(gg->currentText() == "连续触发"){
rowList << "Nonlatching";
}
qDebug()<<"COOM7:" <<gg->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){
2023-10-19 14:15:31 +08:00
QComboBox *gg2 = (QComboBox*)(ui->tableView->indexWidget(model->index(i,10)));
2023-04-14 19:30:30 +08:00
if(gg2->currentText() == "阈值"){
rowList << "LEVEL";
}else if(gg2->currentText() == "偏差"){
rowList << "DELTA";
}
qDebug()<<"COOM10:" <<gg2->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"){
2024-03-14 09:35:39 +08:00
QString strSql = QString(" values('%1','%2',%3,'%4','%5',%6,'%7',%8,'%9',%10,'%11',%12,'%13','%14','%15','%16','%17','%18',0) ;").\
2023-04-14 19:30:30 +08:00
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);
2024-03-14 09:35:39 +08:00
2023-04-14 19:30:30 +08:00
}
}else{
2024-03-14 09:35:39 +08:00
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{
2023-04-14 19:30:30 +08:00
QString strSql = QString(" set AlertOver = %1,AlertOverSetpoint = '%2',DangerOver = %3,DangerOverSetpoint = '%4',AlertUnder = %5,AlertUnderSetpoint = '%6',DangerUnder = %7,\
2024-03-14 09:35:39 +08:00
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]).\
2023-04-14 19:30:30 +08:00
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);
2024-03-14 09:35:39 +08:00
2023-04-14 19:30:30 +08:00
}
2024-03-14 09:35:39 +08:00
2023-04-14 19:30:30 +08:00
}
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());
}
2024-03-14 09:35:39 +08:00
void CTriggerConfig::on_deleteTriggerEvent()
{
QString str = ui->comboBox_channelConfig->currentText();
on_comboBox_channelConfig_currentTextChanged(str);
}
2023-04-14 19:30:30 +08:00
void CTriggerConfig::on_pushButton_view_clicked()
{
ViewTriggerConfig *dialog = new ViewTriggerConfig();
//connect(dialog,SIGNAL(reject()),this,SLOT(dialogReleased()));
dialog->setWindowModality(Qt::ApplicationModal);
dialog->show();
2024-03-14 09:35:39 +08:00
connect(dialog,SIGNAL(deleteTriggerEvent_sg()),this,SLOT(on_deleteTriggerEvent()));
2023-04-14 19:30:30 +08:00
}
2023-10-19 14:15:31 +08:00
void CTriggerConfig::slotNetMgr(QString sAddr, const QVariant &msg)
{
QJsonObject objec = msg.value<QJsonObject>();
if(objec.contains("cmd"))
{
QJsonValue arrays_value = objec.take("cmd");
//qDebug()<<"cmd ="<<arrays_value.toString();
if(arrays_value.toString() == "110"){
bool Status = objec.take("success").toBool();
if(Status){
PushData();
}
}
}
}
2023-04-14 19:30:30 +08:00
void CTriggerConfig::on_pushButton_save_clicked()
2023-10-19 14:15:31 +08:00
{
connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
g_NetMgr->DetectNet();
}
void CTriggerConfig::PushData()
2023-04-14 19:30:30 +08:00
{
if(m_isConfirm == -1){
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请先点击\"应用\""));
return ;
}
m_isConfirm = -1;
QJsonArray m_channeltriggerArray;
QJsonObject triggerConfigObj;
2023-10-19 14:15:31 +08:00
if(m_WorkCondition.size() < 1){
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请先配置工况!"));
return;
}
2023-04-14 19:30:30 +08:00
for (int i = 0; i< m_WorkCondition.size(); i++) {
QJsonArray arraytriggerSettings;
2024-03-14 09:35:39 +08:00
QString strWhere = QString(" WorkConditionID = %1 and operate <> 3 ").arg(m_WorkCondition[i].SN);
2023-04-14 19:30:30 +08:00
QVector<TriggerConfig_t> 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";
2023-10-19 14:15:31 +08:00
else if( triggerConfig[j].Characteristic == "偏置电压/Gap")
2023-04-14 19:30:30 +08:00
rowObj["triggerFeatureName"] = "DCValues";
2023-10-19 14:15:31 +08:00
else if(triggerConfig[j].Characteristic == "平均值" || triggerConfig[j].Characteristic == "有效值")
2023-04-14 19:30:30 +08:00
rowObj["triggerFeatureName"] = "RMSValues";
else if(triggerConfig[j].Characteristic == "诊断峰峰值")
rowObj["triggerFeatureName"] = "DiagnosisPk2Pk";
2023-10-19 14:15:31 +08:00
else if(triggerConfig[j].Characteristic == "速度有效值" || triggerConfig[j].Characteristic == "位移有效值")//积分
2023-04-14 19:30:30 +08:00
rowObj["triggerFeatureName"] = "IntegratRMS";
else if(triggerConfig[j].Characteristic == "积分峰峰值")
rowObj["triggerFeatureName"] = "IntegratPk2Pk";
else if(triggerConfig[j].Characteristic == "转速")
rowObj["triggerFeatureName"] = "SpeedProfileSpeed";
2023-04-27 19:48:15 +08:00
else if(triggerConfig[j].Characteristic == "速度峰值" || triggerConfig[j].Characteristic == "位移峰值")//积分
2023-04-14 19:30:30 +08:00
rowObj["triggerFeatureName"] = "IntegratPk2Pk/2";
else if(triggerConfig[j].Characteristic == "峰值")
rowObj["triggerFeatureName"] = "DiagnosisPeak";
2023-10-19 14:15:31 +08:00
else if(triggerConfig[j].Characteristic == "监测保护峰峰值")
rowObj["triggerFeatureName"] = "MonitorPk2Pk";
2023-04-14 19:30:30 +08:00
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();
2024-03-14 09:35:39 +08:00
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_t> 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();
2023-04-27 19:48:15 +08:00
QVector<WorkCondition_t>().swap(m_WorkCondition);
QString wherecon = "";
wherecon = QString("Enable = \"1\" ");
m_WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition",wherecon);
2024-03-14 09:35:39 +08:00
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","");
2023-04-14 19:30:30 +08:00
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");
2024-03-14 09:35:39 +08:00
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");
2023-10-19 14:15:31 +08:00
disconnect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
2024-03-14 09:35:39 +08:00
2023-04-14 19:30:30 +08:00
}