3500/ViewTriggerConfig.cpp

185 lines
7.8 KiB
C++

#include "ViewTriggerConfig.h"
#include "ui_ViewTriggerConfig.h"
ViewTriggerConfig::ViewTriggerConfig(QWidget *parent) :
QWidget(parent),
ui(new Ui::ViewTriggerConfig)
{
ui->setupUi(this);
m_strWorkCondition = "";
headerStr = QObject::tr(" ,通道名称,特征值,高于警报值,高于危险值,\
低于警报值,低于危险值,警报触发状态,危险触发状态,警报延时触发时长,危险延时触发时长,触发类型");
model = new QStandardItemModel(ui->tableView);
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选中行
QStringList headerList = headerStr.split(",");
model->setHorizontalHeaderLabels(headerList);
model->setColumnCount(headerList.size());
CheckBoxDelegate *pCheckDelegate = new CheckBoxDelegate(this);
ui->tableView->setItemDelegateForColumn(0, pCheckDelegate);
ui->tableView->setModel(model);
ui->tableView->setAlternatingRowColors(true);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
for (int i = 0; i < model->columnCount() ; i++) {
if(i == 0){
ui->tableView->setColumnWidth(i, 50);
}
else if(i == 1){
ui->tableView->setColumnWidth(i, 200);
}else if(i == 9 || i == 10){
ui->tableView->setColumnWidth(i, 200);
}else{
ui->tableView->setColumnWidth(i, 150);
}
}
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);
//connect(ui->comboBox_workCondition,SIGNAL(currentTextChanged(const QString &)),this,SLOT(on_comboBox_WorkCondition_currentTextChanged(const QString&)));
m_strWorkCondition = ui->comboBox_workCondition->currentText();
//LoadTriggerConfig(m_strWorkCondition);
}
ViewTriggerConfig::~ViewTriggerConfig()
{
delete ui;
}
//void ViewTriggerConfig::on_comboBox_WorkCondition_currentTextChanged(const QString &arg1)
//{
//}
void ViewTriggerConfig::on_comboBox_workCondition_currentTextChanged(const QString &arg1)
{
m_strWorkCondition = arg1;
LoadTriggerConfig(m_strWorkCondition);
}
void ViewTriggerConfig::LoadTriggerConfig(const QString& strWorkCondition)
{
model->removeRows(0, model->rowCount());
int ii = 0,flag = -1;
for (ii = 0; ii < m_WorkCondition.size(); ii++) {
if(m_WorkCondition[ii].WorkConditionName == strWorkCondition){
flag = 1;
break;
}
}
if(flag == -1){
QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("工况信息加载失败!"));
return;
}
QString strWhere = QString(" WorkConditionID = %1 and operate <> 3 ").arg(m_WorkCondition[ii].SN);
m_vecTriggerConfig.clear();
QVector<TriggerConfig_t>().swap(m_vecTriggerConfig);
m_vecTriggerConfig = g_SqliteDB->GetTriggerConfig("t_TriggerConfig",strWhere);
if(m_vecTriggerConfig.size() > 0){
model->setRowCount(m_vecTriggerConfig.size());
for (int i = 0; i < m_vecTriggerConfig.size(); i++) {
model->setData(model->index(i,1,QModelIndex()),m_vecTriggerConfig[i].ChannelName);
model->setData(model->index(i,2,QModelIndex()),m_vecTriggerConfig[i].Characteristic);
if(m_vecTriggerConfig[i].AlertOver == 1)
model->setData(model->index(i,3,QModelIndex()),m_vecTriggerConfig[i].AlertOverSetpoint);
else
model->setData(model->index(i,3,QModelIndex()),"");
if(m_vecTriggerConfig[i].DangerOver)
model->setData(model->index(i,4,QModelIndex()),m_vecTriggerConfig[i].DangerOverSetpoint);
else
model->setData(model->index(i,4,QModelIndex()),"");
if(m_vecTriggerConfig[i].AlertUnder)
model->setData(model->index(i,5,QModelIndex()),m_vecTriggerConfig[i].AlertUnderSetpoint);
else
model->setData(model->index(i,5,QModelIndex()),"");
if(m_vecTriggerConfig[i].DangerUnder)
model->setData(model->index(i,6,QModelIndex()),m_vecTriggerConfig[i].DangerUnderSetpoint);
else
model->setData(model->index(i,6,QModelIndex()),"");
// model->setData(model->index(i,2,QModelIndex()),m_vecTriggerConfig[i].AlertOverSetpoint);
// model->setData(model->index(i,2,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 == "Latching")
model->setData(model->index(i,7,QModelIndex()),"单次触发");
else if(m_vecTriggerConfig[i].AlertTriggerStatus == "Nonlatching")
model->setData(model->index(i,7,QModelIndex()),"连续触发");
if(m_vecTriggerConfig[i].DangerTriggerStatus == "Latching")
model->setData(model->index(i,8,QModelIndex()),"单次触发");
else if(m_vecTriggerConfig[i].DangerTriggerStatus == "Nonlatching")
model->setData(model->index(i,8,QModelIndex()),"连续触发");
model->setData(model->index(i,9,QModelIndex()),m_vecTriggerConfig[i].AlertTriggerDelay);
model->setData(model->index(i,10,QModelIndex()),m_vecTriggerConfig[i].DangerTriggerDelay);
if(m_vecTriggerConfig[i].TriggerType == "LEVEL")
model->setData(model->index(i,11,QModelIndex()),"阈值");
else if(m_vecTriggerConfig[i].TriggerType == "DELTA")
model->setData(model->index(i,12,QModelIndex()),"偏差");
model->setData(model->index(i,13,QModelIndex()),m_vecTriggerConfig[i].ChannelID);
model->setData(model->index(i,14,QModelIndex()),m_vecTriggerConfig[i].WorkConditionID);
}
}
}
void ViewTriggerConfig::on_pushButton_del_clicked()
{
int iRet = -1;
int ii = 0,flag = -1;
for (ii = 0; ii < m_WorkCondition.size(); ii++) {
if(m_WorkCondition[ii].WorkConditionName == ui->comboBox_workCondition->currentText()){
flag = 1;
break;
}
}
if(flag == -1){
QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("工况信息加载失败!"));
return;
}
for (int i = 0; i < model->rowCount(); i++) {
QModelIndex indexCheck = model->index(i,0);
bool check = model->data(indexCheck, Qt::UserRole).toBool();
if(check){
QString strChannelName = model->data(model->index(i,1)).toString();
QString strWorkConditionID = model->data(model->index(i,14)).toString();
QString strCharacteristic = model->data(model->index(i,2)).toString();
QString strWhere = QString("where ChannelName = '%1' and WorkConditionID = %2 and Characteristic = '%3' ").arg(strChannelName).arg(m_WorkCondition[ii].SN).arg(strCharacteristic);
QString tableName = "t_TriggerConfig ";
QString strSql = QString(" set operate = 3 ");
strSql = strSql + strWhere;
iRet = g_SqliteDB->UpdateDataSql(tableName,strSql);
//iRet = g_SqliteDB->DeleteDataW(tableName,strWhere);
if(iRet != 0)
break;
}
}
if(iRet == 0){
QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("删除成功!"));
emit deleteTriggerEvent_sg();
}
else{
QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("删除失败!"));
}
LoadTriggerConfig(m_strWorkCondition);
}