#include "dialogverifyresult.h" #include "ui_dialogverifyresult.h" #include "basecommonapi.h" #include <QMessageBox> 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;i<headers.count();i++) { ui->tableWidgetStd->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); ui->tableWidgetChecker->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); } ui->tableWidgetChecker->setFixedHeight(80); 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<QString,QMap<QString, QList<QStringList>>>* data, QMap<QString,QMap<QString, QStringList>>* 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<CatDeviceInfor> 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<CatDeviceInfor> result = BaseCommonApi::getCatDeviceInfor(id); if(result.length()>0){ CatDeviceInfor item = result[0]; rowCount = ui->tableWidgetChecker->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||veriHeadList->keys().count()==0) 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;i<headrs.count();i++) { ui->tableWidgetCheck->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;j<dataRes[i].count();j++) { ui->tableWidgetCheck->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;i<headrs.count();i++) { ui->tableWidgetCheckStable->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;j<dataRes[i].count();j++) { ui->tableWidgetCheckStable->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); } } } QString DialogVerifyResult::getValueByHeader(QStringList dataList,QStringList headList,QString sName){ for(int i=0;i<headList.length();i++){ if(headList[i]==sName) return dataList[i]; } return ""; } void DialogVerifyResult::on_pushButtonSave_2_clicked() { StandardCheckInfo baseInfo; BaseCommonApi api; baseInfo.id = QString::number(api.generateId()); baseInfo.data_no=ui->lineEditNo->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";//是否用于稳定性考核(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<QString, QStringList> items = veriHeadList->value(sLabel); for(QString sLabel2 : items.keys()){ QList<QStringList> 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<headers.count();k++){ if(headers[k]=="算数平均值"){ calData.average_value=dataRes[i][k]; calData.test_value_six=dataRes[i][k-1]; calData.test_value_six_date = QDateTime::currentDateTime().toString("yyyy-MM-dd"); break; } } calData.standard_deviation=getValueByHeader(dataRes[i],headers,"标准偏差S(X)"); calData.relative_repeatability=getValueByHeader(dataRes[i],headers,"相对重复性"); calData.urel=getValueByHeader(dataRes[i],headers,"Urel"); calData.less_than=getValueByHeader(dataRes[i],headers,"相对重复性是否小于相对扩展不确定度Urel"); } calData.create_time=calData.update_time=QDateTime::currentDateTime(); BaseCommonApi::InsertStandardCheckDataCalibrator(calData); } } } break; case 2: for(QString sLabel : veriHeadList->keys()){ QMap<QString, QStringList> items = veriHeadList->value(sLabel); for(QString sLabel2 : items.keys()){ QList<QStringList> dataRes = veriDataMapList->value(sLabel).value(sLabel2); QStringList headers = items.value(sLabel2); for (int i = 0; i < dataRes.count(); ++i) { StandardCheckDataDcPower calData; calData.id= QString::number(api.generateId()); calData.data_id = baseInfo.id;//核查数据管理基础信息表id calData.check_type=getValueByHeader(dataRes[i],headers,"核查类型");//核查类型(直接存字典value) calData.params=getValueByHeader(dataRes[i],headers,"核查项目"); calData.check_param=getValueByHeader(dataRes[i],headers,"核查参数"); calData.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,"标准偏差"); calData.relative_repeatability=getValueByHeader(dataRes[i],headers,"相对标准偏差"); }else{ for(int k=0;k<headers.count();k++){ if(headers[k]=="平均值"){ calData.average_value=dataRes[i][k]; calData.test_value_six=dataRes[i][k-1]; calData.test_value_six_date = QDateTime::currentDateTime().toString("yyyy-MM-dd"); break; } } calData.standard_deviation=getValueByHeader(dataRes[i],headers,"标准偏差"); calData.relative_repeatability=getValueByHeader(dataRes[i],headers,"相对标准偏差"); calData.urel=getValueByHeader(dataRes[i],headers,"相对扩展不确定度Urel"); calData.less_than=getValueByHeader(dataRes[i],headers,"相对标准偏差是否小于相对扩展不确定度Urel"); } calData.create_time=calData.update_time=QDateTime::currentDateTime(); BaseCommonApi::InsertStandardCheckItemDataDcPower(calData); } } } break; } QMessageBox::information(this, "提示", "保存成功!"); }else{ QMessageBox::warning(this, "警告", "保存失败!"); } }