#include "WorkingCondition.h" #include "ui_WorkingCondition.h" #include #include #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" <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 = 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 = 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 = 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 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(); if(objec.contains("cmd")) { QJsonValue arrays_value = objec.take("cmd"); //qDebug()<<"cmd ="<