#include "Configuration.h" #include "ui_Configuration.h" #include #include #include #include CConfiguration::CConfiguration(QWidget *parent) : QWidget(parent), ui(new Ui::CConfiguration) { ui->setupUi(this); m_isConfirm = -1; ui->widget_2->setProperty("flag", "configure"); ui->widget->setProperty("flag", "Title"); ui->widget_5->setProperty("flag", "normal"); QRegExp exp("[0-9\\.-]+$"); QValidator *Validator = new QRegExpValidator(exp); ui->lineEdit_2->setValidator(Validator); Init(); QHeaderView *pHeader=ui->treeView_Available->header(); pHeader->setSectionResizeMode(QHeaderView::ResizeToContents); pHeader->setStretchLastSection(false); QHeaderView *pHeader2=ui->treeView_Relay->header(); pHeader2->setSectionResizeMode(QHeaderView::ResizeToContents); pHeader2->setStretchLastSection(false); ui->treeView_Available->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->treeView_Relay->setEditTriggers(QAbstractItemView::NoEditTriggers); connect(ui->comboBox_WC,SIGNAL(currentTextChanged(const QString &)),this,SLOT(on_comboBox_WC_currentTextChanged2(const QString&))); } CConfiguration::~CConfiguration() { qDebug()<< "~CConfiguration" << endl; // for(int i = 0;i < model_Available->rowCount() ;i++){ // model_Relay->removeRow(i); // } // for(int i = 0;i < model_Relay->rowCount() ;i++){ // model_Relay->removeRow(i); // } // delete model_Available; // delete model_Relay; // model_Relay = NULL; // model_Available = NULL; delete ui; } void CConfiguration::Init() { 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->treeView_Available->setContextMenuPolicy(Qt::CustomContextMenu); ui->treeView_Available->setStyle(QStyleFactory::create("windows")); model_Available = new QStandardItemModel(ui->treeView_Available); //创建模型指定父类 ui->treeView_Available->setModel(model_Available); ui->treeView_Available->setHeaderHidden(true); ui->treeView_Relay->setContextMenuPolicy(Qt::CustomContextMenu); ui->treeView_Relay->setStyle(QStyleFactory::create("windows")); model_Relay = new QStandardItemModel(ui->treeView_Relay); //创建模型指定父类 ui->treeView_Relay->setModel(model_Relay); ui->treeView_Relay->setHeaderHidden(true); QStandardItem* item1 = new QStandardItem("Operator"); QStandardItem* item2 = new QStandardItem("Operand"); model_Available->appendRow(item1); model_Available->appendRow(item2); QStandardItem *itemAnd = new QStandardItem(QString("logicAND(1)")); itemAnd->setData(1,Qt::UserRole+1); QStandardItem *itemOr = new QStandardItem(QString("logicOR")); item1->appendRow(itemAnd); item1->appendRow(itemOr); #ifdef Q_OS_WIN32 QString name = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; #endif #ifdef Q_OS_LINUX QString name = QCoreApplication::applicationDirPath() + "/config/TriggerSettings.json"; #endif QFile loadFile(name); if(!loadFile.open(QIODevice::ReadOnly)) { qDebug() << "could't open projects json"; return; } QString value = loadFile.readAll(); loadFile.close(); QJsonParseError parseJsonErr; QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr); if (!(parseJsonErr.error == QJsonParseError::NoError)) { QMessageBox::about(NULL, "提示", "读取文件错误!"); return; } ui->comboBox_WC->clear(); ui->comboBox_WC->addItems(strWorkConditionList); QString strWC = ui->comboBox_WC->currentText(); qDebug() << strWC; arrayTriggerConfig = document.array(); for (int i = 0; i < arrayTriggerConfig.size(); i++) { if(strWC == arrayTriggerConfig.at(i)["workConditionName"].toString()){ QString strFirstDelaySeconds = arrayTriggerConfig.at(i)["FirstDelaySeconds"].toString(); QString strSecondDelaySeconds = arrayTriggerConfig.at(i)["SecondDelaySeconds"].toString(); QString strThirdDelaySeconds = arrayTriggerConfig.at(i)["ThirdDelaySeconds"].toString(); ui->lineEdit_2->setText(strSecondDelaySeconds); QJsonArray TriggerSettings = arrayTriggerConfig.at(i)["triggerSettings"].toArray(); for (int j = 0; j < TriggerSettings.size(); j++){ QString channelName = TriggerSettings.at(j)["channelName"].toString(); QStandardItem *itemChannel = new QStandardItem(QString(channelName)); QJsonArray arrayConfig = TriggerSettings.at(j)["triggerConfig"].toArray(); if(arrayConfig.size() > 0){ item2->appendRow(itemChannel); for (int k = 0; k < arrayConfig.size(); k++){ QStringList strList = arrayConfig.at(k)["triggerEventName"].toString().split('-'); QString strStaticData; QStandardItem *item = NULL; int xAlertOverEnabled = arrayConfig.at(k)["xAlertOverEnabled"].toInt(); int xAlertUnderEnabled = arrayConfig.at(k)["xAlertUnderEnabled"].toInt(); int xDangerOverEnabled = arrayConfig.at(k)["xDangerOverEnabled"].toInt(); int xDangerUnderEnabled = arrayConfig.at(k)["xDangerUnderEnabled"].toInt(); if(strList[0] == "MinValues") strStaticData = "最小值"; else if(strList[0] == "MaxValues") strStaticData = "最大值"; else if( strList[0] == "DCValues") strStaticData = "平均值"; else if(strList[0] == "RMSValues") strStaticData = "有效值"; else if(strList[0] == "DiagnosisPk2Pk") strStaticData = "诊断峰峰值"; else if(strList[0] == "IntegratRMS")//积分 strStaticData = "积分有效值"; else if(strList[0] == "IntegratPk2Pk") strStaticData = "积分峰峰值"; else if(strList[0] == "SpeedProfileSpeed") strStaticData = "转速"; else if(strList[0] == "IntegratPk2Pk/2")//积分 strStaticData = "积分峰值"; else if(strList[0] == "DiagnosisPeak") strStaticData = "峰值"; else if(strList[0] == "MonitorPk2Pk") strStaticData = "监测保护峰峰值"; else if(strList[0] == "InvertDanger") strStaticData = "反时限危险值"; else if(strList[0] == "InvertAlarm") strStaticData = "反时限警报值"; if(xAlertOverEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于警报值")); //item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"警报")); itemChannel->appendRow(item); } if(xAlertUnderEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-"+ "低于警报值")); //item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"警报")); itemChannel->appendRow(item); } if(xDangerOverEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于危险值")); //item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"危险")); itemChannel->appendRow(item); } if(xDangerUnderEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "低于危险值")); //item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"危险")); itemChannel->appendRow(item); } itemChannel->setData(strStaticData); } } } break; } } LoadConfiguration(); } void CConfiguration::LoadConfiguration() { #ifdef Q_OS_WIN32 QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; #endif #ifdef Q_OS_LINUX QString name = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations.json"; #endif QFile loadFile(name); if(!loadFile.open(QIODevice::ReadOnly)) { qDebug() << "could't open projects json"; return; } QString value = loadFile.readAll(); loadFile.close(); QJsonParseError parseJsonErr; QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr); if (!(parseJsonErr.error == QJsonParseError::NoError)) { QMessageBox::about(NULL, "提示", "读取文件错误!"); return; } QString strWC = ui->comboBox_WC->currentText(); QJsonObject TriggerConfigObj = document.object(); QJsonArray arrayConfig = TriggerConfigObj["WorkConditionConfiguraitons"].toArray(); for (int i = 0; i < arrayConfig.size(); i++) { m_vecWorkConditionObj.append(arrayConfig[i].toObject()); } } void CConfiguration::slotDeleteItem() { int BoardNo,ChannelNoInBoard; QString ChannelId,ChannelName,SN; QString strTableName = " t_UnitConfiguration "; QJsonObject jsonObj; QJsonObject logicObj,ConfiguraitonsObj,ConfiguraitonsWCObj; QJsonArray logicExpressArray,ConfiguraitonsArray; QModelIndex curIndex = ui->treeView_Relay->currentIndex(); if(curIndex.isValid()) { QStandardItem* item = model_Relay->itemFromIndex(curIndex); QString nodeText = item->text(); qDebug() << nodeText <comboBox_WC->currentText(); for (int i = 0; i < m_WorkCondition.size(); i++) { if(m_WorkCondition[i].WorkConditionName == ui->comboBox_WC->currentText()){ SN = m_WorkCondition[i].SN; } } for (int i = 0; i < g_ChannelBaseInfo.size(); i++) { if(g_ChannelBaseInfo[i].bordNo == 10 && g_ChannelBaseInfo[i].channelNoInBoard == m_curentRLY){ BoardNo = g_ChannelBaseInfo[i].bordNo; ChannelId = g_ChannelBaseInfo[i].channelID; ChannelName = g_ChannelBaseInfo[i].channelName; ChannelNoInBoard = g_ChannelBaseInfo[i].channelNoInBoard; } } if(nodeText.contains("logicOR") || nodeText.contains("logicAND")){ QString strSql = QString(" values('%1','%2',%3,%4,'',4)").arg(SN).arg(ChannelId).arg(BoardNo).arg(ChannelNoInBoard); g_SqliteDB->InsertData(strTableName,strSql); }else{ QStandardItem* parantitem = item->parent(); if(parantitem == NULL){ model_Relay->removeRow(curIndex.row(),curIndex.parent()); return; } QString paranNodeText = parantitem->text(); if(paranNodeText.contains("logicAND")){ if(nodeText.contains("警报")){ jsonObj["alarm"] = 1; jsonObj["danger"] = 0; }else if (nodeText.contains("危险")) { jsonObj["danger"] = 1; jsonObj["alarm"] = 0; } jsonObj["triggerFeatureName"] = nodeText; jsonObj["nodeType"] = 1; jsonObj["displayTitle"] = nodeText; for (int k = 0;k < g_ChannelBaseInfo.size(); k++) { if(g_ChannelBaseInfo[k].channelName == nodeText.split("-")[0]){ jsonObj["channelId"] = g_ChannelBaseInfo[k].channelID; break; } } jsonObj["channelOperate"] = 3; QJsonDocument doc(jsonObj); QString strJson(doc.toJson(QJsonDocument::Compact)); QString strSql = QString(" values('%1','%2','%3','%4','%5',3)").arg(SN).arg(ChannelId).arg(BoardNo).arg(ChannelNoInBoard).arg(strJson); g_SqliteDB->InsertData(strTableName,strSql); } } model_Relay->removeRow(curIndex.row(),curIndex.parent()); } } void CConfiguration::slotModifyItem() { QModelIndex curIndex = ui->treeView_Relay->currentIndex(); if(curIndex.isValid()) { QStandardItem* item = model_Relay->itemFromIndex(curIndex); if(item->rowCount() < 1){ QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("选择错误!")); return; } bool ok; // 获取整数 QString strTips =QString("请输入0到%1之间的数值").arg(item->rowCount()); int value1 = QInputDialog::getInt(this, tr("输入整数对话框"), strTips, item->rowCount(), 1, 10, 1, &ok); if(!ok) return; if(value1 > item->rowCount() || value1 < 1){ QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请输入正确的数字!")); return ; } QString text = item->text().left(item->text().length()-3); item->setData(value1,Qt::UserRole+1); QString str = QString("(%1)").arg(value1); item->setText(text + str); } } void CConfiguration::on_treeView_Relay_customContextMenuRequested(const QPoint &pos) { qDebug() << "on_treeView_Relay_customContextMenuRequested" <treeView_Relay->indexAt(pos); //当前点击的元素的index QModelIndex index = curIndex.sibling(curIndex.row(),0); //该行的第1列元素的index QMenu menu(this); if (index.isValid()) { //添加一行菜单,进行展开 menu.addAction(QStringLiteral("删除"), this, SLOT(slotDeleteItem())); menu.addAction(QStringLiteral("选择满足要求的任意条件数量"), this, SLOT(slotModifyItem())); menu.addSeparator(); //添加一个分隔线 //menu.addAction(QStringLiteral("增加"), this, SLOT(slotTreeMenuCollapse(bool))); } menu.exec(QCursor::pos()); //显示菜单 } QJsonArray CConfiguration::GetItem(QStandardItem *item,int MinimumNumber) { QJsonArray arrayAll,arrayAll2; QJsonObject jsonObj,inputObj,inputObj2,MinimumNumberObj; QString strLogic; if(item->hasChildren()) { for(int i = 0;i < item->rowCount() ;i++) { QJsonArray array; QStandardItem * childitem = item->child(i); strLogic = childitem->text(); if(childitem->text().contains("logicOR") || childitem->text().contains("logicAND")){ QJsonArray inputArray,inputArray2; if(childitem->hasChildren()){ for(int i = 0;i < childitem->rowCount() ;i++){ QStandardItem * childitem2 = childitem->child(i); if(childitem2->text().contains("警报")){ jsonObj["alarm"] = 1; jsonObj["danger"] = 0; }else if (childitem2->text().contains("危险")) { jsonObj["danger"] = 1; jsonObj["alarm"] = 0; } jsonObj["triggerFeatureName"] = childitem2->text(); jsonObj["nodeType"] = 1; jsonObj["displayTitle"] = childitem2->text(); for (int k = 0;k < g_ChannelBaseInfo.size(); k++) { if(g_ChannelBaseInfo[k].channelName == childitem2->text().split("-")[0]){ jsonObj["channelId"] = g_ChannelBaseInfo[k].channelID; break; } } inputArray.append(jsonObj); inputArray2.append(jsonObj); } }else{ QMessageBox::question(this, QStringLiteral("提示"), QStringLiteral("请选择正确的逻辑!")); return arrayAll; } QString strTableName = " t_UnitConfiguration "; QVector vecUnitConfiguration = g_SqliteDB->GetUnitConfigurationInfo(strTableName); for (int i = 0; i < vecUnitConfiguration.size(); i++) { if(vecUnitConfiguration[i].Operate == 3){ QJsonDocument document = QJsonDocument::fromJson(vecUnitConfiguration[i].Input.toUtf8()); QJsonObject jsonObj = document.object(); inputArray2.append(jsonObj); } } inputObj2["Inputs"] = inputArray2; inputObj["Inputs"] = inputArray; MinimumNumber = childitem->data(Qt::UserRole + 1).toInt(); qDebug()<< "MinimumNumber" <hasChildren()) // { // for(int i = 0;i < item->rowCount() ;i++) // { // QJsonArray array; // QStandardItem * childitem = item->child(i); // if(childitem->text().contains("logicOR") || childitem->text().contains("logicAND")){ // QJsonObject jsonObjLogic; // MinimumNumber = childitem->data(Qt::UserRole + 1).toInt(); // jsonObjLogic[childitem->text().left(7)] = GetItem(childitem, MinimumNumber); // m_array.append(jsonObjLogic); // //qDebug() << "m_array"<data(1) << endl; // }else{ // if(childitem->text().contains("警报")){ // jsonObj["status"] = "alarm"; // }else if (childitem->text().contains("危险")) { // jsonObj["status"] = "danger"; // } // jsonObj["triggerFeatureName"] = childitem->text(); // jsonObj["nodeType"] = 1; // jsonObj["displayTitle"] = childitem->text(); // jsonObj["channelId"] = childitem->text().split("-")[3]; // } // if(!childitem->text().contains("logicOR") && !childitem->text().contains("logicAND")){ // inputArray.append(jsonObj); // } // if(!item->parent() && i + 1 == item->rowCount()) // { // qDebug() << "No parent" << item->text()<< endl; // return m_array; // }else if(item->parent() && i + 1 == item->rowCount()){ // MinimumNumberObj["MinimumNumber"] = MinimumNumber; // inputObj["Combination"] = MinimumNumberObj; // inputObj["Inputs"] = inputArray; // arrayAll.append(inputObj); // return arrayAll; // } // } // } } QJsonObject CConfiguration::SelectChannel(int channelNo) { QJsonObject ConfiguraitonsObj; for (int i = 0; i < g_ChannelBaseInfo.size(); i++) { if(g_ChannelBaseInfo[i].bordNo == 10 && g_ChannelBaseInfo[i].channelNoInBoard == channelNo){ ConfiguraitonsObj["BoardNo"] = g_ChannelBaseInfo[i].bordNo; ConfiguraitonsObj["ChannelId"] = g_ChannelBaseInfo[i].channelID; ConfiguraitonsObj["ChannelName"] = g_ChannelBaseInfo[i].channelName; ConfiguraitonsObj["ChannelNoInBoard"] = g_ChannelBaseInfo[i].channelNoInBoard; ConfiguraitonsObj["DelaySeconds"] = ui->lineEdit_delay->text(); ConfiguraitonsObj["ChannelOperate"] = -1; } } return ConfiguraitonsObj; } void CConfiguration::slotNetMgr(QString sAddr, const QVariant &msg) { QJsonObject objec = msg.value(); if(objec.contains("cmd")) { QJsonValue arrays_value = objec.take("cmd"); //qDebug()<<"cmd ="<DetectNet(); } void CConfiguration::on_pushButton_confirm_clicked() { QJsonObject logicObj,logicObj2,ConfiguraitonsObj,ConfiguraitonsObj2,ConfiguraitonsWCObj,ConfiguraitonsWCObj2; QJsonArray logicExpressArray,logicExpressArray2,ConfiguraitonsArray,ConfiguraitonsArray2; int flag = -1; if(ui->radioButton_1->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(3); }else if(ui->radioButton_2->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(4); }else if(ui->radioButton_3->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(5); }else if(ui->radioButton_4->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(6); }else if(ui->radioButton_5->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(7); }else if(ui->radioButton_6->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(8); }else if(ui->radioButton_7->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(9); }else if(ui->radioButton_8->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(10); }else if(ui->radioButton_9->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(11); }else if(ui->radioButton_10->isChecked()){ flag = 1; ConfiguraitonsObj = SelectChannel(12); } if(flag == -1){ QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请先选择继电器!")); return; } m_isConfirm = 1; if(model_Relay->rowCount() > 1){ QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请选择正确的组态逻辑")); return; } for(int i = 0;i < model_Relay->rowCount() ;i++) { QStandardItem *item = model_Relay->item(i); qDebug() <<"item = " << item->text(); QJsonArray arrayAll = GetItem(model_Relay->item(i)); if(arrayAll.size() < 1) return; logicObj[item->text().left(7)] = arrayAll; logicObj2[item->text().left(7)] = m_deleteInputArray; logicExpressArray.append(logicObj); logicExpressArray2.append(logicObj2); } ConfiguraitonsObj2 = ConfiguraitonsObj; ConfiguraitonsObj["logicExpress"] = logicExpressArray; ConfiguraitonsObj2["logicExpress"] = logicExpressArray2; QString strTableName = " t_UnitConfiguration "; QVector vecUnitConfiguration = g_SqliteDB->GetUnitConfigurationInfo(strTableName); for (int i = 0; i < vecUnitConfiguration.size(); i++) { if(vecUnitConfiguration[i].Operate == 3){ ConfiguraitonsObj2["ChannelOperate"] = 3; }else if(vecUnitConfiguration[i].Operate == 4){ ConfiguraitonsObj2["ChannelOperate"] = 4; } } qDebug() << "m_deleteInputObj" << ConfiguraitonsArray2 << endl; ConfiguraitonsArray.append(ConfiguraitonsObj); ConfiguraitonsArray2.append(ConfiguraitonsObj2); QJsonArray().swap(m_array); QJsonArray().swap(m_arrayAll); if(ui->lineEdit_2->text() == ""){ ConfiguraitonsWCObj["SecondDelaySeconds"] = "0"; ConfiguraitonsWCObj2["SecondDelaySeconds"] = "0"; } else{ ConfiguraitonsWCObj["SecondDelaySeconds"] = ui->lineEdit_2->text(); ConfiguraitonsWCObj2["SecondDelaySeconds"] = ui->lineEdit_2->text(); } QString strCurrentSN = ""; for (int i = 0; i < m_WorkCondition.size(); i++) { if(m_WorkCondition[i].WorkConditionName == ui->comboBox_WC->currentText()){ ConfiguraitonsWCObj["SN"] = m_WorkCondition[i].SN; strCurrentSN = m_WorkCondition[i].SN; ConfiguraitonsWCObj["WorkConditionName"] = m_WorkCondition[i].WorkConditionName; ConfiguraitonsWCObj2["SN"] = m_WorkCondition[i].SN; ConfiguraitonsWCObj2["WorkConditionName"] = m_WorkCondition[i].WorkConditionName; } } ConfiguraitonsWCObj["Configuraitons"] = ConfiguraitonsArray; ConfiguraitonsWCObj2["Configuraitons"] = ConfiguraitonsArray2; //防止点击重复应用 if(m_vecWorkConditionObj.size() > 0){ QVector vecWorkConditionObj = m_vecWorkConditionObj; int flag = -1,flag2 = -1; for (int i = 0; i < vecWorkConditionObj.size(); i++){ if(vecWorkConditionObj.at(i)["SN"].toString() == strCurrentSN){ flag = 1; QJsonArray configuraitonsArray = vecWorkConditionObj.at(i)["Configuraitons"].toArray(); QJsonArray tempArray = configuraitonsArray; for (int j = 0; j < configuraitonsArray.size(); j++) { if(ConfiguraitonsObj["ChannelId"].toString() == configuraitonsArray.at(j)["ChannelId"].toString()){ flag2 = 1; for (int ii = 0; ii < tempArray.size(); ii++) { if(tempArray.at(ii)["ChannelId"].toString() == ConfiguraitonsObj["ChannelId"].toString()){ tempArray.removeAt(ii); } } tempArray.append(ConfiguraitonsObj); } if(j + 1 == configuraitonsArray.size() && flag2 == -1){ tempArray.append(ConfiguraitonsObj); } } ConfiguraitonsWCObj["Configuraitons"] = tempArray; m_vecWorkConditionObj.removeAt(i); m_vecWorkConditionObj.append(ConfiguraitonsWCObj); } if( i + 1 == vecWorkConditionObj.size() && flag == -1){ m_vecWorkConditionObj.append(ConfiguraitonsWCObj); } } }else{ m_vecWorkConditionObj.append(ConfiguraitonsWCObj); } if(m_vecWorkConditionObj2.size() > 0){ QVector vecWorkConditionObj = m_vecWorkConditionObj2; int flag = -1,flag2 = -1; for (int i = 0; i < vecWorkConditionObj.size(); i++){ if(vecWorkConditionObj.at(i)["SN"].toString() == strCurrentSN){ flag = 1; QJsonArray configuraitonsArray = vecWorkConditionObj.at(i)["Configuraitons"].toArray(); QJsonArray tempArray = configuraitonsArray; for (int j = 0; j < configuraitonsArray.size(); j++) { if(ConfiguraitonsObj2["ChannelId"].toString() == configuraitonsArray.at(j)["ChannelId"].toString()){ flag2 = 1; for (int ii = 0; ii < tempArray.size(); ii++) { if(tempArray.at(ii)["ChannelId"].toString() == ConfiguraitonsObj2["ChannelId"].toString()){ tempArray.removeAt(ii); } } tempArray.append(ConfiguraitonsObj2); } if(j + 1 == configuraitonsArray.size() && flag2 == -1){ tempArray.append(ConfiguraitonsObj2); } } ConfiguraitonsWCObj2["Configuraitons"] = tempArray; m_vecWorkConditionObj2.removeAt(i); m_vecWorkConditionObj2.append(ConfiguraitonsWCObj2); } if( i + 1 == vecWorkConditionObj.size() && flag == -1){ m_vecWorkConditionObj2.append(ConfiguraitonsWCObj2); } } }else{ m_vecWorkConditionObj2.append(ConfiguraitonsWCObj2); } QJsonArray().swap(m_deleteInputArray); QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("应用成功!")); } void CConfiguration::on_comboBox_WC_currentTextChanged2(const QString &arg1) { qDebug() << "on_comboBox_WC_currentTextChanged" << endl; for(int i = 0;i < model_Available->rowCount() ;i++){ QStandardItem *item = model_Available->item(i); if(item->text() == "Operand"){ if(item->hasChildren()){ for(int ii = 0;ii < item->rowCount() ;ii++){ item->removeRow(ii); } } model_Available->removeRow(i); } } for(int i = 0;i < model_Available->rowCount() ;i++){ model_Relay->removeRow(i); } QStandardItem* item2 = new QStandardItem("Operand"); model_Available->appendRow(item2); for (int i = 0; i < arrayTriggerConfig.size(); i++) { if(arg1 == arrayTriggerConfig.at(i)["workConditionName"].toString()){ QJsonArray TriggerSettings = arrayTriggerConfig.at(i)["triggerSettings"].toArray(); for (int j = 0; j < TriggerSettings.size(); j++){ QString channelName = TriggerSettings.at(j)["channelName"].toString(); QStandardItem *itemChannel = new QStandardItem(QString(channelName)); itemChannel->setDragEnabled(false); itemChannel->setDropEnabled(false); QJsonArray arrayConfig = TriggerSettings.at(j)["triggerConfig"].toArray(); if(arrayConfig.size() > 0){ item2->appendRow(itemChannel); for (int k = 0; k < arrayConfig.size(); k++){ QStringList strList = arrayConfig.at(k)["triggerEventName"].toString().split('-'); QString strStaticData; QStandardItem *item = NULL; int xAlertOverEnabled = arrayConfig.at(k)["xAlertOverEnabled"].toInt(); int xAlertUnderEnabled = arrayConfig.at(k)["xAlertUnderEnabled"].toInt(); int xDangerOverEnabled = arrayConfig.at(k)["xDangerOverEnabled"].toInt(); int xDangerUnderEnabled = arrayConfig.at(k)["xDangerUnderEnabled"].toInt(); if(strList[0] == "MinValues") strStaticData = "最小值"; else if(strList[0] == "MaxValues") strStaticData = "最大值"; else if( strList[0] == "DCValues") strStaticData = "平均值"; else if(strList[0] == "RMSValues") strStaticData = "有效值"; else if(strList[0] == "DiagnosisPk2Pk") strStaticData = "诊断峰峰值"; else if(strList[0] == "IntegratRMS")//积分 strStaticData = "积分有效值"; else if(strList[0] == "IntegratPk2Pk") strStaticData = "积分峰峰值"; else if(strList[0] == "SpeedProfileSpeed") strStaticData = "转速"; else if(strList[0] == "IntegratPk2Pk/2")//积分 strStaticData = "积分峰值"; else if(strList[0] == "DiagnosisPeak") strStaticData = "峰值"; else if(strList[0] == "MonitorPk2Pk") strStaticData = "监测保护峰峰值"; else if(strList[0] == "InvertDanger") strStaticData = "反时限危险值"; else if(strList[0] == "InvertAlarm") strStaticData = "反时限警报值"; if(xAlertOverEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于警报值")); //item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"警报")); itemChannel->appendRow(item); } if(xAlertUnderEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-"+ "低于警报值")); //item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"警报")); itemChannel->appendRow(item); } if(xDangerOverEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于危险值")); //item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"危险")); itemChannel->appendRow(item); } if(xDangerUnderEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "低于危险值")); //item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"危险")); itemChannel->appendRow(item); } itemChannel->setData(strStaticData); } } } break; } } } void CConfiguration::PushData() { if(m_isConfirm == -1){ QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请先点击\"应用\"!")); return ; } m_isConfirm = -1; QJsonArray WorkConditionConfiguraitonsArray2; if(m_vecWorkConditionObj.size() > 0){ for (int i = 0; i < m_vecWorkConditionObj.size(); i++) { m_WorkConditionConfiguraitonsArray.append(m_vecWorkConditionObj[i]); } for (int i = 0; i < m_vecWorkConditionObj2.size(); i++) { WorkConditionConfiguraitonsArray2.append(m_vecWorkConditionObj2[i]); } }else{ m_WorkConditionConfiguraitonsArray.append(m_ConfiguraitonsWCObj); } QJsonObject WorkConditionConfiguraitonsObj,WorkConditionConfiguraitonsObj2; WorkConditionConfiguraitonsObj["WorkConditionConfiguraitons"] = m_WorkConditionConfiguraitonsArray; WorkConditionConfiguraitonsObj2["WorkConditionConfiguraitons"] = WorkConditionConfiguraitonsArray2; QJsonDocument jsonDoc; jsonDoc.setObject(WorkConditionConfiguraitonsObj); #ifdef Q_OS_WIN32 QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; #endif #ifdef Q_OS_LINUX QString fileName = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations.json"; #endif QJsonDocument jsonDoc2; jsonDoc2.setObject(WorkConditionConfiguraitonsObj2); #ifdef Q_OS_WIN32 QString fileName2 = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations2.json"; #endif #ifdef Q_OS_LINUX QString fileName2 = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations2.json"; #endif QFile file(fileName); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); file.close(); QFile file2(fileName2); file2.open(QIODevice::WriteOnly); file2.write(jsonDoc2.toJson()); file2.close(); // QString strTableName = " t_UnitConfiguration "; // QVector vecUnitConfiguration = g_SqliteDB->GetUnitConfigurationInfo(strTableName); // for (int i = 0; i < m_WorkConditionConfiguraitonsArray.size(); i++) { // for (int j = 0; j < vecUnitConfiguration.size(); j++) { // QJsonObject WorkConditionConfiguraitonsObj = m_WorkConditionConfiguraitonsArray.at(i).toObject(); // if(WorkConditionConfiguraitonsObj["SN"].toString() == vecUnitConfiguration[j].WorkConditionID){ // QJsonArray ConfiguraitonsArray = WorkConditionConfiguraitonsObj["Configuraitons"].toArray(); // for (int k = 0; k < ConfiguraitonsArray.size(); k++) { // QJsonObject ConfiguraitonsObj = ConfiguraitonsArray[k].toObject(); // if(ConfiguraitonsObj["ChannelId"].toString() == vecUnitConfiguration[j].ChannelID){ // if(vecUnitConfiguration[j].Operate == 3){ // QJsonArray UnitConfigurationArray = m_WorkConditionConfiguraitonsArray.at(i).toArray(); // ConfiguraitonsObj["ChannelOperate"] = 3; // ConfiguraitonsArray[k] = ConfiguraitonsObj; // WorkConditionConfiguraitonsObj["Configuraitons"] = ConfiguraitonsArray; // m_WorkConditionConfiguraitonsArray.removeAt(i); // m_WorkConditionConfiguraitonsArray.insert(i, WorkConditionConfiguraitonsObj); // }else if(vecUnitConfiguration[j].Operate == 4){ // QJsonArray UnitConfigurationArray = m_WorkConditionConfiguraitonsArray.at(i).toArray(); // ConfiguraitonsObj["ChannelOperate"] = 4; // ConfiguraitonsArray[k] = ConfiguraitonsObj; // WorkConditionConfiguraitonsObj["Configuraitons"] = ConfiguraitonsArray; // m_WorkConditionConfiguraitonsArray.removeAt(i); // m_WorkConditionConfiguraitonsArray.insert(i, WorkConditionConfiguraitonsObj); // } // } // } // } // } // } qDebug() << WorkConditionConfiguraitonsArray2 << endl; qDebug() << m_WorkConditionConfiguraitonsArray << endl; QJsonArray().swap(m_WorkConditionConfiguraitonsArray); QJsonArray().swap(m_array); QJsonArray().swap(m_ConfiguraitonsArray); QJsonArray().swap(m_deleteInputArray); QVector().swap(m_vecWorkConditionObj2); QString tableName = " t_UnitConfiguration "; g_SqliteDB->DeleteDataW(tableName,""); QString str = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitConfigurations.json"); g_FtpClient->SetServerInfo(str); g_FtpClient->SetUserInfo("root","@#cidw!@123456"); g_FtpClient->UpLoadFile(fileName,"UnitConfigurations.json"); QString str2 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitConfigurations2.json"); g_FtpClient->SetServerInfo(str2); g_FtpClient->SetUserInfo("root","@#cidw!@123456"); g_FtpClient->UpLoadFile(fileName2,"UnitConfigurations2.json"); } void CConfiguration::on_comboBox_WC_currentIndexChanged(const QString &arg1) { for (int i = 0; i < m_vecWorkConditionObj.size(); i++) { QJsonObject tempObj = m_vecWorkConditionObj[i]; if(ui->comboBox_WC->currentText() == tempObj["WorkConditionName"].toString()){ QJsonArray tempArray = tempObj["Configuraitons"].toArray(); for (int j = 0;j < tempArray.size() ;j++ ) { } } } } void CConfiguration::ViewRelay(int ChannelNoInBoard) { model_Relay->clear(); ui->lineEdit_2->setText(""); QString strWorkConditonName = ui->comboBox_WC->currentText(); for (int i = 0; i < m_vecWorkConditionObj.size(); i++) { QJsonObject tempObj = m_vecWorkConditionObj[i]; if(strWorkConditonName == tempObj["WorkConditionName"].toString()){ QJsonArray tempArray = tempObj["Configuraitons"].toArray(); QString strSecondDelaySeconds = tempObj["SecondDelaySeconds"].toString(); ui->lineEdit_2->setText(strSecondDelaySeconds); for (int j = 0;j < tempArray.size() ;j++ ) { if(tempArray.at(j)["ChannelNoInBoard"] == ChannelNoInBoard){ ui->lineEdit_delay->setText(tempArray.at(j)["DelaySeconds"].toString()); QJsonArray tempArray2 = tempArray.at(j)["logicExpress"].toArray(); for (int k = 0; k < tempArray2.size(); k++) { QJsonObject tempObj2 = tempArray2[k].toObject(); if (tempObj2.contains(QStringLiteral("logicAND"))){ QJsonValue arrayValue = tempObj2.value(QStringLiteral("logicAND")); QStandardItem *itemAnd = new QStandardItem(QString("logicAND")); model_Relay->appendRow(itemAnd); QJsonArray array = arrayValue.toArray(); for (int kk = 0; kk < array.size(); kk++) { QJsonObject tempObj3 = array[kk].toObject(); if (tempObj3.contains(QStringLiteral("logicAND"))){ QJsonValue objValue = tempObj3.value(QStringLiteral("logicAND")); QJsonObject Combination = objValue["Combination"].toObject(); int MinimumNumber = Combination["MinimumNumber"].toInt(); QStandardItem *itemAnd2 = new QStandardItem(QString("logicAND(%1)").arg(MinimumNumber)); itemAnd2->setData(MinimumNumber,Qt::UserRole+1); itemAnd->appendRow(itemAnd2); QJsonArray inputsArray = objValue["Inputs"].toArray(); for (int ii = 0; ii < inputsArray.size(); ii++) { QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); itemAnd2->appendRow(item); } } if (tempObj3.contains(QStringLiteral("logicOR"))){ QJsonValue objValue = tempObj3.value(QStringLiteral("logicOR")); QJsonObject Combination = objValue["Combination"].toObject(); int MinimumNumber = Combination["MinimumNumber"].toInt(); QStandardItem *itemOr2 = new QStandardItem(QString("logicOR(%1)").arg(MinimumNumber)); itemOr2->setData(MinimumNumber,Qt::UserRole+1); itemAnd->appendRow(itemOr2); QJsonArray arrValue2 = objValue.toArray(); for(int jj = 0; jj < arrValue2.size();jj++){ QJsonArray inputsArray = arrValue2.at(jj)["Inputs"].toArray(); for (int ii = 0; ii < inputsArray.size(); ii++) { QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); itemOr2->appendRow(item); } } } } } if (tempObj2.contains(QStringLiteral("logicOR"))){ QJsonValue arrayValue = tempObj2.value(QStringLiteral("logicOR")); QStandardItem *itemOr = new QStandardItem(QString("logicOR")); model_Relay->appendRow(itemOr); QJsonArray array = arrayValue.toArray(); for (int kk = 0; kk < array.size(); kk++) { QJsonObject tempObj3 = array[k].toObject(); if (tempObj3.contains(QStringLiteral("logicAND"))){ QJsonValue objValue = tempObj3.value(QStringLiteral("logicAND")); QJsonArray array2 = objValue.toArray(); for (int jj = 0; jj < array2.size(); jj++) { QJsonObject tempObj4 = array2[jj].toObject(); QJsonObject Combination = tempObj4["Combination"].toObject(); int MinimumNumber = Combination["MinimumNumber"].toInt(); QStandardItem *itemAnd2 = new QStandardItem(QString("logicAND(%1)").arg(MinimumNumber)); QJsonArray inputsArray = tempObj4["Inputs"].toArray(); for (int ii = 0; ii < inputsArray.size(); ii++) { QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); itemAnd2->appendRow(item); } itemAnd2->setData(MinimumNumber,Qt::UserRole+1); itemOr->appendRow(itemAnd2); } } if (tempObj3.contains(QStringLiteral("logicOR"))){ QJsonValue objValue = tempObj3.value(QStringLiteral("logicOR")); QJsonObject Combination = objValue["Combination"].toObject(); int MinimumNumber = Combination["MinimumNumber"].toInt(); QStandardItem *itemOr2 = new QStandardItem(QString("logicOR(%1)").arg(MinimumNumber)); itemOr2->setData(MinimumNumber,Qt::UserRole+1); itemOr->appendRow(itemOr2); QJsonArray arrValue2 = objValue.toArray(); for(int jj = 0; jj < arrValue2.size();jj++){ QJsonArray inputsArray = arrValue2.at(jj)["Inputs"].toArray(); for (int ii = 0; ii < inputsArray.size(); ii++) { QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); itemOr2->appendRow(item); } } } } } } } } } } // for(int i = 0;i < model_Available->rowCount() ;i++){ // model_Relay->removeRow(i); // } // QString strWorkConditonName = ui->comboBox_WC->currentText(); // for (int i = 0; i < m_vecWorkConditionObj.size(); i++) { // QJsonObject tempObj = m_vecWorkConditionObj[i]; // if(strWorkConditonName == tempObj["WorkConditionName"].toString()){ // QJsonArray tempArray = tempObj["Configuraitons"].toArray(); // for (int j = 0;j < tempArray.size() ;j++ ) { // if(tempArray.at(j)["ChannelNoInBoard"] == ChannelNoInBoard){ // QJsonArray tempArray2 = tempArray.at(j)["logicExpress"].toArray(); // for (int k = 0; k < tempArray2.size(); k++) { // QJsonObject tempObj2 = tempArray2[k].toObject(); // if (tempObj2.contains(QStringLiteral("logicAND"))){ // QJsonValue arrayValue = tempObj2.value(QStringLiteral("logicAND")); // QStandardItem *itemAnd = new QStandardItem(QString("logicAND")); // model_Relay->appendRow(itemAnd); // QJsonArray array = arrayValue.toArray(); // for (int kk = 0; kk < array.size(); kk++) { // QJsonObject tempObj3 = array[kk].toObject(); // if (tempObj3.contains(QStringLiteral("logicAND"))){ // QJsonValue objValue = tempObj3.value(QStringLiteral("logicAND")); // QJsonObject Combination = objValue["Combination"].toObject(); // int MinimumNumber = Combination["MinimumNumber"].toInt(); // QStandardItem *itemAnd2 = new QStandardItem(QString("logicAND(%1)").arg(MinimumNumber)); // itemAnd2->setData(MinimumNumber,Qt::UserRole+1); // itemAnd->appendRow(itemAnd2); // QJsonArray inputsArray = objValue["Inputs"].toArray(); // for (int ii = 0; ii < inputsArray.size(); ii++) { // QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); // itemAnd2->appendRow(item); // } // } // if (tempObj3.contains(QStringLiteral("logicOR"))){ // QJsonValue objValue = tempObj3.value(QStringLiteral("logicOR")); // QJsonObject Combination = objValue["Combination"].toObject(); // int MinimumNumber = Combination["MinimumNumber"].toInt(); // QStandardItem *itemOr2 = new QStandardItem(QString("logicOR(%1)").arg(MinimumNumber)); // itemOr2->setData(MinimumNumber,Qt::UserRole+1); // itemAnd->appendRow(itemOr2); // QJsonArray arrValue2 = objValue.toArray(); // for(int jj = 0; jj < arrValue2.size();jj++){ // QJsonArray inputsArray = arrValue2.at(jj)["Inputs"].toArray(); // for (int ii = 0; ii < inputsArray.size(); ii++) { // QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); // itemOr2->appendRow(item); // } // } // } // } // } // if (tempObj2.contains(QStringLiteral("logicOR"))){ // QJsonValue arrayValue = tempObj2.value(QStringLiteral("logicOR")); // QStandardItem *itemOr = new QStandardItem(QString("logicOR")); // model_Relay->appendRow(itemOr); // QJsonArray array = arrayValue.toArray(); // for (int kk = 0; kk < array.size(); kk++) { // QJsonObject tempObj3 = array[k].toObject(); // if (tempObj3.contains(QStringLiteral("logicAND"))){ // QJsonValue objValue = tempObj3.value(QStringLiteral("logicAND")); // QJsonObject Combination = objValue["Combination"].toObject(); // int MinimumNumber = Combination["MinimumNumber"].toInt(); // QStandardItem *itemAnd2 = new QStandardItem(QString("logicAND(%1)").arg(MinimumNumber)); // itemAnd2->setData(MinimumNumber,Qt::UserRole+1); // itemOr->appendRow(itemAnd2); // QJsonArray inputsArray = objValue["Inputs"].toArray(); // for (int ii = 0; ii < inputsArray.size(); ii++) { // QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); // itemAnd2->appendRow(item); // } // } // if (tempObj3.contains(QStringLiteral("logicOR"))){ // QJsonValue objValue = tempObj3.value(QStringLiteral("logicOR")); // QJsonObject Combination = objValue["Combination"].toObject(); // int MinimumNumber = Combination["MinimumNumber"].toInt(); // QStandardItem *itemOr2 = new QStandardItem(QString("logicOR(%1)").arg(MinimumNumber)); // itemOr2->setData(MinimumNumber,Qt::UserRole+1); // itemOr->appendRow(itemOr2); // QJsonArray arrValue2 = objValue.toArray(); // for(int jj = 0; jj < arrValue2.size();jj++){ // QJsonArray inputsArray = arrValue2.at(jj)["Inputs"].toArray(); // for (int ii = 0; ii < inputsArray.size(); ii++) { // QStandardItem *item = new QStandardItem(QString(inputsArray.at(ii)["displayTitle"].toString())); // itemOr2->appendRow(item); // } // } // } // } // } // } // } // } // } // } } void CConfiguration::on_radioButton_1_clicked() { m_curentRLY = 3; ui->label_3->setText(ui->radioButton_1->text()+":"); ViewRelay(3); } void CConfiguration::on_radioButton_2_clicked() { m_curentRLY = 4; ui->label_3->setText(ui->radioButton_2->text()+":"); ViewRelay(4); } void CConfiguration::on_radioButton_3_clicked() { m_curentRLY = 5; ui->label_3->setText(ui->radioButton_3->text()+":"); ViewRelay(5); } void CConfiguration::on_radioButton_4_clicked() { m_curentRLY = 6; ui->label_3->setText(ui->radioButton_4->text()+":"); ViewRelay(6); } void CConfiguration::on_radioButton_5_clicked() { m_curentRLY = 7; ui->label_3->setText(ui->radioButton_5->text()+":"); ViewRelay(7); } void CConfiguration::on_radioButton_6_clicked() { m_curentRLY = 8; ui->label_3->setText(ui->radioButton_6->text()+":"); ViewRelay(8); } void CConfiguration::on_radioButton_8_clicked() { m_curentRLY = 10; ui->label_3->setText(ui->radioButton_8->text()+":"); ViewRelay(10); } void CConfiguration::on_radioButton_7_clicked() { m_curentRLY = 9; ui->label_3->setText(ui->radioButton_7->text()+":"); ViewRelay(9); } void CConfiguration::on_radioButton_9_clicked() { m_curentRLY = 11; ui->label_3->setText(ui->radioButton_9->text()+":"); ViewRelay(11); } void CConfiguration::on_radioButton_10_clicked() { m_curentRLY = 12; ui->label_3->setText(ui->radioButton_10->text()+":"); ViewRelay(12); } void CConfiguration::on_treeView_Available_pressed(const QModelIndex &index) { }