diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 79b5d90..76e3156 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -37,7 +37,7 @@ } void DialogCheckResult::initCalDataTable(int idx) { - if(curHeadIdx==idx) + if(curHeadIdx==idx||headTableList->keys().count()==0) return; curHeadIdx = idx; QString sLabel = headTableList->keys()[curHeadIdx]; diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 79b5d90..76e3156 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -37,7 +37,7 @@ } void DialogCheckResult::initCalDataTable(int idx) { - if(curHeadIdx==idx) + if(curHeadIdx==idx||headTableList->keys().count()==0) return; curHeadIdx = idx; QString sLabel = headTableList->keys()[curHeadIdx]; diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp index 9891a87..bbec5c1 100644 --- a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp @@ -154,7 +154,7 @@ void DialogVerifyResult::initCheckTable(int idx) { - if(mainTabIdx==idx) + if(mainTabIdx==idx||veriHeadList->keys().count()==0) return; mainTabIdx = idx; QString sLabel = veriHeadList->keys()[mainTabIdx]; diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 79b5d90..76e3156 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -37,7 +37,7 @@ } void DialogCheckResult::initCalDataTable(int idx) { - if(curHeadIdx==idx) + if(curHeadIdx==idx||headTableList->keys().count()==0) return; curHeadIdx = idx; QString sLabel = headTableList->keys()[curHeadIdx]; diff --git a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp index 9891a87..bbec5c1 100644 --- a/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogverifyresult.cpp @@ -154,7 +154,7 @@ void DialogVerifyResult::initCheckTable(int idx) { - if(mainTabIdx==idx) + if(mainTabIdx==idx||veriHeadList->keys().count()==0) return; mainTabIdx = idx; QString sLabel = veriHeadList->keys()[mainTabIdx]; diff --git a/softwareDirectory/AutoVerScheme/verifywindow.cpp b/softwareDirectory/AutoVerScheme/verifywindow.cpp index d2264de..1b98f6f 100644 --- a/softwareDirectory/AutoVerScheme/verifywindow.cpp +++ b/softwareDirectory/AutoVerScheme/verifywindow.cpp @@ -583,7 +583,7 @@ void VerifyWindow::initCheckTable(int idx) { - if(mainTabIdx==idx) + if(mainTabIdx==idx||veriHeadList.keys().count()==0) return; mainTabIdx = idx; for(int i=0;i& dataRes,QMap>& veriData){ //double dError; QString newdStdValue,newdError,Value; + if(dStdValue==FP_INFINITE){ + bool bOk = false; + dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); + + if (bOk) { + //sRet = QString::number(dStdValue); + }else{ + dStdValue=0; + } + } + // ItemUnitSplit + + //newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); + newdStdValue=QString::number(dStdValue,'f',4); + //QStringList ResultName=getsParambyHeader(sParam); + int idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList(header)); + if(idx!=-1) + { + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 + } if(iEquipType==1 ){ - if(dStdValue==FP_INFINITE){ - bool bOk = false; - dStdValue = QInputDialog::getDouble(this,"手动测试","请输入被检示值",0,-100000, 100000,5,&bOk); - - if (bOk) { - //sRet = QString::number(dStdValue); - }else{ - dStdValue=0; - } - } - // ItemUnitSplit - - //newdStdValue= TranDecimals(sLabel, dataRes[i],dStdValue); - newdStdValue=QString::number(dStdValue,'f',4); - //QStringList ResultName=getsParambyHeader(sParam); - int idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList(header)); - if(idx!=-1) - { - dataRes[i][idx] = newdStdValue; - ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); //示值 - } - QString sLast=readItems.last(); - if(header==sLast){ + if(header==readItems.last()){ //计算平均值 double dMean=0; for(QString item : readItems){ @@ -1065,12 +1064,119 @@ dataStable[i][idx] = sRet; } veriData.insert(labelStable,dataStable); - //veriDataMapList.insert(constsLable,veriData); + } + } + else if(iEquipType==5){ + QMap stdItems; + stdItems.insert("核查标准示值1","差值1"); + stdItems.insert("核查标准示值2","差值2"); + stdItems.insert("核查标准示值3","差值3"); + stdItems.insert("核查标准示值4","差值4"); + stdItems.insert("核查标准示值5","差值5"); + stdItems.insert("核查标准示值6","差值6"); + double dMean=0; + double dStdErr = 0; + int idx2; + QList errList; + for(int k=0;k<6;k++){ + QString key = stdItems.keys().at(k); + idx = getIndexByHeader(sLabel,labelItem,QStrTranQStrList(readItems[k])); + idx2 = getIndexByHeader(sLabel,labelItem,QStrTranQStrList(key)); + dStdErr = dataRes[i][idx2].toDouble()-dataRes[i][idx].toDouble(); + errList.append(dStdErr); + dMean+=dStdErr; + newdStdValue=QString::number(dMean,'f',4); + idx2 = getIndexByHeader(sLabel,labelItem,QStrTranQStrList(stdItems.value(key))); + if(idx2!=-1) + { + dataRes[i][idx2] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx2,new QTableWidgetItem(newdStdValue)); + } + } + dMean/=6; + newdStdValue=QString::number(dMean,'f',4); + idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList("算数平均值")); + if(idx!=-1) + { + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); + } + //计算重复性S(x) + dStdErr = 0; + for(double err : errList){ + dStdErr += pow(err-dMean,2); + } + dStdErr = sqrt(dStdErr/(errList.count()-1)); + errList.clear(); + newdStdValue=QString::number(dStdErr,'f',4); + idx= getIndexByHeader(sLabel,labelItem,QStrTranQStrList("重复性S(x)")); + if(idx!=-1) + { + dataRes[i][idx] = newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue)); + } + + //同步计算稳定性数据 + QString labelStable="稳定性"; + //auto veriData = veriDataMapList.value(constsLable); + QList dataStable = veriData.value(labelStable); + idx= getIndexByHeader(sLabel,labelStable,QStrTranQStrList("平均值")); + newdStdValue=QString::number(dMean,'f',4); + if(idx!=-1) + { + dataStable[i][idx-1] = newdStdValue; + dMean=0; + int cnt=0; + double dMax,dMin; + for(int k=idx-6;k=4){ + dMean/=cnt; + newdStdValue=QString::number(dMean,'f',4); + dataStable[i][idx] = newdStdValue; + dStdErr = 0; + if(cnt==4){ + dStdErr = (dMax-dMin)/2.06; + }else if(cnt==5){ + dStdErr = (dMax-dMin)/2.33; + }else if(cnt==6){ + for(int k=idx-6;k