#include "dialogcheckresult.h" #include "ui_dialogcheckresult.h" #include <QMessageBox> #include <QDesktopServices> DialogCheckResult::DialogCheckResult(QWidget *parent) : QDialog(parent), ui(new Ui::DialogCheckResult) { ui->setupUi(this); ui->tableWidget->verticalHeader()->setParent(nullptr); } DialogCheckResult::~DialogCheckResult() { delete ui; } void DialogCheckResult::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 DialogCheckResult::initCalDataTable(int idx) { if(curHeadIdx==idx) return; curHeadIdx = idx; QString sLabel = headTableList->keys()[curHeadIdx]; const auto &dataRes = caliDataList->value(sLabel); const auto &headrs = headTableList->value(sLabel); ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); ui->tableWidget->setColumnCount(0); ui->tableWidget->setColumnCount(headrs.count()); ui->tableWidget->setHorizontalHeaderLabels(headrs); for(int i=0;i<headrs.count();i++) { ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); } //tableWidget->setRowCount(data.count()); int rowCount = 0; for (int i = 0; i < dataRes.count(); ++i) { //获取行号 并进行添加行 rowCount = ui->tableWidget->rowCount(); ui->tableWidget->insertRow(rowCount); ui->tableWidget->setItem(i, 0, new QTableWidgetItem(QString::number(i+1))); for(int j=1;j<dataRes[i].count();j++) { ui->tableWidget->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); } } } void DialogCheckResult::initCheckTable(QMap<QString, QList<QStringList>> *measList,QMap<QString, QStringList> *headList,QString sID) { caliDataList = measList; headTableList = headList; stdId = sID; ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); deleteItem(ui->HeadListLayout); int index=0; for (const auto &item : *headTableList) { // ======================================================================================== // 数据循环显示 // =================================================================================== QString sLabel = headTableList->keys()[index]; // ======================================================================================== // 按钮设置显示 // ==================================================================================== QPushButton *button = new QPushButton(sLabel, 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);" // 浅灰色背景 "}" "QPushButton:hover {" "background-color: rgba(215, 215, 215, 1);;" // 鼠标悬停时变为深灰色背景 "}" "QPushButton:checked {" "color: white;" "background-color: rgb(74, 102, 186);" // 选中时变为蓝色背景 "}"); ui->HeadListLayout->addWidget(button); connect(button, &QPushButton::clicked, this, [this,index]() { //tackedWidget->setCurrentIndex(index); initCalDataTable(index); }); ++index; } ui->HeadListLayout->addStretch(); initCalDataTable(0); QList<JudgeCalibrationTable> CliTable = BaseCommonApi::getJudgeCalibrationTable(deviceId); if(CliTable.length()>0){ iEquipType = CliTable[0].belong_standard_equipment.toInt(); } catoryList = BaseCommonApi::getDeviceMeasureEquipmentCatory(deviceId); } QString DialogCheckResult::getValueByHeader(int idx,QString sLabel,QString sName){ QList<QStringList> dataRes = caliDataList->value(sLabel); const auto &headrs = headTableList->value(sLabel); for(int i=0;i<headrs.length();i++){ if(headrs[i]==sName) return dataRes[idx][i]; } return ""; } void DialogCheckResult::on_pushButton_3_clicked() { SaveDeviceMeasureInfo measInfo; BaseCommonApi api; measInfo.id = QString::number(api.generateId()); //measInfo.data_no; measInfo.order_id = taskList[0].id; measInfo.sample_id=deviceId; measInfo.sample_name = taskList[0].sample_name; measInfo.model = taskList[0].sample_model; measInfo.manufacturer = taskList[0].manufacturer; measInfo.manufacture_no = taskList[0].manufacture_no; measInfo.measure_category = catoryList[0].item_category_name; measInfo.item_id=catoryList[0].eqptDeviceModelId; measInfo.temperature = ui->lineEditTemp->text(); measInfo.humidity =ui->lineEdit_Hum->text(); measInfo.measure_address=ui->comboBoxPlace->currentText(); measInfo.trace_date = ui->dateEditCheck->date(); measInfo.measure_valid_date = ui->dateEdit_Valid->dateTime(); measInfo.outcome = ui->lineEdit_Cons->text(); if(BaseCommonApi::InsertSaveDeviceMeasureInfo(measInfo)){ QStringList idList = stdId.split(","); for(const QString& id : idList) { DeviceMeasureEquipment equipment; equipment.id=QString::number(api.generateId()); equipment.data_id = measInfo.id; equipment.equipment_id = id; equipment.create_time=equipment.update_time=QDateTime::currentDateTime(); BaseCommonApi::InsertDeviceMeasureEquipment(equipment); } for (int k=0;k<headTableList->keys().length();k++) { QString sLabel = headTableList->keys()[k]; const auto &dataRes = caliDataList->value(sLabel); //tableWidget->setRowCount(data.count()); //多功能校准源 if(iEquipType==1){ for (int i = 0; i < dataRes.count(); ++i) { SaveDeviceMeasureCalibrator measItem; measItem.id = QString::number(api.generateId()); measItem.data_id = measInfo.id; measItem.item_data_id = getValueByHeader(i,sLabel,"序号"); measItem.maximum_error_formula = getValueByHeader(i,sLabel,"最大允许误差");//最大允许误差(公式) //measItem.error_param_a = item[11];//误差参数a //measItem.error_param_b = item[12];//误差参数b measItem.params = getValueByHeader(i,sLabel,"检定项目");//参数 measItem.capacity=getValueByHeader(i,sLabel,"量");//量 measItem.unit=getValueByHeader(i,sLabel,"单位");//单位 //measItem.frequency=item[5];//频率 //measItem.frequency_unit=item[6];//频率单位 measItem.range_range=getValueByHeader(i,sLabel,"量程");//量程 measItem.standard_value=getValueByHeader(i,sLabel,"标准值");//标准值(输入字段,特殊:指针式万用表输出字段) measItem.indicating_value=getValueByHeader(i,sLabel,"示值");//示值(输出字段,特殊:指针式万用表输入字段) measItem.maximum_error=getValueByHeader(i,sLabel,"最大允许误差");//最大允许误差(值) measItem.absolute_error=getValueByHeader(i,sLabel,"绝对误差");//绝对误差 measItem.resolution=getValueByHeader(i,sLabel,"分辨力");//分辨力 measItem.measure_indication_value=getValueByHeader(i,sLabel,"示值");//被检表示值 BaseCommonApi::InsertVerMultiCal(measItem); } } //0.02压力活塞计 else if(iEquipType==4){ for (int i = 0; i < dataRes.count(); ++i) { DeviceMeasureDataPistonGauge measItem; measItem.id = QString::number(api.generateId()); measItem.data_id = measInfo.id; if(sLabel=="示值误差"||sLabel=="回程误差"||sLabel=="轻敲位移") measItem.data_type = "1"; else measItem.data_type = "2"; measItem.data_category = "1"; measItem.before_friction_forward_stroke = getValueByHeader(i,sLabel,"轻敲前示值-正"); measItem.before_friction_reverse_stroke = getValueByHeader(i,sLabel,"轻敲前示值-反"); measItem.after_friction_forward_stroke = getValueByHeader(i,sLabel,"轻敲后示值-正"); measItem.after_friction_reverse_stroke = getValueByHeader(i,sLabel,"轻敲后示值-反"); measItem.variation_forward_stroke = getValueByHeader(i,sLabel,"轻敲前后变动量-正"); measItem.variation_reverse_stroke = getValueByHeader(i,sLabel,"轻敲前后变动量-反"); measItem.indicating_value=getValueByHeader(i,sLabel,"标准器示值"); BaseCommonApi::InsertDeviceMeasureDataPistonGauge(measItem); } } } // for(SaveDeviceMeasureCalibrator& item:measureCalList){ // item.id = QString::number(api.generateId()); // item.data_id = measInfo.id; // BaseCommonApi::InsertVerMultiCal(item); // } QMessageBox::information(this, "提示", "保存成功!"); } else { QMessageBox::warning(this, "警告", "保存失败!"); } } void DialogCheckResult::on_pushButton_2_clicked() { QString strPath =QCoreApplication::applicationDirPath()+"//checkTemplate.doc"; if(QFile::exists(strPath)){ WordEngine engine; engine.open(strPath); QStringList itemList; QStringList conentList; itemList <<"unit"<<"address"<<"jianAddr"<<"time2"<<"temperature"<<"humidity"; conentList <<""<<""<<ui->comboBoxPlace->currentText()<<ui->dateEditCheck->text()<<ui->lineEditTemp->text()<<ui->lineEdit_Hum->text(); engine.setMarks("unit",taskList[0].customer_name); engine.setMarks("address",""); engine.setMarks("name",taskList[0].sample_name); engine.setMarks("type",taskList[0].sample_model); engine.setMarks("serial",taskList[0].manufacture_no); engine.setMarks("factory",taskList[0].manufacturer); engine.setMarks("jianAddr",ui->comboBoxPlace->currentText()); engine.setMarks("time2",ui->dateEditCheck->text()); engine.setMarks("temperature",ui->lineEditTemp->text()); engine.setMarks("humidity",ui->lineEdit_Hum->text()); QList<CatDeviceInfor> result = BaseCommonApi::getCatDeviceInfor(stdId); if(result.length()>0){ engine.setMarks("stdname",result[0].equipment_name); engine.setMarks("stdtype",result[0].model); engine.setMarks("stdno",result[0].manufacture_no); engine.setMarks("stduncert",""); engine.setMarks("stdvalid",result[0].measure_valid_date); } //engine.setBatchMarks(itemList,conentLis;t) QString strLabel = "result"; //engine.setMarks(strLabel,"1.表格1"); for (int k=headTableList->keys().length()-1;k>=0;k--) { QString sLabel = headTableList->keys()[k]; QString strTitle = QString("%1.%2").arg(k+2).arg(sLabel); const auto &headrs = headTableList->value(sLabel); const auto &dataRes = caliDataList->value(sLabel); int rows = dataRes.count()+1; int cols = headrs.length(); QAxObject* pTable = engine.insertTable(strLabel,rows,cols,strTitle); for (int i=0;i<cols;i++){ engine.setCellString(pTable,1,i+1,headrs[i]); } //tableWidget->setRowCount(data.count()); for (int i = 0; i < dataRes.count(); ++i) { engine.setCellString(pTable,i+2,1,QString::number(i+1)); for(int j=1;j<dataRes[i].count();j++) { engine.setCellString(pTable,i+2,j+1,dataRes[i][j]); } } } // QString strTitle = "1.表格1"; // int rows = measureCalList.length()+1; // int cols = measHeadList.length(); // QAxObject* pTable = engine.insertTable(strLabel,rows,cols,strTitle); // for (int i=0;i<cols;i++){ // engine.setCellString(pTable,1,i,measHeadList[i]); // } // for(int j=2;j<=rows;j++){ // SaveDeviceMeasureCalibrator measItem =measureCalList[j-2]; // engine.setCellString(pTable,j, 2, measItem.params); // engine.setCellString(pTable,j, 3, measItem.capacity); // engine.setCellString(pTable,j, 4, measItem.unit); // engine.setCellString(pTable,j, 5, measItem.frequency); // engine.setCellString(pTable,j, 6, measItem.frequency_unit); // engine.setCellString(pTable,j, 7, measItem.range_range); // engine.setCellString(pTable,j, 8, measItem.standard_value); // engine.setCellString(pTable,j, 9, measItem.resolution); // engine.setCellString(pTable,j, 10, measItem.maximum_error); // engine.setCellString(pTable,j, 11, measItem.error_param_a); // engine.setCellString(pTable,j, 12, measItem.error_param_b); // engine.setCellString(pTable,j, 15, measItem.indicating_value); // engine.setCellString(pTable,j, 19, measItem.measure_indication_value); // } QString savePath=QCoreApplication::applicationDirPath()+"//检定证书预览.doc"; engine.saveAs(savePath); QUrl fileUrl = QUrl::fromLocalFile(savePath); QDesktopServices::openUrl(fileUrl); }else{ QMessageBox::warning(this, "警告", strPath+"文件不存在!"); } } void DialogCheckResult::on_pushButton_clicked() { }