3500/WorkingCondition.cpp

896 lines
44 KiB
C++

#include "WorkingCondition.h"
#include "ui_WorkingCondition.h"
#include <QPushButton>
#include <QListView>
#include "NetMgr.h"
#include "ftpclient.h"
CWorkingcondition::CWorkingcondition(QWidget *parent) :
QWidget(parent),
ui(new Ui::CWorkingcondition)
{
ui->setupUi(this);
ui->widget_2->setProperty("flag","wcChannel");
ui->widget_3->setProperty("flag","normal");
headerStr = QObject::tr("ID,工况名称,使能,起始工况,描述");
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->setColumnWidth(0, 50);
ui->tableView->setColumnWidth(3, 130);
ui->tableView->setColumnWidth(1, 200);
ui->tableView->setColumnWidth(4, 520);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
//model->setRowCount(10);
// for (int i = 0; i < 10; i++)
// {
// ui->tableView->setIndexWidget(model->index(i,4),CreateButtons(0));
// }
m_row = -1;
ui->tableView->setAlternatingRowColors(true);
ui->comboBox_activePower->setView(new QListView());
ui->comboBox_reactivePower->setView(new QListView());
ui->comboBox_excitingCurrent->setView(new QListView());
ui->comboBox_guideVaneOpening->setView(new QListView());
ui->comboBox_bladeOpening->setView(new QListView());
ui->comboBox_workingHead->setView(new QListView());
ui->comboBox_unitFlow->setView(new QListView());
ui->comboBox_diffrentPress->setView(new QListView());
ui->comboBox_unitEfficiency->setView(new QListView());
ui->comboBox_gateOutSwitch->setView(new QListView());
ui->comboBox_fieldSwitch->setView(new QListView());
ui->comboBox_generateElectricity->setView(new QListView());
ui->comboBox_voluteInlet->setView(new QListView());
ui->comboBox_tailraceOutlet->setView(new QListView());
ui->comboBox_rotateSpeed->setView(new QListView());
//connect(ui->comboBox_unitType,SIGNAL(currentIndexChanged(QString)),this,SLOT(on_comboBox_unitType_currentIndexChanged(const QString&)));
LoadWorkingConditionConfig();
}
CWorkingcondition::~CWorkingcondition()
{
delete ui;
}
QWidget *CWorkingcondition::CreateButtons(int flag)
{
if(flag == 0){
QPushButton *btn_New = new QPushButton("新增");
QHBoxLayout *hlayoutNew = new QHBoxLayout;
hlayoutNew->addWidget(btn_New,1,Qt::AlignCenter);
hlayoutNew->setMargin(0);
QWidget *widNew = new QWidget;
widNew->setLayout(hlayoutNew);
return widNew;
}else if(flag == 1){
QHBoxLayout *hlayout = new QHBoxLayout;
QWidget *wid = new QWidget;
QPushButton *btn_Edit = new QPushButton("编辑");
QPushButton *btn_Del = new QPushButton("删除");
hlayout->addWidget(btn_Edit,1,Qt::AlignCenter);
hlayout->addWidget(btn_Del,1,Qt::AlignCenter);
hlayout->setMargin(0);
wid->setLayout(hlayout);
return wid;
}
}
QRadioButton* CWorkingcondition::add_radio_model(int flag)
{
QRadioButton* radio = new QRadioButton(this);
if(!flag){
radio->setChecked(false);
}else{
radio->setChecked(true);
}
return radio;
}
void CWorkingcondition::LoadWorkingConditionConfig()
{
#ifdef Q_OS_WIN32
QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json";
#endif
#ifdef Q_OS_LINUX
QString fileName = QCoreApplication::applicationDirPath() + "/config/UnitWorkConditionsInfo.json";
#endif
//QString fileName =QFileDialog::getOpenFileName(this,"打开文件",QDir::currentPath(), "*.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;
}
QJsonObject jsonObject = document.object();
if(jsonObject.contains(QStringLiteral("WorkConditionsInfo"))) {
valueWorkConditionsInfo = jsonObject.value(QStringLiteral("WorkConditionsInfo"));
m_arrWorkConditionsInfo = valueWorkConditionsInfo.toArray();
}
}
m_WorkConditionChannels = g_SqliteDB->GetWorkConditionChannels("t_WorkConditionChannels");
qDebug() << "g_ChannelBaseInfo" <<g_ChannelBaseInfo.size() << endl;
for (int i = 0; i < g_ChannelBaseInfo.size(); i++) {
ui->comboBox_activePower->insertItem(i,g_ChannelBaseInfo[i].channelName);
ui->comboBox_reactivePower->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_excitingCurrent->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_guideVaneOpening->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_bladeOpening->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_workingHead->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_unitFlow->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_diffrentPress->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_unitEfficiency->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_gateOutSwitch->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_fieldSwitch->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_generateElectricity->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_voluteInlet->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_tailraceOutlet->addItem(g_ChannelBaseInfo[i].channelName);
ui->comboBox_rotateSpeed->addItem(g_ChannelBaseInfo[i].channelName);
}
ui->comboBox_activePower->addItem("");
ui->comboBox_reactivePower->addItem("");
ui->comboBox_excitingCurrent->addItem("");
ui->comboBox_guideVaneOpening->addItem("");
ui->comboBox_bladeOpening->addItem("");
ui->comboBox_workingHead->addItem("");
ui->comboBox_unitFlow->addItem("");
ui->comboBox_diffrentPress->addItem("");
ui->comboBox_unitEfficiency->addItem("");
ui->comboBox_gateOutSwitch->addItem("");
ui->comboBox_fieldSwitch->addItem("");
ui->comboBox_generateElectricity->addItem("");
ui->comboBox_voluteInlet->addItem("");
ui->comboBox_tailraceOutlet->addItem("");
ui->comboBox_rotateSpeed->addItem("");
if(m_WorkConditionChannels.size() < 1){
ui->comboBox_activePower->setCurrentText("");
ui->comboBox_reactivePower->setCurrentText("");
ui->comboBox_excitingCurrent->setCurrentText("");
ui->comboBox_guideVaneOpening->setCurrentText("");
ui->comboBox_bladeOpening->setCurrentText("");
ui->comboBox_workingHead->setCurrentText("");
ui->comboBox_unitFlow->setCurrentText("");
ui->comboBox_diffrentPress->setCurrentText("");
ui->comboBox_unitEfficiency->setCurrentText("");
ui->comboBox_gateOutSwitch->setCurrentText("");
ui->comboBox_fieldSwitch->setCurrentText("");
ui->comboBox_generateElectricity->setCurrentText("");
ui->comboBox_voluteInlet->setCurrentText("");
ui->comboBox_tailraceOutlet->setCurrentText("");
ui->comboBox_rotateSpeed->setCurrentText("");
}else{
if(m_WorkConditionChannels[0].channelID == ""){
ui->comboBox_activePower->setCurrentText("");
}else{
ui->comboBox_activePower->setCurrentText(m_WorkConditionChannels[0].ChannelName);
}
if(m_WorkConditionChannels[1].channelID == ""){
ui->comboBox_reactivePower->setCurrentText("");
}else{
ui->comboBox_reactivePower->setCurrentText(m_WorkConditionChannels[1].ChannelName);
}
if(m_WorkConditionChannels[2].channelID == ""){
ui->comboBox_excitingCurrent->setCurrentText("");
}else{
ui->comboBox_excitingCurrent->setCurrentText(m_WorkConditionChannels[2].ChannelName);
}
if(m_WorkConditionChannels[3].channelID == ""){
ui->comboBox_guideVaneOpening->setCurrentText("");
}else{
ui->comboBox_guideVaneOpening->setCurrentText(m_WorkConditionChannels[3].ChannelName);
}
if(m_WorkConditionChannels[4].channelID == ""){
ui->comboBox_bladeOpening->setCurrentText("");
}else{
ui->comboBox_bladeOpening->setCurrentText(m_WorkConditionChannels[4].ChannelName);
}
if(m_WorkConditionChannels[5].channelID == ""){
ui->comboBox_workingHead->setCurrentText("");
}else{
ui->comboBox_workingHead->setCurrentText(m_WorkConditionChannels[5].ChannelName);
}
if(m_WorkConditionChannels[6].channelID == ""){
ui->comboBox_unitFlow->setCurrentText("");
}else{
ui->comboBox_unitFlow->setCurrentText(m_WorkConditionChannels[6].ChannelName);
}
if(m_WorkConditionChannels[7].channelID == ""){
ui->comboBox_diffrentPress->setCurrentText("");
}else{
ui->comboBox_diffrentPress->setCurrentText(m_WorkConditionChannels[7].ChannelName);
}
if(m_WorkConditionChannels[8].channelID == ""){
ui->comboBox_unitEfficiency->setCurrentText("");
}else{
ui->comboBox_unitEfficiency->setCurrentText(m_WorkConditionChannels[8].ChannelName);
}
if(m_WorkConditionChannels[9].channelID == ""){
ui->comboBox_gateOutSwitch->setCurrentText("");
}else{
ui->comboBox_gateOutSwitch->setCurrentText(m_WorkConditionChannels[9].ChannelName);
}
if(m_WorkConditionChannels[10].channelID == ""){
ui->comboBox_fieldSwitch->setCurrentText("");
}else{
ui->comboBox_fieldSwitch->setCurrentText(m_WorkConditionChannels[10].ChannelName);
}
if(m_WorkConditionChannels[11].channelID == ""){
ui->comboBox_generateElectricity->setCurrentText("");
}else{
ui->comboBox_generateElectricity->setCurrentText(m_WorkConditionChannels[11].ChannelName);
}
if(m_WorkConditionChannels[12].channelID == ""){
ui->comboBox_voluteInlet->setCurrentText("");
}else{
ui->comboBox_voluteInlet->setCurrentText(m_WorkConditionChannels[12].ChannelName);
}
if(m_WorkConditionChannels[13].channelID == ""){
ui->comboBox_tailraceOutlet->setCurrentText("");
}else{
ui->comboBox_tailraceOutlet->setCurrentText(m_WorkConditionChannels[13].ChannelName);
}
if(m_WorkConditionChannels[14].channelID == ""){
ui->comboBox_rotateSpeed->setCurrentText("");
}else{
ui->comboBox_rotateSpeed->setCurrentText(m_WorkConditionChannels[14].ChannelName);
}
}
m_WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition");
model->setRowCount(m_WorkCondition.size());
for (int i = 0; i < m_WorkCondition.size() ; i++) {
model->setData(model->index(i,0,QModelIndex()),m_WorkCondition[i].WorkConditionID);
model->setData(model->index(i,1,QModelIndex()),m_WorkCondition[i].WorkConditionName);
if(m_WorkCondition[i].Enable)
ui->tableView->setIndexWidget(model->index(i, 2), CreateCombox(1));
else
ui->tableView->setIndexWidget(model->index(i, 2), CreateCombox(0));
if(m_WorkCondition[i].StartWorkCondition == "1")
ui->tableView->setIndexWidget(model->index(i, 3), add_radio_model(1));
else
ui->tableView->setIndexWidget(model->index(i, 3), add_radio_model(0));
model->setData(model->index(i,4,QModelIndex()),m_WorkCondition[i].Description);
}
// m_WorkConditionInfo = g_SqliteDB->GetWorkConditionInfo("t_WorkConditionInfo","");
}
void CWorkingcondition::on_comboBox_unitType_currentIndexChanged(const QString &arg1)
{
qDebug() << arg1 << endl;
model->setRowCount(0);
model->setRowCount(10);
if(arg1 == "常规机组工况模板"){
QJsonArray array = valueNomal.toArray();
for (int i = 0; i < array.size() ; i++) {
//model->removeRow(i);
model->setData(model->index(i,0,QModelIndex()),array.at(i)["SN"].toString());
model->setData(model->index(i,1,QModelIndex()),array.at(i)["WorkConditionName"].toString());
model->setData(model->index(i,2,QModelIndex()),array.at(i)["Enable"].toInt());
model->setData(model->index(i,3,QModelIndex()),array.at(i)["Description"].toString());
//ui->tableView->setIndexWidget(model->index(i,4),CreateButtons(1));
}
}else if(arg1 == "抽水蓄能机组工况模板"){
QJsonArray array = valuePumpWater.toArray();
for (int i = 0; i < array.size() ; i++) {
//model->removeRow(i);
model->setData(model->index(i,0,QModelIndex()),array.at(i)["SN"].toString());
model->setData(model->index(i,1,QModelIndex()),array.at(i)["WorkConditionName"].toString());
model->setData(model->index(i,2,QModelIndex()),array.at(i)["Enable"].toInt());
model->setData(model->index(i,3,QModelIndex()),array.at(i)["Description"].toString());
//ui->tableView->setIndexWidget(model->index(i,4),CreateButtons(1));
}
}
}
void CWorkingcondition::on_pushButton_edit_clicked()
{
int rowCount = model->rowCount();
m_row = ui->tableView->currentIndex().row();//获得当前行索引
if(rowCount < 1 || m_row == -1){
QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("请先选择工况类型!"));
return;
}
QString strTableName = "t_WorkConditionChannels";
//g_SqliteDB->DeleteData(strTableName);
for (int i = 0; i < g_ChannelBaseInfo.size() ; i++) {
QString strSql = "";
if(ui->comboBox_activePower->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 1").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_activePower->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 1").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_reactivePower->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 2").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_reactivePower->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 2").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_excitingCurrent->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 3").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_excitingCurrent->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 3").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_guideVaneOpening->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 4").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_guideVaneOpening->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 4").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_bladeOpening->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 5").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_bladeOpening->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 5").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_workingHead->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 6").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_workingHead->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 6").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_unitFlow->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 7").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_unitFlow->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 7").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_diffrentPress->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 8").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_diffrentPress->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 8").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_unitEfficiency->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 9").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_unitEfficiency->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 9").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_gateOutSwitch->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 10").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_gateOutSwitch->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 10").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_fieldSwitch->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 11").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_fieldSwitch->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 11").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_generateElectricity->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 12").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_generateElectricity->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 12").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_voluteInlet->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 13").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_voluteInlet->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 13").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_tailraceOutlet->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 14").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_tailraceOutlet->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 14").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
if(ui->comboBox_rotateSpeed->currentText() == g_ChannelBaseInfo[i].channelName){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = '%4' where WorkConditionChannelType = 15").arg(g_ChannelBaseInfo[i].channelID).arg(g_ChannelBaseInfo[i].bordNo).\
arg(g_ChannelBaseInfo[i].channelName).arg(g_ChannelBaseInfo[i].channelNoInBoard);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}else if(ui->comboBox_rotateSpeed->currentText() == ""){
strSql = QString(" set ChannelId = '%1',BoardNo = %2,ChannelName = '%3',ChannelNoInBoard = %4 where WorkConditionChannelType = 15").arg("").arg(0).\
arg("").arg(0);
g_SqliteDB->UpdateDataSql(strTableName,strSql);
}
}
m_WorkConditionChannels = g_SqliteDB->GetWorkConditionChannels("t_WorkConditionChannels");
QStringList strListChannelName;
strListChannelName << ui->comboBox_activePower->currentText() << ui->comboBox_reactivePower->currentText() <<
ui->comboBox_excitingCurrent->currentText() << ui->comboBox_guideVaneOpening->currentText() <<
ui->comboBox_bladeOpening->currentText() << ui->comboBox_workingHead->currentText() <<
ui->comboBox_unitFlow->currentText() << ui->comboBox_diffrentPress->currentText() <<
ui->comboBox_unitEfficiency->currentText() << ui->comboBox_gateOutSwitch->currentText() <<
ui->comboBox_fieldSwitch->currentText() << ui->comboBox_generateElectricity->currentText() <<
ui->comboBox_voluteInlet->currentText() << ui->comboBox_tailraceOutlet->currentText() <<
ui->comboBox_rotateSpeed->currentText();
foreach (auto ChannelName, strListChannelName){
if(ChannelName == ""){
strListChannelName.removeOne(ChannelName);
}
}
QModelIndex index1 = model->index(m_row,0);
QModelIndex index2 = model->index(m_row,1);
QString index = model->data(index1).toString();
QString WorkConditionType = model->data(index2).toString();
CWokingConditionConfig *dialog = new CWokingConditionConfig();
connect(dialog,SIGNAL(sigWorkConditon(QJsonObject&)), this, SLOT(slotWorkConditon(QJsonObject&)));
//QString strUnitType = ui->comboBox_unitType->currentText();
//QJsonArray arrWorkConditionInfo = valueWorkConditionsInfo.toArray();
QVector<WorkCondition_t> WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition","");
for (int i = 0; i < WorkCondition.size(); i++) {
if(WorkCondition[i].SN == index){
QString strWhere = QString("SN = '%1' ").arg(index);
QVector<WorkConditionInfo_t> WorkConditionInfo = g_SqliteDB->GetWorkConditionInfo("t_WorkConditionRules",strWhere);
dialog->InitConfig(index.toInt(),WorkConditionType,strListChannelName,\
WorkCondition[i],m_WorkConditionChannels,WorkConditionInfo);
}
}
// if(m_WorkCondition.size() > 0 && m_arrWorkConditionsInfo.size() > 0){
// for (int j = 0; j < m_arrWorkConditionsInfo.size() ; j++) {
// if(m_arrWorkConditionsInfo.at(j)["SN"] == index){
// QJsonValue valueWorkConditionInfo = m_arrWorkConditionsInfo.at(j);
// dialog->InitConfig(index.toInt(),WorkConditionType,strListChannelName,\
// valueWorkConditionInfo,m_WorkConditionChannels);
// break;
// }else{
// if(j + 1 == m_arrWorkConditionsInfo.size()){
// QJsonValue emptyValue;
// dialog->InitConfig(index.toInt(),WorkConditionType,strListChannelName,\
// emptyValue,m_WorkConditionChannels);
// }
// }
// }
// }else{
// QJsonValue emptyValue;
// dialog->InitConfig(index.toInt(),WorkConditionType,strListChannelName,\
// emptyValue,m_WorkConditionChannels);
// }
// if(m_wcArray.size() > 0 ){
// qDebug() << "m_wcArray" << endl;
// for (int j = 0; j < m_wcArray.size() ; j++) {
// if(m_wcArray.at(j)["SN"] == index){
// QJsonValue valueWorkConditionInfo = m_wcArray.at(j);
// dialog->InitConfig(index.toInt(),WorkConditionType,strListChannelName,\
// valueWorkConditionInfo,m_WorkConditionChannels);
// }else{
// QJsonValue emptyValue;
// dialog->InitConfig(index.toInt(),WorkConditionType,strListChannelName,\
// emptyValue,m_WorkConditionChannels);
// }
// }
// }
dialog->setWindowModality(Qt::ApplicationModal);
dialog->show();
}
void CWorkingcondition::slotWorkConditon(QJsonObject& jsonObj)
{
model->setData(model->index(m_row,1,QModelIndex()),jsonObj["WorkConditionName"].toString());
model->setData(model->index(m_row,4,QModelIndex()),jsonObj["Description"].toString());
QJsonDocument doc(jsonObj["WorkConditionJudgeLogicRules"].toObject());
QString strRet = QString(doc.toJson(QJsonDocument::Indented));
QString strTableName = "t_WorkCondition",strSql;
strSql = QString(" set Description = '%1',WorkConditionName = '%2',WorkConditionJudgeLogicRules = '%3',CheckWorkConditionInterval = '%4' where SN = '%5' ").arg(jsonObj["Description"].toString()).arg(jsonObj["WorkConditionName"].toString()).\
arg(strRet).arg(jsonObj["CheckWorkConditionInterval"].toInt()).arg(jsonObj["SN"].toString());
g_SqliteDB->UpdateDataSql(strTableName,strSql);
//m_wcArray.append(jsonObj);
}
QWidget *CWorkingcondition::CreateCombox(int flag)
{
if(flag == 0){
QComboBox* cmb = new QComboBox();
QStringList strList ;
strList << "" << "";
cmb->addItems(strList);
return cmb;
}else if(flag == 1){
QComboBox* cmb = new QComboBox();
QStringList strList ;
strList << "" << "";
cmb->addItems(strList);
return cmb;
}
}
void CWorkingcondition::on_pushButton_add_clicked()
{
int rowCount = model->rowCount();
model->setRowCount(rowCount+1);
QString strTablename = " t_WorkCondition ";
QString strCol = " MAX(WorkConditionID) ";
QString strResult = g_SqliteDB->GetSingelLine(strTablename,strCol);
QString strIndex = QString("%1").arg(strResult.split(",")[0].toInt()+1);
ui->tableView->setIndexWidget(model->index(rowCount, 3), add_radio_model(0));
ui->tableView->setIndexWidget(model->index(rowCount, 2), CreateCombox(1));
model->setData(model->index(rowCount,0,QModelIndex()),strIndex);
model->setData(model->index(rowCount,1,QModelIndex()),"");
model->setData(model->index(rowCount,3,QModelIndex()),"");
QString strSql = QString(" values('%1','%2','%3',%4,'%5','%6','%7','%8','%9');").arg(strIndex,"5","","0",strIndex,"false","","","");
g_SqliteDB->InsertData(strTablename,strSql);
//m_WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition");
}
void CWorkingcondition::on_pushButton_del_clicked()
{
int rowCount = model->rowCount();
int row = ui->tableView->currentIndex().row();//获得当前行索引
if(rowCount < 1 || row == -1){
QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("请先选择工况类型!"));
return;
}
QString strIndex = model->data(model->index(row,0)).toString();
QString strTablename = "t_WorkCondition";
g_SqliteDB->DeleteData(strTablename,"WorkConditionID",strIndex);
strTablename = "t_WorkConditionRules";
g_SqliteDB->DeleteData(strTablename,"SN",strIndex);
model->removeRow(row);
// m_WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition");
// QJsonArray tempArray = m_arrWorkConditionsInfo;
// for (int i = 0; i < tempArray.size(); i++) {
// QJsonObject tempObj = tempArray[i].toObject();
// if(tempObj["SN"].toString() == strIndex){
// m_arrWorkConditionsInfo.removeAt(i);
// }
// }
// if(m_wcArray.size() > 0){
// QJsonArray tempArray = m_wcArray;
// for (int i = 0; i < tempArray.size(); i++) {
// QJsonObject tempObj = tempArray[i].toObject();
// if(tempObj["SN"].toString() == strIndex){
// m_wcArray.removeAt(i);
// }
// }
// }
// QJsonObject WorkConditionsInfoObj;
// WorkConditionsInfoObj["WorkConditionsInfo"] = m_arrWorkConditionsInfo;
// QJsonDocument jsonDoc;
// jsonDoc.setObject(WorkConditionsInfoObj);
// QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json";
// QFile file(fileName);
// file.open(QIODevice::WriteOnly);
// file.write(jsonDoc.toJson());
// file.close();
}
void CWorkingcondition::on_pushButton_save_clicked()
{
connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
g_NetMgr->DetectNet();
}
void CWorkingcondition::PushData()
{
int flag = -1,flag2 = -1;
for (int i = 0; i < model->rowCount(); i++) {
QComboBox *gg = (QComboBox*)(ui->tableView->indexWidget(model->index(i,2)));
QRadioButton *radio = (QRadioButton*)(ui->tableView->indexWidget(model->index(i,3)));
QString strIndex = model->data(model->index(i,0)).toString();
QString strComBox = gg->currentText();
bool radiocheck = radio->isChecked();
int enable = -1;
QString strStartWorkCondition = "";
if(strComBox == ""){
enable = 1;
flag2 = 1;
}else if( strComBox == ""){
enable = 0;
}
if(radiocheck){
strStartWorkCondition = "1";
flag = 1;
}else if(!radiocheck){
strStartWorkCondition = "0";
}
QString strTablename = " t_WorkCondition ";
QString strSql = QString(" set Enable = %1,StartWorkCondition = '%2' where SN = '%3';").arg(enable).arg(strStartWorkCondition).arg(strIndex);
g_SqliteDB->UpdateDataSql(strTablename,strSql);
}
if(flag == -1){
QMessageBox::information(this, QStringLiteral("提示"), "请选择起始工况!");
return;
}
if(flag2 == -1){
QMessageBox::information(this, QStringLiteral("提示"), "请使能一个工况!");
return;
}
QVector<WorkCondition_t> WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition","");
QJsonArray arrayWorkCondition;
for (int i = 0; i < WorkCondition.size(); i++) {
QJsonObject tempObj;
qDebug() << "WorkCondition[i].CheckWorkConditionInterval.toInt()" << WorkCondition[i].CheckWorkConditionInterval.toInt() << endl;
tempObj["CheckWorkConditionInterval"] = WorkCondition[i].CheckWorkConditionInterval.toInt();
tempObj["SN"] = i + 1;
tempObj["Enable"] = WorkCondition[i].Enable;
if(WorkCondition[i].StartWorkCondition == "1")
tempObj["StartWorkCondition"] = true;
else if(WorkCondition[i].StartWorkCondition == "0")
tempObj["StartWorkCondition"] = false;
QJsonDocument doc = QJsonDocument::fromJson(WorkCondition[i].WorkConditionJudgeLogicRules.toUtf8());
QJsonObject obj = doc.object();
tempObj["WorkConditionJudgeLogicRules"] = obj;
tempObj["WorkConditionName"] = WorkCondition[i].WorkConditionName;
QString strWhere = QString(" SN = '%1' ").arg(WorkCondition[i].SN);
QVector<WorkConditionInfo_t> WorkCondition = g_SqliteDB->GetWorkConditionInfo("t_WorkConditionRules",strWhere);
QJsonArray tempArray;
for (int j = 0; j < WorkCondition.size(); j++) {
QJsonObject tempObj2;
tempObj2["BoardNo"] = WorkCondition[j].BoardNo;
tempObj2["ChannelName"] = WorkCondition[j].ChannelName;
tempObj2["DisplayName"] = WorkCondition[j].DisplayName;
tempObj2["ChannelNoInBoard"] = WorkCondition[j].ChannelNoInBoard;
tempObj2["BoardNo"] = WorkCondition[j].BoardNo;
tempObj2["LowerSideOfRange"] = WorkCondition[j].LowerSideOfRange.toDouble();
tempObj2["LowerSideOfVolatilityRange"] = WorkCondition[j].LowerSideOfVolatilityRange.toDouble();
tempObj2["UpperSideOfRange"] = WorkCondition[j].UpperSideOfRange.toDouble();
tempObj2["UpperSideOfVolatilityRange"] = WorkCondition[j].UpperSideOfVolatilityRange.toDouble();
tempObj2["WC_NO"] = WorkCondition[j].WC_NO;
tempObj2["WorkConditionChannelType"] = WorkCondition[j].WorkConditionChannelType;
if(WorkCondition[j].EnLowerSideOfRangePercent == "1")
tempObj2["EnSideOfRangePercent"] = true;
else if(WorkCondition[j].EnLowerSideOfRangePercent == "0")
tempObj2["EnLowerSideOfRangePercent"] = false;
if(WorkCondition[j].EnRangeLower == "1")
tempObj2["EnRangeLower"] = true;
else if(WorkCondition[j].EnRangeLower == "0")
tempObj2["EnRangeLower"] = false;
if(WorkCondition[j].EnRangeUpper == "1")
tempObj2["EnRangeUpper"] = true;
else if(WorkCondition[j].EnRangeUpper == "0")
tempObj2["EnRangeUpper"] = false;
if(WorkCondition[j].EnVolatilityRangeLower == "1")
tempObj2["EnVolatilityRangeLower"] = true;
else if(WorkCondition[j].EnVolatilityRangeLower == "0")
tempObj2["EnVolatilityRangeLower"] = false;
if(WorkCondition[j].EnVolatilityRangeUpper == "1")
tempObj2["EnVolatilityRangeUpper"] = true;
else if(WorkCondition[j].EnVolatilityRangeUpper == "0")
tempObj2["EnVolatilityRangeUpper"] = false;
if(WorkCondition[j].EnableCheckVolatility == "1")
tempObj2["EnableCheckVolatility"] = true;
else if(WorkCondition[j].EnableCheckVolatility == "0")
tempObj2["EnableCheckVolatility"] = false;
tempArray.append(tempObj2);
}
tempObj["WorkConditionRules"] = tempArray;
arrayWorkCondition.append(tempObj);
}
//qDebug() << arrayWorkCondition << endl;
// for (int i = 0; i < model->rowCount(); i++) {
// QComboBox *gg = (QComboBox*)(ui->tableView->indexWidget(model->index(i,2)));
// QRadioButton *radio = (QRadioButton*)(ui->tableView->indexWidget(model->index(i,3)));
// QString strIndex = model->data(model->index(i,0)).toString();
// QString strComBox = gg->currentText();
// bool radiocheck = radio->isChecked();
// QString strStartWorkCondition = "";
// for (int j = 0; j < m_wcArray.size(); j++) {
// QString index = m_wcArray.at(j)["SN"].toString();
// QJsonObject tempObj = m_wcArray[j].toObject();
// if(index == strIndex ){
// if(strComBox == "是"){
// tempObj["Enable"] = 1;
// m_wcArray[j] = tempObj;
// }else if( strComBox == "否"){
// tempObj["Enable"] = 0;
// m_wcArray[j] = tempObj;
// }
// if(radiocheck){
// tempObj["StartWorkCondition"] = true;
// m_wcArray[j] = tempObj;
// strStartWorkCondition = "true";
// }else if(!radiocheck){
// tempObj["StartWorkCondition"] = false;
// m_wcArray[j] = tempObj;
// strStartWorkCondition = "false";
// }
// QString strTablename = " t_WorkCondition ";
// QString strEnable = QString("%1").arg(m_wcArray.at(j)["Description"].toInt());
// QString strCheckWorkConditionInterval = QString("%1").arg(m_wcArray.at(j)["CheckWorkConditionInterval"].toInt());
// QString strSql = QString(" set CheckWorkConditionInterval = '%1',Description = '%2',Enable = %3,\
// StartWorkCondition = '%4',WorkConditionName = '%5',WorkConditionRules = '%6' where SN = '%7';").arg(strCheckWorkConditionInterval,\
// m_wcArray.at(j)["Description"].toString(),strEnable,strStartWorkCondition,m_wcArray.at(j)["WorkConditionName"].toString(),"",index);
// g_SqliteDB->UpdateDataSql(strTablename,strSql);
// }
// }
// if(m_wcArray.size() < 1){
// QString strEnable;
// if(strComBox == "是"){
// strEnable = QString("%1").arg(1);
// }else if( strComBox == "否"){
// strEnable = QString("%1").arg(0);
// }
// if(radiocheck){
// strStartWorkCondition = "true";
// }else if(!radiocheck){
// strStartWorkCondition = "false";
// }
// QString strTablename = " t_WorkCondition ";
// QString strSql = QString(" set Enable = %1, StartWorkCondition = '%2' where SN = '%3';").arg(strEnable,strStartWorkCondition,strIndex);
// g_SqliteDB->UpdateDataSql(strTablename,strSql);
// }
// }
// m_wcSaveArray = m_arrWorkConditionsInfo;
// for (int jj = 0; jj < m_wcArray.size(); jj++) {
// int flag = 0;
// if(m_arrWorkConditionsInfo.size() > 0){
// for (int k = 0; k < m_arrWorkConditionsInfo.size(); k++) {
// if(m_wcArray.at(jj)["SN"].toString() == m_wcSaveArray.at(k)["SN"].toString()){
// m_wcSaveArray[k] = m_wcArray[jj];
// break;
// }else{
// if(flag + 1 == m_wcSaveArray.size())
// m_wcSaveArray.append(m_wcArray[jj]);
// flag ++;
// }
// }
// }else{
// m_wcSaveArray.append(m_wcArray[jj]);
// }
// }
// m_arrWorkConditionsInfo = m_wcSaveArray;
QJsonObject WorkConditionsInfoObj;
WorkConditionsInfoObj["WorkConditionsInfo"] = arrayWorkCondition;
QJsonDocument jsonDoc;
jsonDoc.setObject(WorkConditionsInfoObj);
#ifdef Q_OS_WIN32
QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json";
#endif
#ifdef Q_OS_LINUX
QString fileName = QCoreApplication::applicationDirPath() + "/config/UnitWorkConditionsInfo.json";
#endif
QFile file(fileName);
file.open(QIODevice::WriteOnly);
file.write(jsonDoc.toJson());
file.close();
QString str = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitWorkConditionsInfo.json");
g_FtpClient->SetServerInfo(str);
g_FtpClient->SetUserInfo("root","@#cidw!@123456");
g_FtpClient->UpLoadFile(fileName,"UnitWorkConditionsInfo.json");
disconnect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
}
void CWorkingcondition::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();
}
}
}
}