diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 0500d53..0c12a8f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -59,6 +59,8 @@ getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); + //this->grabKeyboard(); + setFocusPolicy(Qt::StrongFocus); } CheckWindow::~CheckWindow() @@ -317,11 +319,17 @@ void CheckWindow::showCheck() { - curHeadIdx=-1; deleteItem(ui->horizontalLayout_14); int idx=0; + curDevciceIdx=-1; + curDeviceId = ""; for (const Dept& task : selectTaskList) { + QMap header; + QMap> data = BaseCommonApi::Search_CalibrationTableClass(task.sample_id,&header); + caliDataListAll.append(data); + headTableListAll.append(header); + QPushButton *btn_1 = new QPushButton(); btn_1->setText(task.sample_name); btn_1->setStyleSheet("QPushButton{" @@ -334,37 +342,46 @@ font.setBold(true); btn_1->setFont(font); btn_1->setCursor(Qt::PointingHandCursor); - connect(btn_1, &QPushButton::clicked, this, [this,task,idx]() { - on_deviceButton_clicked(task,idx); + connect(btn_1, &QPushButton::clicked, this, [this,idx]() { + on_deviceButton_clicked(idx); }); ui->horizontalLayout_14->addWidget(btn_1); idx++; } - on_deviceButton_clicked(selectTaskList[0],0); ui->horizontalLayout_14->addStretch(); + on_deviceButton_clicked(0); + ui->stackedWidget_2->setCurrentIndex(1); +} - if(selectTaskList.length()>0) +void CheckWindow::changeDevice(int idx){ + if(idx>=0&&idx CliTable = BaseCommonApi::getJudgeCalibrationTable(deviceId); + QString deviceId = selectTaskList[idx].sample_id; + if(deviceId==curDeviceId) + return; + curDeviceId = deviceId; + QList CliTable = BaseCommonApi::getJudgeCalibrationTable(curDeviceId); if(CliTable.length()>0){ iEquipType = CliTable[0].belong_standard_equipment.toInt(); } //QStringList headlist; pageButtons.clear(); headList.clear(); - calibrationList.clear(); - headTableList.clear(); + //calibrationList.clear(); + //headTableList.clear(); chList.clear(); //calibrationList =BaseCommonApi::Search_CalibrationTable(deviceId,&headList); - caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); - if(caliDataList.count()<1){ + //caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); + caliDataList = &caliDataListAll[idx]; + headTableList = &headTableListAll[idx]; + if(caliDataList->count()<1){ QMessageBox::warning(this, "提示", "此检定项未开发或此设备无检测点"); - return;}; + return; + }; //tableWidgetItem - QList calData = caliDataList.values().first(); - gaugeInfo = BaseCommonApi::searchStatus(deviceId); + QList calData = caliDataList->values().first(); + gaugeInfo = BaseCommonApi::searchStatus(curDeviceId); ui->tableWidget_Point->clearContents(); ui->tableWidget_Point->setRowCount(0); deleteItem(ui->HeadListLayout); @@ -384,12 +401,13 @@ // row++; // } int index=0; - for (const auto &item : headTableList) { + curHeadIdx=-1; + for (const auto &item : *headTableList) { // ======================================================================================== // 数据循环显示 // =================================================================================== - QString sLabel = headTableList.keys()[index]; - const auto &dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[index]; + const auto &dataRes = caliDataList->value(sLabel); //tableWidget->setRowCount(data.count()); for (int i = 0; i < dataRes.count(); ++i) { @@ -499,10 +517,8 @@ } std::sort(chList.begin(), chList.end()); if(chList.count()==0){chList.append("CH1");}; - ui->stackedWidget_2->setCurrentIndex(1); initCheckTable(0); } - void CheckWindow::openGageResult(){ //QList calData = caliDataList.values().first(); FormGageResult *checkWindow = new FormGageResult(nullptr,selectTaskList[0].sample_id); @@ -511,8 +527,11 @@ checkWindow->show(); } -void CheckWindow::on_deviceButton_clicked(Dept task,int idx) +void CheckWindow::on_deviceButton_clicked(int idx) { + if(curDevciceIdx == idx||idx<0||idx>=selectTaskList.length()) + return; + curDevciceIdx = idx; for(int i=0;ihorizontalLayout_14->itemAt(i); QPushButton *btn_1 = qobject_cast(child->widget()); @@ -528,10 +547,11 @@ "}"); } } - ui->label_21->setText(QString("设备名称: %1").arg(task.sample_name)); - ui->label_22->setText(QString("型号规格: %1").arg(task.sample_model)); - ui->label_23->setText(QString("出厂编号: %1").arg(task.manufacture_no)); - ui->label_24->setText(QString("生产厂家: %1").arg(task.manufacturer)); + ui->label_21->setText(QString("设备名称: %1").arg(selectTaskList[curDevciceIdx].sample_name)); + ui->label_22->setText(QString("型号规格: %1").arg(selectTaskList[curDevciceIdx].sample_model)); + ui->label_23->setText(QString("出厂编号: %1").arg(selectTaskList[curDevciceIdx].manufacture_no)); + ui->label_24->setText(QString("生产厂家: %1").arg(selectTaskList[curDevciceIdx].manufacturer)); + changeDevice(idx); } void CheckWindow::deleteItem(QLayout *layout) @@ -566,8 +586,8 @@ { DialogCheckResult* dlg = new DialogCheckResult; dlg->taskList =selectTaskList; - dlg->deviceId = selectTaskList[0].sample_id; - dlg->initCheckTable(&caliDataList,&headTableList,standardId); + //dlg->deviceId = selectTaskList[0].sample_id; + dlg->initCheckTable(caliDataListAll,headTableListAll,standardId); dlg->setModal(true); dlg->show(); } @@ -855,16 +875,16 @@ // } // } // } - if(curHeadIdx==idx||headTableList.keys().count()==0) + if(curHeadIdx==idx||headTableList->keys().count()==0) return; pageButtons[idx]->setChecked(true); curHeadIdx = idx; - QString sLabel = headTableList.keys()[curHeadIdx]; - const auto &dataRes = caliDataList.value(sLabel); - const auto &headrs = headTableList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + const auto &dataRes = caliDataList->value(sLabel); + const auto &headrs = headTableList->value(sLabel); ui->tableWidgetCheck->clearContents(); ui->tableWidgetCheck->setRowCount(0); ui->tableWidgetCheck->setColumnCount(0); @@ -940,6 +960,17 @@ ui->tableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); } } + if(iEquipType==4&&nextGageIndex!=-1){ + if(isBack){ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + }else{ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + } + } } //压力测试 数据表格同步 计算改变 void CheckWindow::gageDataChange(){ @@ -957,8 +988,8 @@ // 获取该按钮所在表格的行号和列号 int row = index.row(); int col = index.column(); - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); dataRes[row][col] = pushButton_->text(); double dVal,dVal2; @@ -986,7 +1017,7 @@ dataRes[row][7] = QString::number(dVal2-dVal); } } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } void CheckWindow::stepGageCheck() @@ -1006,18 +1037,18 @@ // if (lastSelectedIndex == -1) { // lastSelectedIndex = 0; // } - int nextIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); if(lastSelectedIndex == ui-> tableWidgetCheck->rowCount() - 1 ){ - nextIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); } BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1026,7 +1057,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1036,11 +1067,11 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); //brush = QBrush(Qt::green); - ui->tableWidgetCheck->cellWidget(nextIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //currentItem->setBackground(brush); if (lastSelectedIndex != -1) { QTableWidgetItem *previousItem = ui->tableWidgetCheck->item(lastSelectedIndex, 0); @@ -1051,10 +1082,10 @@ } if(lastSelectedIndex == ui->tableWidgetCheck->rowCount() - 1){ isBack =!isBack; - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); } } else { for (int i = ui->tableWidgetCheck->rowCount() - 1; i >= 0; --i) { @@ -1067,15 +1098,15 @@ if (lastSelectedIndex == -1) { lastSelectedIndex = ui->tableWidgetCheck->rowCount() - 1; } - int nextIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; + nextGageIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1084,7 +1115,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1094,10 +1125,10 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //brush = QBrush(Qt::blue); //currentItem->setBackground(brush); @@ -1114,6 +1145,7 @@ ui->pushButton_start->setEnabled(true); ui->pushButton_next->setEnabled(false); closeDevice(); + nextGageIndex=-1; } } ui->tableWidgetCheck->scrollToItem(currentItem); @@ -1243,7 +1275,7 @@ } int CheckWindow::getIndexByHeader(QString sLabel,QStringList sName){ - const auto &headrs = headTableList.value(sLabel); + const auto &headrs = headTableList->value(sLabel); for(int j=0;jkeys().count()==0) return; BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); if(iEquipType==13) @@ -1405,6 +1437,7 @@ } else if(iEquipType==4){ isBack=false; + nextGageIndex=-1; lastSelectedIndex=-1; ui->pushButton_next->setEnabled(true); ui->pushButton_start->setEnabled(false); @@ -1421,12 +1454,12 @@ return; } connectDevice(); - for(int i=0;ikeys().length();i++) { //每次循环按钮变化 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(sLabel)); for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; @@ -1486,7 +1519,7 @@ autoAdujstData(sLabel,i,dStdValue,dataRes); Delay_MSec(2000); } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } closeDevice(); } @@ -1752,13 +1785,13 @@ for (int _ch=0;_chshowDialog("通道切换提示",QString("请切换 %1 通道").arg(chList[_ch]))){continue;} - for(int i=0;ikeys().length();i++) { BaseCommonApi::SaveLogInfo(1,QString("---------------------------------------------------")); //首先检索当前检定项目的通道 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 %2 测试").arg(chList[_ch]).arg(sLabel)); QString sParam; QString ValueUnit; @@ -1961,7 +1994,7 @@ } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } } @@ -2200,3 +2233,22 @@ valuelist.append(value); return valuelist; } + + +void CheckWindow::keyPressEvent(QKeyEvent *ev) +{ + if(ui->stackedWidget_2->currentIndex()==1&&iEquipType==4){ + if(ev->key() == Qt::Key_Right) + { + int idx = curDevciceIdx+1; + on_deviceButton_clicked(idx); + //return; + }else if(ev->key() == Qt::Key_Left) + { + int idx = curDevciceIdx-1; + on_deviceButton_clicked(idx); + //return; + } + } + //QWidget::keyPressEvent(ev); +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 0500d53..0c12a8f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -59,6 +59,8 @@ getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); + //this->grabKeyboard(); + setFocusPolicy(Qt::StrongFocus); } CheckWindow::~CheckWindow() @@ -317,11 +319,17 @@ void CheckWindow::showCheck() { - curHeadIdx=-1; deleteItem(ui->horizontalLayout_14); int idx=0; + curDevciceIdx=-1; + curDeviceId = ""; for (const Dept& task : selectTaskList) { + QMap header; + QMap> data = BaseCommonApi::Search_CalibrationTableClass(task.sample_id,&header); + caliDataListAll.append(data); + headTableListAll.append(header); + QPushButton *btn_1 = new QPushButton(); btn_1->setText(task.sample_name); btn_1->setStyleSheet("QPushButton{" @@ -334,37 +342,46 @@ font.setBold(true); btn_1->setFont(font); btn_1->setCursor(Qt::PointingHandCursor); - connect(btn_1, &QPushButton::clicked, this, [this,task,idx]() { - on_deviceButton_clicked(task,idx); + connect(btn_1, &QPushButton::clicked, this, [this,idx]() { + on_deviceButton_clicked(idx); }); ui->horizontalLayout_14->addWidget(btn_1); idx++; } - on_deviceButton_clicked(selectTaskList[0],0); ui->horizontalLayout_14->addStretch(); + on_deviceButton_clicked(0); + ui->stackedWidget_2->setCurrentIndex(1); +} - if(selectTaskList.length()>0) +void CheckWindow::changeDevice(int idx){ + if(idx>=0&&idx CliTable = BaseCommonApi::getJudgeCalibrationTable(deviceId); + QString deviceId = selectTaskList[idx].sample_id; + if(deviceId==curDeviceId) + return; + curDeviceId = deviceId; + QList CliTable = BaseCommonApi::getJudgeCalibrationTable(curDeviceId); if(CliTable.length()>0){ iEquipType = CliTable[0].belong_standard_equipment.toInt(); } //QStringList headlist; pageButtons.clear(); headList.clear(); - calibrationList.clear(); - headTableList.clear(); + //calibrationList.clear(); + //headTableList.clear(); chList.clear(); //calibrationList =BaseCommonApi::Search_CalibrationTable(deviceId,&headList); - caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); - if(caliDataList.count()<1){ + //caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); + caliDataList = &caliDataListAll[idx]; + headTableList = &headTableListAll[idx]; + if(caliDataList->count()<1){ QMessageBox::warning(this, "提示", "此检定项未开发或此设备无检测点"); - return;}; + return; + }; //tableWidgetItem - QList calData = caliDataList.values().first(); - gaugeInfo = BaseCommonApi::searchStatus(deviceId); + QList calData = caliDataList->values().first(); + gaugeInfo = BaseCommonApi::searchStatus(curDeviceId); ui->tableWidget_Point->clearContents(); ui->tableWidget_Point->setRowCount(0); deleteItem(ui->HeadListLayout); @@ -384,12 +401,13 @@ // row++; // } int index=0; - for (const auto &item : headTableList) { + curHeadIdx=-1; + for (const auto &item : *headTableList) { // ======================================================================================== // 数据循环显示 // =================================================================================== - QString sLabel = headTableList.keys()[index]; - const auto &dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[index]; + const auto &dataRes = caliDataList->value(sLabel); //tableWidget->setRowCount(data.count()); for (int i = 0; i < dataRes.count(); ++i) { @@ -499,10 +517,8 @@ } std::sort(chList.begin(), chList.end()); if(chList.count()==0){chList.append("CH1");}; - ui->stackedWidget_2->setCurrentIndex(1); initCheckTable(0); } - void CheckWindow::openGageResult(){ //QList calData = caliDataList.values().first(); FormGageResult *checkWindow = new FormGageResult(nullptr,selectTaskList[0].sample_id); @@ -511,8 +527,11 @@ checkWindow->show(); } -void CheckWindow::on_deviceButton_clicked(Dept task,int idx) +void CheckWindow::on_deviceButton_clicked(int idx) { + if(curDevciceIdx == idx||idx<0||idx>=selectTaskList.length()) + return; + curDevciceIdx = idx; for(int i=0;ihorizontalLayout_14->itemAt(i); QPushButton *btn_1 = qobject_cast(child->widget()); @@ -528,10 +547,11 @@ "}"); } } - ui->label_21->setText(QString("设备名称: %1").arg(task.sample_name)); - ui->label_22->setText(QString("型号规格: %1").arg(task.sample_model)); - ui->label_23->setText(QString("出厂编号: %1").arg(task.manufacture_no)); - ui->label_24->setText(QString("生产厂家: %1").arg(task.manufacturer)); + ui->label_21->setText(QString("设备名称: %1").arg(selectTaskList[curDevciceIdx].sample_name)); + ui->label_22->setText(QString("型号规格: %1").arg(selectTaskList[curDevciceIdx].sample_model)); + ui->label_23->setText(QString("出厂编号: %1").arg(selectTaskList[curDevciceIdx].manufacture_no)); + ui->label_24->setText(QString("生产厂家: %1").arg(selectTaskList[curDevciceIdx].manufacturer)); + changeDevice(idx); } void CheckWindow::deleteItem(QLayout *layout) @@ -566,8 +586,8 @@ { DialogCheckResult* dlg = new DialogCheckResult; dlg->taskList =selectTaskList; - dlg->deviceId = selectTaskList[0].sample_id; - dlg->initCheckTable(&caliDataList,&headTableList,standardId); + //dlg->deviceId = selectTaskList[0].sample_id; + dlg->initCheckTable(caliDataListAll,headTableListAll,standardId); dlg->setModal(true); dlg->show(); } @@ -855,16 +875,16 @@ // } // } // } - if(curHeadIdx==idx||headTableList.keys().count()==0) + if(curHeadIdx==idx||headTableList->keys().count()==0) return; pageButtons[idx]->setChecked(true); curHeadIdx = idx; - QString sLabel = headTableList.keys()[curHeadIdx]; - const auto &dataRes = caliDataList.value(sLabel); - const auto &headrs = headTableList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + const auto &dataRes = caliDataList->value(sLabel); + const auto &headrs = headTableList->value(sLabel); ui->tableWidgetCheck->clearContents(); ui->tableWidgetCheck->setRowCount(0); ui->tableWidgetCheck->setColumnCount(0); @@ -940,6 +960,17 @@ ui->tableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); } } + if(iEquipType==4&&nextGageIndex!=-1){ + if(isBack){ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + }else{ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + } + } } //压力测试 数据表格同步 计算改变 void CheckWindow::gageDataChange(){ @@ -957,8 +988,8 @@ // 获取该按钮所在表格的行号和列号 int row = index.row(); int col = index.column(); - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); dataRes[row][col] = pushButton_->text(); double dVal,dVal2; @@ -986,7 +1017,7 @@ dataRes[row][7] = QString::number(dVal2-dVal); } } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } void CheckWindow::stepGageCheck() @@ -1006,18 +1037,18 @@ // if (lastSelectedIndex == -1) { // lastSelectedIndex = 0; // } - int nextIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); if(lastSelectedIndex == ui-> tableWidgetCheck->rowCount() - 1 ){ - nextIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); } BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1026,7 +1057,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1036,11 +1067,11 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); //brush = QBrush(Qt::green); - ui->tableWidgetCheck->cellWidget(nextIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //currentItem->setBackground(brush); if (lastSelectedIndex != -1) { QTableWidgetItem *previousItem = ui->tableWidgetCheck->item(lastSelectedIndex, 0); @@ -1051,10 +1082,10 @@ } if(lastSelectedIndex == ui->tableWidgetCheck->rowCount() - 1){ isBack =!isBack; - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); } } else { for (int i = ui->tableWidgetCheck->rowCount() - 1; i >= 0; --i) { @@ -1067,15 +1098,15 @@ if (lastSelectedIndex == -1) { lastSelectedIndex = ui->tableWidgetCheck->rowCount() - 1; } - int nextIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; + nextGageIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1084,7 +1115,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1094,10 +1125,10 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //brush = QBrush(Qt::blue); //currentItem->setBackground(brush); @@ -1114,6 +1145,7 @@ ui->pushButton_start->setEnabled(true); ui->pushButton_next->setEnabled(false); closeDevice(); + nextGageIndex=-1; } } ui->tableWidgetCheck->scrollToItem(currentItem); @@ -1243,7 +1275,7 @@ } int CheckWindow::getIndexByHeader(QString sLabel,QStringList sName){ - const auto &headrs = headTableList.value(sLabel); + const auto &headrs = headTableList->value(sLabel); for(int j=0;jkeys().count()==0) return; BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); if(iEquipType==13) @@ -1405,6 +1437,7 @@ } else if(iEquipType==4){ isBack=false; + nextGageIndex=-1; lastSelectedIndex=-1; ui->pushButton_next->setEnabled(true); ui->pushButton_start->setEnabled(false); @@ -1421,12 +1454,12 @@ return; } connectDevice(); - for(int i=0;ikeys().length();i++) { //每次循环按钮变化 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(sLabel)); for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; @@ -1486,7 +1519,7 @@ autoAdujstData(sLabel,i,dStdValue,dataRes); Delay_MSec(2000); } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } closeDevice(); } @@ -1752,13 +1785,13 @@ for (int _ch=0;_chshowDialog("通道切换提示",QString("请切换 %1 通道").arg(chList[_ch]))){continue;} - for(int i=0;ikeys().length();i++) { BaseCommonApi::SaveLogInfo(1,QString("---------------------------------------------------")); //首先检索当前检定项目的通道 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 %2 测试").arg(chList[_ch]).arg(sLabel)); QString sParam; QString ValueUnit; @@ -1961,7 +1994,7 @@ } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } } @@ -2200,3 +2233,22 @@ valuelist.append(value); return valuelist; } + + +void CheckWindow::keyPressEvent(QKeyEvent *ev) +{ + if(ui->stackedWidget_2->currentIndex()==1&&iEquipType==4){ + if(ev->key() == Qt::Key_Right) + { + int idx = curDevciceIdx+1; + on_deviceButton_clicked(idx); + //return; + }else if(ev->key() == Qt::Key_Left) + { + int idx = curDevciceIdx-1; + on_deviceButton_clicked(idx); + //return; + } + } + //QWidget::keyPressEvent(ev); +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 490381d..23a038d 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -42,7 +42,7 @@ void on_pushButton_9_clicked(); void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); - void on_deviceButton_clicked(Dept task,int idx); + void on_deviceButton_clicked(int idx); void on_pushButton_start_clicked(); void on_pushButton_pause_clicked(); @@ -106,6 +106,8 @@ void stepGageCheck(); QStringList getsParambyHeader(QString sParam); QStringList QStrTranQStrList(QString value); + void changeDevice(int idx); + void keyPressEvent(QKeyEvent *ev); private: Ui::CheckWindow *ui; QList programList; @@ -120,8 +122,8 @@ VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; - QMap> caliDataList; - QMap headTableList; + QMap> *caliDataList; + QMap *headTableList; QList catDeviceList; QStringList catIdList; int curHeadIdx=-1; @@ -139,6 +141,12 @@ QList gaugeInfo; bool isBack = false; // 是否处于倒序状态 int lastSelectedIndex = -1; // 记录上一次选中的行号 + + QList>> caliDataListAll; + QList> headTableListAll; + QString curDeviceId=""; + int curDevciceIdx=-1; + int nextGageIndex=-1; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 0500d53..0c12a8f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -59,6 +59,8 @@ getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); + //this->grabKeyboard(); + setFocusPolicy(Qt::StrongFocus); } CheckWindow::~CheckWindow() @@ -317,11 +319,17 @@ void CheckWindow::showCheck() { - curHeadIdx=-1; deleteItem(ui->horizontalLayout_14); int idx=0; + curDevciceIdx=-1; + curDeviceId = ""; for (const Dept& task : selectTaskList) { + QMap header; + QMap> data = BaseCommonApi::Search_CalibrationTableClass(task.sample_id,&header); + caliDataListAll.append(data); + headTableListAll.append(header); + QPushButton *btn_1 = new QPushButton(); btn_1->setText(task.sample_name); btn_1->setStyleSheet("QPushButton{" @@ -334,37 +342,46 @@ font.setBold(true); btn_1->setFont(font); btn_1->setCursor(Qt::PointingHandCursor); - connect(btn_1, &QPushButton::clicked, this, [this,task,idx]() { - on_deviceButton_clicked(task,idx); + connect(btn_1, &QPushButton::clicked, this, [this,idx]() { + on_deviceButton_clicked(idx); }); ui->horizontalLayout_14->addWidget(btn_1); idx++; } - on_deviceButton_clicked(selectTaskList[0],0); ui->horizontalLayout_14->addStretch(); + on_deviceButton_clicked(0); + ui->stackedWidget_2->setCurrentIndex(1); +} - if(selectTaskList.length()>0) +void CheckWindow::changeDevice(int idx){ + if(idx>=0&&idx CliTable = BaseCommonApi::getJudgeCalibrationTable(deviceId); + QString deviceId = selectTaskList[idx].sample_id; + if(deviceId==curDeviceId) + return; + curDeviceId = deviceId; + QList CliTable = BaseCommonApi::getJudgeCalibrationTable(curDeviceId); if(CliTable.length()>0){ iEquipType = CliTable[0].belong_standard_equipment.toInt(); } //QStringList headlist; pageButtons.clear(); headList.clear(); - calibrationList.clear(); - headTableList.clear(); + //calibrationList.clear(); + //headTableList.clear(); chList.clear(); //calibrationList =BaseCommonApi::Search_CalibrationTable(deviceId,&headList); - caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); - if(caliDataList.count()<1){ + //caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); + caliDataList = &caliDataListAll[idx]; + headTableList = &headTableListAll[idx]; + if(caliDataList->count()<1){ QMessageBox::warning(this, "提示", "此检定项未开发或此设备无检测点"); - return;}; + return; + }; //tableWidgetItem - QList calData = caliDataList.values().first(); - gaugeInfo = BaseCommonApi::searchStatus(deviceId); + QList calData = caliDataList->values().first(); + gaugeInfo = BaseCommonApi::searchStatus(curDeviceId); ui->tableWidget_Point->clearContents(); ui->tableWidget_Point->setRowCount(0); deleteItem(ui->HeadListLayout); @@ -384,12 +401,13 @@ // row++; // } int index=0; - for (const auto &item : headTableList) { + curHeadIdx=-1; + for (const auto &item : *headTableList) { // ======================================================================================== // 数据循环显示 // =================================================================================== - QString sLabel = headTableList.keys()[index]; - const auto &dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[index]; + const auto &dataRes = caliDataList->value(sLabel); //tableWidget->setRowCount(data.count()); for (int i = 0; i < dataRes.count(); ++i) { @@ -499,10 +517,8 @@ } std::sort(chList.begin(), chList.end()); if(chList.count()==0){chList.append("CH1");}; - ui->stackedWidget_2->setCurrentIndex(1); initCheckTable(0); } - void CheckWindow::openGageResult(){ //QList calData = caliDataList.values().first(); FormGageResult *checkWindow = new FormGageResult(nullptr,selectTaskList[0].sample_id); @@ -511,8 +527,11 @@ checkWindow->show(); } -void CheckWindow::on_deviceButton_clicked(Dept task,int idx) +void CheckWindow::on_deviceButton_clicked(int idx) { + if(curDevciceIdx == idx||idx<0||idx>=selectTaskList.length()) + return; + curDevciceIdx = idx; for(int i=0;ihorizontalLayout_14->itemAt(i); QPushButton *btn_1 = qobject_cast(child->widget()); @@ -528,10 +547,11 @@ "}"); } } - ui->label_21->setText(QString("设备名称: %1").arg(task.sample_name)); - ui->label_22->setText(QString("型号规格: %1").arg(task.sample_model)); - ui->label_23->setText(QString("出厂编号: %1").arg(task.manufacture_no)); - ui->label_24->setText(QString("生产厂家: %1").arg(task.manufacturer)); + ui->label_21->setText(QString("设备名称: %1").arg(selectTaskList[curDevciceIdx].sample_name)); + ui->label_22->setText(QString("型号规格: %1").arg(selectTaskList[curDevciceIdx].sample_model)); + ui->label_23->setText(QString("出厂编号: %1").arg(selectTaskList[curDevciceIdx].manufacture_no)); + ui->label_24->setText(QString("生产厂家: %1").arg(selectTaskList[curDevciceIdx].manufacturer)); + changeDevice(idx); } void CheckWindow::deleteItem(QLayout *layout) @@ -566,8 +586,8 @@ { DialogCheckResult* dlg = new DialogCheckResult; dlg->taskList =selectTaskList; - dlg->deviceId = selectTaskList[0].sample_id; - dlg->initCheckTable(&caliDataList,&headTableList,standardId); + //dlg->deviceId = selectTaskList[0].sample_id; + dlg->initCheckTable(caliDataListAll,headTableListAll,standardId); dlg->setModal(true); dlg->show(); } @@ -855,16 +875,16 @@ // } // } // } - if(curHeadIdx==idx||headTableList.keys().count()==0) + if(curHeadIdx==idx||headTableList->keys().count()==0) return; pageButtons[idx]->setChecked(true); curHeadIdx = idx; - QString sLabel = headTableList.keys()[curHeadIdx]; - const auto &dataRes = caliDataList.value(sLabel); - const auto &headrs = headTableList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + const auto &dataRes = caliDataList->value(sLabel); + const auto &headrs = headTableList->value(sLabel); ui->tableWidgetCheck->clearContents(); ui->tableWidgetCheck->setRowCount(0); ui->tableWidgetCheck->setColumnCount(0); @@ -940,6 +960,17 @@ ui->tableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); } } + if(iEquipType==4&&nextGageIndex!=-1){ + if(isBack){ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + }else{ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + } + } } //压力测试 数据表格同步 计算改变 void CheckWindow::gageDataChange(){ @@ -957,8 +988,8 @@ // 获取该按钮所在表格的行号和列号 int row = index.row(); int col = index.column(); - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); dataRes[row][col] = pushButton_->text(); double dVal,dVal2; @@ -986,7 +1017,7 @@ dataRes[row][7] = QString::number(dVal2-dVal); } } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } void CheckWindow::stepGageCheck() @@ -1006,18 +1037,18 @@ // if (lastSelectedIndex == -1) { // lastSelectedIndex = 0; // } - int nextIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); if(lastSelectedIndex == ui-> tableWidgetCheck->rowCount() - 1 ){ - nextIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); } BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1026,7 +1057,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1036,11 +1067,11 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); //brush = QBrush(Qt::green); - ui->tableWidgetCheck->cellWidget(nextIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //currentItem->setBackground(brush); if (lastSelectedIndex != -1) { QTableWidgetItem *previousItem = ui->tableWidgetCheck->item(lastSelectedIndex, 0); @@ -1051,10 +1082,10 @@ } if(lastSelectedIndex == ui->tableWidgetCheck->rowCount() - 1){ isBack =!isBack; - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); } } else { for (int i = ui->tableWidgetCheck->rowCount() - 1; i >= 0; --i) { @@ -1067,15 +1098,15 @@ if (lastSelectedIndex == -1) { lastSelectedIndex = ui->tableWidgetCheck->rowCount() - 1; } - int nextIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; + nextGageIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1084,7 +1115,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1094,10 +1125,10 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //brush = QBrush(Qt::blue); //currentItem->setBackground(brush); @@ -1114,6 +1145,7 @@ ui->pushButton_start->setEnabled(true); ui->pushButton_next->setEnabled(false); closeDevice(); + nextGageIndex=-1; } } ui->tableWidgetCheck->scrollToItem(currentItem); @@ -1243,7 +1275,7 @@ } int CheckWindow::getIndexByHeader(QString sLabel,QStringList sName){ - const auto &headrs = headTableList.value(sLabel); + const auto &headrs = headTableList->value(sLabel); for(int j=0;jkeys().count()==0) return; BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); if(iEquipType==13) @@ -1405,6 +1437,7 @@ } else if(iEquipType==4){ isBack=false; + nextGageIndex=-1; lastSelectedIndex=-1; ui->pushButton_next->setEnabled(true); ui->pushButton_start->setEnabled(false); @@ -1421,12 +1454,12 @@ return; } connectDevice(); - for(int i=0;ikeys().length();i++) { //每次循环按钮变化 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(sLabel)); for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; @@ -1486,7 +1519,7 @@ autoAdujstData(sLabel,i,dStdValue,dataRes); Delay_MSec(2000); } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } closeDevice(); } @@ -1752,13 +1785,13 @@ for (int _ch=0;_chshowDialog("通道切换提示",QString("请切换 %1 通道").arg(chList[_ch]))){continue;} - for(int i=0;ikeys().length();i++) { BaseCommonApi::SaveLogInfo(1,QString("---------------------------------------------------")); //首先检索当前检定项目的通道 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 %2 测试").arg(chList[_ch]).arg(sLabel)); QString sParam; QString ValueUnit; @@ -1961,7 +1994,7 @@ } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } } @@ -2200,3 +2233,22 @@ valuelist.append(value); return valuelist; } + + +void CheckWindow::keyPressEvent(QKeyEvent *ev) +{ + if(ui->stackedWidget_2->currentIndex()==1&&iEquipType==4){ + if(ev->key() == Qt::Key_Right) + { + int idx = curDevciceIdx+1; + on_deviceButton_clicked(idx); + //return; + }else if(ev->key() == Qt::Key_Left) + { + int idx = curDevciceIdx-1; + on_deviceButton_clicked(idx); + //return; + } + } + //QWidget::keyPressEvent(ev); +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 490381d..23a038d 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -42,7 +42,7 @@ void on_pushButton_9_clicked(); void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); - void on_deviceButton_clicked(Dept task,int idx); + void on_deviceButton_clicked(int idx); void on_pushButton_start_clicked(); void on_pushButton_pause_clicked(); @@ -106,6 +106,8 @@ void stepGageCheck(); QStringList getsParambyHeader(QString sParam); QStringList QStrTranQStrList(QString value); + void changeDevice(int idx); + void keyPressEvent(QKeyEvent *ev); private: Ui::CheckWindow *ui; QList programList; @@ -120,8 +122,8 @@ VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; - QMap> caliDataList; - QMap headTableList; + QMap> *caliDataList; + QMap *headTableList; QList catDeviceList; QStringList catIdList; int curHeadIdx=-1; @@ -139,6 +141,12 @@ QList gaugeInfo; bool isBack = false; // 是否处于倒序状态 int lastSelectedIndex = -1; // 记录上一次选中的行号 + + QList>> caliDataListAll; + QList> headTableListAll; + QString curDeviceId=""; + int curDevciceIdx=-1; + int nextGageIndex=-1; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index f6f5a32..4b56940 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -67,15 +67,52 @@ } -void DialogCheckResult::initCheckTable(QMap> *measList,QMap *headList,QString sID) +void DialogCheckResult::initCheckTable(QList>> measList,QList> headList,QString sID) { - caliDataList = measList; - headTableList = headList; + caliDataListAll = measList; + headTableListAll = headList; stdId = sID; + + deleteItem(ui->horizontalLayoutDevice); + int idx=0; + curDevciceIdx=-1; + for (const Dept& task : taskList) + { + QPushButton *btn_1 = new QPushButton(); + btn_1->setText(task.sample_name); + btn_1->setStyleSheet("QPushButton{" + "background-color:rgb(240,240,240);" + "color:rgb(51,51,51);" + "}"); + //btn_1->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed); + QFont font; + //font.setPointSize(12);//字体大小 + font.setBold(true); + btn_1->setFont(font); + btn_1->setCursor(Qt::PointingHandCursor); + connect(btn_1, &QPushButton::clicked, this, [this,idx]() { + on_deviceButton_clicked(idx); + }); + ui->horizontalLayoutDevice->addWidget(btn_1); + idx++; + } + ui->horizontalLayoutDevice->addStretch(); + on_deviceButton_clicked(0); +} + +void DialogCheckResult::on_deviceButton_clicked(int idx) +{ + if(curDevciceIdx == idx||idx<0||idx>=taskList.length()) + return; + curDevciceIdx = idx; + headTableList = &headTableListAll[curDevciceIdx]; + caliDataList = &caliDataListAll[curDevciceIdx]; + deviceId = taskList[curDevciceIdx].sample_id; ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); deleteItem(ui->HeadListLayout); int index=0; + curHeadIdx=-1; for (const auto &item : *headTableList) { // ======================================================================================== // 数据循环显示 @@ -87,7 +124,7 @@ QPushButton *button = new QPushButton(sLabel, this); //设置样式 // 设置按钮大小为 56x20 - button->setFixedSize(85, 40); + //button->setFixedSize(85, 40); button->setCheckable(true); button->setAutoExclusive(true); //设置第一个按钮选中状态 @@ -134,19 +171,125 @@ return ""; } -void DialogCheckResult::on_pushButton_3_clicked() +int DialogCheckResult::getDictebyItemName(QString Name) +{ + int NewName=0; + if(checkitemlist.keys().contains(Name)) + { + NewName=checkitemlist.value(Name); + } + return NewName; +} +void DialogCheckResult::ItemUnitSplit(QString Value,QString &data,QString &unit) +{ + QString sData2=Value; + QString sNewData,sUnit; + // 正则表达式匹配数字 + QRegularExpression reLetters("[a-zA-ZΩΜΩ]"); + QRegularExpression reLetters1("[^a-zA-ZΩΜΩ]"); + data=sData2.replace(reLetters,""); + unit= Value.replace(reLetters1,""); + +} + +void DialogCheckResult::on_pushButtonPreview_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 <<""<<""<comboBoxPlace->currentText()<dateEditCheck->text()<lineEditTemp->text()<lineEdit_Hum->text(); + engine.setMarks("unit",taskList[curDevciceIdx].customer_name); + engine.setMarks("address",""); + engine.setMarks("name",taskList[curDevciceIdx].sample_name); + engine.setMarks("type",taskList[curDevciceIdx].sample_model); + engine.setMarks("serial",taskList[curDevciceIdx].manufacture_no); + engine.setMarks("factory",taskList[curDevciceIdx].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 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;isetRowCount(data.count()); + for (int i = 0; i < dataRes.count(); ++i) { + engine.setCellString(pTable,i+2,1,QString::number(i+1)); + for(int j=1;jlineEditTemp->text(); @@ -321,112 +464,7 @@ } } -void DialogCheckResult::on_pushButton_2_clicked() +void DialogCheckResult::on_pushButtonPrint_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 <<""<<""<comboBoxPlace->currentText()<dateEditCheck->text()<lineEditTemp->text()<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 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;isetRowCount(data.count()); - for (int i = 0; i < dataRes.count(); ++i) { - engine.setCellString(pTable,i+2,1,QString::number(i+1)); - for(int j=1;jstackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); + //this->grabKeyboard(); + setFocusPolicy(Qt::StrongFocus); } CheckWindow::~CheckWindow() @@ -317,11 +319,17 @@ void CheckWindow::showCheck() { - curHeadIdx=-1; deleteItem(ui->horizontalLayout_14); int idx=0; + curDevciceIdx=-1; + curDeviceId = ""; for (const Dept& task : selectTaskList) { + QMap header; + QMap> data = BaseCommonApi::Search_CalibrationTableClass(task.sample_id,&header); + caliDataListAll.append(data); + headTableListAll.append(header); + QPushButton *btn_1 = new QPushButton(); btn_1->setText(task.sample_name); btn_1->setStyleSheet("QPushButton{" @@ -334,37 +342,46 @@ font.setBold(true); btn_1->setFont(font); btn_1->setCursor(Qt::PointingHandCursor); - connect(btn_1, &QPushButton::clicked, this, [this,task,idx]() { - on_deviceButton_clicked(task,idx); + connect(btn_1, &QPushButton::clicked, this, [this,idx]() { + on_deviceButton_clicked(idx); }); ui->horizontalLayout_14->addWidget(btn_1); idx++; } - on_deviceButton_clicked(selectTaskList[0],0); ui->horizontalLayout_14->addStretch(); + on_deviceButton_clicked(0); + ui->stackedWidget_2->setCurrentIndex(1); +} - if(selectTaskList.length()>0) +void CheckWindow::changeDevice(int idx){ + if(idx>=0&&idx CliTable = BaseCommonApi::getJudgeCalibrationTable(deviceId); + QString deviceId = selectTaskList[idx].sample_id; + if(deviceId==curDeviceId) + return; + curDeviceId = deviceId; + QList CliTable = BaseCommonApi::getJudgeCalibrationTable(curDeviceId); if(CliTable.length()>0){ iEquipType = CliTable[0].belong_standard_equipment.toInt(); } //QStringList headlist; pageButtons.clear(); headList.clear(); - calibrationList.clear(); - headTableList.clear(); + //calibrationList.clear(); + //headTableList.clear(); chList.clear(); //calibrationList =BaseCommonApi::Search_CalibrationTable(deviceId,&headList); - caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); - if(caliDataList.count()<1){ + //caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); + caliDataList = &caliDataListAll[idx]; + headTableList = &headTableListAll[idx]; + if(caliDataList->count()<1){ QMessageBox::warning(this, "提示", "此检定项未开发或此设备无检测点"); - return;}; + return; + }; //tableWidgetItem - QList calData = caliDataList.values().first(); - gaugeInfo = BaseCommonApi::searchStatus(deviceId); + QList calData = caliDataList->values().first(); + gaugeInfo = BaseCommonApi::searchStatus(curDeviceId); ui->tableWidget_Point->clearContents(); ui->tableWidget_Point->setRowCount(0); deleteItem(ui->HeadListLayout); @@ -384,12 +401,13 @@ // row++; // } int index=0; - for (const auto &item : headTableList) { + curHeadIdx=-1; + for (const auto &item : *headTableList) { // ======================================================================================== // 数据循环显示 // =================================================================================== - QString sLabel = headTableList.keys()[index]; - const auto &dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[index]; + const auto &dataRes = caliDataList->value(sLabel); //tableWidget->setRowCount(data.count()); for (int i = 0; i < dataRes.count(); ++i) { @@ -499,10 +517,8 @@ } std::sort(chList.begin(), chList.end()); if(chList.count()==0){chList.append("CH1");}; - ui->stackedWidget_2->setCurrentIndex(1); initCheckTable(0); } - void CheckWindow::openGageResult(){ //QList calData = caliDataList.values().first(); FormGageResult *checkWindow = new FormGageResult(nullptr,selectTaskList[0].sample_id); @@ -511,8 +527,11 @@ checkWindow->show(); } -void CheckWindow::on_deviceButton_clicked(Dept task,int idx) +void CheckWindow::on_deviceButton_clicked(int idx) { + if(curDevciceIdx == idx||idx<0||idx>=selectTaskList.length()) + return; + curDevciceIdx = idx; for(int i=0;ihorizontalLayout_14->itemAt(i); QPushButton *btn_1 = qobject_cast(child->widget()); @@ -528,10 +547,11 @@ "}"); } } - ui->label_21->setText(QString("设备名称: %1").arg(task.sample_name)); - ui->label_22->setText(QString("型号规格: %1").arg(task.sample_model)); - ui->label_23->setText(QString("出厂编号: %1").arg(task.manufacture_no)); - ui->label_24->setText(QString("生产厂家: %1").arg(task.manufacturer)); + ui->label_21->setText(QString("设备名称: %1").arg(selectTaskList[curDevciceIdx].sample_name)); + ui->label_22->setText(QString("型号规格: %1").arg(selectTaskList[curDevciceIdx].sample_model)); + ui->label_23->setText(QString("出厂编号: %1").arg(selectTaskList[curDevciceIdx].manufacture_no)); + ui->label_24->setText(QString("生产厂家: %1").arg(selectTaskList[curDevciceIdx].manufacturer)); + changeDevice(idx); } void CheckWindow::deleteItem(QLayout *layout) @@ -566,8 +586,8 @@ { DialogCheckResult* dlg = new DialogCheckResult; dlg->taskList =selectTaskList; - dlg->deviceId = selectTaskList[0].sample_id; - dlg->initCheckTable(&caliDataList,&headTableList,standardId); + //dlg->deviceId = selectTaskList[0].sample_id; + dlg->initCheckTable(caliDataListAll,headTableListAll,standardId); dlg->setModal(true); dlg->show(); } @@ -855,16 +875,16 @@ // } // } // } - if(curHeadIdx==idx||headTableList.keys().count()==0) + if(curHeadIdx==idx||headTableList->keys().count()==0) return; pageButtons[idx]->setChecked(true); curHeadIdx = idx; - QString sLabel = headTableList.keys()[curHeadIdx]; - const auto &dataRes = caliDataList.value(sLabel); - const auto &headrs = headTableList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + const auto &dataRes = caliDataList->value(sLabel); + const auto &headrs = headTableList->value(sLabel); ui->tableWidgetCheck->clearContents(); ui->tableWidgetCheck->setRowCount(0); ui->tableWidgetCheck->setColumnCount(0); @@ -940,6 +960,17 @@ ui->tableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); } } + if(iEquipType==4&&nextGageIndex!=-1){ + if(isBack){ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + }else{ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + } + } } //压力测试 数据表格同步 计算改变 void CheckWindow::gageDataChange(){ @@ -957,8 +988,8 @@ // 获取该按钮所在表格的行号和列号 int row = index.row(); int col = index.column(); - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); dataRes[row][col] = pushButton_->text(); double dVal,dVal2; @@ -986,7 +1017,7 @@ dataRes[row][7] = QString::number(dVal2-dVal); } } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } void CheckWindow::stepGageCheck() @@ -1006,18 +1037,18 @@ // if (lastSelectedIndex == -1) { // lastSelectedIndex = 0; // } - int nextIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); if(lastSelectedIndex == ui-> tableWidgetCheck->rowCount() - 1 ){ - nextIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); } BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1026,7 +1057,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1036,11 +1067,11 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); //brush = QBrush(Qt::green); - ui->tableWidgetCheck->cellWidget(nextIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //currentItem->setBackground(brush); if (lastSelectedIndex != -1) { QTableWidgetItem *previousItem = ui->tableWidgetCheck->item(lastSelectedIndex, 0); @@ -1051,10 +1082,10 @@ } if(lastSelectedIndex == ui->tableWidgetCheck->rowCount() - 1){ isBack =!isBack; - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); } } else { for (int i = ui->tableWidgetCheck->rowCount() - 1; i >= 0; --i) { @@ -1067,15 +1098,15 @@ if (lastSelectedIndex == -1) { lastSelectedIndex = ui->tableWidgetCheck->rowCount() - 1; } - int nextIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; + nextGageIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1084,7 +1115,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1094,10 +1125,10 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //brush = QBrush(Qt::blue); //currentItem->setBackground(brush); @@ -1114,6 +1145,7 @@ ui->pushButton_start->setEnabled(true); ui->pushButton_next->setEnabled(false); closeDevice(); + nextGageIndex=-1; } } ui->tableWidgetCheck->scrollToItem(currentItem); @@ -1243,7 +1275,7 @@ } int CheckWindow::getIndexByHeader(QString sLabel,QStringList sName){ - const auto &headrs = headTableList.value(sLabel); + const auto &headrs = headTableList->value(sLabel); for(int j=0;jkeys().count()==0) return; BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); if(iEquipType==13) @@ -1405,6 +1437,7 @@ } else if(iEquipType==4){ isBack=false; + nextGageIndex=-1; lastSelectedIndex=-1; ui->pushButton_next->setEnabled(true); ui->pushButton_start->setEnabled(false); @@ -1421,12 +1454,12 @@ return; } connectDevice(); - for(int i=0;ikeys().length();i++) { //每次循环按钮变化 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(sLabel)); for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; @@ -1486,7 +1519,7 @@ autoAdujstData(sLabel,i,dStdValue,dataRes); Delay_MSec(2000); } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } closeDevice(); } @@ -1752,13 +1785,13 @@ for (int _ch=0;_chshowDialog("通道切换提示",QString("请切换 %1 通道").arg(chList[_ch]))){continue;} - for(int i=0;ikeys().length();i++) { BaseCommonApi::SaveLogInfo(1,QString("---------------------------------------------------")); //首先检索当前检定项目的通道 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 %2 测试").arg(chList[_ch]).arg(sLabel)); QString sParam; QString ValueUnit; @@ -1961,7 +1994,7 @@ } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } } @@ -2200,3 +2233,22 @@ valuelist.append(value); return valuelist; } + + +void CheckWindow::keyPressEvent(QKeyEvent *ev) +{ + if(ui->stackedWidget_2->currentIndex()==1&&iEquipType==4){ + if(ev->key() == Qt::Key_Right) + { + int idx = curDevciceIdx+1; + on_deviceButton_clicked(idx); + //return; + }else if(ev->key() == Qt::Key_Left) + { + int idx = curDevciceIdx-1; + on_deviceButton_clicked(idx); + //return; + } + } + //QWidget::keyPressEvent(ev); +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 490381d..23a038d 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -42,7 +42,7 @@ void on_pushButton_9_clicked(); void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); - void on_deviceButton_clicked(Dept task,int idx); + void on_deviceButton_clicked(int idx); void on_pushButton_start_clicked(); void on_pushButton_pause_clicked(); @@ -106,6 +106,8 @@ void stepGageCheck(); QStringList getsParambyHeader(QString sParam); QStringList QStrTranQStrList(QString value); + void changeDevice(int idx); + void keyPressEvent(QKeyEvent *ev); private: Ui::CheckWindow *ui; QList programList; @@ -120,8 +122,8 @@ VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; - QMap> caliDataList; - QMap headTableList; + QMap> *caliDataList; + QMap *headTableList; QList catDeviceList; QStringList catIdList; int curHeadIdx=-1; @@ -139,6 +141,12 @@ QList gaugeInfo; bool isBack = false; // 是否处于倒序状态 int lastSelectedIndex = -1; // 记录上一次选中的行号 + + QList>> caliDataListAll; + QList> headTableListAll; + QString curDeviceId=""; + int curDevciceIdx=-1; + int nextGageIndex=-1; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index f6f5a32..4b56940 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -67,15 +67,52 @@ } -void DialogCheckResult::initCheckTable(QMap> *measList,QMap *headList,QString sID) +void DialogCheckResult::initCheckTable(QList>> measList,QList> headList,QString sID) { - caliDataList = measList; - headTableList = headList; + caliDataListAll = measList; + headTableListAll = headList; stdId = sID; + + deleteItem(ui->horizontalLayoutDevice); + int idx=0; + curDevciceIdx=-1; + for (const Dept& task : taskList) + { + QPushButton *btn_1 = new QPushButton(); + btn_1->setText(task.sample_name); + btn_1->setStyleSheet("QPushButton{" + "background-color:rgb(240,240,240);" + "color:rgb(51,51,51);" + "}"); + //btn_1->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed); + QFont font; + //font.setPointSize(12);//字体大小 + font.setBold(true); + btn_1->setFont(font); + btn_1->setCursor(Qt::PointingHandCursor); + connect(btn_1, &QPushButton::clicked, this, [this,idx]() { + on_deviceButton_clicked(idx); + }); + ui->horizontalLayoutDevice->addWidget(btn_1); + idx++; + } + ui->horizontalLayoutDevice->addStretch(); + on_deviceButton_clicked(0); +} + +void DialogCheckResult::on_deviceButton_clicked(int idx) +{ + if(curDevciceIdx == idx||idx<0||idx>=taskList.length()) + return; + curDevciceIdx = idx; + headTableList = &headTableListAll[curDevciceIdx]; + caliDataList = &caliDataListAll[curDevciceIdx]; + deviceId = taskList[curDevciceIdx].sample_id; ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); deleteItem(ui->HeadListLayout); int index=0; + curHeadIdx=-1; for (const auto &item : *headTableList) { // ======================================================================================== // 数据循环显示 @@ -87,7 +124,7 @@ QPushButton *button = new QPushButton(sLabel, this); //设置样式 // 设置按钮大小为 56x20 - button->setFixedSize(85, 40); + //button->setFixedSize(85, 40); button->setCheckable(true); button->setAutoExclusive(true); //设置第一个按钮选中状态 @@ -134,19 +171,125 @@ return ""; } -void DialogCheckResult::on_pushButton_3_clicked() +int DialogCheckResult::getDictebyItemName(QString Name) +{ + int NewName=0; + if(checkitemlist.keys().contains(Name)) + { + NewName=checkitemlist.value(Name); + } + return NewName; +} +void DialogCheckResult::ItemUnitSplit(QString Value,QString &data,QString &unit) +{ + QString sData2=Value; + QString sNewData,sUnit; + // 正则表达式匹配数字 + QRegularExpression reLetters("[a-zA-ZΩΜΩ]"); + QRegularExpression reLetters1("[^a-zA-ZΩΜΩ]"); + data=sData2.replace(reLetters,""); + unit= Value.replace(reLetters1,""); + +} + +void DialogCheckResult::on_pushButtonPreview_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 <<""<<""<comboBoxPlace->currentText()<dateEditCheck->text()<lineEditTemp->text()<lineEdit_Hum->text(); + engine.setMarks("unit",taskList[curDevciceIdx].customer_name); + engine.setMarks("address",""); + engine.setMarks("name",taskList[curDevciceIdx].sample_name); + engine.setMarks("type",taskList[curDevciceIdx].sample_model); + engine.setMarks("serial",taskList[curDevciceIdx].manufacture_no); + engine.setMarks("factory",taskList[curDevciceIdx].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 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;isetRowCount(data.count()); + for (int i = 0; i < dataRes.count(); ++i) { + engine.setCellString(pTable,i+2,1,QString::number(i+1)); + for(int j=1;jlineEditTemp->text(); @@ -321,112 +464,7 @@ } } -void DialogCheckResult::on_pushButton_2_clicked() +void DialogCheckResult::on_pushButtonPrint_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 <<""<<""<comboBoxPlace->currentText()<dateEditCheck->text()<lineEditTemp->text()<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 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;isetRowCount(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> *measList,QMap *headList,QString sID); + void initCheckTable(QList>> measList,QList> headList,QString sID); private slots: - void on_pushButton_3_clicked(); + void on_pushButtonPreview_clicked(); - void on_pushButton_2_clicked(); + void on_pushButtonSave_clicked(); - void on_pushButton_clicked(); + void on_pushButtonPrint_clicked(); + private: void deleteItem(QLayout *layout); void initCalDataTable(int idx); QString getValueByHeader(int idx,QString sLabel,QString sName); - + void on_deviceButton_clicked(int idx); public: QList taskList; QString deviceId; @@ -38,6 +39,9 @@ QStringList measHeadList; QMap> *caliDataList; QMap *headTableList; + + QList>> caliDataListAll; + QList> headTableListAll; QString stdId; int curHeadIdx=-1; int iEquipType; @@ -45,6 +49,7 @@ QMap checkitemlist; int getDictebyItemName(QString Name); void ItemUnitSplit(QString Value,QString &data,QString &unit); + int curDevciceIdx=-1; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 0500d53..0c12a8f 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -59,6 +59,8 @@ getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); + //this->grabKeyboard(); + setFocusPolicy(Qt::StrongFocus); } CheckWindow::~CheckWindow() @@ -317,11 +319,17 @@ void CheckWindow::showCheck() { - curHeadIdx=-1; deleteItem(ui->horizontalLayout_14); int idx=0; + curDevciceIdx=-1; + curDeviceId = ""; for (const Dept& task : selectTaskList) { + QMap header; + QMap> data = BaseCommonApi::Search_CalibrationTableClass(task.sample_id,&header); + caliDataListAll.append(data); + headTableListAll.append(header); + QPushButton *btn_1 = new QPushButton(); btn_1->setText(task.sample_name); btn_1->setStyleSheet("QPushButton{" @@ -334,37 +342,46 @@ font.setBold(true); btn_1->setFont(font); btn_1->setCursor(Qt::PointingHandCursor); - connect(btn_1, &QPushButton::clicked, this, [this,task,idx]() { - on_deviceButton_clicked(task,idx); + connect(btn_1, &QPushButton::clicked, this, [this,idx]() { + on_deviceButton_clicked(idx); }); ui->horizontalLayout_14->addWidget(btn_1); idx++; } - on_deviceButton_clicked(selectTaskList[0],0); ui->horizontalLayout_14->addStretch(); + on_deviceButton_clicked(0); + ui->stackedWidget_2->setCurrentIndex(1); +} - if(selectTaskList.length()>0) +void CheckWindow::changeDevice(int idx){ + if(idx>=0&&idx CliTable = BaseCommonApi::getJudgeCalibrationTable(deviceId); + QString deviceId = selectTaskList[idx].sample_id; + if(deviceId==curDeviceId) + return; + curDeviceId = deviceId; + QList CliTable = BaseCommonApi::getJudgeCalibrationTable(curDeviceId); if(CliTable.length()>0){ iEquipType = CliTable[0].belong_standard_equipment.toInt(); } //QStringList headlist; pageButtons.clear(); headList.clear(); - calibrationList.clear(); - headTableList.clear(); + //calibrationList.clear(); + //headTableList.clear(); chList.clear(); //calibrationList =BaseCommonApi::Search_CalibrationTable(deviceId,&headList); - caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); - if(caliDataList.count()<1){ + //caliDataList = BaseCommonApi::Search_CalibrationTableClass(deviceId,&headTableList); + caliDataList = &caliDataListAll[idx]; + headTableList = &headTableListAll[idx]; + if(caliDataList->count()<1){ QMessageBox::warning(this, "提示", "此检定项未开发或此设备无检测点"); - return;}; + return; + }; //tableWidgetItem - QList calData = caliDataList.values().first(); - gaugeInfo = BaseCommonApi::searchStatus(deviceId); + QList calData = caliDataList->values().first(); + gaugeInfo = BaseCommonApi::searchStatus(curDeviceId); ui->tableWidget_Point->clearContents(); ui->tableWidget_Point->setRowCount(0); deleteItem(ui->HeadListLayout); @@ -384,12 +401,13 @@ // row++; // } int index=0; - for (const auto &item : headTableList) { + curHeadIdx=-1; + for (const auto &item : *headTableList) { // ======================================================================================== // 数据循环显示 // =================================================================================== - QString sLabel = headTableList.keys()[index]; - const auto &dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[index]; + const auto &dataRes = caliDataList->value(sLabel); //tableWidget->setRowCount(data.count()); for (int i = 0; i < dataRes.count(); ++i) { @@ -499,10 +517,8 @@ } std::sort(chList.begin(), chList.end()); if(chList.count()==0){chList.append("CH1");}; - ui->stackedWidget_2->setCurrentIndex(1); initCheckTable(0); } - void CheckWindow::openGageResult(){ //QList calData = caliDataList.values().first(); FormGageResult *checkWindow = new FormGageResult(nullptr,selectTaskList[0].sample_id); @@ -511,8 +527,11 @@ checkWindow->show(); } -void CheckWindow::on_deviceButton_clicked(Dept task,int idx) +void CheckWindow::on_deviceButton_clicked(int idx) { + if(curDevciceIdx == idx||idx<0||idx>=selectTaskList.length()) + return; + curDevciceIdx = idx; for(int i=0;ihorizontalLayout_14->itemAt(i); QPushButton *btn_1 = qobject_cast(child->widget()); @@ -528,10 +547,11 @@ "}"); } } - ui->label_21->setText(QString("设备名称: %1").arg(task.sample_name)); - ui->label_22->setText(QString("型号规格: %1").arg(task.sample_model)); - ui->label_23->setText(QString("出厂编号: %1").arg(task.manufacture_no)); - ui->label_24->setText(QString("生产厂家: %1").arg(task.manufacturer)); + ui->label_21->setText(QString("设备名称: %1").arg(selectTaskList[curDevciceIdx].sample_name)); + ui->label_22->setText(QString("型号规格: %1").arg(selectTaskList[curDevciceIdx].sample_model)); + ui->label_23->setText(QString("出厂编号: %1").arg(selectTaskList[curDevciceIdx].manufacture_no)); + ui->label_24->setText(QString("生产厂家: %1").arg(selectTaskList[curDevciceIdx].manufacturer)); + changeDevice(idx); } void CheckWindow::deleteItem(QLayout *layout) @@ -566,8 +586,8 @@ { DialogCheckResult* dlg = new DialogCheckResult; dlg->taskList =selectTaskList; - dlg->deviceId = selectTaskList[0].sample_id; - dlg->initCheckTable(&caliDataList,&headTableList,standardId); + //dlg->deviceId = selectTaskList[0].sample_id; + dlg->initCheckTable(caliDataListAll,headTableListAll,standardId); dlg->setModal(true); dlg->show(); } @@ -855,16 +875,16 @@ // } // } // } - if(curHeadIdx==idx||headTableList.keys().count()==0) + if(curHeadIdx==idx||headTableList->keys().count()==0) return; pageButtons[idx]->setChecked(true); curHeadIdx = idx; - QString sLabel = headTableList.keys()[curHeadIdx]; - const auto &dataRes = caliDataList.value(sLabel); - const auto &headrs = headTableList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + const auto &dataRes = caliDataList->value(sLabel); + const auto &headrs = headTableList->value(sLabel); ui->tableWidgetCheck->clearContents(); ui->tableWidgetCheck->setRowCount(0); ui->tableWidgetCheck->setColumnCount(0); @@ -940,6 +960,17 @@ ui->tableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); } } + if(iEquipType==4&&nextGageIndex!=-1){ + if(isBack){ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + }else{ + ui->tableWidgetCheck->item(nextGageIndex, 0)->setSelected(true); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + } + } } //压力测试 数据表格同步 计算改变 void CheckWindow::gageDataChange(){ @@ -957,8 +988,8 @@ // 获取该按钮所在表格的行号和列号 int row = index.row(); int col = index.column(); - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); dataRes[row][col] = pushButton_->text(); double dVal,dVal2; @@ -986,7 +1017,7 @@ dataRes[row][7] = QString::number(dVal2-dVal); } } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } void CheckWindow::stepGageCheck() @@ -1006,18 +1037,18 @@ // if (lastSelectedIndex == -1) { // lastSelectedIndex = 0; // } - int nextIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex + 1) % ui->tableWidgetCheck->rowCount(); if(lastSelectedIndex == ui-> tableWidgetCheck->rowCount() - 1 ){ - nextIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); + nextGageIndex = (lastSelectedIndex) % ui->tableWidgetCheck->rowCount(); } BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1026,7 +1057,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1036,11 +1067,11 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); //brush = QBrush(Qt::green); - ui->tableWidgetCheck->cellWidget(nextIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,2)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,4)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //currentItem->setBackground(brush); if (lastSelectedIndex != -1) { QTableWidgetItem *previousItem = ui->tableWidgetCheck->item(lastSelectedIndex, 0); @@ -1051,10 +1082,10 @@ } if(lastSelectedIndex == ui->tableWidgetCheck->rowCount() - 1){ isBack =!isBack; - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); } } else { for (int i = ui->tableWidgetCheck->rowCount() - 1; i >= 0; --i) { @@ -1067,15 +1098,15 @@ if (lastSelectedIndex == -1) { lastSelectedIndex = ui->tableWidgetCheck->rowCount() - 1; } - int nextIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; + nextGageIndex = (lastSelectedIndex == 0) ? ui->tableWidgetCheck->rowCount() - 1 : lastSelectedIndex - 1; BaseCommonApi::SaveLogInfo(1,QString("标准器输出")); QString sParam,newCmd; - QString sLabel = headTableList.keys()[curHeadIdx]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[curHeadIdx]; + QList dataRes = caliDataList->value(sLabel); int idx= getIndexByHeader(sLabel,QStrTranQStrList("检定项目")); if(idx!=-1) - sParam = dataRes[nextIndex][idx]; + sParam = dataRes[nextGageIndex][idx]; else sParam = sLabel; //示值误差/回程误差/轻敲位移 if(standardEngine.getState()){ @@ -1084,7 +1115,7 @@ QStringList sList = instrcutLib->instruct_config.split(";"); if(sList.length()>0){ for (QString& sCmd : sList){ - newCmd = transCmd(sCmd,sLabel,dataRes[nextIndex],true); + newCmd = transCmd(sCmd,sLabel,dataRes[nextGageIndex],true); if(newCmd!=""){ standardEngine.sendData(newCmd); qDebug() << "standard cmds:" << newCmd; @@ -1094,10 +1125,10 @@ } } - currentItem = ui->tableWidgetCheck->item(nextIndex, 0); + currentItem = ui->tableWidgetCheck->item(nextGageIndex, 0); currentItem->setSelected(true); - ui->tableWidgetCheck->cellWidget(nextIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); - ui->tableWidgetCheck->cellWidget(nextIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,3)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); + ui->tableWidgetCheck->cellWidget(nextGageIndex,5)->setStyleSheet("color:white;background-color:rgb(1,10,128);"); //brush = QBrush(Qt::blue); //currentItem->setBackground(brush); @@ -1114,6 +1145,7 @@ ui->pushButton_start->setEnabled(true); ui->pushButton_next->setEnabled(false); closeDevice(); + nextGageIndex=-1; } } ui->tableWidgetCheck->scrollToItem(currentItem); @@ -1243,7 +1275,7 @@ } int CheckWindow::getIndexByHeader(QString sLabel,QStringList sName){ - const auto &headrs = headTableList.value(sLabel); + const auto &headrs = headTableList->value(sLabel); for(int j=0;jkeys().count()==0) return; BaseCommonApi::SaveLogInfo(1,QString("-----------------------------------")); if(iEquipType==13) @@ -1405,6 +1437,7 @@ } else if(iEquipType==4){ isBack=false; + nextGageIndex=-1; lastSelectedIndex=-1; ui->pushButton_next->setEnabled(true); ui->pushButton_start->setEnabled(false); @@ -1421,12 +1454,12 @@ return; } connectDevice(); - for(int i=0;ikeys().length();i++) { //每次循环按钮变化 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 测试").arg(sLabel)); for (int i = 0; i < dataRes.count(); ++i) { QString sRet=""; @@ -1486,7 +1519,7 @@ autoAdujstData(sLabel,i,dStdValue,dataRes); Delay_MSec(2000); } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } closeDevice(); } @@ -1752,13 +1785,13 @@ for (int _ch=0;_chshowDialog("通道切换提示",QString("请切换 %1 通道").arg(chList[_ch]))){continue;} - for(int i=0;ikeys().length();i++) { BaseCommonApi::SaveLogInfo(1,QString("---------------------------------------------------")); //首先检索当前检定项目的通道 initCheckTable(i); - QString sLabel = headTableList.keys()[i]; - QList dataRes = caliDataList.value(sLabel); + QString sLabel = headTableList->keys()[i]; + QList dataRes = caliDataList->value(sLabel); BaseCommonApi::SaveLogInfo(1,QString("开始 %1 %2 测试").arg(chList[_ch]).arg(sLabel)); QString sParam; QString ValueUnit; @@ -1961,7 +1994,7 @@ } - caliDataList.insert(sLabel,dataRes); + caliDataList->insert(sLabel,dataRes); } } @@ -2200,3 +2233,22 @@ valuelist.append(value); return valuelist; } + + +void CheckWindow::keyPressEvent(QKeyEvent *ev) +{ + if(ui->stackedWidget_2->currentIndex()==1&&iEquipType==4){ + if(ev->key() == Qt::Key_Right) + { + int idx = curDevciceIdx+1; + on_deviceButton_clicked(idx); + //return; + }else if(ev->key() == Qt::Key_Left) + { + int idx = curDevciceIdx-1; + on_deviceButton_clicked(idx); + //return; + } + } + //QWidget::keyPressEvent(ev); +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 490381d..23a038d 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -42,7 +42,7 @@ void on_pushButton_9_clicked(); void on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); - void on_deviceButton_clicked(Dept task,int idx); + void on_deviceButton_clicked(int idx); void on_pushButton_start_clicked(); void on_pushButton_pause_clicked(); @@ -106,6 +106,8 @@ void stepGageCheck(); QStringList getsParambyHeader(QString sParam); QStringList QStrTranQStrList(QString value); + void changeDevice(int idx); + void keyPressEvent(QKeyEvent *ev); private: Ui::CheckWindow *ui; QList programList; @@ -120,8 +122,8 @@ VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; - QMap> caliDataList; - QMap headTableList; + QMap> *caliDataList; + QMap *headTableList; QList catDeviceList; QStringList catIdList; int curHeadIdx=-1; @@ -139,6 +141,12 @@ QList gaugeInfo; bool isBack = false; // 是否处于倒序状态 int lastSelectedIndex = -1; // 记录上一次选中的行号 + + QList>> caliDataListAll; + QList> headTableListAll; + QString curDeviceId=""; + int curDevciceIdx=-1; + int nextGageIndex=-1; }; #endif // CHECKWINDOW_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index f6f5a32..4b56940 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -67,15 +67,52 @@ } -void DialogCheckResult::initCheckTable(QMap> *measList,QMap *headList,QString sID) +void DialogCheckResult::initCheckTable(QList>> measList,QList> headList,QString sID) { - caliDataList = measList; - headTableList = headList; + caliDataListAll = measList; + headTableListAll = headList; stdId = sID; + + deleteItem(ui->horizontalLayoutDevice); + int idx=0; + curDevciceIdx=-1; + for (const Dept& task : taskList) + { + QPushButton *btn_1 = new QPushButton(); + btn_1->setText(task.sample_name); + btn_1->setStyleSheet("QPushButton{" + "background-color:rgb(240,240,240);" + "color:rgb(51,51,51);" + "}"); + //btn_1->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed); + QFont font; + //font.setPointSize(12);//字体大小 + font.setBold(true); + btn_1->setFont(font); + btn_1->setCursor(Qt::PointingHandCursor); + connect(btn_1, &QPushButton::clicked, this, [this,idx]() { + on_deviceButton_clicked(idx); + }); + ui->horizontalLayoutDevice->addWidget(btn_1); + idx++; + } + ui->horizontalLayoutDevice->addStretch(); + on_deviceButton_clicked(0); +} + +void DialogCheckResult::on_deviceButton_clicked(int idx) +{ + if(curDevciceIdx == idx||idx<0||idx>=taskList.length()) + return; + curDevciceIdx = idx; + headTableList = &headTableListAll[curDevciceIdx]; + caliDataList = &caliDataListAll[curDevciceIdx]; + deviceId = taskList[curDevciceIdx].sample_id; ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); deleteItem(ui->HeadListLayout); int index=0; + curHeadIdx=-1; for (const auto &item : *headTableList) { // ======================================================================================== // 数据循环显示 @@ -87,7 +124,7 @@ QPushButton *button = new QPushButton(sLabel, this); //设置样式 // 设置按钮大小为 56x20 - button->setFixedSize(85, 40); + //button->setFixedSize(85, 40); button->setCheckable(true); button->setAutoExclusive(true); //设置第一个按钮选中状态 @@ -134,19 +171,125 @@ return ""; } -void DialogCheckResult::on_pushButton_3_clicked() +int DialogCheckResult::getDictebyItemName(QString Name) +{ + int NewName=0; + if(checkitemlist.keys().contains(Name)) + { + NewName=checkitemlist.value(Name); + } + return NewName; +} +void DialogCheckResult::ItemUnitSplit(QString Value,QString &data,QString &unit) +{ + QString sData2=Value; + QString sNewData,sUnit; + // 正则表达式匹配数字 + QRegularExpression reLetters("[a-zA-ZΩΜΩ]"); + QRegularExpression reLetters1("[^a-zA-ZΩΜΩ]"); + data=sData2.replace(reLetters,""); + unit= Value.replace(reLetters1,""); + +} + +void DialogCheckResult::on_pushButtonPreview_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 <<""<<""<comboBoxPlace->currentText()<dateEditCheck->text()<lineEditTemp->text()<lineEdit_Hum->text(); + engine.setMarks("unit",taskList[curDevciceIdx].customer_name); + engine.setMarks("address",""); + engine.setMarks("name",taskList[curDevciceIdx].sample_name); + engine.setMarks("type",taskList[curDevciceIdx].sample_model); + engine.setMarks("serial",taskList[curDevciceIdx].manufacture_no); + engine.setMarks("factory",taskList[curDevciceIdx].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 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;isetRowCount(data.count()); + for (int i = 0; i < dataRes.count(); ++i) { + engine.setCellString(pTable,i+2,1,QString::number(i+1)); + for(int j=1;jlineEditTemp->text(); @@ -321,112 +464,7 @@ } } -void DialogCheckResult::on_pushButton_2_clicked() +void DialogCheckResult::on_pushButtonPrint_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 <<""<<""<comboBoxPlace->currentText()<dateEditCheck->text()<lineEditTemp->text()<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 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;isetRowCount(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> *measList,QMap *headList,QString sID); + void initCheckTable(QList>> measList,QList> headList,QString sID); private slots: - void on_pushButton_3_clicked(); + void on_pushButtonPreview_clicked(); - void on_pushButton_2_clicked(); + void on_pushButtonSave_clicked(); - void on_pushButton_clicked(); + void on_pushButtonPrint_clicked(); + private: void deleteItem(QLayout *layout); void initCalDataTable(int idx); QString getValueByHeader(int idx,QString sLabel,QString sName); - + void on_deviceButton_clicked(int idx); public: QList taskList; QString deviceId; @@ -38,6 +39,9 @@ QStringList measHeadList; QMap> *caliDataList; QMap *headTableList; + + QList>> caliDataListAll; + QList> headTableListAll; QString stdId; int curHeadIdx=-1; int iEquipType; @@ -45,6 +49,7 @@ QMap checkitemlist; int getDictebyItemName(QString Name); void ItemUnitSplit(QString Value,QString &data,QString &unit); + int curDevciceIdx=-1; }; #endif // DIALOGCHECKRESULT_H diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui index c8d624f..d38e488 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.ui +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.ui @@ -84,6 +84,9 @@ + + + @@ -112,13 +115,7 @@ - - - - 75 - true - - + background-color: rgb(100, 132, 68); color: rgb(255, 255, 255); @@ -280,7 +277,7 @@ - + 75 @@ -318,7 +315,7 @@ - + 75