diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index 2f25c21..596e608 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -42,6 +42,7 @@ depar_task_server.cpp \ dialogcheckresult.cpp \ dialogdcstabinput.cpp \ + dialogverifyresult.cpp \ formaddrsetting.cpp \ formbizdeviceselect.cpp \ formcheckpoint.cpp \ @@ -79,6 +80,7 @@ createtask_scandevice.h \ databaseconnectionmainsys.h \ dialogdcstabinput.h \ + dialogverifyresult.h \ formaddrsetting.h \ formbizdeviceselect.h \ formcommsetting.h \ @@ -140,6 +142,7 @@ depar_task.ui \ dialogcheckresult.ui \ dialogdcstabinput.ui \ + dialogverifyresult.ui \ formaddrsetting.ui \ formbizdeviceselect.ui \ formcheckpoint.ui \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index 2f25c21..596e608 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -42,6 +42,7 @@ depar_task_server.cpp \ dialogcheckresult.cpp \ dialogdcstabinput.cpp \ + dialogverifyresult.cpp \ formaddrsetting.cpp \ formbizdeviceselect.cpp \ formcheckpoint.cpp \ @@ -79,6 +80,7 @@ createtask_scandevice.h \ databaseconnectionmainsys.h \ dialogdcstabinput.h \ + dialogverifyresult.h \ formaddrsetting.h \ formbizdeviceselect.h \ formcommsetting.h \ @@ -140,6 +142,7 @@ depar_task.ui \ dialogcheckresult.ui \ dialogdcstabinput.ui \ + dialogverifyresult.ui \ formaddrsetting.ui \ formbizdeviceselect.ui \ formcheckpoint.ui \ diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index f7baed7..17024c4 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6916,7 +6916,7 @@ return isSuccess; } //【保存】核查基本信息 -bool InsertStandardCheckInfo(StandardCheckInfo info) +bool BaseCommonApi::InsertStandardCheckInfo(StandardCheckInfo info) { QSqlQuery query; query.prepare("INSERT INTO biz_equipment_standard_check_info ( id, data_no, check_date, check_address, temperature, humidity, " diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index 2f25c21..596e608 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -42,6 +42,7 @@ depar_task_server.cpp \ dialogcheckresult.cpp \ dialogdcstabinput.cpp \ + dialogverifyresult.cpp \ formaddrsetting.cpp \ formbizdeviceselect.cpp \ formcheckpoint.cpp \ @@ -79,6 +80,7 @@ createtask_scandevice.h \ databaseconnectionmainsys.h \ dialogdcstabinput.h \ + dialogverifyresult.h \ formaddrsetting.h \ formbizdeviceselect.h \ formcommsetting.h \ @@ -140,6 +142,7 @@ depar_task.ui \ dialogcheckresult.ui \ dialogdcstabinput.ui \ + dialogverifyresult.ui \ formaddrsetting.ui \ formbizdeviceselect.ui \ formcheckpoint.ui \ diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index f7baed7..17024c4 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6916,7 +6916,7 @@ return isSuccess; } //【保存】核查基本信息 -bool InsertStandardCheckInfo(StandardCheckInfo info) +bool BaseCommonApi::InsertStandardCheckInfo(StandardCheckInfo info) { QSqlQuery query; query.prepare("INSERT INTO biz_equipment_standard_check_info ( id, data_no, check_date, check_address, temperature, humidity, " diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 7123fac..5b6615f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -28,6 +28,7 @@ QString rolenName; VerificationProgramConfigInterface programInterface; QList cmdList; + VisaCommonEngine* visaEngine=nullptr; }; class CheckWindow : public QWidget diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index 2f25c21..596e608 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -42,6 +42,7 @@ depar_task_server.cpp \ dialogcheckresult.cpp \ dialogdcstabinput.cpp \ + dialogverifyresult.cpp \ formaddrsetting.cpp \ formbizdeviceselect.cpp \ formcheckpoint.cpp \ @@ -79,6 +80,7 @@ createtask_scandevice.h \ databaseconnectionmainsys.h \ dialogdcstabinput.h \ + dialogverifyresult.h \ formaddrsetting.h \ formbizdeviceselect.h \ formcommsetting.h \ @@ -140,6 +142,7 @@ depar_task.ui \ dialogcheckresult.ui \ dialogdcstabinput.ui \ + dialogverifyresult.ui \ formaddrsetting.ui \ formbizdeviceselect.ui \ formcheckpoint.ui \ diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index f7baed7..17024c4 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6916,7 +6916,7 @@ return isSuccess; } //【保存】核查基本信息 -bool InsertStandardCheckInfo(StandardCheckInfo info) +bool BaseCommonApi::InsertStandardCheckInfo(StandardCheckInfo info) { QSqlQuery query; query.prepare("INSERT INTO biz_equipment_standard_check_info ( id, data_no, check_date, check_address, temperature, humidity, " diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 7123fac..5b6615f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -28,6 +28,7 @@ QString rolenName; VerificationProgramConfigInterface programInterface; QList cmdList; + VisaCommonEngine* visaEngine=nullptr; }; class CheckWindow : public QWidget diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp new file mode 100644 index 0000000..1cf2a9a --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp @@ -0,0 +1,291 @@ +#include "dialogverifyresult.h" +#include "ui_dialogverifyresult.h" +#include "basecommonapi.h" + +DialogVerifyResult::DialogVerifyResult(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogVerifyResult) +{ + ui->setupUi(this); + QStringList headers; + headers <<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注";; + ui->tableWidgetStd->setColumnCount(headers.count()); + ui->tableWidgetStd->setHorizontalHeaderLabels(headers); + ui->tableWidgetChecker->setColumnCount(headers.count()); + ui->tableWidgetChecker->setHorizontalHeaderLabels(headers); + for(int i=1;itableWidgetStd->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetChecker->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + ui->tableWidgetStd->verticalHeader()->setParent(nullptr); + ui->tableWidgetChecker->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheckStable->verticalHeader()->setParent(nullptr); +} + +DialogVerifyResult::~DialogVerifyResult() +{ + delete ui; +} + +void DialogVerifyResult::deleteItem(QLayout *layout) +{ + QLayoutItem *child; + while ((child = layout->takeAt(0)) != nullptr) + { + //setParent为NULL,防止删除之后界面不消失 + if(child->widget()) + { + child->widget()->setParent(nullptr); + delete child->widget(); + } + else if (child->layout()) + { + deleteItem(child->layout()); + child->layout()->deleteLater(); + } + delete child; + } +} + +void DialogVerifyResult::setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds) +{ + iEquipType=iType; + veriDataMapList=data; + veriHeadList = header; + programInfo=program; + selectStdIds = stdId; + selectBizIds=bizIds; + + QStringList idList = selectStdIds.split(","); + int rowCount=0; + int row=0; + for(const QString& id : idList) + { + //<<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetStd->insertRow(rowCount); + ui->tableWidgetStd->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetStd->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetStd->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetStd->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetStd->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetStd->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetStd->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + idList = selectBizIds.split(","); + rowCount=0; + row=0; + for(const QString& id : idList) + { + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetChecker->insertRow(rowCount); + ui->tableWidgetChecker->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetChecker->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetChecker->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetChecker->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetChecker->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetChecker->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetChecker->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + deleteItem(ui->horizontalLayoutMain); + mainTabIdx=-1; + int index=0; + for (const auto &item : veriHeadList->keys()) { + // ======================================================================================== + // 按钮设置显示 + // ==================================================================================== + QPushButton *button = new QPushButton(item, this); + //设置样式 + // 设置按钮大小为 56x20 + //固定大小文字显示不全 + //button->setFixedSize(85, 40); + button->setCheckable(true); + button->setAutoExclusive(true); + //设置第一个按钮选中状态 + if(index==0){ button->setChecked(true);} + //button->setc(true); + // 设置按钮样式表 + button->setStyleSheet("QPushButton {" + "border: 1px solid white;" // 白色边框 + "border-bottom: 2px solid rgba(0, 255, 255, 1);" // 浅蓝色下划线 + "background-color: rgba(242, 242, 242, 1);" // 浅灰色背景 + "height:40px;" + "padding:5px;" + "}" + "QPushButton:hover {" + "background-color: rgba(215, 215, 215, 1);;" // 鼠标悬停时变为深灰色背景 + "}" + "QPushButton:checked {" + "color: white;" + "background-color: rgb(74, 102, 186);" // 选中时变为蓝色背景 + "}"); + + ui->horizontalLayoutMain->addWidget(button); + connect(button, &QPushButton::clicked, this, [this,index]() { + //tackedWidget->setCurrentIndex(index); + initCheckTable(index); + }); + //pageButtons.append(button); + ++index; + } + ui->horizontalLayoutMain->addStretch(); + initCheckTable(0); +} + +void DialogVerifyResult::initCheckTable(int idx) +{ + if(mainTabIdx==idx) + return; + mainTabIdx = idx; + QString sLabel = veriHeadList->keys()[mainTabIdx]; + QString sLabel2 = "重复性"; + const auto veriData = veriDataMapList->value(sLabel); + auto dataRes = veriData.value(sLabel2); + const auto headDta = veriHeadList->value(sLabel); + auto headrs = headDta.value(sLabel2); + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + ui->tableWidgetCheck->setColumnCount(headrs.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } + + sLabel2 = "稳定性"; + dataRes = veriData.value(sLabel2); + headrs = headDta.value(sLabel2); + ui->tableWidgetCheckStable->clearContents(); + ui->tableWidgetCheckStable->setRowCount(0); + ui->tableWidgetCheckStable->setColumnCount(0); + ui->tableWidgetCheckStable->setColumnCount(headrs.count()); + ui->tableWidgetCheckStable->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheckStable->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheckStable->rowCount(); + ui->tableWidgetCheckStable->insertRow(rowCount); + ui->tableWidgetCheckStable->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheckStable->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } +} + +QString DialogVerifyResult::getValueByHeader(QStringList dataList,QStringList headList,QString sName){ + for(int i=0;ilineEditNo->text();//数据编号 + baseInfo.check_date=ui->dateEditTime->text();//核查日期 + baseInfo.check_address=ui->comboBoxPlace->currentText();//核查地点 + baseInfo.temperature=ui->lineEditTemp->text();//温度 + baseInfo.humidity=ui->lineEdit_Hum->text();//湿度 + baseInfo.check_accord=ui->lineEditRule->text();//核查依据(即标准装置的作业指导书文件minio文件名,多个分号分割) + baseInfo.stability_examine=ui->comboBoxExam->currentText();//是否用于稳定性考核(1/0) + baseInfo.standard_equipment_id=programInfo->belong_standard_equipment_name;//被核查标准装置id + //QString equipment_id;//被核查设备id + baseInfo.item_category_id=programInfo->equipment_type;//核查项分类id + baseInfo.conclusion=ui->comboBoxConclusion->currentText();//结论(字典value) + baseInfo.remark=ui->lineEditNote->text();//备注 + //QString create_user_id;//核查员id + baseInfo.create_user_name=ui->comboBox_User->currentText();//核查员 + baseInfo.create_time=baseInfo.update_time=QDateTime::currentDateTime(); + if(BaseCommonApi::InsertStandardCheckInfo(baseInfo)){ + switch (iEquipType) { + case 1: + for(QString sLabel : veriHeadList->keys()){ + QMap items = veriHeadList->value(sLabel); + for(QString sLabel2 : items.keys()){ + QList dataRes = veriDataMapList->value(sLabel).value(sLabel2); + QStringList headers = items.value(sLabel2); + for (int i = 0; i < dataRes.count(); ++i) { + StandardCheckDataCalibrator calData; + calData.id= QString::number(api.generateId()); + calData.data_id = baseInfo.id;//核查数据管理基础信息表id + calData.check_type=getValueByHeader(dataRes[i],headers,"核查类型");//核查类型(直接存字典value) + calData.test_type=getValueByHeader(dataRes[i],headers,"核查点类型"); + calData.params=getValueByHeader(dataRes[i],headers,"核查项目"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + calData.frequency=getValueByHeader(dataRes[i],headers,"频率"); + calData.frequency_unit=getValueByHeader(dataRes[i],headers,"频率单位"); + calData.check_point=getValueByHeader(dataRes[i],headers,"核查点"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + + if(sLabel2=="重复性"){ + calData.test_value_one=getValueByHeader(dataRes[i],headers,"示值1"); + calData.test_value_two=getValueByHeader(dataRes[i],headers,"示值2"); + calData.test_value_three=getValueByHeader(dataRes[i],headers,"示值3"); + calData.test_value_four=getValueByHeader(dataRes[i],headers,"示值4"); + calData.test_value_five=getValueByHeader(dataRes[i],headers,"示值5"); + calData.test_value_six=getValueByHeader(dataRes[i],headers,"示值6"); + calData.average_value=getValueByHeader(dataRes[i],headers,"算数平均值"); + calData.standard_deviation=getValueByHeader(dataRes[i],headers,"标准偏差S(X)"); + calData.relative_repeatability=getValueByHeader(dataRes[i],headers,"相对重复性"); + }else{ + for(int k=0;k cmdList; + VisaCommonEngine* visaEngine=nullptr; }; class CheckWindow : public QWidget diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp new file mode 100644 index 0000000..1cf2a9a --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp @@ -0,0 +1,291 @@ +#include "dialogverifyresult.h" +#include "ui_dialogverifyresult.h" +#include "basecommonapi.h" + +DialogVerifyResult::DialogVerifyResult(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogVerifyResult) +{ + ui->setupUi(this); + QStringList headers; + headers <<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注";; + ui->tableWidgetStd->setColumnCount(headers.count()); + ui->tableWidgetStd->setHorizontalHeaderLabels(headers); + ui->tableWidgetChecker->setColumnCount(headers.count()); + ui->tableWidgetChecker->setHorizontalHeaderLabels(headers); + for(int i=1;itableWidgetStd->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetChecker->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + ui->tableWidgetStd->verticalHeader()->setParent(nullptr); + ui->tableWidgetChecker->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheckStable->verticalHeader()->setParent(nullptr); +} + +DialogVerifyResult::~DialogVerifyResult() +{ + delete ui; +} + +void DialogVerifyResult::deleteItem(QLayout *layout) +{ + QLayoutItem *child; + while ((child = layout->takeAt(0)) != nullptr) + { + //setParent为NULL,防止删除之后界面不消失 + if(child->widget()) + { + child->widget()->setParent(nullptr); + delete child->widget(); + } + else if (child->layout()) + { + deleteItem(child->layout()); + child->layout()->deleteLater(); + } + delete child; + } +} + +void DialogVerifyResult::setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds) +{ + iEquipType=iType; + veriDataMapList=data; + veriHeadList = header; + programInfo=program; + selectStdIds = stdId; + selectBizIds=bizIds; + + QStringList idList = selectStdIds.split(","); + int rowCount=0; + int row=0; + for(const QString& id : idList) + { + //<<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetStd->insertRow(rowCount); + ui->tableWidgetStd->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetStd->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetStd->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetStd->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetStd->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetStd->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetStd->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + idList = selectBizIds.split(","); + rowCount=0; + row=0; + for(const QString& id : idList) + { + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetChecker->insertRow(rowCount); + ui->tableWidgetChecker->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetChecker->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetChecker->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetChecker->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetChecker->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetChecker->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetChecker->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + deleteItem(ui->horizontalLayoutMain); + mainTabIdx=-1; + int index=0; + for (const auto &item : veriHeadList->keys()) { + // ======================================================================================== + // 按钮设置显示 + // ==================================================================================== + QPushButton *button = new QPushButton(item, this); + //设置样式 + // 设置按钮大小为 56x20 + //固定大小文字显示不全 + //button->setFixedSize(85, 40); + button->setCheckable(true); + button->setAutoExclusive(true); + //设置第一个按钮选中状态 + if(index==0){ button->setChecked(true);} + //button->setc(true); + // 设置按钮样式表 + button->setStyleSheet("QPushButton {" + "border: 1px solid white;" // 白色边框 + "border-bottom: 2px solid rgba(0, 255, 255, 1);" // 浅蓝色下划线 + "background-color: rgba(242, 242, 242, 1);" // 浅灰色背景 + "height:40px;" + "padding:5px;" + "}" + "QPushButton:hover {" + "background-color: rgba(215, 215, 215, 1);;" // 鼠标悬停时变为深灰色背景 + "}" + "QPushButton:checked {" + "color: white;" + "background-color: rgb(74, 102, 186);" // 选中时变为蓝色背景 + "}"); + + ui->horizontalLayoutMain->addWidget(button); + connect(button, &QPushButton::clicked, this, [this,index]() { + //tackedWidget->setCurrentIndex(index); + initCheckTable(index); + }); + //pageButtons.append(button); + ++index; + } + ui->horizontalLayoutMain->addStretch(); + initCheckTable(0); +} + +void DialogVerifyResult::initCheckTable(int idx) +{ + if(mainTabIdx==idx) + return; + mainTabIdx = idx; + QString sLabel = veriHeadList->keys()[mainTabIdx]; + QString sLabel2 = "重复性"; + const auto veriData = veriDataMapList->value(sLabel); + auto dataRes = veriData.value(sLabel2); + const auto headDta = veriHeadList->value(sLabel); + auto headrs = headDta.value(sLabel2); + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + ui->tableWidgetCheck->setColumnCount(headrs.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } + + sLabel2 = "稳定性"; + dataRes = veriData.value(sLabel2); + headrs = headDta.value(sLabel2); + ui->tableWidgetCheckStable->clearContents(); + ui->tableWidgetCheckStable->setRowCount(0); + ui->tableWidgetCheckStable->setColumnCount(0); + ui->tableWidgetCheckStable->setColumnCount(headrs.count()); + ui->tableWidgetCheckStable->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheckStable->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheckStable->rowCount(); + ui->tableWidgetCheckStable->insertRow(rowCount); + ui->tableWidgetCheckStable->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheckStable->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } +} + +QString DialogVerifyResult::getValueByHeader(QStringList dataList,QStringList headList,QString sName){ + for(int i=0;ilineEditNo->text();//数据编号 + baseInfo.check_date=ui->dateEditTime->text();//核查日期 + baseInfo.check_address=ui->comboBoxPlace->currentText();//核查地点 + baseInfo.temperature=ui->lineEditTemp->text();//温度 + baseInfo.humidity=ui->lineEdit_Hum->text();//湿度 + baseInfo.check_accord=ui->lineEditRule->text();//核查依据(即标准装置的作业指导书文件minio文件名,多个分号分割) + baseInfo.stability_examine=ui->comboBoxExam->currentText();//是否用于稳定性考核(1/0) + baseInfo.standard_equipment_id=programInfo->belong_standard_equipment_name;//被核查标准装置id + //QString equipment_id;//被核查设备id + baseInfo.item_category_id=programInfo->equipment_type;//核查项分类id + baseInfo.conclusion=ui->comboBoxConclusion->currentText();//结论(字典value) + baseInfo.remark=ui->lineEditNote->text();//备注 + //QString create_user_id;//核查员id + baseInfo.create_user_name=ui->comboBox_User->currentText();//核查员 + baseInfo.create_time=baseInfo.update_time=QDateTime::currentDateTime(); + if(BaseCommonApi::InsertStandardCheckInfo(baseInfo)){ + switch (iEquipType) { + case 1: + for(QString sLabel : veriHeadList->keys()){ + QMap items = veriHeadList->value(sLabel); + for(QString sLabel2 : items.keys()){ + QList dataRes = veriDataMapList->value(sLabel).value(sLabel2); + QStringList headers = items.value(sLabel2); + for (int i = 0; i < dataRes.count(); ++i) { + StandardCheckDataCalibrator calData; + calData.id= QString::number(api.generateId()); + calData.data_id = baseInfo.id;//核查数据管理基础信息表id + calData.check_type=getValueByHeader(dataRes[i],headers,"核查类型");//核查类型(直接存字典value) + calData.test_type=getValueByHeader(dataRes[i],headers,"核查点类型"); + calData.params=getValueByHeader(dataRes[i],headers,"核查项目"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + calData.frequency=getValueByHeader(dataRes[i],headers,"频率"); + calData.frequency_unit=getValueByHeader(dataRes[i],headers,"频率单位"); + calData.check_point=getValueByHeader(dataRes[i],headers,"核查点"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + + if(sLabel2=="重复性"){ + calData.test_value_one=getValueByHeader(dataRes[i],headers,"示值1"); + calData.test_value_two=getValueByHeader(dataRes[i],headers,"示值2"); + calData.test_value_three=getValueByHeader(dataRes[i],headers,"示值3"); + calData.test_value_four=getValueByHeader(dataRes[i],headers,"示值4"); + calData.test_value_five=getValueByHeader(dataRes[i],headers,"示值5"); + calData.test_value_six=getValueByHeader(dataRes[i],headers,"示值6"); + calData.average_value=getValueByHeader(dataRes[i],headers,"算数平均值"); + calData.standard_deviation=getValueByHeader(dataRes[i],headers,"标准偏差S(X)"); + calData.relative_repeatability=getValueByHeader(dataRes[i],headers,"相对重复性"); + }else{ + for(int k=0;k +#include "basecommonapi.h" + +namespace Ui { +class DialogVerifyResult; +} + +class DialogVerifyResult : public QDialog +{ + Q_OBJECT + +public: + explicit DialogVerifyResult(QWidget *parent = nullptr); + ~DialogVerifyResult(); + void setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds); +private slots: + void on_pushButtonSave_2_clicked(); + +private: + void deleteItem(QLayout *layout); + void initCheckTable(int idx); + QString getValueByHeader(QStringList dataList,QStringList headList,QString sName); + +private: + Ui::DialogVerifyResult *ui; + int mainTabIdx=-1; + int iEquipType=1; + QMap>>* veriDataMapList; + QMap>* veriHeadList; + CheckProgramManage* programInfo; + QString selectStdIds; + QString selectBizIds; +}; + +#endif // DIALOGVERIFYRESULT_H diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index 2f25c21..596e608 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -42,6 +42,7 @@ depar_task_server.cpp \ dialogcheckresult.cpp \ dialogdcstabinput.cpp \ + dialogverifyresult.cpp \ formaddrsetting.cpp \ formbizdeviceselect.cpp \ formcheckpoint.cpp \ @@ -79,6 +80,7 @@ createtask_scandevice.h \ databaseconnectionmainsys.h \ dialogdcstabinput.h \ + dialogverifyresult.h \ formaddrsetting.h \ formbizdeviceselect.h \ formcommsetting.h \ @@ -140,6 +142,7 @@ depar_task.ui \ dialogcheckresult.ui \ dialogdcstabinput.ui \ + dialogverifyresult.ui \ formaddrsetting.ui \ formbizdeviceselect.ui \ formcheckpoint.ui \ diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index f7baed7..17024c4 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6916,7 +6916,7 @@ return isSuccess; } //【保存】核查基本信息 -bool InsertStandardCheckInfo(StandardCheckInfo info) +bool BaseCommonApi::InsertStandardCheckInfo(StandardCheckInfo info) { QSqlQuery query; query.prepare("INSERT INTO biz_equipment_standard_check_info ( id, data_no, check_date, check_address, temperature, humidity, " diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 7123fac..5b6615f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -28,6 +28,7 @@ QString rolenName; VerificationProgramConfigInterface programInterface; QList cmdList; + VisaCommonEngine* visaEngine=nullptr; }; class CheckWindow : public QWidget diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp new file mode 100644 index 0000000..1cf2a9a --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp @@ -0,0 +1,291 @@ +#include "dialogverifyresult.h" +#include "ui_dialogverifyresult.h" +#include "basecommonapi.h" + +DialogVerifyResult::DialogVerifyResult(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogVerifyResult) +{ + ui->setupUi(this); + QStringList headers; + headers <<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注";; + ui->tableWidgetStd->setColumnCount(headers.count()); + ui->tableWidgetStd->setHorizontalHeaderLabels(headers); + ui->tableWidgetChecker->setColumnCount(headers.count()); + ui->tableWidgetChecker->setHorizontalHeaderLabels(headers); + for(int i=1;itableWidgetStd->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetChecker->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + ui->tableWidgetStd->verticalHeader()->setParent(nullptr); + ui->tableWidgetChecker->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheckStable->verticalHeader()->setParent(nullptr); +} + +DialogVerifyResult::~DialogVerifyResult() +{ + delete ui; +} + +void DialogVerifyResult::deleteItem(QLayout *layout) +{ + QLayoutItem *child; + while ((child = layout->takeAt(0)) != nullptr) + { + //setParent为NULL,防止删除之后界面不消失 + if(child->widget()) + { + child->widget()->setParent(nullptr); + delete child->widget(); + } + else if (child->layout()) + { + deleteItem(child->layout()); + child->layout()->deleteLater(); + } + delete child; + } +} + +void DialogVerifyResult::setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds) +{ + iEquipType=iType; + veriDataMapList=data; + veriHeadList = header; + programInfo=program; + selectStdIds = stdId; + selectBizIds=bizIds; + + QStringList idList = selectStdIds.split(","); + int rowCount=0; + int row=0; + for(const QString& id : idList) + { + //<<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetStd->insertRow(rowCount); + ui->tableWidgetStd->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetStd->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetStd->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetStd->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetStd->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetStd->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetStd->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + idList = selectBizIds.split(","); + rowCount=0; + row=0; + for(const QString& id : idList) + { + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetChecker->insertRow(rowCount); + ui->tableWidgetChecker->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetChecker->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetChecker->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetChecker->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetChecker->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetChecker->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetChecker->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + deleteItem(ui->horizontalLayoutMain); + mainTabIdx=-1; + int index=0; + for (const auto &item : veriHeadList->keys()) { + // ======================================================================================== + // 按钮设置显示 + // ==================================================================================== + QPushButton *button = new QPushButton(item, this); + //设置样式 + // 设置按钮大小为 56x20 + //固定大小文字显示不全 + //button->setFixedSize(85, 40); + button->setCheckable(true); + button->setAutoExclusive(true); + //设置第一个按钮选中状态 + if(index==0){ button->setChecked(true);} + //button->setc(true); + // 设置按钮样式表 + button->setStyleSheet("QPushButton {" + "border: 1px solid white;" // 白色边框 + "border-bottom: 2px solid rgba(0, 255, 255, 1);" // 浅蓝色下划线 + "background-color: rgba(242, 242, 242, 1);" // 浅灰色背景 + "height:40px;" + "padding:5px;" + "}" + "QPushButton:hover {" + "background-color: rgba(215, 215, 215, 1);;" // 鼠标悬停时变为深灰色背景 + "}" + "QPushButton:checked {" + "color: white;" + "background-color: rgb(74, 102, 186);" // 选中时变为蓝色背景 + "}"); + + ui->horizontalLayoutMain->addWidget(button); + connect(button, &QPushButton::clicked, this, [this,index]() { + //tackedWidget->setCurrentIndex(index); + initCheckTable(index); + }); + //pageButtons.append(button); + ++index; + } + ui->horizontalLayoutMain->addStretch(); + initCheckTable(0); +} + +void DialogVerifyResult::initCheckTable(int idx) +{ + if(mainTabIdx==idx) + return; + mainTabIdx = idx; + QString sLabel = veriHeadList->keys()[mainTabIdx]; + QString sLabel2 = "重复性"; + const auto veriData = veriDataMapList->value(sLabel); + auto dataRes = veriData.value(sLabel2); + const auto headDta = veriHeadList->value(sLabel); + auto headrs = headDta.value(sLabel2); + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + ui->tableWidgetCheck->setColumnCount(headrs.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } + + sLabel2 = "稳定性"; + dataRes = veriData.value(sLabel2); + headrs = headDta.value(sLabel2); + ui->tableWidgetCheckStable->clearContents(); + ui->tableWidgetCheckStable->setRowCount(0); + ui->tableWidgetCheckStable->setColumnCount(0); + ui->tableWidgetCheckStable->setColumnCount(headrs.count()); + ui->tableWidgetCheckStable->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheckStable->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheckStable->rowCount(); + ui->tableWidgetCheckStable->insertRow(rowCount); + ui->tableWidgetCheckStable->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheckStable->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } +} + +QString DialogVerifyResult::getValueByHeader(QStringList dataList,QStringList headList,QString sName){ + for(int i=0;ilineEditNo->text();//数据编号 + baseInfo.check_date=ui->dateEditTime->text();//核查日期 + baseInfo.check_address=ui->comboBoxPlace->currentText();//核查地点 + baseInfo.temperature=ui->lineEditTemp->text();//温度 + baseInfo.humidity=ui->lineEdit_Hum->text();//湿度 + baseInfo.check_accord=ui->lineEditRule->text();//核查依据(即标准装置的作业指导书文件minio文件名,多个分号分割) + baseInfo.stability_examine=ui->comboBoxExam->currentText();//是否用于稳定性考核(1/0) + baseInfo.standard_equipment_id=programInfo->belong_standard_equipment_name;//被核查标准装置id + //QString equipment_id;//被核查设备id + baseInfo.item_category_id=programInfo->equipment_type;//核查项分类id + baseInfo.conclusion=ui->comboBoxConclusion->currentText();//结论(字典value) + baseInfo.remark=ui->lineEditNote->text();//备注 + //QString create_user_id;//核查员id + baseInfo.create_user_name=ui->comboBox_User->currentText();//核查员 + baseInfo.create_time=baseInfo.update_time=QDateTime::currentDateTime(); + if(BaseCommonApi::InsertStandardCheckInfo(baseInfo)){ + switch (iEquipType) { + case 1: + for(QString sLabel : veriHeadList->keys()){ + QMap items = veriHeadList->value(sLabel); + for(QString sLabel2 : items.keys()){ + QList dataRes = veriDataMapList->value(sLabel).value(sLabel2); + QStringList headers = items.value(sLabel2); + for (int i = 0; i < dataRes.count(); ++i) { + StandardCheckDataCalibrator calData; + calData.id= QString::number(api.generateId()); + calData.data_id = baseInfo.id;//核查数据管理基础信息表id + calData.check_type=getValueByHeader(dataRes[i],headers,"核查类型");//核查类型(直接存字典value) + calData.test_type=getValueByHeader(dataRes[i],headers,"核查点类型"); + calData.params=getValueByHeader(dataRes[i],headers,"核查项目"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + calData.frequency=getValueByHeader(dataRes[i],headers,"频率"); + calData.frequency_unit=getValueByHeader(dataRes[i],headers,"频率单位"); + calData.check_point=getValueByHeader(dataRes[i],headers,"核查点"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + + if(sLabel2=="重复性"){ + calData.test_value_one=getValueByHeader(dataRes[i],headers,"示值1"); + calData.test_value_two=getValueByHeader(dataRes[i],headers,"示值2"); + calData.test_value_three=getValueByHeader(dataRes[i],headers,"示值3"); + calData.test_value_four=getValueByHeader(dataRes[i],headers,"示值4"); + calData.test_value_five=getValueByHeader(dataRes[i],headers,"示值5"); + calData.test_value_six=getValueByHeader(dataRes[i],headers,"示值6"); + calData.average_value=getValueByHeader(dataRes[i],headers,"算数平均值"); + calData.standard_deviation=getValueByHeader(dataRes[i],headers,"标准偏差S(X)"); + calData.relative_repeatability=getValueByHeader(dataRes[i],headers,"相对重复性"); + }else{ + for(int k=0;k +#include "basecommonapi.h" + +namespace Ui { +class DialogVerifyResult; +} + +class DialogVerifyResult : public QDialog +{ + Q_OBJECT + +public: + explicit DialogVerifyResult(QWidget *parent = nullptr); + ~DialogVerifyResult(); + void setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds); +private slots: + void on_pushButtonSave_2_clicked(); + +private: + void deleteItem(QLayout *layout); + void initCheckTable(int idx); + QString getValueByHeader(QStringList dataList,QStringList headList,QString sName); + +private: + Ui::DialogVerifyResult *ui; + int mainTabIdx=-1; + int iEquipType=1; + QMap>>* veriDataMapList; + QMap>* veriHeadList; + CheckProgramManage* programInfo; + QString selectStdIds; + QString selectBizIds; +}; + +#endif // DIALOGVERIFYRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.ui b/softwareDirectory/AutoVerScheme/dialogverifyresult.ui new file mode 100644 index 0000000..a01024e --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.ui @@ -0,0 +1,387 @@ + + + DialogVerifyResult + + + + 0 + 0 + 1484 + 941 + + + + Dialog + + + background-color: rgb(255, 255, 255); + + + + + + background-color: rgb(51, 69, 130); + + + + 10 + + + + + + 0 + 0 + + + + + 48 + 48 + + + + image: url(:/image/Index/u1176.svg); + + + + + + + + + + + 1 + 0 + + + + + 18 + 75 + true + + + + color: rgb(255, 255, 255); + + + 结果保存 + + + + + + + + + + + + + 75 + true + + + + 核查基本信息 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 75 + true + + + + background-color: rgb(51, 69, 130); +color: rgb(255, 255, 255); + + + 保存结果 + + + + :/image/Index/u1180.svg + + + + + + + + + + + + 核查地点: + + + + + + + + + + 核查数据编号: + + + + + + + 环境湿度: + + + + + + + + 设备性能正常 + + + + + 设备性能异常 + + + + + + + + + + + 核查日期: + + + + + + + 核查依据: + + + + + + + + + + 核查员: + + + + + + + + + + + + + + + + + + + + + 是否用于稳定性考核: + + + + + + + 环境温度: + + + + + + + 备注: + + + + + + + 结论: + + + + + + + true + + + + + + + true + + + + + + + + + + + + + + + + + + + 75 + true + + + + 核查标准设备 + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + false + + + + + + + + 75 + true + + + + 被核查设备 + + + + + + + + 0 + 0 + + + + + 0 + 100 + + + + false + + + + + + + + 75 + true + + + + 核查结果信息 + + + + + + + + + + + 75 + true + + + + 重复性 + + + + + + + false + + + + + + + + 75 + true + + + + 稳定性 + + + + + + + false + + + + + + + + diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index 2f25c21..596e608 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -42,6 +42,7 @@ depar_task_server.cpp \ dialogcheckresult.cpp \ dialogdcstabinput.cpp \ + dialogverifyresult.cpp \ formaddrsetting.cpp \ formbizdeviceselect.cpp \ formcheckpoint.cpp \ @@ -79,6 +80,7 @@ createtask_scandevice.h \ databaseconnectionmainsys.h \ dialogdcstabinput.h \ + dialogverifyresult.h \ formaddrsetting.h \ formbizdeviceselect.h \ formcommsetting.h \ @@ -140,6 +142,7 @@ depar_task.ui \ dialogcheckresult.ui \ dialogdcstabinput.ui \ + dialogverifyresult.ui \ formaddrsetting.ui \ formbizdeviceselect.ui \ formcheckpoint.ui \ diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index f7baed7..17024c4 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6916,7 +6916,7 @@ return isSuccess; } //【保存】核查基本信息 -bool InsertStandardCheckInfo(StandardCheckInfo info) +bool BaseCommonApi::InsertStandardCheckInfo(StandardCheckInfo info) { QSqlQuery query; query.prepare("INSERT INTO biz_equipment_standard_check_info ( id, data_no, check_date, check_address, temperature, humidity, " diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 7123fac..5b6615f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -28,6 +28,7 @@ QString rolenName; VerificationProgramConfigInterface programInterface; QList cmdList; + VisaCommonEngine* visaEngine=nullptr; }; class CheckWindow : public QWidget diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp new file mode 100644 index 0000000..1cf2a9a --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp @@ -0,0 +1,291 @@ +#include "dialogverifyresult.h" +#include "ui_dialogverifyresult.h" +#include "basecommonapi.h" + +DialogVerifyResult::DialogVerifyResult(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogVerifyResult) +{ + ui->setupUi(this); + QStringList headers; + headers <<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注";; + ui->tableWidgetStd->setColumnCount(headers.count()); + ui->tableWidgetStd->setHorizontalHeaderLabels(headers); + ui->tableWidgetChecker->setColumnCount(headers.count()); + ui->tableWidgetChecker->setHorizontalHeaderLabels(headers); + for(int i=1;itableWidgetStd->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetChecker->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + ui->tableWidgetStd->verticalHeader()->setParent(nullptr); + ui->tableWidgetChecker->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheckStable->verticalHeader()->setParent(nullptr); +} + +DialogVerifyResult::~DialogVerifyResult() +{ + delete ui; +} + +void DialogVerifyResult::deleteItem(QLayout *layout) +{ + QLayoutItem *child; + while ((child = layout->takeAt(0)) != nullptr) + { + //setParent为NULL,防止删除之后界面不消失 + if(child->widget()) + { + child->widget()->setParent(nullptr); + delete child->widget(); + } + else if (child->layout()) + { + deleteItem(child->layout()); + child->layout()->deleteLater(); + } + delete child; + } +} + +void DialogVerifyResult::setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds) +{ + iEquipType=iType; + veriDataMapList=data; + veriHeadList = header; + programInfo=program; + selectStdIds = stdId; + selectBizIds=bizIds; + + QStringList idList = selectStdIds.split(","); + int rowCount=0; + int row=0; + for(const QString& id : idList) + { + //<<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetStd->insertRow(rowCount); + ui->tableWidgetStd->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetStd->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetStd->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetStd->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetStd->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetStd->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetStd->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + idList = selectBizIds.split(","); + rowCount=0; + row=0; + for(const QString& id : idList) + { + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetChecker->insertRow(rowCount); + ui->tableWidgetChecker->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetChecker->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetChecker->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetChecker->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetChecker->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetChecker->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetChecker->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + deleteItem(ui->horizontalLayoutMain); + mainTabIdx=-1; + int index=0; + for (const auto &item : veriHeadList->keys()) { + // ======================================================================================== + // 按钮设置显示 + // ==================================================================================== + QPushButton *button = new QPushButton(item, this); + //设置样式 + // 设置按钮大小为 56x20 + //固定大小文字显示不全 + //button->setFixedSize(85, 40); + button->setCheckable(true); + button->setAutoExclusive(true); + //设置第一个按钮选中状态 + if(index==0){ button->setChecked(true);} + //button->setc(true); + // 设置按钮样式表 + button->setStyleSheet("QPushButton {" + "border: 1px solid white;" // 白色边框 + "border-bottom: 2px solid rgba(0, 255, 255, 1);" // 浅蓝色下划线 + "background-color: rgba(242, 242, 242, 1);" // 浅灰色背景 + "height:40px;" + "padding:5px;" + "}" + "QPushButton:hover {" + "background-color: rgba(215, 215, 215, 1);;" // 鼠标悬停时变为深灰色背景 + "}" + "QPushButton:checked {" + "color: white;" + "background-color: rgb(74, 102, 186);" // 选中时变为蓝色背景 + "}"); + + ui->horizontalLayoutMain->addWidget(button); + connect(button, &QPushButton::clicked, this, [this,index]() { + //tackedWidget->setCurrentIndex(index); + initCheckTable(index); + }); + //pageButtons.append(button); + ++index; + } + ui->horizontalLayoutMain->addStretch(); + initCheckTable(0); +} + +void DialogVerifyResult::initCheckTable(int idx) +{ + if(mainTabIdx==idx) + return; + mainTabIdx = idx; + QString sLabel = veriHeadList->keys()[mainTabIdx]; + QString sLabel2 = "重复性"; + const auto veriData = veriDataMapList->value(sLabel); + auto dataRes = veriData.value(sLabel2); + const auto headDta = veriHeadList->value(sLabel); + auto headrs = headDta.value(sLabel2); + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + ui->tableWidgetCheck->setColumnCount(headrs.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } + + sLabel2 = "稳定性"; + dataRes = veriData.value(sLabel2); + headrs = headDta.value(sLabel2); + ui->tableWidgetCheckStable->clearContents(); + ui->tableWidgetCheckStable->setRowCount(0); + ui->tableWidgetCheckStable->setColumnCount(0); + ui->tableWidgetCheckStable->setColumnCount(headrs.count()); + ui->tableWidgetCheckStable->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheckStable->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheckStable->rowCount(); + ui->tableWidgetCheckStable->insertRow(rowCount); + ui->tableWidgetCheckStable->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheckStable->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } +} + +QString DialogVerifyResult::getValueByHeader(QStringList dataList,QStringList headList,QString sName){ + for(int i=0;ilineEditNo->text();//数据编号 + baseInfo.check_date=ui->dateEditTime->text();//核查日期 + baseInfo.check_address=ui->comboBoxPlace->currentText();//核查地点 + baseInfo.temperature=ui->lineEditTemp->text();//温度 + baseInfo.humidity=ui->lineEdit_Hum->text();//湿度 + baseInfo.check_accord=ui->lineEditRule->text();//核查依据(即标准装置的作业指导书文件minio文件名,多个分号分割) + baseInfo.stability_examine=ui->comboBoxExam->currentText();//是否用于稳定性考核(1/0) + baseInfo.standard_equipment_id=programInfo->belong_standard_equipment_name;//被核查标准装置id + //QString equipment_id;//被核查设备id + baseInfo.item_category_id=programInfo->equipment_type;//核查项分类id + baseInfo.conclusion=ui->comboBoxConclusion->currentText();//结论(字典value) + baseInfo.remark=ui->lineEditNote->text();//备注 + //QString create_user_id;//核查员id + baseInfo.create_user_name=ui->comboBox_User->currentText();//核查员 + baseInfo.create_time=baseInfo.update_time=QDateTime::currentDateTime(); + if(BaseCommonApi::InsertStandardCheckInfo(baseInfo)){ + switch (iEquipType) { + case 1: + for(QString sLabel : veriHeadList->keys()){ + QMap items = veriHeadList->value(sLabel); + for(QString sLabel2 : items.keys()){ + QList dataRes = veriDataMapList->value(sLabel).value(sLabel2); + QStringList headers = items.value(sLabel2); + for (int i = 0; i < dataRes.count(); ++i) { + StandardCheckDataCalibrator calData; + calData.id= QString::number(api.generateId()); + calData.data_id = baseInfo.id;//核查数据管理基础信息表id + calData.check_type=getValueByHeader(dataRes[i],headers,"核查类型");//核查类型(直接存字典value) + calData.test_type=getValueByHeader(dataRes[i],headers,"核查点类型"); + calData.params=getValueByHeader(dataRes[i],headers,"核查项目"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + calData.frequency=getValueByHeader(dataRes[i],headers,"频率"); + calData.frequency_unit=getValueByHeader(dataRes[i],headers,"频率单位"); + calData.check_point=getValueByHeader(dataRes[i],headers,"核查点"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + + if(sLabel2=="重复性"){ + calData.test_value_one=getValueByHeader(dataRes[i],headers,"示值1"); + calData.test_value_two=getValueByHeader(dataRes[i],headers,"示值2"); + calData.test_value_three=getValueByHeader(dataRes[i],headers,"示值3"); + calData.test_value_four=getValueByHeader(dataRes[i],headers,"示值4"); + calData.test_value_five=getValueByHeader(dataRes[i],headers,"示值5"); + calData.test_value_six=getValueByHeader(dataRes[i],headers,"示值6"); + calData.average_value=getValueByHeader(dataRes[i],headers,"算数平均值"); + calData.standard_deviation=getValueByHeader(dataRes[i],headers,"标准偏差S(X)"); + calData.relative_repeatability=getValueByHeader(dataRes[i],headers,"相对重复性"); + }else{ + for(int k=0;k +#include "basecommonapi.h" + +namespace Ui { +class DialogVerifyResult; +} + +class DialogVerifyResult : public QDialog +{ + Q_OBJECT + +public: + explicit DialogVerifyResult(QWidget *parent = nullptr); + ~DialogVerifyResult(); + void setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds); +private slots: + void on_pushButtonSave_2_clicked(); + +private: + void deleteItem(QLayout *layout); + void initCheckTable(int idx); + QString getValueByHeader(QStringList dataList,QStringList headList,QString sName); + +private: + Ui::DialogVerifyResult *ui; + int mainTabIdx=-1; + int iEquipType=1; + QMap>>* veriDataMapList; + QMap>* veriHeadList; + CheckProgramManage* programInfo; + QString selectStdIds; + QString selectBizIds; +}; + +#endif // DIALOGVERIFYRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.ui b/softwareDirectory/AutoVerScheme/dialogverifyresult.ui new file mode 100644 index 0000000..a01024e --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.ui @@ -0,0 +1,387 @@ + + + DialogVerifyResult + + + + 0 + 0 + 1484 + 941 + + + + Dialog + + + background-color: rgb(255, 255, 255); + + + + + + background-color: rgb(51, 69, 130); + + + + 10 + + + + + + 0 + 0 + + + + + 48 + 48 + + + + image: url(:/image/Index/u1176.svg); + + + + + + + + + + + 1 + 0 + + + + + 18 + 75 + true + + + + color: rgb(255, 255, 255); + + + 结果保存 + + + + + + + + + + + + + 75 + true + + + + 核查基本信息 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 75 + true + + + + background-color: rgb(51, 69, 130); +color: rgb(255, 255, 255); + + + 保存结果 + + + + :/image/Index/u1180.svg + + + + + + + + + + + + 核查地点: + + + + + + + + + + 核查数据编号: + + + + + + + 环境湿度: + + + + + + + + 设备性能正常 + + + + + 设备性能异常 + + + + + + + + + + + 核查日期: + + + + + + + 核查依据: + + + + + + + + + + 核查员: + + + + + + + + + + + + + + + + + + + + + 是否用于稳定性考核: + + + + + + + 环境温度: + + + + + + + 备注: + + + + + + + 结论: + + + + + + + true + + + + + + + true + + + + + + + + + + + + + + + + + + + 75 + true + + + + 核查标准设备 + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + false + + + + + + + + 75 + true + + + + 被核查设备 + + + + + + + + 0 + 0 + + + + + 0 + 100 + + + + false + + + + + + + + 75 + true + + + + 核查结果信息 + + + + + + + + + + + 75 + true + + + + 重复性 + + + + + + + false + + + + + + + + 75 + true + + + + 稳定性 + + + + + + + false + + + + + + + + diff --git a/softwareDirectory/AutoVerScheme/newverifymethod.cpp b/softwareDirectory/AutoVerScheme/newverifymethod.cpp index b8414c2..d8f6dd6 100644 --- a/softwareDirectory/AutoVerScheme/newverifymethod.cpp +++ b/softwareDirectory/AutoVerScheme/newverifymethod.cpp @@ -403,8 +403,10 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.belong_standard_equipment = QString::number(ui->comboBoxEquipment->currentIndex()+1); int idx = ui->comboBoxCategory->currentIndex(); - if(idx>=0&&idx=0&&idxlineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); programInfo.remark = ui->lineEditMark->text(); @@ -420,8 +422,10 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.belong_standard_equipment = QString::number(ui->comboBoxEquipment->currentIndex()+1); int idx = ui->comboBoxCategory->currentIndex(); - if(idx>=0&&idx=0&&idxlineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); programInfo.update_time = QDateTime::currentDateTime(); diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index 2f25c21..596e608 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -42,6 +42,7 @@ depar_task_server.cpp \ dialogcheckresult.cpp \ dialogdcstabinput.cpp \ + dialogverifyresult.cpp \ formaddrsetting.cpp \ formbizdeviceselect.cpp \ formcheckpoint.cpp \ @@ -79,6 +80,7 @@ createtask_scandevice.h \ databaseconnectionmainsys.h \ dialogdcstabinput.h \ + dialogverifyresult.h \ formaddrsetting.h \ formbizdeviceselect.h \ formcommsetting.h \ @@ -140,6 +142,7 @@ depar_task.ui \ dialogcheckresult.ui \ dialogdcstabinput.ui \ + dialogverifyresult.ui \ formaddrsetting.ui \ formbizdeviceselect.ui \ formcheckpoint.ui \ diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index f7baed7..17024c4 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6916,7 +6916,7 @@ return isSuccess; } //【保存】核查基本信息 -bool InsertStandardCheckInfo(StandardCheckInfo info) +bool BaseCommonApi::InsertStandardCheckInfo(StandardCheckInfo info) { QSqlQuery query; query.prepare("INSERT INTO biz_equipment_standard_check_info ( id, data_no, check_date, check_address, temperature, humidity, " diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 7123fac..5b6615f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -28,6 +28,7 @@ QString rolenName; VerificationProgramConfigInterface programInterface; QList cmdList; + VisaCommonEngine* visaEngine=nullptr; }; class CheckWindow : public QWidget diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp new file mode 100644 index 0000000..1cf2a9a --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp @@ -0,0 +1,291 @@ +#include "dialogverifyresult.h" +#include "ui_dialogverifyresult.h" +#include "basecommonapi.h" + +DialogVerifyResult::DialogVerifyResult(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogVerifyResult) +{ + ui->setupUi(this); + QStringList headers; + headers <<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注";; + ui->tableWidgetStd->setColumnCount(headers.count()); + ui->tableWidgetStd->setHorizontalHeaderLabels(headers); + ui->tableWidgetChecker->setColumnCount(headers.count()); + ui->tableWidgetChecker->setHorizontalHeaderLabels(headers); + for(int i=1;itableWidgetStd->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetChecker->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + ui->tableWidgetStd->verticalHeader()->setParent(nullptr); + ui->tableWidgetChecker->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheckStable->verticalHeader()->setParent(nullptr); +} + +DialogVerifyResult::~DialogVerifyResult() +{ + delete ui; +} + +void DialogVerifyResult::deleteItem(QLayout *layout) +{ + QLayoutItem *child; + while ((child = layout->takeAt(0)) != nullptr) + { + //setParent为NULL,防止删除之后界面不消失 + if(child->widget()) + { + child->widget()->setParent(nullptr); + delete child->widget(); + } + else if (child->layout()) + { + deleteItem(child->layout()); + child->layout()->deleteLater(); + } + delete child; + } +} + +void DialogVerifyResult::setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds) +{ + iEquipType=iType; + veriDataMapList=data; + veriHeadList = header; + programInfo=program; + selectStdIds = stdId; + selectBizIds=bizIds; + + QStringList idList = selectStdIds.split(","); + int rowCount=0; + int row=0; + for(const QString& id : idList) + { + //<<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetStd->insertRow(rowCount); + ui->tableWidgetStd->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetStd->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetStd->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetStd->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetStd->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetStd->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetStd->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + idList = selectBizIds.split(","); + rowCount=0; + row=0; + for(const QString& id : idList) + { + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetChecker->insertRow(rowCount); + ui->tableWidgetChecker->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetChecker->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetChecker->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetChecker->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetChecker->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetChecker->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetChecker->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + deleteItem(ui->horizontalLayoutMain); + mainTabIdx=-1; + int index=0; + for (const auto &item : veriHeadList->keys()) { + // ======================================================================================== + // 按钮设置显示 + // ==================================================================================== + QPushButton *button = new QPushButton(item, this); + //设置样式 + // 设置按钮大小为 56x20 + //固定大小文字显示不全 + //button->setFixedSize(85, 40); + button->setCheckable(true); + button->setAutoExclusive(true); + //设置第一个按钮选中状态 + if(index==0){ button->setChecked(true);} + //button->setc(true); + // 设置按钮样式表 + button->setStyleSheet("QPushButton {" + "border: 1px solid white;" // 白色边框 + "border-bottom: 2px solid rgba(0, 255, 255, 1);" // 浅蓝色下划线 + "background-color: rgba(242, 242, 242, 1);" // 浅灰色背景 + "height:40px;" + "padding:5px;" + "}" + "QPushButton:hover {" + "background-color: rgba(215, 215, 215, 1);;" // 鼠标悬停时变为深灰色背景 + "}" + "QPushButton:checked {" + "color: white;" + "background-color: rgb(74, 102, 186);" // 选中时变为蓝色背景 + "}"); + + ui->horizontalLayoutMain->addWidget(button); + connect(button, &QPushButton::clicked, this, [this,index]() { + //tackedWidget->setCurrentIndex(index); + initCheckTable(index); + }); + //pageButtons.append(button); + ++index; + } + ui->horizontalLayoutMain->addStretch(); + initCheckTable(0); +} + +void DialogVerifyResult::initCheckTable(int idx) +{ + if(mainTabIdx==idx) + return; + mainTabIdx = idx; + QString sLabel = veriHeadList->keys()[mainTabIdx]; + QString sLabel2 = "重复性"; + const auto veriData = veriDataMapList->value(sLabel); + auto dataRes = veriData.value(sLabel2); + const auto headDta = veriHeadList->value(sLabel); + auto headrs = headDta.value(sLabel2); + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + ui->tableWidgetCheck->setColumnCount(headrs.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } + + sLabel2 = "稳定性"; + dataRes = veriData.value(sLabel2); + headrs = headDta.value(sLabel2); + ui->tableWidgetCheckStable->clearContents(); + ui->tableWidgetCheckStable->setRowCount(0); + ui->tableWidgetCheckStable->setColumnCount(0); + ui->tableWidgetCheckStable->setColumnCount(headrs.count()); + ui->tableWidgetCheckStable->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheckStable->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheckStable->rowCount(); + ui->tableWidgetCheckStable->insertRow(rowCount); + ui->tableWidgetCheckStable->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheckStable->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } +} + +QString DialogVerifyResult::getValueByHeader(QStringList dataList,QStringList headList,QString sName){ + for(int i=0;ilineEditNo->text();//数据编号 + baseInfo.check_date=ui->dateEditTime->text();//核查日期 + baseInfo.check_address=ui->comboBoxPlace->currentText();//核查地点 + baseInfo.temperature=ui->lineEditTemp->text();//温度 + baseInfo.humidity=ui->lineEdit_Hum->text();//湿度 + baseInfo.check_accord=ui->lineEditRule->text();//核查依据(即标准装置的作业指导书文件minio文件名,多个分号分割) + baseInfo.stability_examine=ui->comboBoxExam->currentText();//是否用于稳定性考核(1/0) + baseInfo.standard_equipment_id=programInfo->belong_standard_equipment_name;//被核查标准装置id + //QString equipment_id;//被核查设备id + baseInfo.item_category_id=programInfo->equipment_type;//核查项分类id + baseInfo.conclusion=ui->comboBoxConclusion->currentText();//结论(字典value) + baseInfo.remark=ui->lineEditNote->text();//备注 + //QString create_user_id;//核查员id + baseInfo.create_user_name=ui->comboBox_User->currentText();//核查员 + baseInfo.create_time=baseInfo.update_time=QDateTime::currentDateTime(); + if(BaseCommonApi::InsertStandardCheckInfo(baseInfo)){ + switch (iEquipType) { + case 1: + for(QString sLabel : veriHeadList->keys()){ + QMap items = veriHeadList->value(sLabel); + for(QString sLabel2 : items.keys()){ + QList dataRes = veriDataMapList->value(sLabel).value(sLabel2); + QStringList headers = items.value(sLabel2); + for (int i = 0; i < dataRes.count(); ++i) { + StandardCheckDataCalibrator calData; + calData.id= QString::number(api.generateId()); + calData.data_id = baseInfo.id;//核查数据管理基础信息表id + calData.check_type=getValueByHeader(dataRes[i],headers,"核查类型");//核查类型(直接存字典value) + calData.test_type=getValueByHeader(dataRes[i],headers,"核查点类型"); + calData.params=getValueByHeader(dataRes[i],headers,"核查项目"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + calData.frequency=getValueByHeader(dataRes[i],headers,"频率"); + calData.frequency_unit=getValueByHeader(dataRes[i],headers,"频率单位"); + calData.check_point=getValueByHeader(dataRes[i],headers,"核查点"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + + if(sLabel2=="重复性"){ + calData.test_value_one=getValueByHeader(dataRes[i],headers,"示值1"); + calData.test_value_two=getValueByHeader(dataRes[i],headers,"示值2"); + calData.test_value_three=getValueByHeader(dataRes[i],headers,"示值3"); + calData.test_value_four=getValueByHeader(dataRes[i],headers,"示值4"); + calData.test_value_five=getValueByHeader(dataRes[i],headers,"示值5"); + calData.test_value_six=getValueByHeader(dataRes[i],headers,"示值6"); + calData.average_value=getValueByHeader(dataRes[i],headers,"算数平均值"); + calData.standard_deviation=getValueByHeader(dataRes[i],headers,"标准偏差S(X)"); + calData.relative_repeatability=getValueByHeader(dataRes[i],headers,"相对重复性"); + }else{ + for(int k=0;k +#include "basecommonapi.h" + +namespace Ui { +class DialogVerifyResult; +} + +class DialogVerifyResult : public QDialog +{ + Q_OBJECT + +public: + explicit DialogVerifyResult(QWidget *parent = nullptr); + ~DialogVerifyResult(); + void setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds); +private slots: + void on_pushButtonSave_2_clicked(); + +private: + void deleteItem(QLayout *layout); + void initCheckTable(int idx); + QString getValueByHeader(QStringList dataList,QStringList headList,QString sName); + +private: + Ui::DialogVerifyResult *ui; + int mainTabIdx=-1; + int iEquipType=1; + QMap>>* veriDataMapList; + QMap>* veriHeadList; + CheckProgramManage* programInfo; + QString selectStdIds; + QString selectBizIds; +}; + +#endif // DIALOGVERIFYRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.ui b/softwareDirectory/AutoVerScheme/dialogverifyresult.ui new file mode 100644 index 0000000..a01024e --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.ui @@ -0,0 +1,387 @@ + + + DialogVerifyResult + + + + 0 + 0 + 1484 + 941 + + + + Dialog + + + background-color: rgb(255, 255, 255); + + + + + + background-color: rgb(51, 69, 130); + + + + 10 + + + + + + 0 + 0 + + + + + 48 + 48 + + + + image: url(:/image/Index/u1176.svg); + + + + + + + + + + + 1 + 0 + + + + + 18 + 75 + true + + + + color: rgb(255, 255, 255); + + + 结果保存 + + + + + + + + + + + + + 75 + true + + + + 核查基本信息 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 75 + true + + + + background-color: rgb(51, 69, 130); +color: rgb(255, 255, 255); + + + 保存结果 + + + + :/image/Index/u1180.svg + + + + + + + + + + + + 核查地点: + + + + + + + + + + 核查数据编号: + + + + + + + 环境湿度: + + + + + + + + 设备性能正常 + + + + + 设备性能异常 + + + + + + + + + + + 核查日期: + + + + + + + 核查依据: + + + + + + + + + + 核查员: + + + + + + + + + + + + + + + + + + + + + 是否用于稳定性考核: + + + + + + + 环境温度: + + + + + + + 备注: + + + + + + + 结论: + + + + + + + true + + + + + + + true + + + + + + + + + + + + + + + + + + + 75 + true + + + + 核查标准设备 + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + false + + + + + + + + 75 + true + + + + 被核查设备 + + + + + + + + 0 + 0 + + + + + 0 + 100 + + + + false + + + + + + + + 75 + true + + + + 核查结果信息 + + + + + + + + + + + 75 + true + + + + 重复性 + + + + + + + false + + + + + + + + 75 + true + + + + 稳定性 + + + + + + + false + + + + + + + + diff --git a/softwareDirectory/AutoVerScheme/newverifymethod.cpp b/softwareDirectory/AutoVerScheme/newverifymethod.cpp index b8414c2..d8f6dd6 100644 --- a/softwareDirectory/AutoVerScheme/newverifymethod.cpp +++ b/softwareDirectory/AutoVerScheme/newverifymethod.cpp @@ -403,8 +403,10 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.belong_standard_equipment = QString::number(ui->comboBoxEquipment->currentIndex()+1); int idx = ui->comboBoxCategory->currentIndex(); - if(idx>=0&&idx=0&&idxlineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); programInfo.remark = ui->lineEditMark->text(); @@ -420,8 +422,10 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.belong_standard_equipment = QString::number(ui->comboBoxEquipment->currentIndex()+1); int idx = ui->comboBoxCategory->currentIndex(); - if(idx>=0&&idx=0&&idxlineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); programInfo.update_time = QDateTime::currentDateTime(); diff --git a/softwareDirectory/AutoVerScheme/verifywindow.cpp b/softwareDirectory/AutoVerScheme/verifywindow.cpp index c3abf8b..db78a4c 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.cpp +++ b/softwareDirectory/AutoVerScheme/verifywindow.cpp @@ -3,6 +3,7 @@ #include #include #include "newverifymethod.h" +#include "dialogverifyresult.h" VerifyWindow::VerifyWindow(QWidget *parent) : QWidget(parent), @@ -18,13 +19,16 @@ for(int i=0;i<2;i++) ui->tableWidget_3->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidget_3->setSelectionBehavior(QAbstractItemView::SelectRows); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); for(int i=1;i<6;i++){ ui->tableWidgetStd->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidgetBiz->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); } ui->tableWidgetStd->setColumnWidth(0, 60); ui->tableWidgetBiz->setColumnWidth(0, 60); - + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); //统一定义单位转换系数 unitTransList=readDataFromFile("unitTrans.txt"); //统一定义命令占位符 @@ -291,12 +295,15 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; connectList.clear(); if(stdId!="") { + selectStdIds = stdId; idList = stdId.split(","); for(const QString& id : idList) { @@ -321,6 +328,7 @@ } if(bizId!=""){ + selectBizIds =bizId; idList = bizId.split(","); for(const QString& id : idList) { @@ -351,6 +359,10 @@ ui->tableWidget_3->insertRow(rowCount); ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 row++; } ui->tableWidget_3->selectRow(0); @@ -574,6 +586,15 @@ if(mainTabIdx==idx) return; mainTabIdx = idx; + for(int i=0;ihorizontalLayoutMain->itemAt(i); + QPushButton *btn_1 = qobject_cast(child->widget()); + if(i==mainTabIdx){ + btn_1->setChecked(true); + }else{ + btn_1->setChecked(false); + } + } deleteItem(ui->horizontalLayoutItem); itemTabIdx=-1; @@ -615,6 +636,16 @@ ++index; } ui->horizontalLayoutItem->addStretch(); + if(iEquipType==1){ + QComboBox *comboBox=new QComboBox(); + comboBox->addItems({"ALL","最佳点","最差点","典型点"}); + // 连接下拉框的currentIndexChanged信号到槽函数 + connect(comboBox, &QComboBox::currentTextChanged, this, [this,comboBox]() { + initCheckItemData(itemTabIdx,comboBox->currentText(),true); + //onComboBoxCurrTextChanged(comboBox->currentText(),id,i); + }); + ui->horizontalLayoutItem->addWidget(comboBox); + } initCheckItemData(0); // ui->tableWidgetCheck->clearContents(); // ui->tableWidgetCheck->setRowCount(0); @@ -671,13 +702,22 @@ // deviceEngine.openDevice(connectList[1].programInterface.visa,"Visa"); } -void VerifyWindow::initCheckItemData(int idx){ - if(itemTabIdx==idx) +void VerifyWindow::initCheckItemData(int idx,QString filter,bool bForce){ + if(itemTabIdx==idx&&!bForce) return; itemTabIdx = idx; QString sLabel = veriHeadList.keys()[mainTabIdx]; const auto items = veriHeadList.value(sLabel); + for(int i=0;ihorizontalLayoutItem->itemAt(i); + QPushButton *btn_1 = qobject_cast(child->widget()); + if(i==itemTabIdx){ + btn_1->setChecked(true); + }else{ + btn_1->setChecked(false); + } + } QString sLabel2 = items.keys()[itemTabIdx]; const auto headrs = items.value(sLabel2); @@ -693,8 +733,11 @@ int rowCount = 0; const auto items2 = veriDataMapList.value(sLabel); const auto dataRes = items2.value(sLabel2); + int typeIdx = getIndexByHeader(sLabel,sLabel2,QStrTranQStrList("核查点类型")); for (int i = 0; i < dataRes.count(); ++i) { //获取行号 并进行添加行 + if(iEquipType==1&&typeIdx!=-1&&filter!="ALL"&&filter!=dataRes[i][typeIdx]) + continue; rowCount = ui->tableWidgetCheck->rowCount(); ui->tableWidgetCheck->insertRow(rowCount); ui->tableWidgetCheck->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); @@ -716,6 +759,14 @@ return nullptr; } +VisaCommonEngine* VerifyWindow::getVisaEngineByIdx(int idx) +{ + if(idx>=0&&idx dataRes = items.value(labelItem); + int itemIdx = veriData.keys().indexOf(labelItem); + initCheckItemData(itemIdx,"ALL",true); + QList dataRes = veriData.value(labelItem); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(constsLable)); for (int i = 0; i < dataRes.count(); ++i) { @@ -817,7 +868,7 @@ int idx= getIndexByHeader(constsLable,labelItem,TempValue); if(idx!=-1) sParam = dataRes[i][idx]; - //CheckBackColorUpdate(true,i); + CheckBackColorUpdate(true,i); //暂时加到这个地方 后面统一编写 if(sParam=="DCI"||sParam=="ACI") @@ -841,37 +892,55 @@ } } //标准器输出 - InstructionLib *instrcutLibstan = getCmdByCheckName(1,sParam); - SendDevice(instrcutLibstan,&standardEngine,true); - //被检设备读数 - BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); - InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); - SendDevice(instrcutLib,&deviceEngine); - //读取6次测试值 + InstructionLib *instrcutLibstan = getCmdByCheckName(0,sParam); + VisaCommonEngine *standardEngine = getVisaEngineByIdx(0); + SendDevice(instrcutLibstan,standardEngine,true); + //核查件输出 + BaseCommonApi::SaveLogInfo(1,QString("核查件配置")); + InstructionLib *instrcutLib = getCmdByCheckName(1,sParam); + VisaCommonEngine *deviceEngine = getVisaEngineByIdx(1); + SendDevice(instrcutLib,deviceEngine); + //核查件读取6次测试值 for(QString head : readItems){ - sRet=ReadDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,deviceEngine); if(sRet!=""){ TempValue.clear(); TempValue.append("单位"); idx= getIndexByHeader(constsLable,labelItem,TempValue); dStdValue = transUnit(sRet,dataRes[i][idx]); } - autoAdujstData(constsLable,labelItem,head,i,dStdValue,dataRes); + autoAdujstData(constsLable,labelItem,head,i,dStdValue,dataRes,veriData); //CheckBackColorUpdate(false,i); Delay_MSec(1000); } closeCmd(); - //CheckBackColorUpdate(false,i); + CheckBackColorUpdate(false,i); Delay_MSec(2000); } - items.insert(labelItem,dataRes); - veriDataMapList.insert(constsLable,items); + veriData.insert(labelItem,dataRes); + veriDataMapList.insert(constsLable,veriData); } closeDevice(); } -void VerifyWindow::autoAdujstData(QString sLabel,QString labelItem,QString header,int i,double dStdValue,QList& dataRes){ - double dError; +void VerifyWindow::CheckBackColorUpdate(bool State,int row) +{ + QBrush colorBrush(Qt::white); + if(State) + { + QColor lightGreenColor(173, 216, 230); + colorBrush.setColor(lightGreenColor); + } + for (int col = 0; col < ui->tableWidgetCheck->columnCount(); ++col) { + QTableWidgetItem *item = ui->tableWidgetCheck->item(row, col); + if (item) { + item->setBackground(colorBrush); + } + } +} + +void VerifyWindow::autoAdujstData(QString sLabel,QString labelItem,QString header,int i,double dStdValue,QList& dataRes,QMap>& veriData){ + //double dError; QString newdStdValue,newdError,Value; if(iEquipType==1 ){ if(dStdValue==FP_INFINITE){ @@ -897,6 +966,7 @@ } QString sLast=readItems.last(); if(header==sLast){ + //计算平均值 double dMean=0; for(QString item : readItems){ idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList(item)); @@ -910,6 +980,7 @@ dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } + //计算标准偏差S double dStdErr = 0; for(QString item : readItems){ idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList(item)); @@ -923,6 +994,7 @@ dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } + //计算相对重复性 newdStdValue=QString::number(dStdErr/dMean,'f',4); idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList("相对重复性")); if(idx!=-1) @@ -930,6 +1002,53 @@ dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } + + //同步计算稳定性数据 + QString labelStable="稳定性"; + //auto veriData = veriDataMapList.value(constsLable); + QList dataStable = veriData.value(labelStable); + idx= getIndexByHeader(sLabel,labelStable,QStrTranQStrList("算数平均值")); + newdStdValue=QString::number(dMean,'f',4); + if(idx!=-1) + { + dataStable[i][idx-1] = newdStdValue; + dMean=0; + for(int k=idx-6;k0&&visa.type==0) - { - instrcutLib = getCmdByCheckName(count,"INIT"); - Engine=&deviceEngine; - } - if(connectList.length()>1&&visa.type==1) - { - instrcutLib = getCmdByCheckName(count,"INIT"); - if(connectList.count()==2){ - Engine=&standardEngine; - }else{ - int stancount=0; -// for (VisaCommonEngine &item:VisaStanEngineList) { -// if(stancount==count-1){ -// Engine=&item; -// break; -// } -// } - } - - } - SendDevice(instrcutLib,Engine); + VisaCommonEngine *Engine=visa.visaEngine; + InstructionLib *instrcutLib=getCmdByCheckName(count,"INIT"); + if(Engine!=nullptr&&instrcutLib!=nullptr) + SendDevice(instrcutLib,Engine); count++; } } void VerifyWindow::connectDevice(){ - int count=0; QString rolename; - for(const ConnectInfo &visa:connectList) + for(ConnectInfo &visa:connectList) { - VisaCommonEngine Engine; - if(Engine.openDevice(visa.programInterface.visa,"Visa")){ - if(connectList.length()>0&&visa.type==0) - { - deviceEngine=Engine; - } - if(connectList.length()>1&&visa.type==1) - { - if(connectList.count()==2){ - standardEngine=Engine; - }else{ - //rolename=this->GetdeviceidByRole(visa.programInterface.device_id); - //VisaStanEngineList.insert(rolename,Engine); - } - - } + if(visa.programInterface.visa!=""){ + if(visa.visaEngine==nullptr) + visa.visaEngine = new VisaCommonEngine; + visa.visaEngine->openDevice(visa.programInterface.visa,"Visa"); } - count++; - } } @@ -1081,30 +1165,11 @@ int count=0; for(const ConnectInfo &visa:connectList) { - VisaCommonEngine *Engine; - InstructionLib *instrcutLib; - if(connectList.length()>0&&visa.type==0) - { - instrcutLib = getCmdByCheckName(count,"CLOSE"); - Engine=&deviceEngine; - } - if(connectList.length()>1&&visa.type==1) - { - instrcutLib = getCmdByCheckName(count,"CLOSE"); - if(connectList.count()==2){ - Engine=&standardEngine; - }else{ - int stancount=0; -// for (VisaCommonEngine &item:VisaStanEngineList) { -// if(stancount==count-1){ -// Engine=&item; -// break; -// } -// } - } - - } - SendDevice(instrcutLib,Engine); + VisaCommonEngine *Engine=visa.visaEngine; + InstructionLib *instrcutLib= getCmdByCheckName(count,"CLOSE"); + if(Engine!=nullptr&&instrcutLib!=nullptr) + SendDevice(instrcutLib,Engine); + count++; } } @@ -1113,30 +1178,10 @@ int count=0; for(const ConnectInfo &visa:connectList) { - VisaCommonEngine *Engine; - if(connectList.length()>0&&visa.type==0) - { - Engine=&deviceEngine; - } - if(connectList.length()>1&&visa.type==1) - { - if(connectList.count()==2){ - Engine=&standardEngine; - }else{ - int stancount=0; -// for (VisaCommonEngine &item:VisaStanEngineList) { -// if(stancount==count-1){ -// Engine=&item; -// break; -// } -// } - } - - } + VisaCommonEngine *Engine=visa.visaEngine; if(Engine!=nullptr) Engine->closeDevice(); count++; - } } @@ -1246,7 +1291,12 @@ void VerifyWindow::on_pushButton_save_clicked() { - + DialogVerifyResult* dlg = new DialogVerifyResult; + //dlg->taskList =selectTaskList; + //dlg->deviceId = selectTaskList[0].sample_id; + dlg->setData(iEquipType,&veriDataMapList,&veriHeadList,&programInfo,selectStdIds,selectBizIds); + dlg->setModal(true); + dlg->show(); } void VerifyWindow::on_pushButton_close_clicked() @@ -1354,9 +1404,13 @@ } readItems.clear(); switch (iEquipType) { - case 1: + case 1: veriDataMapList = BaseCommonApi::getStandardCheckItemDataCalibrator(standardId,&veriHeadList); readItems << "示值1"<< "示值2"<< "示值3"<< "示值4"<< "示值5"<< "示值6"; break; + case 5: + veriDataMapList = BaseCommonApi::getStandardCheckItemDataResistanceThermometer(standardId,&veriHeadList); + readItems << "测量标准示值1"<< "测量标准示值2"<< "测量标准示值3"<< "测量标准示值4"<< "测量标准示值5"<< "测量标准示值6"; + break; } } diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index 2f25c21..596e608 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -42,6 +42,7 @@ depar_task_server.cpp \ dialogcheckresult.cpp \ dialogdcstabinput.cpp \ + dialogverifyresult.cpp \ formaddrsetting.cpp \ formbizdeviceselect.cpp \ formcheckpoint.cpp \ @@ -79,6 +80,7 @@ createtask_scandevice.h \ databaseconnectionmainsys.h \ dialogdcstabinput.h \ + dialogverifyresult.h \ formaddrsetting.h \ formbizdeviceselect.h \ formcommsetting.h \ @@ -140,6 +142,7 @@ depar_task.ui \ dialogcheckresult.ui \ dialogdcstabinput.ui \ + dialogverifyresult.ui \ formaddrsetting.ui \ formbizdeviceselect.ui \ formcheckpoint.ui \ diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index f7baed7..17024c4 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -6916,7 +6916,7 @@ return isSuccess; } //【保存】核查基本信息 -bool InsertStandardCheckInfo(StandardCheckInfo info) +bool BaseCommonApi::InsertStandardCheckInfo(StandardCheckInfo info) { QSqlQuery query; query.prepare("INSERT INTO biz_equipment_standard_check_info ( id, data_no, check_date, check_address, temperature, humidity, " diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 7123fac..5b6615f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -28,6 +28,7 @@ QString rolenName; VerificationProgramConfigInterface programInterface; QList cmdList; + VisaCommonEngine* visaEngine=nullptr; }; class CheckWindow : public QWidget diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp new file mode 100644 index 0000000..1cf2a9a --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp @@ -0,0 +1,291 @@ +#include "dialogverifyresult.h" +#include "ui_dialogverifyresult.h" +#include "basecommonapi.h" + +DialogVerifyResult::DialogVerifyResult(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogVerifyResult) +{ + ui->setupUi(this); + QStringList headers; + headers <<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注";; + ui->tableWidgetStd->setColumnCount(headers.count()); + ui->tableWidgetStd->setHorizontalHeaderLabels(headers); + ui->tableWidgetChecker->setColumnCount(headers.count()); + ui->tableWidgetChecker->setHorizontalHeaderLabels(headers); + for(int i=1;itableWidgetStd->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidgetChecker->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + ui->tableWidgetStd->verticalHeader()->setParent(nullptr); + ui->tableWidgetChecker->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); + ui->tableWidgetCheckStable->verticalHeader()->setParent(nullptr); +} + +DialogVerifyResult::~DialogVerifyResult() +{ + delete ui; +} + +void DialogVerifyResult::deleteItem(QLayout *layout) +{ + QLayoutItem *child; + while ((child = layout->takeAt(0)) != nullptr) + { + //setParent为NULL,防止删除之后界面不消失 + if(child->widget()) + { + child->widget()->setParent(nullptr); + delete child->widget(); + } + else if (child->layout()) + { + deleteItem(child->layout()); + child->layout()->deleteLater(); + } + delete child; + } +} + +void DialogVerifyResult::setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds) +{ + iEquipType=iType; + veriDataMapList=data; + veriHeadList = header; + programInfo=program; + selectStdIds = stdId; + selectBizIds=bizIds; + + QStringList idList = selectStdIds.split(","); + int rowCount=0; + int row=0; + for(const QString& id : idList) + { + //<<"序号"<<"设备名称"<<"型号规格"<<"出厂编号"<<"制造厂"<<"证书有效期"<<"备注"; + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetStd->insertRow(rowCount); + ui->tableWidgetStd->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetStd->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetStd->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetStd->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetStd->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetStd->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetStd->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + idList = selectBizIds.split(","); + rowCount=0; + row=0; + for(const QString& id : idList) + { + QList result = BaseCommonApi::getCatDeviceInfor(id); + if(result.length()>0){ + CatDeviceInfor item = result[0]; + rowCount = ui->tableWidgetStd->rowCount(); + ui->tableWidgetChecker->insertRow(rowCount); + ui->tableWidgetChecker->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidgetChecker->setItem(row, 1, new QTableWidgetItem(item.equipment_name)); + ui->tableWidgetChecker->setItem(row, 2, new QTableWidgetItem(item.model)); //设置数据 + ui->tableWidgetChecker->setItem(row, 3, new QTableWidgetItem(item.manufacture_no)); + ui->tableWidgetChecker->setItem(row, 4, new QTableWidgetItem(item.manufacturer)); + ui->tableWidgetChecker->setItem(row, 5, new QTableWidgetItem(item.measure_valid_date)); + ui->tableWidgetChecker->setItem(row, 6, new QTableWidgetItem(item.remark)); + row++; + } + result.clear(); + } + idList.clear(); + + deleteItem(ui->horizontalLayoutMain); + mainTabIdx=-1; + int index=0; + for (const auto &item : veriHeadList->keys()) { + // ======================================================================================== + // 按钮设置显示 + // ==================================================================================== + QPushButton *button = new QPushButton(item, this); + //设置样式 + // 设置按钮大小为 56x20 + //固定大小文字显示不全 + //button->setFixedSize(85, 40); + button->setCheckable(true); + button->setAutoExclusive(true); + //设置第一个按钮选中状态 + if(index==0){ button->setChecked(true);} + //button->setc(true); + // 设置按钮样式表 + button->setStyleSheet("QPushButton {" + "border: 1px solid white;" // 白色边框 + "border-bottom: 2px solid rgba(0, 255, 255, 1);" // 浅蓝色下划线 + "background-color: rgba(242, 242, 242, 1);" // 浅灰色背景 + "height:40px;" + "padding:5px;" + "}" + "QPushButton:hover {" + "background-color: rgba(215, 215, 215, 1);;" // 鼠标悬停时变为深灰色背景 + "}" + "QPushButton:checked {" + "color: white;" + "background-color: rgb(74, 102, 186);" // 选中时变为蓝色背景 + "}"); + + ui->horizontalLayoutMain->addWidget(button); + connect(button, &QPushButton::clicked, this, [this,index]() { + //tackedWidget->setCurrentIndex(index); + initCheckTable(index); + }); + //pageButtons.append(button); + ++index; + } + ui->horizontalLayoutMain->addStretch(); + initCheckTable(0); +} + +void DialogVerifyResult::initCheckTable(int idx) +{ + if(mainTabIdx==idx) + return; + mainTabIdx = idx; + QString sLabel = veriHeadList->keys()[mainTabIdx]; + QString sLabel2 = "重复性"; + const auto veriData = veriDataMapList->value(sLabel); + auto dataRes = veriData.value(sLabel2); + const auto headDta = veriHeadList->value(sLabel); + auto headrs = headDta.value(sLabel2); + ui->tableWidgetCheck->clearContents(); + ui->tableWidgetCheck->setRowCount(0); + ui->tableWidgetCheck->setColumnCount(0); + ui->tableWidgetCheck->setColumnCount(headrs.count()); + ui->tableWidgetCheck->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheck->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + int rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheck->rowCount(); + ui->tableWidgetCheck->insertRow(rowCount); + ui->tableWidgetCheck->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } + + sLabel2 = "稳定性"; + dataRes = veriData.value(sLabel2); + headrs = headDta.value(sLabel2); + ui->tableWidgetCheckStable->clearContents(); + ui->tableWidgetCheckStable->setRowCount(0); + ui->tableWidgetCheckStable->setColumnCount(0); + ui->tableWidgetCheckStable->setColumnCount(headrs.count()); + ui->tableWidgetCheckStable->setHorizontalHeaderLabels(headrs); + for(int i=0;itableWidgetCheckStable->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + } + rowCount = 0; + for (int i = 0; i < dataRes.count(); ++i) { + //获取行号 并进行添加行 + rowCount = ui->tableWidgetCheckStable->rowCount(); + ui->tableWidgetCheckStable->insertRow(rowCount); + ui->tableWidgetCheckStable->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); + for(int j=1;jtableWidgetCheckStable->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); + } + } +} + +QString DialogVerifyResult::getValueByHeader(QStringList dataList,QStringList headList,QString sName){ + for(int i=0;ilineEditNo->text();//数据编号 + baseInfo.check_date=ui->dateEditTime->text();//核查日期 + baseInfo.check_address=ui->comboBoxPlace->currentText();//核查地点 + baseInfo.temperature=ui->lineEditTemp->text();//温度 + baseInfo.humidity=ui->lineEdit_Hum->text();//湿度 + baseInfo.check_accord=ui->lineEditRule->text();//核查依据(即标准装置的作业指导书文件minio文件名,多个分号分割) + baseInfo.stability_examine=ui->comboBoxExam->currentText();//是否用于稳定性考核(1/0) + baseInfo.standard_equipment_id=programInfo->belong_standard_equipment_name;//被核查标准装置id + //QString equipment_id;//被核查设备id + baseInfo.item_category_id=programInfo->equipment_type;//核查项分类id + baseInfo.conclusion=ui->comboBoxConclusion->currentText();//结论(字典value) + baseInfo.remark=ui->lineEditNote->text();//备注 + //QString create_user_id;//核查员id + baseInfo.create_user_name=ui->comboBox_User->currentText();//核查员 + baseInfo.create_time=baseInfo.update_time=QDateTime::currentDateTime(); + if(BaseCommonApi::InsertStandardCheckInfo(baseInfo)){ + switch (iEquipType) { + case 1: + for(QString sLabel : veriHeadList->keys()){ + QMap items = veriHeadList->value(sLabel); + for(QString sLabel2 : items.keys()){ + QList dataRes = veriDataMapList->value(sLabel).value(sLabel2); + QStringList headers = items.value(sLabel2); + for (int i = 0; i < dataRes.count(); ++i) { + StandardCheckDataCalibrator calData; + calData.id= QString::number(api.generateId()); + calData.data_id = baseInfo.id;//核查数据管理基础信息表id + calData.check_type=getValueByHeader(dataRes[i],headers,"核查类型");//核查类型(直接存字典value) + calData.test_type=getValueByHeader(dataRes[i],headers,"核查点类型"); + calData.params=getValueByHeader(dataRes[i],headers,"核查项目"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + calData.frequency=getValueByHeader(dataRes[i],headers,"频率"); + calData.frequency_unit=getValueByHeader(dataRes[i],headers,"频率单位"); + calData.check_point=getValueByHeader(dataRes[i],headers,"核查点"); + calData.unit=getValueByHeader(dataRes[i],headers,"单位"); + + if(sLabel2=="重复性"){ + calData.test_value_one=getValueByHeader(dataRes[i],headers,"示值1"); + calData.test_value_two=getValueByHeader(dataRes[i],headers,"示值2"); + calData.test_value_three=getValueByHeader(dataRes[i],headers,"示值3"); + calData.test_value_four=getValueByHeader(dataRes[i],headers,"示值4"); + calData.test_value_five=getValueByHeader(dataRes[i],headers,"示值5"); + calData.test_value_six=getValueByHeader(dataRes[i],headers,"示值6"); + calData.average_value=getValueByHeader(dataRes[i],headers,"算数平均值"); + calData.standard_deviation=getValueByHeader(dataRes[i],headers,"标准偏差S(X)"); + calData.relative_repeatability=getValueByHeader(dataRes[i],headers,"相对重复性"); + }else{ + for(int k=0;k +#include "basecommonapi.h" + +namespace Ui { +class DialogVerifyResult; +} + +class DialogVerifyResult : public QDialog +{ + Q_OBJECT + +public: + explicit DialogVerifyResult(QWidget *parent = nullptr); + ~DialogVerifyResult(); + void setData(int iType,QMap>>* data, + QMap>* header,CheckProgramManage* program,QString stdId,QString bizIds); +private slots: + void on_pushButtonSave_2_clicked(); + +private: + void deleteItem(QLayout *layout); + void initCheckTable(int idx); + QString getValueByHeader(QStringList dataList,QStringList headList,QString sName); + +private: + Ui::DialogVerifyResult *ui; + int mainTabIdx=-1; + int iEquipType=1; + QMap>>* veriDataMapList; + QMap>* veriHeadList; + CheckProgramManage* programInfo; + QString selectStdIds; + QString selectBizIds; +}; + +#endif // DIALOGVERIFYRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.ui b/softwareDirectory/AutoVerScheme/dialogverifyresult.ui new file mode 100644 index 0000000..a01024e --- /dev/null +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.ui @@ -0,0 +1,387 @@ + + + DialogVerifyResult + + + + 0 + 0 + 1484 + 941 + + + + Dialog + + + background-color: rgb(255, 255, 255); + + + + + + background-color: rgb(51, 69, 130); + + + + 10 + + + + + + 0 + 0 + + + + + 48 + 48 + + + + image: url(:/image/Index/u1176.svg); + + + + + + + + + + + 1 + 0 + + + + + 18 + 75 + true + + + + color: rgb(255, 255, 255); + + + 结果保存 + + + + + + + + + + + + + 75 + true + + + + 核查基本信息 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 75 + true + + + + background-color: rgb(51, 69, 130); +color: rgb(255, 255, 255); + + + 保存结果 + + + + :/image/Index/u1180.svg + + + + + + + + + + + + 核查地点: + + + + + + + + + + 核查数据编号: + + + + + + + 环境湿度: + + + + + + + + 设备性能正常 + + + + + 设备性能异常 + + + + + + + + + + + 核查日期: + + + + + + + 核查依据: + + + + + + + + + + 核查员: + + + + + + + + + + + + + + + + + + + + + 是否用于稳定性考核: + + + + + + + 环境温度: + + + + + + + 备注: + + + + + + + 结论: + + + + + + + true + + + + + + + true + + + + + + + + + + + + + + + + + + + 75 + true + + + + 核查标准设备 + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + false + + + + + + + + 75 + true + + + + 被核查设备 + + + + + + + + 0 + 0 + + + + + 0 + 100 + + + + false + + + + + + + + 75 + true + + + + 核查结果信息 + + + + + + + + + + + 75 + true + + + + 重复性 + + + + + + + false + + + + + + + + 75 + true + + + + 稳定性 + + + + + + + false + + + + + + + + diff --git a/softwareDirectory/AutoVerScheme/newverifymethod.cpp b/softwareDirectory/AutoVerScheme/newverifymethod.cpp index b8414c2..d8f6dd6 100644 --- a/softwareDirectory/AutoVerScheme/newverifymethod.cpp +++ b/softwareDirectory/AutoVerScheme/newverifymethod.cpp @@ -403,8 +403,10 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.belong_standard_equipment = QString::number(ui->comboBoxEquipment->currentIndex()+1); int idx = ui->comboBoxCategory->currentIndex(); - if(idx>=0&&idx=0&&idxlineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); programInfo.remark = ui->lineEditMark->text(); @@ -420,8 +422,10 @@ programInfo.check_name = ui->lineEditName->text(); programInfo.belong_standard_equipment = QString::number(ui->comboBoxEquipment->currentIndex()+1); int idx = ui->comboBoxCategory->currentIndex(); - if(idx>=0&&idx=0&&idxlineEditUser->text(); programInfo.create_time = ui->dateEditTime->dateTime(); programInfo.update_time = QDateTime::currentDateTime(); diff --git a/softwareDirectory/AutoVerScheme/verifywindow.cpp b/softwareDirectory/AutoVerScheme/verifywindow.cpp index c3abf8b..db78a4c 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.cpp +++ b/softwareDirectory/AutoVerScheme/verifywindow.cpp @@ -3,6 +3,7 @@ #include #include #include "newverifymethod.h" +#include "dialogverifyresult.h" VerifyWindow::VerifyWindow(QWidget *parent) : QWidget(parent), @@ -18,13 +19,16 @@ for(int i=0;i<2;i++) ui->tableWidget_3->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidget_3->setSelectionBehavior(QAbstractItemView::SelectRows); + ui->tableWidget_Standard->verticalHeader()->setParent(nullptr); + for(int i=0;i<2;i++) + ui->tableWidget_Standard->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); for(int i=1;i<6;i++){ ui->tableWidgetStd->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidgetBiz->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); } ui->tableWidgetStd->setColumnWidth(0, 60); ui->tableWidgetBiz->setColumnWidth(0, 60); - + ui->tableWidgetCheck->verticalHeader()->setParent(nullptr); //统一定义单位转换系数 unitTransList=readDataFromFile("unitTrans.txt"); //统一定义命令占位符 @@ -291,12 +295,15 @@ ui->tableWidget_3->clearContents(); ui->tableWidget_3->setRowCount(0); + ui->tableWidget_Standard->clearContents(); + ui->tableWidget_Standard->setRowCount(0); QStringList idList; int rowCount=0; int row=0; connectList.clear(); if(stdId!="") { + selectStdIds = stdId; idList = stdId.split(","); for(const QString& id : idList) { @@ -321,6 +328,7 @@ } if(bizId!=""){ + selectBizIds =bizId; idList = bizId.split(","); for(const QString& id : idList) { @@ -351,6 +359,10 @@ ui->tableWidget_3->insertRow(rowCount); ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName)); ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 + + ui->tableWidget_Standard->insertRow(rowCount); + ui->tableWidget_Standard->setItem(row, 0, new QTableWidgetItem(info.deviceName)); + ui->tableWidget_Standard->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 row++; } ui->tableWidget_3->selectRow(0); @@ -574,6 +586,15 @@ if(mainTabIdx==idx) return; mainTabIdx = idx; + for(int i=0;ihorizontalLayoutMain->itemAt(i); + QPushButton *btn_1 = qobject_cast(child->widget()); + if(i==mainTabIdx){ + btn_1->setChecked(true); + }else{ + btn_1->setChecked(false); + } + } deleteItem(ui->horizontalLayoutItem); itemTabIdx=-1; @@ -615,6 +636,16 @@ ++index; } ui->horizontalLayoutItem->addStretch(); + if(iEquipType==1){ + QComboBox *comboBox=new QComboBox(); + comboBox->addItems({"ALL","最佳点","最差点","典型点"}); + // 连接下拉框的currentIndexChanged信号到槽函数 + connect(comboBox, &QComboBox::currentTextChanged, this, [this,comboBox]() { + initCheckItemData(itemTabIdx,comboBox->currentText(),true); + //onComboBoxCurrTextChanged(comboBox->currentText(),id,i); + }); + ui->horizontalLayoutItem->addWidget(comboBox); + } initCheckItemData(0); // ui->tableWidgetCheck->clearContents(); // ui->tableWidgetCheck->setRowCount(0); @@ -671,13 +702,22 @@ // deviceEngine.openDevice(connectList[1].programInterface.visa,"Visa"); } -void VerifyWindow::initCheckItemData(int idx){ - if(itemTabIdx==idx) +void VerifyWindow::initCheckItemData(int idx,QString filter,bool bForce){ + if(itemTabIdx==idx&&!bForce) return; itemTabIdx = idx; QString sLabel = veriHeadList.keys()[mainTabIdx]; const auto items = veriHeadList.value(sLabel); + for(int i=0;ihorizontalLayoutItem->itemAt(i); + QPushButton *btn_1 = qobject_cast(child->widget()); + if(i==itemTabIdx){ + btn_1->setChecked(true); + }else{ + btn_1->setChecked(false); + } + } QString sLabel2 = items.keys()[itemTabIdx]; const auto headrs = items.value(sLabel2); @@ -693,8 +733,11 @@ int rowCount = 0; const auto items2 = veriDataMapList.value(sLabel); const auto dataRes = items2.value(sLabel2); + int typeIdx = getIndexByHeader(sLabel,sLabel2,QStrTranQStrList("核查点类型")); for (int i = 0; i < dataRes.count(); ++i) { //获取行号 并进行添加行 + if(iEquipType==1&&typeIdx!=-1&&filter!="ALL"&&filter!=dataRes[i][typeIdx]) + continue; rowCount = ui->tableWidgetCheck->rowCount(); ui->tableWidgetCheck->insertRow(rowCount); ui->tableWidgetCheck->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); @@ -716,6 +759,14 @@ return nullptr; } +VisaCommonEngine* VerifyWindow::getVisaEngineByIdx(int idx) +{ + if(idx>=0&&idx dataRes = items.value(labelItem); + int itemIdx = veriData.keys().indexOf(labelItem); + initCheckItemData(itemIdx,"ALL",true); + QList dataRes = veriData.value(labelItem); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(constsLable)); for (int i = 0; i < dataRes.count(); ++i) { @@ -817,7 +868,7 @@ int idx= getIndexByHeader(constsLable,labelItem,TempValue); if(idx!=-1) sParam = dataRes[i][idx]; - //CheckBackColorUpdate(true,i); + CheckBackColorUpdate(true,i); //暂时加到这个地方 后面统一编写 if(sParam=="DCI"||sParam=="ACI") @@ -841,37 +892,55 @@ } } //标准器输出 - InstructionLib *instrcutLibstan = getCmdByCheckName(1,sParam); - SendDevice(instrcutLibstan,&standardEngine,true); - //被检设备读数 - BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); - InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); - SendDevice(instrcutLib,&deviceEngine); - //读取6次测试值 + InstructionLib *instrcutLibstan = getCmdByCheckName(0,sParam); + VisaCommonEngine *standardEngine = getVisaEngineByIdx(0); + SendDevice(instrcutLibstan,standardEngine,true); + //核查件输出 + BaseCommonApi::SaveLogInfo(1,QString("核查件配置")); + InstructionLib *instrcutLib = getCmdByCheckName(1,sParam); + VisaCommonEngine *deviceEngine = getVisaEngineByIdx(1); + SendDevice(instrcutLib,deviceEngine); + //核查件读取6次测试值 for(QString head : readItems){ - sRet=ReadDevice(instrcutLib,&deviceEngine); + sRet=ReadDevice(instrcutLib,deviceEngine); if(sRet!=""){ TempValue.clear(); TempValue.append("单位"); idx= getIndexByHeader(constsLable,labelItem,TempValue); dStdValue = transUnit(sRet,dataRes[i][idx]); } - autoAdujstData(constsLable,labelItem,head,i,dStdValue,dataRes); + autoAdujstData(constsLable,labelItem,head,i,dStdValue,dataRes,veriData); //CheckBackColorUpdate(false,i); Delay_MSec(1000); } closeCmd(); - //CheckBackColorUpdate(false,i); + CheckBackColorUpdate(false,i); Delay_MSec(2000); } - items.insert(labelItem,dataRes); - veriDataMapList.insert(constsLable,items); + veriData.insert(labelItem,dataRes); + veriDataMapList.insert(constsLable,veriData); } closeDevice(); } -void VerifyWindow::autoAdujstData(QString sLabel,QString labelItem,QString header,int i,double dStdValue,QList& dataRes){ - double dError; +void VerifyWindow::CheckBackColorUpdate(bool State,int row) +{ + QBrush colorBrush(Qt::white); + if(State) + { + QColor lightGreenColor(173, 216, 230); + colorBrush.setColor(lightGreenColor); + } + for (int col = 0; col < ui->tableWidgetCheck->columnCount(); ++col) { + QTableWidgetItem *item = ui->tableWidgetCheck->item(row, col); + if (item) { + item->setBackground(colorBrush); + } + } +} + +void VerifyWindow::autoAdujstData(QString sLabel,QString labelItem,QString header,int i,double dStdValue,QList& dataRes,QMap>& veriData){ + //double dError; QString newdStdValue,newdError,Value; if(iEquipType==1 ){ if(dStdValue==FP_INFINITE){ @@ -897,6 +966,7 @@ } QString sLast=readItems.last(); if(header==sLast){ + //计算平均值 double dMean=0; for(QString item : readItems){ idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList(item)); @@ -910,6 +980,7 @@ dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } + //计算标准偏差S double dStdErr = 0; for(QString item : readItems){ idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList(item)); @@ -923,6 +994,7 @@ dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } + //计算相对重复性 newdStdValue=QString::number(dStdErr/dMean,'f',4); idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList("相对重复性")); if(idx!=-1) @@ -930,6 +1002,53 @@ dataRes[i][idx] = newdStdValue; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); } + + //同步计算稳定性数据 + QString labelStable="稳定性"; + //auto veriData = veriDataMapList.value(constsLable); + QList dataStable = veriData.value(labelStable); + idx= getIndexByHeader(sLabel,labelStable,QStrTranQStrList("算数平均值")); + newdStdValue=QString::number(dMean,'f',4); + if(idx!=-1) + { + dataStable[i][idx-1] = newdStdValue; + dMean=0; + for(int k=idx-6;k0&&visa.type==0) - { - instrcutLib = getCmdByCheckName(count,"INIT"); - Engine=&deviceEngine; - } - if(connectList.length()>1&&visa.type==1) - { - instrcutLib = getCmdByCheckName(count,"INIT"); - if(connectList.count()==2){ - Engine=&standardEngine; - }else{ - int stancount=0; -// for (VisaCommonEngine &item:VisaStanEngineList) { -// if(stancount==count-1){ -// Engine=&item; -// break; -// } -// } - } - - } - SendDevice(instrcutLib,Engine); + VisaCommonEngine *Engine=visa.visaEngine; + InstructionLib *instrcutLib=getCmdByCheckName(count,"INIT"); + if(Engine!=nullptr&&instrcutLib!=nullptr) + SendDevice(instrcutLib,Engine); count++; } } void VerifyWindow::connectDevice(){ - int count=0; QString rolename; - for(const ConnectInfo &visa:connectList) + for(ConnectInfo &visa:connectList) { - VisaCommonEngine Engine; - if(Engine.openDevice(visa.programInterface.visa,"Visa")){ - if(connectList.length()>0&&visa.type==0) - { - deviceEngine=Engine; - } - if(connectList.length()>1&&visa.type==1) - { - if(connectList.count()==2){ - standardEngine=Engine; - }else{ - //rolename=this->GetdeviceidByRole(visa.programInterface.device_id); - //VisaStanEngineList.insert(rolename,Engine); - } - - } + if(visa.programInterface.visa!=""){ + if(visa.visaEngine==nullptr) + visa.visaEngine = new VisaCommonEngine; + visa.visaEngine->openDevice(visa.programInterface.visa,"Visa"); } - count++; - } } @@ -1081,30 +1165,11 @@ int count=0; for(const ConnectInfo &visa:connectList) { - VisaCommonEngine *Engine; - InstructionLib *instrcutLib; - if(connectList.length()>0&&visa.type==0) - { - instrcutLib = getCmdByCheckName(count,"CLOSE"); - Engine=&deviceEngine; - } - if(connectList.length()>1&&visa.type==1) - { - instrcutLib = getCmdByCheckName(count,"CLOSE"); - if(connectList.count()==2){ - Engine=&standardEngine; - }else{ - int stancount=0; -// for (VisaCommonEngine &item:VisaStanEngineList) { -// if(stancount==count-1){ -// Engine=&item; -// break; -// } -// } - } - - } - SendDevice(instrcutLib,Engine); + VisaCommonEngine *Engine=visa.visaEngine; + InstructionLib *instrcutLib= getCmdByCheckName(count,"CLOSE"); + if(Engine!=nullptr&&instrcutLib!=nullptr) + SendDevice(instrcutLib,Engine); + count++; } } @@ -1113,30 +1178,10 @@ int count=0; for(const ConnectInfo &visa:connectList) { - VisaCommonEngine *Engine; - if(connectList.length()>0&&visa.type==0) - { - Engine=&deviceEngine; - } - if(connectList.length()>1&&visa.type==1) - { - if(connectList.count()==2){ - Engine=&standardEngine; - }else{ - int stancount=0; -// for (VisaCommonEngine &item:VisaStanEngineList) { -// if(stancount==count-1){ -// Engine=&item; -// break; -// } -// } - } - - } + VisaCommonEngine *Engine=visa.visaEngine; if(Engine!=nullptr) Engine->closeDevice(); count++; - } } @@ -1246,7 +1291,12 @@ void VerifyWindow::on_pushButton_save_clicked() { - + DialogVerifyResult* dlg = new DialogVerifyResult; + //dlg->taskList =selectTaskList; + //dlg->deviceId = selectTaskList[0].sample_id; + dlg->setData(iEquipType,&veriDataMapList,&veriHeadList,&programInfo,selectStdIds,selectBizIds); + dlg->setModal(true); + dlg->show(); } void VerifyWindow::on_pushButton_close_clicked() @@ -1354,9 +1404,13 @@ } readItems.clear(); switch (iEquipType) { - case 1: + case 1: veriDataMapList = BaseCommonApi::getStandardCheckItemDataCalibrator(standardId,&veriHeadList); readItems << "示值1"<< "示值2"<< "示值3"<< "示值4"<< "示值5"<< "示值6"; break; + case 5: + veriDataMapList = BaseCommonApi::getStandardCheckItemDataResistanceThermometer(standardId,&veriHeadList); + readItems << "测量标准示值1"<< "测量标准示值2"<< "测量标准示值3"<< "测量标准示值4"<< "测量标准示值5"<< "测量标准示值6"; + break; } } diff --git a/softwareDirectory/AutoVerScheme/verifywindow.h b/softwareDirectory/AutoVerScheme/verifywindow.h index 34b77e8..a75b5e3 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.h +++ b/softwareDirectory/AutoVerScheme/verifywindow.h @@ -21,7 +21,7 @@ void initDeviceInfo(QString stdId,QString bizId); void deleteItem(QLayout *layout); void initCheckTable(int idx); - void initCheckItemData(int idx); + void initCheckItemData(int idx,QString filter="ALL",bool bForce=false); InstructionLib* getCmdByCheckName(int idx,QString name); void Delay_MSec(unsigned int msec); void selectStandInfo(); @@ -40,10 +40,12 @@ QString transCmd(QString sCmd,QString sLabel,QString sLabelItem,QStringList data,bool reverse=false); QMap readDataFromFile(QString filePath); double transUnit(QString sData,QString sUnit,bool reverse=false); - void autoAdujstData(QString sLabel,QString labelItem,QString header,int i,double dStdValue,QList& dataRes); + void autoAdujstData(QString sLabel,QString labelItem,QString header,int i,double dStdValue,QList& dataRes,QMap>& veriData); QString TranTypeUnit(QString sUnit); double tranunitSplit(QString sData,bool reverse); void ItemUnitSplit(QString Value,QString &data,QString &unit); + void CheckBackColorUpdate(bool State,int row); + VisaCommonEngine* getVisaEngineByIdx(int idx); private slots: void showDevice(); void on_editButton_clicked(); @@ -92,12 +94,14 @@ QStringList headList; QList calibrationList; QList measureCalList; - VisaCommonEngine deviceEngine; - VisaCommonEngine standardEngine; + //VisaCommonEngine deviceEngine; + //VisaCommonEngine standardEngine; QList stdList; QList bizList; QStringList stdIdList; QStringList bizIdList; + QString selectStdIds; + QString selectBizIds; QMap>> veriDataMapList; QMap> veriHeadList; int iEquipType=1;