From 77b7e2c8467678a27c0e899b1e8bfdd5becfa573 Mon Sep 17 00:00:00 2001 From: "CHINAMI-TV221UM\\Administrator" Date: Tue, 2 Apr 2024 19:25:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=BB=E8=A7=86=E5=9B=BE?= =?UTF-8?q?=E9=80=9A=E9=81=93=E8=87=AA=E5=8A=A8=E5=AF=B9=E9=BD=90=EF=BC=8C?= =?UTF-8?q?=E8=AD=A6=E6=8A=A5=E6=8F=8F=E8=BF=B0=E7=B2=BE=E7=AE=80=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E8=A7=A6=E5=8F=91=E6=9D=A1=E4=BB=B6=E5=92=8C=E5=B7=A5?= =?UTF-8?q?=E5=86=B5=E6=9D=A1=E4=BB=B6=E5=AD=98=E5=82=A8=E6=97=B6=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=BD=93=E5=89=8D=E6=9D=A1=E4=BB=B6=E7=9A=84=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChannelList.cpp | 12 ++ CharacteristicList.cpp | 3 - Configuration.cpp | 271 ++++++++++++++++++++++++++++++++++++----- Configuration.h | 4 + HistoryAlarm.cpp | 19 ++- MyCustomGraphicsItem.h | 20 +++ NTPServerConfig.cpp | 12 +- NTPServerConfig.ui | 6 +- OtherConfig.ui | 6 +- RealTimeAlarm.cpp | 17 ++- ftpclient.cpp | 1 + global.h | 9 ++ mainwindow.cpp | 2 - realtimeform.cpp | 98 +++++++++++++-- realtimeform.h | 4 + sqlitedb.cpp | 125 ++++++++++++------- sqlitedb.h | 4 +- 17 files changed, 507 insertions(+), 106 deletions(-) diff --git a/ChannelList.cpp b/ChannelList.cpp index 933fcd1..0f57359 100644 --- a/ChannelList.cpp +++ b/ChannelList.cpp @@ -5,6 +5,7 @@ #include #include #include +#include CChannelList::CChannelList(QWidget *parent) : @@ -532,7 +533,18 @@ void CChannelList::slotRowDoubleClicked(const QModelIndex &index) SlowSpeeddialog->show(); }else if(g_channelSetting[m_nCurRow].boardType.toInt() == 6 && g_channelSetting[i].channelId == g_channelSetting[m_nCurRow].channelId){//开入开出板卡 + QString strTips = "输入开入开出板卡通道名称"; + bool ok; + QString channleName = QInputDialog::getText(this, tr("输入名称对话框"), strTips, QLineEdit::Normal,"",&ok); + if(!ok) return; + qDebug() << channleName << endl; + QString strUpdateSql = QString(" set channelName = '%1' where sensorModuleNo = %2 and sensorNo = %3 ")\ + .arg(channleName).arg(g_channelSetting[m_nCurRow].sensorModuleNo).arg(g_channelSetting[m_nCurRow].sensorNo); + QString tableName = "t_ChannelSetting "; + g_SqliteDB->UpdateDataSql(tableName,strUpdateSql); + g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting"); + putJson(); } } diff --git a/CharacteristicList.cpp b/CharacteristicList.cpp index ea91861..f707473 100644 --- a/CharacteristicList.cpp +++ b/CharacteristicList.cpp @@ -61,9 +61,7 @@ void CCharacteristicList::DisPlayCharacteristic() model->setRowCount( g_Charateristic.size()); for (int i = 0; i < g_ChannelBaseInfo.size(); i++) - { - for (int j = 0; j < g_Charateristic.size(); j++) { if(g_Charateristic[j].ChannelID == g_ChannelBaseInfo[i].channelID \ && g_Charateristic[j].channelType != "DI" && g_Charateristic[j].channelType != "DO") @@ -81,7 +79,6 @@ void CCharacteristicList::DisPlayCharacteristic() }else if(g_ChannelBaseInfo[i].defaultDisplay == "转速"){ model->setData(model->index(j,2,QModelIndex()),QString::number(g_Charateristic[j].speedRPM,'f',g_Charateristic[j].ChUnitDot)); } - //qDebug() << g_ChannelBaseInfo[i].boardType << g_Charateristic[j].DCValues <setData(model->index(j,2,QModelIndex()),QString::number(g_Charateristic[j].DCValues,'f',g_Charateristic[j].ChUnitDot)); } diff --git a/Configuration.cpp b/Configuration.cpp index 70f43c1..a56669c 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -131,19 +131,21 @@ void CConfiguration::Init() int xDangerOverEnabled = arrayConfig.at(k)["xDangerOverEnabled"].toInt(); int xDangerUnderEnabled = arrayConfig.at(k)["xDangerUnderEnabled"].toInt(); if(xAlertOverEnabled == 1){ - item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"警报")); + item = new QStandardItem(QString(channelName + "-" + "高于警报值")); itemChannel->appendRow(item); } if(xAlertUnderEnabled == 1){ - item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"警报")); + item = new QStandardItem(QString(channelName + "-" + "低于警报值")); itemChannel->appendRow(item); } if(xDangerOverEnabled == 1){ - item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"危险")); + //item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"危险")); + item = new QStandardItem(QString(channelName + "-" + "高于危险值")); itemChannel->appendRow(item); } if(xDangerUnderEnabled == 1){ - item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"危险")); + item = new QStandardItem(QString(channelName + "-" + "低于危险值")); + //item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"危险")); itemChannel->appendRow(item); } } @@ -184,13 +186,67 @@ void CConfiguration::LoadConfiguration() 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(); - //QModelIndex index = curIndex.sibling(curIndex.row(),0); //同一行第一列元素的index if(curIndex.isValid()) { QStandardItem* item = model_Relay->itemFromIndex(curIndex); - QString text = item->text(); - qDebug() << text <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(); + 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()); } } @@ -244,8 +300,8 @@ void CConfiguration::on_treeView_Relay_customContextMenuRequested(const QPoint & QJsonArray CConfiguration::GetItem(QStandardItem *item,int MinimumNumber) { - QJsonArray arrayAll; - QJsonObject jsonObj,inputObj,MinimumNumberObj; + QJsonArray arrayAll,arrayAll2; + QJsonObject jsonObj,inputObj,inputObj2,MinimumNumberObj; QString strLogic; if(item->hasChildren()) { @@ -255,7 +311,7 @@ QJsonArray CConfiguration::GetItem(QStandardItem *item,int MinimumNumber) QStandardItem * childitem = item->child(i); strLogic = childitem->text(); if(childitem->text().contains("logicOR") || childitem->text().contains("logicAND")){ - QJsonArray inputArray; + QJsonArray inputArray,inputArray2; if(childitem->hasChildren()){ for(int i = 0;i < childitem->rowCount() ;i++){ QStandardItem * childitem2 = childitem->child(i); @@ -269,30 +325,51 @@ QJsonArray CConfiguration::GetItem(QStandardItem *item,int MinimumNumber) jsonObj["triggerFeatureName"] = childitem2->text(); jsonObj["nodeType"] = 1; jsonObj["displayTitle"] = childitem2->text(); - jsonObj["channelId"] = childitem2->text().split("-")[3]; + 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" <data(1) << endl; + arrayAll2.append(inputObj2); } } } - QJsonObject jsonObjLogic; + QJsonObject jsonObjLogic,jsonObjLogic2; qDebug() << "strLogic" << strLogic.left(strLogic.length()-3) << endl; jsonObjLogic[strLogic.left(strLogic.length()-3)] = arrayAll; + jsonObjLogic2[strLogic.left(strLogic.length()-3)] = arrayAll2; QJsonArray ret; ret.append(jsonObjLogic); + m_deleteInputArray.append(jsonObjLogic2); return ret; @@ -351,6 +428,7 @@ QJsonObject CConfiguration::SelectChannel(int channelNo) ConfiguraitonsObj["ChannelId"] = g_ChannelBaseInfo[i].channelID; ConfiguraitonsObj["ChannelName"] = g_ChannelBaseInfo[i].channelName; ConfiguraitonsObj["ChannelNoInBoard"] = g_ChannelBaseInfo[i].channelNoInBoard; + ConfiguraitonsObj["ChannelOperate"] = -1; } } return ConfiguraitonsObj; @@ -379,12 +457,12 @@ void CConfiguration::on_pushButton_save_clicked() void CConfiguration::on_pushButton_confirm_clicked() { - QJsonObject logicObj,ConfiguraitonsObj,ConfiguraitonsWCObj; - QJsonArray logicExpressArray,ConfiguraitonsArray; + 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); + ConfiguraitonsObj = SelectChannel(3); }else if(ui->radioButton_2->isChecked()){ flag = 1; @@ -440,21 +518,38 @@ void CConfiguration::on_pushButton_confirm_clicked() 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() == "") + if(ui->lineEdit_2->text() == ""){ ConfiguraitonsWCObj["SecondDelaySeconds"] = "0"; - else + 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++) { @@ -462,9 +557,15 @@ void CConfiguration::on_pushButton_confirm_clicked() 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; @@ -498,6 +599,43 @@ void CConfiguration::on_pushButton_confirm_clicked() }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("应用成功!")); } @@ -540,21 +678,27 @@ void CConfiguration::on_comboBox_WC_currentTextChanged2(const QString &arg1) int xDangerOverEnabled = arrayConfig.at(k)["xDangerOverEnabled"].toInt(); int xDangerUnderEnabled = arrayConfig.at(k)["xDangerUnderEnabled"].toInt(); if(xAlertOverEnabled == 1){ - item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"警报")); + + item = new QStandardItem(QString(channelName + "-" + "高于警报值")); + //item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"警报")); itemChannel->appendRow(item); } if(xAlertUnderEnabled == 1){ - item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"警报")); + item = new QStandardItem(QString(channelName + "-" + "低于警报值")); + //item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"警报")); itemChannel->appendRow(item); } if(xDangerOverEnabled == 1){ - item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"危险")); + item = new QStandardItem(QString(channelName + "-" + "高于危险值")); + //item = new QStandardItem(QString(channelName + "-" + str + "-Over-"+"危险")); itemChannel->appendRow(item); } if(xDangerUnderEnabled == 1){ - item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"危险")); + item = new QStandardItem(QString(channelName + "-" + "低于危险值")); + //item = new QStandardItem(QString(channelName + "-" + str + "-Under-"+"危险")); itemChannel->appendRow(item); } + itemChannel->setData(str); } } } @@ -573,38 +717,95 @@ void CConfiguration::PushData() } 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; + QJsonObject WorkConditionConfiguraitonsObj,WorkConditionConfiguraitonsObj2; WorkConditionConfiguraitonsObj["WorkConditionConfiguraitons"] = m_WorkConditionConfiguraitonsArray; - //qDebug() << WorkConditionConfiguraitonsObj << endl; + WorkConditionConfiguraitonsObj2["WorkConditionConfiguraitons"] = WorkConditionConfiguraitonsArray2; QJsonDocument jsonDoc; jsonDoc.setObject(WorkConditionConfiguraitonsObj); QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; + QJsonDocument jsonDoc2; + jsonDoc2.setObject(WorkConditionConfiguraitonsObj2); + QString fileName2 = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations2.json"; + 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); - //QVector().swap(m_vecWorkConditionObj); + 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"); + } @@ -837,60 +1038,70 @@ void CConfiguration::ViewRelay(int ChannelNoInBoard) void CConfiguration::on_radioButton_1_clicked() { + m_curentRLY = 3; ViewRelay(3); } void CConfiguration::on_radioButton_2_clicked() { + m_curentRLY = 4; ViewRelay(4); } void CConfiguration::on_radioButton_3_clicked() { + m_curentRLY = 5; ViewRelay(5); } void CConfiguration::on_radioButton_4_clicked() { + m_curentRLY = 6; ViewRelay(6); } void CConfiguration::on_radioButton_5_clicked() { + m_curentRLY = 7; ViewRelay(7); } void CConfiguration::on_radioButton_6_clicked() { + m_curentRLY = 8; ViewRelay(8); } void CConfiguration::on_radioButton_8_clicked() { + m_curentRLY = 10; ViewRelay(10); } void CConfiguration::on_radioButton_7_clicked() { + m_curentRLY = 9; ViewRelay(9); } void CConfiguration::on_radioButton_9_clicked() { + m_curentRLY = 11; ViewRelay(11); } void CConfiguration::on_radioButton_10_clicked() { + m_curentRLY = 12; ViewRelay(12); } diff --git a/Configuration.h b/Configuration.h index 572df64..8527efc 100644 --- a/Configuration.h +++ b/Configuration.h @@ -70,17 +70,21 @@ private: QJsonArray m_array; QJsonArray m_WorkConditionConfiguraitonsArray; + QJsonArray m_deleteInputArray; + QJsonArray m_deleteConfiguraitonsObj; //QJsonArray m_ConfiguraitonsArray; QJsonArray arrayTriggerConfig; QJsonArray m_ConfiguraitonsArray; QJsonObject m_ConfiguraitonsWCObj; QVector m_vecWorkConditionObj; + QVector m_vecWorkConditionObj2; void LoadConfiguration(); QJsonObject SelectChannel(int channelNo); void ViewRelay(int ChannelNoInBoard); void PushData(); int m_isConfirm; + int m_curentRLY; }; #endif // CONFIGURATION_H diff --git a/HistoryAlarm.cpp b/HistoryAlarm.cpp index b7302a8..fdf3e68 100644 --- a/HistoryAlarm.cpp +++ b/HistoryAlarm.cpp @@ -22,7 +22,7 @@ CHistoryAlarm::CHistoryAlarm(QWidget *parent) : model->setColumnCount(headerList.size()); ui->tableView->setModel(model); ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); - ui->tableView->setColumnWidth(2, 500); + ui->tableView->setColumnWidth(2, 300); ui->tableView->setColumnWidth(3, 200); ui->tableView->setColumnWidth(4, 200); ui->tableView->setAlternatingRowColors(true); @@ -39,6 +39,8 @@ CHistoryAlarm::CHistoryAlarm(QWidget *parent) : ui->comboBox_channel->setView(new QListView()); + ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); + connect(ui->comboBox_channel,SIGNAL(currentIndexChanged(const QString &)),this,SLOT(on_comboBox_channel_currentTextChanged(const QString&))); ui->comboBox_channel->addItem("请选择通道..."); @@ -101,7 +103,20 @@ void CHistoryAlarm::on_pushButton_search_clicked() QString resetTime = ""; if(m_vecTriggerAlarmStatusInfo[i].resetTimestamp != 0) resetTime = QDateTime::fromSecsSinceEpoch(m_vecTriggerAlarmStatusInfo[i].resetTimestamp).toString("yyyy-MM-dd hh:mm:ss"); - strRowItem << i + 1 << m_vecTriggerAlarmStatusInfo[i].triggerLevel << m_vecTriggerAlarmStatusInfo[i].triggerEventName << TStr << resetTime; + + QString triggerLevel = "",triggerEventName = ""; + if(m_vecTriggerAlarmStatusInfo[i].triggerLevel == "1"){ + triggerLevel = "警报"; + }else if(m_vecTriggerAlarmStatusInfo[i].triggerLevel == "2"){ + triggerLevel = "危险"; + } + + if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("Over")){ + triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + "高于" + triggerLevel + "值"; + }else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("Under")){ + triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + "低于" + triggerLevel + "值"; + } + strRowItem << i + 1 << triggerLevel << triggerEventName << TStr << resetTime; createRowItem(i,strRowItem); } diff --git a/MyCustomGraphicsItem.h b/MyCustomGraphicsItem.h index 8cc4dfb..d35f0cb 100644 --- a/MyCustomGraphicsItem.h +++ b/MyCustomGraphicsItem.h @@ -28,6 +28,26 @@ public: signals: void doubleclick(QGraphicsSceneMouseEvent *event); public slots: + +//protected: +// void mousePressEvent(QGraphicsSceneMouseEvent* event) override { +// // 当鼠标按下时,切换选中状态 +// isSelected = !isSelected; +// update(); // 触发重绘 +// } + +// void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override { +// QGraphicsItemGroup::paint(painter, option, widget); + +// if (isSelected) { +// // 如果项被选中,绘制一个高亮边框 +// painter->setPen(QPen(Qt::red)); +// painter->drawRoundRect(boundingRect()); +// } +// } + +//private: +// bool isSelected = false; // 是否被选中 }; class LineItem : public QGraphicsItem { diff --git a/NTPServerConfig.cpp b/NTPServerConfig.cpp index 928a80d..11a3115 100644 --- a/NTPServerConfig.cpp +++ b/NTPServerConfig.cpp @@ -34,13 +34,13 @@ void CNTPServerConfig::on_pushButton_2_clicked() void CNTPServerConfig::slotNetMgr(QString sAddr, const QVariant &msg) { QJsonObject objec = msg.value(); + qDebug() << "msg" << msg << endl; if(objec.contains("cmd")) { - QJsonValue arrays_value = objec.take("cmd"); - if(arrays_value.toString() == "02") + QJsonValue Json_value = objec.take("cmd"); + if(Json_value.toString() == "02") { - QJsonObject cmdBodyObj = objec["cmdBody"].toObject(); - QJsonValue arrays_value = cmdBodyObj.take("type"); + QString arrays_value = objec.take("type").toString(); if(arrays_value == "SET"){ bool Status = objec.take("success").toBool(); QString strMessage = objec.take("message").toString(); @@ -50,7 +50,7 @@ void CNTPServerConfig::slotNetMgr(QString sAddr, const QVariant &msg) QMessageBox::information(this, QStringLiteral("提示"), strMessage); } }else if(arrays_value == "GET"){ - int timestamp_value = cmdBodyObj.take("timeStamp").toInt(); + int timestamp_value = objec.take("timeStamp").toInt(); QDateTime dateTime; dateTime.setSecsSinceEpoch(timestamp_value); @@ -184,7 +184,7 @@ void CNTPServerConfig::on_pushButton_get_clicked() cmdBody.insert("type","GET"); long timeStamp = QDateTime::currentDateTime().toTime_t(); QString str = QString("%1").arg(timeStamp); - cmdBody["timeStamp"] = str.toInt(); + //cmdBody["timeStamp"] = str.toInt(); allObj["cmdBody"] = cmdBody; QNetworkRequest req; QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP); diff --git a/NTPServerConfig.ui b/NTPServerConfig.ui index 0a1fc64..f7c3c97 100644 --- a/NTPServerConfig.ui +++ b/NTPServerConfig.ui @@ -272,12 +272,12 @@ 50 50 - 54 - 12 + 161 + 16 - TextLabel + - - diff --git a/OtherConfig.ui b/OtherConfig.ui index a64e04b..0fc1b3c 100644 --- a/OtherConfig.ui +++ b/OtherConfig.ui @@ -6,7 +6,7 @@ 0 0 - 800 + 905 580 @@ -263,7 +263,7 @@ 去零漂配置 - + 10 @@ -349,7 +349,7 @@ - 0 + 100 0 diff --git a/RealTimeAlarm.cpp b/RealTimeAlarm.cpp index 37cfb58..3bc2b2f 100644 --- a/RealTimeAlarm.cpp +++ b/RealTimeAlarm.cpp @@ -22,7 +22,7 @@ CRealTimeAlarm::CRealTimeAlarm(QWidget *parent) : model->setHorizontalHeaderLabels(headerList); model->setColumnCount(headerList.size()); ui->tableView->setModel(model); - ui->tableView->setColumnWidth(2, 500); + ui->tableView->setColumnWidth(2, 300); ui->tableView->setColumnWidth(3, 200); ui->tableView->setAlternatingRowColors(true); @@ -33,6 +33,7 @@ CRealTimeAlarm::CRealTimeAlarm(QWidget *parent) : // 必须要设置此项,否则样式表的hover无法生效 ui->tableView->setMouseTracking(true); m_strFileName = ""; + ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); initTable(); } @@ -71,7 +72,19 @@ void CRealTimeAlarm::initTable() for (int i = 0; i < m_vecTriggerAlarmStatusInfo.size(); i++) { QVariantList strRowItem ; QString TStr = QDateTime::fromSecsSinceEpoch(m_vecTriggerAlarmStatusInfo[i].timestamp).toString("yyyy-MM-dd hh:mm:ss"); - strRowItem << i + 1 << m_vecTriggerAlarmStatusInfo[i].triggerLevel << m_vecTriggerAlarmStatusInfo[i].triggerEventName << TStr; + QString triggerLevel = "",triggerEventName = ""; + if(m_vecTriggerAlarmStatusInfo[i].triggerLevel == "1"){ + triggerLevel = "警报"; + }else if(m_vecTriggerAlarmStatusInfo[i].triggerLevel == "2"){ + triggerLevel = "危险"; + } + + if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("Over")){ + triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + "高于" + triggerLevel + "值"; + }else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("Under")){ + triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + "低于" + triggerLevel + "值"; + } + strRowItem << i + 1 << triggerLevel << triggerEventName << TStr; createRowItem(i,strRowItem); } diff --git a/ftpclient.cpp b/ftpclient.cpp index 2ef4e89..1e5d14b 100644 --- a/ftpclient.cpp +++ b/ftpclient.cpp @@ -156,6 +156,7 @@ void FtpClient::UpLoadFile(const QString fileSource, const QString fileName,int QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("上传的文件不存在")); return; } + customLogMessageHandler(QtDebugMsg,fileName); file.open(QIODevice::ReadOnly); QByteArray data = file.readAll(); //转化编码 //QString result = QString::fromLatin1(fileDest.toStdString().c_str()); diff --git a/global.h b/global.h index 0b05818..e1e1915 100644 --- a/global.h +++ b/global.h @@ -268,6 +268,15 @@ typedef struct _TriggerAlarmStatusInfo{ } }TriggerAlarmStatusInfo_t ; +typedef struct _UnitConfiguration{ + QString WorkConditionID; + QString ChannelID; + int BoardNo; + int ChannelNoInBoard; + QString Input; + int Operate; +} UnitConfiguration_t; + typedef struct _Charateristic{ double Amp1x; double Phase1x; diff --git a/mainwindow.cpp b/mainwindow.cpp index 93c3669..b0733f8 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -88,7 +88,6 @@ MainWindow::MainWindow(QWidget *parent) : } void MainWindow::LoadTrigerConfig() { - g_SqliteDB->GetTriggerConfig("t_TriggerConfig",""); } @@ -189,7 +188,6 @@ void MainWindow::initWindow() g_MapChannelType.insert("DI","开入"); g_MapChannelType.insert("DO","开出"); g_MapChannelType.insert("AIRGAP","气隙"); - } void MainWindow::initStyle() diff --git a/realtimeform.cpp b/realtimeform.cpp index ae31ab1..9202a3f 100644 --- a/realtimeform.cpp +++ b/realtimeform.cpp @@ -14,6 +14,7 @@ #include #include "log.h" #include +#include #include "customrectitem.h" #include "mygraphicrectitem.h" @@ -31,7 +32,7 @@ CRealTimeForm::CRealTimeForm(QWidget *parent) : m_pGraphicsScene->setSceneRect(0,0,600,550); ui->graphicsView->setScene(m_pGraphicsScene); ui->graphicsView->setDragMode(QGraphicsView::RubberBandDrag); - + ui->graphicsView->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); ui->graphicsView_2->setContextMenuPolicy(Qt::CustomContextMenu); QObject::connect(ui->graphicsView_2 ,SIGNAL(customContextMenuRequested(const QPoint &)),this,SLOT(on_graphView_customContextMenuRequested(const QPoint &))); @@ -50,9 +51,6 @@ CRealTimeForm::CRealTimeForm(QWidget *parent) : m_pSocket = new QTcpSocket(this); - - //QObject::connect(m_pSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(slotStateChanged(QAbstractSocket::SocketState))); - m_EditMode = 0; m_MachineStatus = 1; //读取ini @@ -175,6 +173,8 @@ void CRealTimeForm::on_graphView_customContextMenuRequested(const QPoint &pos) pActionRect2 = menu.addAction("矩形框"); pActionPixmap = menu.addAction("添加图片"); pActionText = menu.addAction("添加文字"); + pActionAlignmentX = menu.addAction("水平分布"); + pActionAlignmentY = menu.addAction("垂直分布"); pActionEdit = menu.addAction("编辑"); pActionSave = menu.addAction("保存"); @@ -186,6 +186,8 @@ void CRealTimeForm::on_graphView_customContextMenuRequested(const QPoint &pos) pActionSave->setData(6); pActionEdit->setData(7); pActionRect2->setData(8); + pActionAlignmentX->setData(9); + pActionAlignmentY->setData(10); connect(pActionVerticalLine, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); connect(pActionHorizontalLine, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); @@ -195,6 +197,8 @@ void CRealTimeForm::on_graphView_customContextMenuRequested(const QPoint &pos) connect(pActionSave, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); connect(pActionEdit, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); connect(pActionRect2, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); + connect(pActionAlignmentX, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); + connect(pActionAlignmentY, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); menu.exec(QCursor::pos()); //menu.exec(ui->graphicsView->mapToGlobal(pos)); @@ -237,6 +241,12 @@ void CRealTimeForm::onTaskBoxContextMenuEvent() case 8: SetCurDrawType("Rect"); break; + case 9: + SetAlignmentX(); + break; + case 10: + SetAlignmentY(); + break; } } @@ -245,6 +255,80 @@ void CRealTimeForm::SetEdit() m_EditMode = 1; LoadGraphicsConfig(1); } + +void CRealTimeForm::SetAlignmentX() +{ + if(!m_EditMode){ + QMessageBox::information(this, QStringLiteral("提示"), "请先进入编辑模式!"); + return; + } + QMap channleAxisX; + QList items; + if(ui->tabWidget->currentIndex() == 0){ + items = m_pGraphicsScene->items(); + }else if(ui->tabWidget->currentIndex() == 1){ + items = m_pGraphicsScene_2->items(); + } + + foreach (QGraphicsItem *item, items) { + QGraphicsItem* graphicsItem = static_cast(item); + int itemType = graphicsItem->type(); + if (itemType == 10) { + QGraphicsItem* graphicsItem = static_cast(item); + qDebug() << "itemType" << graphicsItem->data(0) << graphicsItem->isSelected() << endl; + if(graphicsItem->isSelected()){ + channleAxisX.insert(graphicsItem,graphicsItem->x()); + } + } + } + QList list = channleAxisX.values(); + qSort(list); + float minValue = list.first(); + qDebug() << "minValue" << minValue << endl; + + QMap::iterator iter = channleAxisX.begin(); + for (; iter != channleAxisX.end(); iter++) { + iter.key()->setPos(minValue,iter.key()->y()); + } +} + + +void CRealTimeForm::SetAlignmentY() +{ + if(!m_EditMode){ + QMessageBox::information(this, QStringLiteral("提示"), "请先进入编辑模式!"); + return; + } + QMap channleAxisY; + QList items; + if(ui->tabWidget->currentIndex() == 0){ + items = m_pGraphicsScene->items(); + }else if(ui->tabWidget->currentIndex() == 1){ + items = m_pGraphicsScene_2->items(); + } + + foreach (QGraphicsItem *item, items) { + QGraphicsItem* graphicsItem = static_cast(item); + int itemType = graphicsItem->type(); + if (itemType == 10) { + QGraphicsItem* graphicsItem = static_cast(item); + if(graphicsItem->isSelected()){ + channleAxisY.insert(graphicsItem,graphicsItem->y()); + } + } + } + QList list = channleAxisY.values(); + qSort(list); + float minValue = list.first(); + qDebug() << "minValue" << minValue << endl; + + QMap::iterator iter = channleAxisY.begin(); + int i = 0; + for (; iter != channleAxisY.end(); iter++,i++) { + iter.key()->setPos(iter.key()->x(),list[0] + i * 40 ); + } +} + void CRealTimeForm::on_addchannel(channelBaseInfo channelbaseInfo,QString str) { @@ -331,11 +415,11 @@ void CRealTimeForm::on_addchannel(channelBaseInfo channelbaseInfo,QString str) pTextUnits->setData(1,"units"); pTextChannel->setData(2,"channel"); pTextValue->setData(3,"value"); - pTextValue->setData(4,str); + pTextValue->setData(4,str);//特征值 QFont font; font.setPixelSize(16); - QFont font2 ( "黑体", 18, 50); + QFont font2 ("黑体", 18, 50); font.setFamily(QStringLiteral("黑体")); pTextUnits->setFont(font); pTextUnits->setDefaultTextColor(QColor(27, 30, 35)); @@ -614,7 +698,6 @@ void CRealTimeForm::SaveGraphicsConfig() TextjsonObject.insert("color",QString::number(mRgb, 16)); if(itemData2 != "") TextjsonObject.insert("static", itemData2); - //qDebug() << "group Text" << pGraphicTextItem->toPlainText(); if(itemData == "units") temp.channelUnit = pGraphicTextItem->toPlainText(); else if(itemData == "channel") @@ -841,7 +924,6 @@ void CRealTimeForm::LoadGraphicsConfig(int type) } proxy->setGeometry(QRectF(key["x"].toInt(),key["y"].toInt(),0,0)); } - } // QGraphicsPixmapItem *pPixmap = new QGraphicsPixmapItem(QPixmap(":/image/1.png")); // pPixmap->setPos(key["x"].toInt(), key["y"].toInt()); diff --git a/realtimeform.h b/realtimeform.h index b4f5fea..3990519 100644 --- a/realtimeform.h +++ b/realtimeform.h @@ -102,6 +102,8 @@ private: QAction *pActionRect2 ; QAction *pActionEdit ; QAction *pActionSave ; + QAction *pActionAlignmentX ; + QAction *pActionAlignmentY ; int id1; //定时器1的唯一标示 int m_RealtimeLog; int m_MachineStatus;//1 运行 0 停机 @@ -112,6 +114,8 @@ private: void InitChannelInfo(); void SetCurDrawType(QString strType); void SetEdit(); + void SetAlignmentX(); + void SetAlignmentY(); void LoadGraphicsConfig(int type);//0 正常,1 编辑 2 停机 void SaveGraphicsConfig(); void UpdateCharacteristic(QVector<_Charateristic>& m_vecCharateristic); diff --git a/sqlitedb.cpp b/sqlitedb.cpp index 0203be1..23ce1a9 100644 --- a/sqlitedb.cpp +++ b/sqlitedb.cpp @@ -30,56 +30,55 @@ int SqliteDB::OpenDataBase() } else { - QString strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ - .arg("sqlite_master").arg("t_ChannelSetting").arg("confidenceDegree"); - int iRet = ExeSqlData(strSql); - if(iRet == 0){ - strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'confidenceDegree' integer"; - ExeSqlData(strSql); - } - strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ - .arg("sqlite_master").arg("t_ChannelSetting").arg("sectionNum"); - iRet = ExeSqlData(strSql); - if(iRet == 0){ - strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'sectionNum' integer"; - ExeSqlData(strSql); - } - strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ - .arg("sqlite_master").arg("t_ChannelSetting").arg("EngineeringUnit2"); - iRet = ExeSqlData(strSql); - if(iRet == 0){ - strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'EngineeringUnit2' text"; - ExeSqlData(strSql); - } - strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ - .arg("sqlite_master").arg("t_ChannelSetting").arg("firstPoleNum"); - iRet = ExeSqlData(strSql); - if(iRet == 0){ - strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'firstPoleNum' text"; - ExeSqlData(strSql); - } - strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ - .arg("sqlite_master").arg("t_TriggerConfig").arg("operate"); - iRet = ExeSqlData(strSql); - if(iRet == 0){ - strSql = "ALTER TABLE t_TriggerConfig ADD COLUMN 'operate' integer"; - ExeSqlData(strSql); - } -// strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ -// .arg("sqlite_master").arg("t_WorkCondition").arg("operate"); -// iRet = ExeSqlData(strSql); -// if(iRet == 0){ -// strSql = "ALTER TABLE t_WorkCondition ADD COLUMN 'operate' integer"; -// ExeSqlData(strSql); -// } - + initTable(); return 0; } } + +int SqliteDB::initTable() +{ + QString strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ + .arg("sqlite_master").arg("t_ChannelSetting").arg("confidenceDegree"); + int iRet = ExeSqlData(strSql); + if(iRet == 0){ + strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'confidenceDegree' integer"; + ExeSqlData(strSql); + } + strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ + .arg("sqlite_master").arg("t_ChannelSetting").arg("sectionNum"); + iRet = ExeSqlData(strSql); + if(iRet == 0){ + strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'sectionNum' integer"; + ExeSqlData(strSql); + } + strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ + .arg("sqlite_master").arg("t_ChannelSetting").arg("EngineeringUnit2"); + iRet = ExeSqlData(strSql); + if(iRet == 0){ + strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'EngineeringUnit2' text"; + ExeSqlData(strSql); + } + strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ + .arg("sqlite_master").arg("t_ChannelSetting").arg("firstPoleNum"); + iRet = ExeSqlData(strSql); + if(iRet == 0){ + strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'firstPoleNum' text"; + ExeSqlData(strSql); + } + strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ + .arg("sqlite_master").arg("t_TriggerConfig").arg("operate"); + iRet = ExeSqlData(strSql); + if(iRet == 0){ + strSql = "ALTER TABLE t_TriggerConfig ADD COLUMN 'operate' integer"; + ExeSqlData(strSql); + } + + CreateDataBase(); +} int SqliteDB::CreateDataBase() { - - + QString strCreateSQL = QString("create table if not exists t_UnitConfiguration(WorkConditionID,ChannelID,BoardNo,ChannelNoInBoard,Input,Operate);"); + ExeSqlData(strCreateSQL); } int SqliteDB::QueryData(QString& tablename, QString& column, QString& whereCon) { @@ -507,6 +506,40 @@ SqliteDB::GetTriggerAlarmStatusInfo(QString tablename,QString whereCon) return vecResult; } +QVector +SqliteDB::GetUnitConfigurationInfo(QString tablename,QString whereCon) +{ + QSqlQuery sql_query; + + QVector vecResult; + UnitConfiguration_t tempUnitConfigurationInfo; + QString strSql; + if(whereCon == "") + strSql = QString("SELECT * FROM %1 ;").arg(tablename); + else + strSql = QString("SELECT * FROM %1 where %2;").arg(tablename).arg(whereCon); + sql_query.exec(strSql); + qDebug() << "strSql" < GetTriggerConfig(QString tablename,QString whereCon = ""); QVector GetTriggerEvent(QString tablename,QString whereCon = ""); QVector GetTriggerAlarmStatusInfo(QString tablename,QString whereCon = ""); + QVector GetUnitConfigurationInfo(QString tablename,QString whereCon = ""); QString GetSingelLine(QString& tablename, QString& column, QString whereCon = ""); int DeleteData(QString& tablename, QString condColumnName = "", QVariant condColumnValue = ""); - int DeleteDataW(QString& tablename, QString& whereCon); + int DeleteDataW(QString& tablename, QString whereCon = ""); int ExeSqlData(QString& strSql); + int initTable(); }; extern SqliteDB* g_SqliteDB;