3500/TriggerConfig.cpp

857 lines
42 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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);
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<TriggerConfig_t>().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" <<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("阈值");
//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(6);
for (int i = 0; i < 6; 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()),"速度有效值");
model->setData(model->index(4,1,QModelIndex()),"反时限警报值");
model->setData(model->index(5,1,QModelIndex()),"反时限危险值");
}
}else if(g_ChannelBaseInfo[ii].channelType == "PROXIMETER")//径向位移
{
LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID);
if(m_vecTriggerConfig.size() < 1){
model->setRowCount(6);
for (int i = 0; i < 6; 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()),"有效值");
model->setData(model->index(4,1,QModelIndex()),"反时限警报值");
model->setData(model->index(5,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(6);
for (int i = 0; i < 6; 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()),"位移有效值");
model->setData(model->index(4,1,QModelIndex()),"反时限警报值");
model->setData(model->index(5,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(5);
for (int i = 0; i < 5; 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()),"反时限警报值");
model->setData(model->index(4,1,QModelIndex()),"反时限危险值");
}
}
}
void CTriggerConfig::on_pushButton_submit_clicked()
{
qDebug() << "rowCount" << model->rowCount() <<endl;
QString WorkConditonSN = "" ;
QString ChannelID = "", ChannelName = "";
int i = 0;
for (i = 0; i < m_WorkCondition.size() ; i++) {
if(ui->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:" <<gg->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:" <<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){
QComboBox *gg2 = (QComboBox*)(ui->tableView->indexWidget(model->index(i,10)));
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")
{
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<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();
}
}
}
}
void CTriggerConfig::on_pushButton_save_clicked()
{
connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
g_NetMgr->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_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";
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";
else if(triggerConfig[j].Characteristic == "反时限危险值")
rowObj["triggerFeatureName"] = "InvertDanger";
else if(triggerConfig[j].Characteristic == "反时限警报值")
rowObj["triggerFeatureName"] = "InvertAlarm";
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);
#ifdef Q_OS_WIN32
QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json";
#endif
#ifdef Q_OS_LINUX
QString fileName = QCoreApplication::applicationDirPath() + "/config/TriggerSettings.json";
#endif
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_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";
else if(triggerConfig[j].Characteristic == "反时限危险值")
rowObj["triggerFeatureName"] = "InvertDanger";
else if(triggerConfig[j].Characteristic == "反时限警报值")
rowObj["triggerFeatureName"] = "InvertAlarm";
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);
#ifdef Q_OS_WIN32
QString fileName2 = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings2.json";
#endif
#ifdef Q_OS_LINUX
QString fileName2 = QCoreApplication::applicationDirPath() + "/config/TriggerSettings2.json";
#endif
QFile file2(fileName2);
file2.open(QIODevice::WriteOnly);
file2.write(jsonDoc2.toJson());
file2.close();
QVector<WorkCondition_t>().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&)));
}