3500/Configuration.cpp
zhangsheng 540fa39190 Merge branch 'fuchunjiang'
# Conflicts:
#	Configuration.cpp
#	Configuration.h
#	mainwindow.cpp
2024-11-26 09:28:36 +08:00

1453 lines
66 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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

#include "Configuration.h"
#include "ui_Configuration.h"
#include <QStyleFactory>
#include <QMenu>
#include <QInputDialog>
#include <QScrollArea>
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&)));
ui->label_4->setVisible(0);
ui->lineEdit_2->setVisible(0);
ui->label_10->setVisible(0);
}
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 <<endl;
QString strWC = ui->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" <<endl;
QModelIndex curIndex = ui->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()); //显示菜单
}
// 递归遍历 QTreeView 的节点,构建 JSON 结构
QJsonObject CConfiguration::createJsonFromTreeNode(QStandardItem *item) {
QJsonObject nodeObject,inputNodeObj;
QJsonArray inputNodeArray;
// 根据节点的类型判断是 logicOR、logicAND 还是叶子节点
QString nodeType = item->text();
if (nodeType.contains("logicOR") || nodeType.contains("logicAND")){
QJsonArray childrenArray;
// 遍历子节点
for (int i = 0; i < item->rowCount(); ++i) {
QStandardItem *childItem = item->child(i);
childrenArray.append(createJsonFromTreeNode(childItem));
}
// 添加 Combination 节点
QJsonObject combination;
int MinimumNumber = item->data(Qt::UserRole + 1).toInt();
if(nodeType.contains("logicOR"))
combination["MinimumNumber"] = 1;
else if(nodeType.contains("logicAND"))
combination["MinimumNumber"] = MinimumNumber;
inputNodeObj["Combination"] = combination;
// 将子节点数组存储在当前逻辑运算符节点下
inputNodeObj["Inputs"] = childrenArray;
inputNodeArray.append(inputNodeObj);
if(nodeType.contains("logicOR"))
nodeObject[nodeType] = inputNodeArray;
else if(nodeType.contains("logicAND"))
nodeObject[nodeType.left(nodeType.length()-3)] = inputNodeArray;
} else {
if(item->text().contains("警报")){
nodeObject["alarm"] = 1;
nodeObject["danger"] = 0;
}else if (item->text().contains("危险")) {
nodeObject["danger"] = 1;
nodeObject["alarm"] = 0;
}
nodeObject["triggerFeatureName"] = item->text();
nodeObject["nodeType"] = 1;
nodeObject["displayTitle"] = item->text();
for (int k = 0;k < g_ChannelBaseInfo.size(); k++) {
if(g_ChannelBaseInfo[k].channelName == item->text().split("-")[0]){
nodeObject["channelId"] = g_ChannelBaseInfo[k].channelID;
break;
}
}
}
return nodeObject;
}
// 将生成的 JSON 保存到文件
void CConfiguration::saveJsonToFile(const QJsonObject &jsonObject, const QString &filePath) {
QJsonDocument jsonDoc(jsonObject);
QFile file(filePath);
if (file.open(QIODevice::WriteOnly)) {
file.write(jsonDoc.toJson(QJsonDocument::Indented));
file.close();
qDebug() << "JSON 文件已生成:" << filePath;
} else {
qDebug() << "无法打开文件以保存 JSON 数据";
}
}
// 从 QTreeView 中生成 JSON 数据
QJsonObject CConfiguration::generateJsonFromTreeView(QTreeView *treeView) {
QStandardItemModel *model = qobject_cast<QStandardItemModel *>(treeView->model());
if (!model) return QJsonObject();
QJsonArray rootArray;
// 遍历模型的每个根节点
for (int i = 0; i < model->rowCount(); ++i) {
QStandardItem *rootItem = model->item(i);
rootArray.append(createJsonFromTreeNode(rootItem));
}
QJsonObject root;
root["logicTree"] = rootArray; // 顶层使用 "logicTree" 作为键
return root;
}
QJsonArray CConfiguration::GetItem(QStandardItem *item,int MinimumNumber)
{
QJsonArray arrjsonObjLogic,arrjsonObjLogic2;
QString strLogic;
QJsonArray ret;
QJsonArray arrItem;
QJsonObject logicObj,logicInputs;
QJsonArray tmplogic ;
if(item->hasChildren())
{
for(int i = 0;i < item->rowCount() ;i++)
{
QJsonObject inputObj,logic_inputObj,inputObj2,jsonObj,MinimumNumberObj;
QJsonObject jsonObjLogic,jsonObjLogic2;
QJsonArray array,arrayAll,logic_arrayAll,arrayAll2;
QJsonArray inputArray,inputArray2;
QStandardItem * childitem = item->child(i);
strLogic = item->text();
if(childitem->text().contains("logicOR") || childitem->text().contains("logicAND")){
if(childitem->hasChildren()){
arrItem = GetItem(childitem, MinimumNumber);
qDebug() << "m_array0" << arrItem << endl;
}else{
QMessageBox::question(this, QStringLiteral("提示"), QStringLiteral("请选择正确的逻辑!"));
return arrayAll;
}
}else{
for(int i = 0;i < item->rowCount() ;i++){
QStandardItem * childitem2 = item->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);
}
QString strTableName = " t_UnitConfiguration ";
QVector<UnitConfiguration_t> 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" <<MinimumNumber<< endl;
MinimumNumberObj["MinimumNumber"] = MinimumNumber;
inputObj["Combination"] = MinimumNumberObj;
inputObj2["Combination"] = MinimumNumberObj;
arrayAll.append(inputObj);
arrayAll2.append(inputObj2);
qDebug() << "arrayAll==========" << arrayAll << endl;
qDebug() << "strLogic" << strLogic.left(strLogic.length()-3) << endl;
jsonObjLogic[strLogic.left(strLogic.length()-3)] = arrayAll;
jsonObjLogic2[strLogic.left(strLogic.length()-3)] = arrayAll2;
arrjsonObjLogic.append(jsonObjLogic);
arrjsonObjLogic2.append(jsonObjLogic2);
}
if((childitem->text().contains("logicOR") || childitem->text().contains("logicAND")) && item->parent()){
logicObj[strLogic] = arrItem;
qDebug() << "logicObj123" << logicObj << endl;
tmplogic.append(logicObj);
qDebug() << "tmplogic123" << tmplogic << endl;
}
if(!item->parent() && i + 1 == item->rowCount())
{
qDebug() << "No parent" << item->text() << endl;
qDebug() << "m_array1" << arrItem << endl;
return arrItem;
}else if(item->parent() && i + 1 == item->rowCount()){
qDebug() << "parent" << item->text() << endl;
MinimumNumberObj["MinimumNumber"] = 1;
logic_inputObj["Combination"] = MinimumNumberObj;
if(childitem->text().contains("logicOR") || childitem->text().contains("logicAND")){
logic_inputObj["Inputs"] = tmplogic;
}else{
logic_inputObj["Inputs"] = arrjsonObjLogic;
}
logic_arrayAll.append(logic_inputObj);
qDebug() << "arrayAll111" << logic_arrayAll << endl;
return logic_arrayAll;
}
}
}
m_deleteInputArray.append(arrjsonObjLogic2);
qDebug() << "m_array2" << arrItem << endl;
return arrItem;
// QJsonArray arrayAll,inputArray;
// QJsonObject jsonObj,inputObj,MinimumNumberObj;
// if(item->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"<<m_array << childitem->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<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();
disconnect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
}
}
}
}
void CConfiguration::on_pushButton_save_clicked()
{
#ifdef QT_DEBUG
PushData();
#endif
connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
g_NetMgr->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);
}else if(ui->radioButton_11->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(1);
}else if(ui->radioButton_12->isChecked()){
flag = 1;
ConfiguraitonsObj = SelectChannel(2);
}
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));
// QJsonObject json = generateJsonFromTreeView(ui->treeView_Relay);
// saveJsonToFile(json, "TreeViewToJSON.json");
// if(arrayAll.size() < 1)
// return;
// logicObj[item->text().left(7)] = arrayAll;
// logicObj2[item->text().left(7)] = m_deleteInputArray;
// logicExpressArray.append(logicObj);
// logicExpressArray2.append(logicObj2);
// }
QJsonArray rootArray;
// 遍历模型的每个根节点
for (int i = 0; i < model_Relay->rowCount(); ++i) {
QStandardItem *rootItem = model_Relay->item(i);
rootArray.append(createJsonFromTreeNode(rootItem));
// logicObj[rootItem->text().left(7)] = rootArray;
// logicObj2[rootItem->text().left(7)] = m_deleteInputArray;
// logicExpressArray.append(logicObj);
// logicExpressArray2.append(logicObj2);
}
ConfiguraitonsObj2 = ConfiguraitonsObj;
ConfiguraitonsObj["logicExpress"] = rootArray;
ConfiguraitonsObj2["logicExpress"] = logicExpressArray2;
//saveJsonToFile(ConfiguraitonsObj, "TreeViewToJSON.json");
QString strTableName = " t_UnitConfiguration ";
QVector<UnitConfiguration_t> 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<QJsonObject> 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<QJsonObject> 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<UnitConfiguration_t> 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<QJsonObject>().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++ ) {
}
}
}
}
// 递归解析 JSON 并构建树模型
void CConfiguration::populateTree(QStandardItem *parentItem, const QJsonObject &jsonObject) {
for (auto it = jsonObject.begin(); it != jsonObject.end(); ++it) {
QString key = it.key();
QJsonValue value = it.value();
if (key == "Combination") {
// // 添加 Combination 节点
// QJsonObject combination = value.toObject();
// int minNumber = combination["MinimumNumber"].toInt();
// QString combinationText = QString("Combination (MinimumNumber: %1)").arg(minNumber);
// QStandardItem *combinationItem = new QStandardItem(combinationText);
// parentItem->appendRow(combinationItem);
} else if (key == "Inputs" && value.isArray()) {
// 解析 Inputs 数组
QJsonArray inputsArray = value.toArray();
// QStandardItem *inputsItem = new QStandardItem("Inputs");
// parentItem->appendRow(inputsItem);
for (const QJsonValue &inputValue : inputsArray) {
if (inputValue.isObject()) {
populateTree(parentItem, inputValue.toObject());
}
}
} else if (key.startsWith("logic")) {
// 处理 logicAND 或 logicOR 节点
QStandardItem *logicItem = new QStandardItem(key);
parentItem->appendRow(logicItem);
if (value.isArray()) {
QJsonArray logicArray = value.toArray();
for (const QJsonValue &logicValue : logicArray) {
if (logicValue.isObject()) {
QJsonObject logicCombination = logicValue["Combination"].toObject();
int MinimumNumber =logicCombination["MinimumNumber"].toInt();
qDebug() << "MinimumNumber" << MinimumNumber << endl;
logicItem->setData(MinimumNumber,Qt::UserRole+1);
if(key.contains("logicAND"))
logicItem->setText(QString("logicAND(%1)").arg(MinimumNumber));
populateTree(logicItem, logicValue.toObject());
}
}
}
} else if (value.isObject()) {
// 如果是嵌套对象
QStandardItem *objectItem = new QStandardItem(key);
parentItem->appendRow(objectItem);
populateTree(objectItem, value.toObject());
} else if (key == "displayTitle") {
// 叶子节点:展示 displayTitle
QStandardItem *leafItem = new QStandardItem(value.toString());
parentItem->appendRow(leafItem);
}
}
}
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();
// 递归解析 JSON 数据并填充到模型中
for (int k = 0; k < tempArray2.size(); k++) {
QJsonObject tempObj2 = tempArray2[k].toObject();
if (tempObj2.contains(QStringLiteral("logicOR"))){
QJsonValue arrayValue = tempObj2.value(QStringLiteral("logicOR"));
QStandardItem *itemOr = new QStandardItem(QString("logicOR"));
QJsonArray array = arrayValue.toArray();
for (int kk = 0; kk < array.size(); kk++) {
QJsonObject tempObj3 = array[k].toObject();
populateTree(itemOr, tempObj3);
}
model_Relay->appendRow(itemOr);
}
}
}
}
}
}
}
//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)
{
}
void CConfiguration::on_radioButton_11_clicked()
{
m_curentRLY = 1;
ui->label_3->setText(ui->radioButton_11->text()+"");
ViewRelay(1);
}
void CConfiguration::on_radioButton_12_clicked()
{
m_curentRLY = 2;
ui->label_3->setText(ui->radioButton_12->text()+"");
ViewRelay(2);
}