diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index cc9f249..07fa032 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -120,10 +120,10 @@ "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id " "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID " " JOIN biz_business_order_info bo ON bo.id = blei.order_id " - " WHERE blei.measure_dept_id = :deptId " + // " WHERE blei.measure_dept_id = :deptId " " ORDER BY blei.update_time DESC"); // 将参数绑定到占位符 - query.bindValue(":deptId", deptId); + // query.bindValue(":deptId", deptId); if (query.exec()) { while (query.next()) { @@ -906,13 +906,16 @@ if(deviceCatoryName.contains("数字多用表(手持)")){ DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); } - DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); break; case 4: if (deviceCatoryName.contains("一般压力表")){ DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList); }//else if 后续可判断其他检定项分类 break; + case 13: + //示波器标准装置 = 13 + //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); + break; } @@ -1085,188 +1088,187 @@ QMap> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { + QList DCVList; + QList ACVList; + QList DCIList; + QList ACIList; + QList RList; + if(itemCatoryName.contains("数字多用表")){ + for(const QStringList &row : ResultData) + { + QStringList head; + QStringList Data; + QString VerificationItem=NULL; + if (!row.isEmpty()) { // 确保行不为空 + if(row[2]=="DCV") + { + VerificationItem = "DCV"; + //添加列头 - QList DCVList; - QList ACVList; - QList DCIList; - QList ACIList; - QList RList; - if(itemCatoryName.contains("数字多用表")){ - for(const QStringList &row : ResultData) - { - QStringList head; - QStringList Data; - QString VerificationItem=NULL; - if (!row.isEmpty()) { // 确保行不为空 - if(row[2]=="DCV") - { - VerificationItem = "DCV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCVList.append(Data); + } + else if(row[2]=="ACV" ) + { + VerificationItem = "ACV"; + //添加列头 - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCVList.append(Data); - } - else if(row[2]=="ACV" ) - { - VerificationItem = "ACV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACVList.append(Data); + } else if(row[2]=="DCI" ) + { + VerificationItem = "DCI"; + //添加列头 - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACVList.append(Data); - } else if(row[2]=="DCI" ) - { - VerificationItem = "DCI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + //Data.append(row[5]); //频率 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCIList.append(Data); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - //Data.append(row[5]); //频率 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCIList.append(Data); + } else if(row[2]=="ACI" ) + { + VerificationItem = "ACI"; + //添加列头 - } else if(row[2]=="ACI" ) - { - VerificationItem = "ACI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACIList.append(Data); + } else if(row[2]=="R") + { + VerificationItem = "R"; + //添加列头 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACIList.append(Data); - } else if(row[2]=="R") - { - VerificationItem = "R"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 - head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[13]); //两线/四线 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + RList.append(Data); + } - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[13]); //两线/四线 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - RList.append(Data); - } + } + } - } - } - - if(DCVList.count()!=0){ - DataMapList.insert("DCV",DCVList); - }; - if(ACVList.count()!=0){ - DataMapList.insert("ACV",ACVList); - }; - if(DCIList.count()!=0){ - DataMapList.insert("DCI",DCIList); - }; - if(ACIList.count()!=0){ - DataMapList.insert("ACI",ACIList); - }; - if(RList.count()!=0){ - DataMapList.insert("R",RList); - }; - } - return DataMapList; + if(DCVList.count()!=0){ + DataMapList.insert("DCV",DCVList); + }; + if(ACVList.count()!=0){ + DataMapList.insert("ACV",ACVList); + }; + if(DCIList.count()!=0){ + DataMapList.insert("DCI",DCIList); + }; + if(ACIList.count()!=0){ + DataMapList.insert("ACI",ACIList); + }; + if(RList.count()!=0){ + DataMapList.insert("R",RList); + }; + } + return DataMapList; } //检定数据管理 首页 QList BaseCommonApi::getVerificationData() @@ -3067,7 +3069,101 @@ DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); return DataMapList; } +//检定项 示波器检定装置 +QMap> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList) +{ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT * FROM biz_business_device_measure_item_data_oscilloscope bbdmido" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id " + " WHERE bbdmido.item_id = :itemId ORDER BY bbdmido.update_time DESC"); + // 将参数绑定到占位符 + query.bindValue(":itemId", itemId); + if (query.exec()) { + while (query.next()) { + result.clear(); + result.append(query.value("id").toString()); + result.append(query.value("item_id").toString()); //检定项目ID + result.append(query.value("time_base").toString());//时基 + result.append(query.value("current_gain").toString());//直流增益(示波器-数字) + result.append(query.value("current_bias").toString());//直流偏置(示波器-数字) + result.append(query.value("band_width").toString());//频带宽度 (示波器-数字/模拟) + result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟) + result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟) + result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟) + result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟) + result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟) + result.append(query.value("cycle_signal").toString());//周期时标信号 + result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位 + result.append(query.value("technical_index").toString());//技术指标 + result.append(query.value("technical_index_unit").toString());//技术指标单位 + result.append(query.value("thoroughfare").toString());//通道 + result.append(query.value("impedance").toString());//阻抗 + result.append(query.value("impedance_unit").toString());//阻抗单位 + result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div + result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位 + result.append(query.value("standard_value").toString());//标准值 + result.append(query.value("standard_value_unit").toString());//标准值单位 + result.append(query.value("band_width").toString());//频带宽度 + result.append(query.value("band_width_unit").toString());//频带宽度单位 + result.append(query.value("amplitude").toString());//幅度 + result.append(query.value("amplitude_unit").toString());//幅度单位 + result.append(query.value("trigger_type").toString());//触发类型 + result.append(query.value("signal_frequency").toString());//信号频率 + result.append(query.value("nominal_value").toString());//标称值 + result.append(query.value("nominal_value_unit").toString());//标称值单位 + result.append(query.value("create_time").toString()); + result.append(query.value("update_time").toString()); + resultData.append(result); + } + } else { + qDebug() << "Query execution failed: " << query.lastError().text(); + } + + + DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList IndicationErrorList; + if(itemCatoryName.contains("数字示波器")){ + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2] =="1") { + VerificationItem = "示值误差"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正" + <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + + Data.append(row[0]); //ID + Data.append(row[2]); //标准器示值 + + Data.append(row[2]);//轻敲前示值-正 + Data.append(row[2]);//"轻敲前示值-反" + Data.append(row[2]);//轻敲后示值-正 + Data.append(row[2]);//轻敲后示值-反 + Data.append("0");//轻敲前后变动量-正 + Data.append("0");//轻敲前后变动量-反 + IndicationErrorList.append(Data); + } + + } + } + if(IndicationErrorList.count()!=0){ + DataMapList.insert("示值误差",IndicationErrorList); + }; + return DataMapList; +} QMap> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { QList IndicationErrorList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index cc9f249..07fa032 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -120,10 +120,10 @@ "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id " "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID " " JOIN biz_business_order_info bo ON bo.id = blei.order_id " - " WHERE blei.measure_dept_id = :deptId " + // " WHERE blei.measure_dept_id = :deptId " " ORDER BY blei.update_time DESC"); // 将参数绑定到占位符 - query.bindValue(":deptId", deptId); + // query.bindValue(":deptId", deptId); if (query.exec()) { while (query.next()) { @@ -906,13 +906,16 @@ if(deviceCatoryName.contains("数字多用表(手持)")){ DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); } - DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); break; case 4: if (deviceCatoryName.contains("一般压力表")){ DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList); }//else if 后续可判断其他检定项分类 break; + case 13: + //示波器标准装置 = 13 + //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); + break; } @@ -1085,188 +1088,187 @@ QMap> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { + QList DCVList; + QList ACVList; + QList DCIList; + QList ACIList; + QList RList; + if(itemCatoryName.contains("数字多用表")){ + for(const QStringList &row : ResultData) + { + QStringList head; + QStringList Data; + QString VerificationItem=NULL; + if (!row.isEmpty()) { // 确保行不为空 + if(row[2]=="DCV") + { + VerificationItem = "DCV"; + //添加列头 - QList DCVList; - QList ACVList; - QList DCIList; - QList ACIList; - QList RList; - if(itemCatoryName.contains("数字多用表")){ - for(const QStringList &row : ResultData) - { - QStringList head; - QStringList Data; - QString VerificationItem=NULL; - if (!row.isEmpty()) { // 确保行不为空 - if(row[2]=="DCV") - { - VerificationItem = "DCV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCVList.append(Data); + } + else if(row[2]=="ACV" ) + { + VerificationItem = "ACV"; + //添加列头 - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCVList.append(Data); - } - else if(row[2]=="ACV" ) - { - VerificationItem = "ACV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACVList.append(Data); + } else if(row[2]=="DCI" ) + { + VerificationItem = "DCI"; + //添加列头 - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACVList.append(Data); - } else if(row[2]=="DCI" ) - { - VerificationItem = "DCI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + //Data.append(row[5]); //频率 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCIList.append(Data); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - //Data.append(row[5]); //频率 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCIList.append(Data); + } else if(row[2]=="ACI" ) + { + VerificationItem = "ACI"; + //添加列头 - } else if(row[2]=="ACI" ) - { - VerificationItem = "ACI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACIList.append(Data); + } else if(row[2]=="R") + { + VerificationItem = "R"; + //添加列头 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACIList.append(Data); - } else if(row[2]=="R") - { - VerificationItem = "R"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 - head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[13]); //两线/四线 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + RList.append(Data); + } - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[13]); //两线/四线 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - RList.append(Data); - } + } + } - } - } - - if(DCVList.count()!=0){ - DataMapList.insert("DCV",DCVList); - }; - if(ACVList.count()!=0){ - DataMapList.insert("ACV",ACVList); - }; - if(DCIList.count()!=0){ - DataMapList.insert("DCI",DCIList); - }; - if(ACIList.count()!=0){ - DataMapList.insert("ACI",ACIList); - }; - if(RList.count()!=0){ - DataMapList.insert("R",RList); - }; - } - return DataMapList; + if(DCVList.count()!=0){ + DataMapList.insert("DCV",DCVList); + }; + if(ACVList.count()!=0){ + DataMapList.insert("ACV",ACVList); + }; + if(DCIList.count()!=0){ + DataMapList.insert("DCI",DCIList); + }; + if(ACIList.count()!=0){ + DataMapList.insert("ACI",ACIList); + }; + if(RList.count()!=0){ + DataMapList.insert("R",RList); + }; + } + return DataMapList; } //检定数据管理 首页 QList BaseCommonApi::getVerificationData() @@ -3067,7 +3069,101 @@ DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); return DataMapList; } +//检定项 示波器检定装置 +QMap> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList) +{ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT * FROM biz_business_device_measure_item_data_oscilloscope bbdmido" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id " + " WHERE bbdmido.item_id = :itemId ORDER BY bbdmido.update_time DESC"); + // 将参数绑定到占位符 + query.bindValue(":itemId", itemId); + if (query.exec()) { + while (query.next()) { + result.clear(); + result.append(query.value("id").toString()); + result.append(query.value("item_id").toString()); //检定项目ID + result.append(query.value("time_base").toString());//时基 + result.append(query.value("current_gain").toString());//直流增益(示波器-数字) + result.append(query.value("current_bias").toString());//直流偏置(示波器-数字) + result.append(query.value("band_width").toString());//频带宽度 (示波器-数字/模拟) + result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟) + result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟) + result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟) + result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟) + result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟) + result.append(query.value("cycle_signal").toString());//周期时标信号 + result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位 + result.append(query.value("technical_index").toString());//技术指标 + result.append(query.value("technical_index_unit").toString());//技术指标单位 + result.append(query.value("thoroughfare").toString());//通道 + result.append(query.value("impedance").toString());//阻抗 + result.append(query.value("impedance_unit").toString());//阻抗单位 + result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div + result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位 + result.append(query.value("standard_value").toString());//标准值 + result.append(query.value("standard_value_unit").toString());//标准值单位 + result.append(query.value("band_width").toString());//频带宽度 + result.append(query.value("band_width_unit").toString());//频带宽度单位 + result.append(query.value("amplitude").toString());//幅度 + result.append(query.value("amplitude_unit").toString());//幅度单位 + result.append(query.value("trigger_type").toString());//触发类型 + result.append(query.value("signal_frequency").toString());//信号频率 + result.append(query.value("nominal_value").toString());//标称值 + result.append(query.value("nominal_value_unit").toString());//标称值单位 + result.append(query.value("create_time").toString()); + result.append(query.value("update_time").toString()); + resultData.append(result); + } + } else { + qDebug() << "Query execution failed: " << query.lastError().text(); + } + + + DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList IndicationErrorList; + if(itemCatoryName.contains("数字示波器")){ + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2] =="1") { + VerificationItem = "示值误差"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正" + <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + + Data.append(row[0]); //ID + Data.append(row[2]); //标准器示值 + + Data.append(row[2]);//轻敲前示值-正 + Data.append(row[2]);//"轻敲前示值-反" + Data.append(row[2]);//轻敲后示值-正 + Data.append(row[2]);//轻敲后示值-反 + Data.append("0");//轻敲前后变动量-正 + Data.append("0");//轻敲前后变动量-反 + IndicationErrorList.append(Data); + } + + } + } + if(IndicationErrorList.count()!=0){ + DataMapList.insert("示值误差",IndicationErrorList); + }; + return DataMapList; +} QMap> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { QList IndicationErrorList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index 7acfc02..3c51ea2 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1223,6 +1223,10 @@ static bool SearchSelectTable(QString id, BaseClass *object); //【结果保存】压力 static bool InsertDeviceMeasureDataPistonGauge(DeviceMeasureDataPistonGauge gauge); + + //示波器 + static QMap> getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList); + QMap> GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); }; #endif // BASECOMMONAPI_H diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index cc9f249..07fa032 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -120,10 +120,10 @@ "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id " "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID " " JOIN biz_business_order_info bo ON bo.id = blei.order_id " - " WHERE blei.measure_dept_id = :deptId " + // " WHERE blei.measure_dept_id = :deptId " " ORDER BY blei.update_time DESC"); // 将参数绑定到占位符 - query.bindValue(":deptId", deptId); + // query.bindValue(":deptId", deptId); if (query.exec()) { while (query.next()) { @@ -906,13 +906,16 @@ if(deviceCatoryName.contains("数字多用表(手持)")){ DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); } - DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); break; case 4: if (deviceCatoryName.contains("一般压力表")){ DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList); }//else if 后续可判断其他检定项分类 break; + case 13: + //示波器标准装置 = 13 + //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); + break; } @@ -1085,188 +1088,187 @@ QMap> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { + QList DCVList; + QList ACVList; + QList DCIList; + QList ACIList; + QList RList; + if(itemCatoryName.contains("数字多用表")){ + for(const QStringList &row : ResultData) + { + QStringList head; + QStringList Data; + QString VerificationItem=NULL; + if (!row.isEmpty()) { // 确保行不为空 + if(row[2]=="DCV") + { + VerificationItem = "DCV"; + //添加列头 - QList DCVList; - QList ACVList; - QList DCIList; - QList ACIList; - QList RList; - if(itemCatoryName.contains("数字多用表")){ - for(const QStringList &row : ResultData) - { - QStringList head; - QStringList Data; - QString VerificationItem=NULL; - if (!row.isEmpty()) { // 确保行不为空 - if(row[2]=="DCV") - { - VerificationItem = "DCV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCVList.append(Data); + } + else if(row[2]=="ACV" ) + { + VerificationItem = "ACV"; + //添加列头 - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCVList.append(Data); - } - else if(row[2]=="ACV" ) - { - VerificationItem = "ACV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACVList.append(Data); + } else if(row[2]=="DCI" ) + { + VerificationItem = "DCI"; + //添加列头 - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACVList.append(Data); - } else if(row[2]=="DCI" ) - { - VerificationItem = "DCI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + //Data.append(row[5]); //频率 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCIList.append(Data); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - //Data.append(row[5]); //频率 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCIList.append(Data); + } else if(row[2]=="ACI" ) + { + VerificationItem = "ACI"; + //添加列头 - } else if(row[2]=="ACI" ) - { - VerificationItem = "ACI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACIList.append(Data); + } else if(row[2]=="R") + { + VerificationItem = "R"; + //添加列头 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACIList.append(Data); - } else if(row[2]=="R") - { - VerificationItem = "R"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 - head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[13]); //两线/四线 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + RList.append(Data); + } - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[13]); //两线/四线 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - RList.append(Data); - } + } + } - } - } - - if(DCVList.count()!=0){ - DataMapList.insert("DCV",DCVList); - }; - if(ACVList.count()!=0){ - DataMapList.insert("ACV",ACVList); - }; - if(DCIList.count()!=0){ - DataMapList.insert("DCI",DCIList); - }; - if(ACIList.count()!=0){ - DataMapList.insert("ACI",ACIList); - }; - if(RList.count()!=0){ - DataMapList.insert("R",RList); - }; - } - return DataMapList; + if(DCVList.count()!=0){ + DataMapList.insert("DCV",DCVList); + }; + if(ACVList.count()!=0){ + DataMapList.insert("ACV",ACVList); + }; + if(DCIList.count()!=0){ + DataMapList.insert("DCI",DCIList); + }; + if(ACIList.count()!=0){ + DataMapList.insert("ACI",ACIList); + }; + if(RList.count()!=0){ + DataMapList.insert("R",RList); + }; + } + return DataMapList; } //检定数据管理 首页 QList BaseCommonApi::getVerificationData() @@ -3067,7 +3069,101 @@ DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); return DataMapList; } +//检定项 示波器检定装置 +QMap> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList) +{ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT * FROM biz_business_device_measure_item_data_oscilloscope bbdmido" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id " + " WHERE bbdmido.item_id = :itemId ORDER BY bbdmido.update_time DESC"); + // 将参数绑定到占位符 + query.bindValue(":itemId", itemId); + if (query.exec()) { + while (query.next()) { + result.clear(); + result.append(query.value("id").toString()); + result.append(query.value("item_id").toString()); //检定项目ID + result.append(query.value("time_base").toString());//时基 + result.append(query.value("current_gain").toString());//直流增益(示波器-数字) + result.append(query.value("current_bias").toString());//直流偏置(示波器-数字) + result.append(query.value("band_width").toString());//频带宽度 (示波器-数字/模拟) + result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟) + result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟) + result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟) + result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟) + result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟) + result.append(query.value("cycle_signal").toString());//周期时标信号 + result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位 + result.append(query.value("technical_index").toString());//技术指标 + result.append(query.value("technical_index_unit").toString());//技术指标单位 + result.append(query.value("thoroughfare").toString());//通道 + result.append(query.value("impedance").toString());//阻抗 + result.append(query.value("impedance_unit").toString());//阻抗单位 + result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div + result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位 + result.append(query.value("standard_value").toString());//标准值 + result.append(query.value("standard_value_unit").toString());//标准值单位 + result.append(query.value("band_width").toString());//频带宽度 + result.append(query.value("band_width_unit").toString());//频带宽度单位 + result.append(query.value("amplitude").toString());//幅度 + result.append(query.value("amplitude_unit").toString());//幅度单位 + result.append(query.value("trigger_type").toString());//触发类型 + result.append(query.value("signal_frequency").toString());//信号频率 + result.append(query.value("nominal_value").toString());//标称值 + result.append(query.value("nominal_value_unit").toString());//标称值单位 + result.append(query.value("create_time").toString()); + result.append(query.value("update_time").toString()); + resultData.append(result); + } + } else { + qDebug() << "Query execution failed: " << query.lastError().text(); + } + + + DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList IndicationErrorList; + if(itemCatoryName.contains("数字示波器")){ + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2] =="1") { + VerificationItem = "示值误差"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正" + <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + + Data.append(row[0]); //ID + Data.append(row[2]); //标准器示值 + + Data.append(row[2]);//轻敲前示值-正 + Data.append(row[2]);//"轻敲前示值-反" + Data.append(row[2]);//轻敲后示值-正 + Data.append(row[2]);//轻敲后示值-反 + Data.append("0");//轻敲前后变动量-正 + Data.append("0");//轻敲前后变动量-反 + IndicationErrorList.append(Data); + } + + } + } + if(IndicationErrorList.count()!=0){ + DataMapList.insert("示值误差",IndicationErrorList); + }; + return DataMapList; +} QMap> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { QList IndicationErrorList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index 7acfc02..3c51ea2 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1223,6 +1223,10 @@ static bool SearchSelectTable(QString id, BaseClass *object); //【结果保存】压力 static bool InsertDeviceMeasureDataPistonGauge(DeviceMeasureDataPistonGauge gauge); + + //示波器 + static QMap> getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList); + QMap> GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); }; #endif // BASECOMMONAPI_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..19a4fc2 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -69,6 +69,10 @@ cmdPlaceHolderList.insert("{FREQ}","频率"); cmdPlaceHolderList.insert("{UNIT}","单位"); cmdPlaceHolderList.insert("{FUNIT}","频率单位"); + //转换 + unitTypeTransList.insert("Ω","OHM"); + unitTypeTransList.insert("KΩ","KOHM"); + unitTypeTransList.insert("MΩ","MOHM"); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -306,7 +310,13 @@ ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 row++; } + //搜索仪器地址放入下拉框 + ui->comboBox_visa->clear(); + + QStringList visaAddrs = engine.getVisaAddrs(); + ui->comboBox_visa->addItems(visaAddrs); ui->tableWidget_3->selectRow(0); + connect(ui->comboBox_visa,&QComboBox::currentTextChanged,this,&CheckWindow::on_comboBox_visa_OnCurrentTextChanged); } void CheckWindow::showCheck() @@ -707,6 +717,7 @@ else ui->radioButton_visa->setChecked(true); ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ QStringList sList = addr.serial_port.split(";"); if(sList.length()==5){ @@ -717,6 +728,12 @@ ui->comboBox_stop->setCurrentText(sList[4]); } } + //修改连接状态 + if(getJoinState(addr.visa)) + { + ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("ON")); + }else{ ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("OFF"));} + } } @@ -807,7 +824,11 @@ if(connectList.length()>0&&connectList[0].type==0) deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); if(connectList.length()>1&&connectList[1].type==1) - standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); + { + if(standardEngine.openDevice(connectList[1].programInterface.visa,"Visa")); + ui->tableWidget_Standard->setItem(0,1,new QTableWidgetItem("ON")); + } + } InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) @@ -841,6 +862,15 @@ } return dTmp; } +QString CheckWindow::TranTypeUnit(QString sUnit) +{ + QString NewsUnit=sUnit; + if(unitTypeTransList.keys().contains(sUnit)) + { + NewsUnit=unitTypeTransList.value(sUnit); + } + return NewsUnit; +} QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); @@ -871,14 +901,16 @@ Delay_MSec(delay); return ""; } - + QString NewUnit; for (QString key : cmdPlaceHolderList.keys()) { if(sCmd.contains(key)){ int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(key)); if(idx!=-1){ if(devicetype) { - sNewCmd = sNewCmd.replace(key,data[idx]); + + NewUnit = TranTypeUnit(data[idx]); //转换 Ω->OHM + sNewCmd = sNewCmd.replace(key,NewUnit); continue; } int idx2= getIndexByHeader(sLabel,"单位"); @@ -980,8 +1012,8 @@ idx= getIndexByHeader(sLabel,"绝对误差"); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 示值: %1 绝对误差 %2").arg(dStdValue).arg(dError)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); Delay_MSec(2000); } //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); @@ -1141,3 +1173,28 @@ } } } + + +void CheckWindow::on_comboBox_visa_OnCurrentTextChanged(QString arg1) +{ + //lab_deviceinfo + getJoinState(arg1); + +} +bool CheckWindow::getJoinState(QString arg1) +{ + bool IsSucc=false; + QString visaAdd=arg1; + QStringList parts = engine.getdeviceIdninfo(visaAdd).split(","); + if(parts.count()>2) + { + ui->lab_deviceinfo->setText(parts[0]+"-"+parts[1]); + IsSucc=true; + } + + if(parts.contains("false")) + { + ui->lab_deviceinfo->setText("无连接"); + } + return IsSucc; +} diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index cc9f249..07fa032 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -120,10 +120,10 @@ "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id " "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID " " JOIN biz_business_order_info bo ON bo.id = blei.order_id " - " WHERE blei.measure_dept_id = :deptId " + // " WHERE blei.measure_dept_id = :deptId " " ORDER BY blei.update_time DESC"); // 将参数绑定到占位符 - query.bindValue(":deptId", deptId); + // query.bindValue(":deptId", deptId); if (query.exec()) { while (query.next()) { @@ -906,13 +906,16 @@ if(deviceCatoryName.contains("数字多用表(手持)")){ DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); } - DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); break; case 4: if (deviceCatoryName.contains("一般压力表")){ DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList); }//else if 后续可判断其他检定项分类 break; + case 13: + //示波器标准装置 = 13 + //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); + break; } @@ -1085,188 +1088,187 @@ QMap> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { + QList DCVList; + QList ACVList; + QList DCIList; + QList ACIList; + QList RList; + if(itemCatoryName.contains("数字多用表")){ + for(const QStringList &row : ResultData) + { + QStringList head; + QStringList Data; + QString VerificationItem=NULL; + if (!row.isEmpty()) { // 确保行不为空 + if(row[2]=="DCV") + { + VerificationItem = "DCV"; + //添加列头 - QList DCVList; - QList ACVList; - QList DCIList; - QList ACIList; - QList RList; - if(itemCatoryName.contains("数字多用表")){ - for(const QStringList &row : ResultData) - { - QStringList head; - QStringList Data; - QString VerificationItem=NULL; - if (!row.isEmpty()) { // 确保行不为空 - if(row[2]=="DCV") - { - VerificationItem = "DCV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCVList.append(Data); + } + else if(row[2]=="ACV" ) + { + VerificationItem = "ACV"; + //添加列头 - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCVList.append(Data); - } - else if(row[2]=="ACV" ) - { - VerificationItem = "ACV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACVList.append(Data); + } else if(row[2]=="DCI" ) + { + VerificationItem = "DCI"; + //添加列头 - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACVList.append(Data); - } else if(row[2]=="DCI" ) - { - VerificationItem = "DCI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + //Data.append(row[5]); //频率 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCIList.append(Data); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - //Data.append(row[5]); //频率 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCIList.append(Data); + } else if(row[2]=="ACI" ) + { + VerificationItem = "ACI"; + //添加列头 - } else if(row[2]=="ACI" ) - { - VerificationItem = "ACI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACIList.append(Data); + } else if(row[2]=="R") + { + VerificationItem = "R"; + //添加列头 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACIList.append(Data); - } else if(row[2]=="R") - { - VerificationItem = "R"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 - head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[13]); //两线/四线 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + RList.append(Data); + } - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[13]); //两线/四线 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - RList.append(Data); - } + } + } - } - } - - if(DCVList.count()!=0){ - DataMapList.insert("DCV",DCVList); - }; - if(ACVList.count()!=0){ - DataMapList.insert("ACV",ACVList); - }; - if(DCIList.count()!=0){ - DataMapList.insert("DCI",DCIList); - }; - if(ACIList.count()!=0){ - DataMapList.insert("ACI",ACIList); - }; - if(RList.count()!=0){ - DataMapList.insert("R",RList); - }; - } - return DataMapList; + if(DCVList.count()!=0){ + DataMapList.insert("DCV",DCVList); + }; + if(ACVList.count()!=0){ + DataMapList.insert("ACV",ACVList); + }; + if(DCIList.count()!=0){ + DataMapList.insert("DCI",DCIList); + }; + if(ACIList.count()!=0){ + DataMapList.insert("ACI",ACIList); + }; + if(RList.count()!=0){ + DataMapList.insert("R",RList); + }; + } + return DataMapList; } //检定数据管理 首页 QList BaseCommonApi::getVerificationData() @@ -3067,7 +3069,101 @@ DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); return DataMapList; } +//检定项 示波器检定装置 +QMap> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList) +{ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT * FROM biz_business_device_measure_item_data_oscilloscope bbdmido" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id " + " WHERE bbdmido.item_id = :itemId ORDER BY bbdmido.update_time DESC"); + // 将参数绑定到占位符 + query.bindValue(":itemId", itemId); + if (query.exec()) { + while (query.next()) { + result.clear(); + result.append(query.value("id").toString()); + result.append(query.value("item_id").toString()); //检定项目ID + result.append(query.value("time_base").toString());//时基 + result.append(query.value("current_gain").toString());//直流增益(示波器-数字) + result.append(query.value("current_bias").toString());//直流偏置(示波器-数字) + result.append(query.value("band_width").toString());//频带宽度 (示波器-数字/模拟) + result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟) + result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟) + result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟) + result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟) + result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟) + result.append(query.value("cycle_signal").toString());//周期时标信号 + result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位 + result.append(query.value("technical_index").toString());//技术指标 + result.append(query.value("technical_index_unit").toString());//技术指标单位 + result.append(query.value("thoroughfare").toString());//通道 + result.append(query.value("impedance").toString());//阻抗 + result.append(query.value("impedance_unit").toString());//阻抗单位 + result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div + result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位 + result.append(query.value("standard_value").toString());//标准值 + result.append(query.value("standard_value_unit").toString());//标准值单位 + result.append(query.value("band_width").toString());//频带宽度 + result.append(query.value("band_width_unit").toString());//频带宽度单位 + result.append(query.value("amplitude").toString());//幅度 + result.append(query.value("amplitude_unit").toString());//幅度单位 + result.append(query.value("trigger_type").toString());//触发类型 + result.append(query.value("signal_frequency").toString());//信号频率 + result.append(query.value("nominal_value").toString());//标称值 + result.append(query.value("nominal_value_unit").toString());//标称值单位 + result.append(query.value("create_time").toString()); + result.append(query.value("update_time").toString()); + resultData.append(result); + } + } else { + qDebug() << "Query execution failed: " << query.lastError().text(); + } + + + DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList IndicationErrorList; + if(itemCatoryName.contains("数字示波器")){ + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2] =="1") { + VerificationItem = "示值误差"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正" + <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + + Data.append(row[0]); //ID + Data.append(row[2]); //标准器示值 + + Data.append(row[2]);//轻敲前示值-正 + Data.append(row[2]);//"轻敲前示值-反" + Data.append(row[2]);//轻敲后示值-正 + Data.append(row[2]);//轻敲后示值-反 + Data.append("0");//轻敲前后变动量-正 + Data.append("0");//轻敲前后变动量-反 + IndicationErrorList.append(Data); + } + + } + } + if(IndicationErrorList.count()!=0){ + DataMapList.insert("示值误差",IndicationErrorList); + }; + return DataMapList; +} QMap> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { QList IndicationErrorList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index 7acfc02..3c51ea2 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1223,6 +1223,10 @@ static bool SearchSelectTable(QString id, BaseClass *object); //【结果保存】压力 static bool InsertDeviceMeasureDataPistonGauge(DeviceMeasureDataPistonGauge gauge); + + //示波器 + static QMap> getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList); + QMap> GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); }; #endif // BASECOMMONAPI_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..19a4fc2 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -69,6 +69,10 @@ cmdPlaceHolderList.insert("{FREQ}","频率"); cmdPlaceHolderList.insert("{UNIT}","单位"); cmdPlaceHolderList.insert("{FUNIT}","频率单位"); + //转换 + unitTypeTransList.insert("Ω","OHM"); + unitTypeTransList.insert("KΩ","KOHM"); + unitTypeTransList.insert("MΩ","MOHM"); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -306,7 +310,13 @@ ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 row++; } + //搜索仪器地址放入下拉框 + ui->comboBox_visa->clear(); + + QStringList visaAddrs = engine.getVisaAddrs(); + ui->comboBox_visa->addItems(visaAddrs); ui->tableWidget_3->selectRow(0); + connect(ui->comboBox_visa,&QComboBox::currentTextChanged,this,&CheckWindow::on_comboBox_visa_OnCurrentTextChanged); } void CheckWindow::showCheck() @@ -707,6 +717,7 @@ else ui->radioButton_visa->setChecked(true); ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ QStringList sList = addr.serial_port.split(";"); if(sList.length()==5){ @@ -717,6 +728,12 @@ ui->comboBox_stop->setCurrentText(sList[4]); } } + //修改连接状态 + if(getJoinState(addr.visa)) + { + ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("ON")); + }else{ ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("OFF"));} + } } @@ -807,7 +824,11 @@ if(connectList.length()>0&&connectList[0].type==0) deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); if(connectList.length()>1&&connectList[1].type==1) - standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); + { + if(standardEngine.openDevice(connectList[1].programInterface.visa,"Visa")); + ui->tableWidget_Standard->setItem(0,1,new QTableWidgetItem("ON")); + } + } InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) @@ -841,6 +862,15 @@ } return dTmp; } +QString CheckWindow::TranTypeUnit(QString sUnit) +{ + QString NewsUnit=sUnit; + if(unitTypeTransList.keys().contains(sUnit)) + { + NewsUnit=unitTypeTransList.value(sUnit); + } + return NewsUnit; +} QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); @@ -871,14 +901,16 @@ Delay_MSec(delay); return ""; } - + QString NewUnit; for (QString key : cmdPlaceHolderList.keys()) { if(sCmd.contains(key)){ int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(key)); if(idx!=-1){ if(devicetype) { - sNewCmd = sNewCmd.replace(key,data[idx]); + + NewUnit = TranTypeUnit(data[idx]); //转换 Ω->OHM + sNewCmd = sNewCmd.replace(key,NewUnit); continue; } int idx2= getIndexByHeader(sLabel,"单位"); @@ -980,8 +1012,8 @@ idx= getIndexByHeader(sLabel,"绝对误差"); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 示值: %1 绝对误差 %2").arg(dStdValue).arg(dError)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); Delay_MSec(2000); } //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); @@ -1141,3 +1173,28 @@ } } } + + +void CheckWindow::on_comboBox_visa_OnCurrentTextChanged(QString arg1) +{ + //lab_deviceinfo + getJoinState(arg1); + +} +bool CheckWindow::getJoinState(QString arg1) +{ + bool IsSucc=false; + QString visaAdd=arg1; + QStringList parts = engine.getdeviceIdninfo(visaAdd).split(","); + if(parts.count()>2) + { + ui->lab_deviceinfo->setText(parts[0]+"-"+parts[1]); + IsSucc=true; + } + + if(parts.contains("false")) + { + ui->lab_deviceinfo->setText("无连接"); + } + return IsSucc; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..9508e55 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -66,6 +66,9 @@ void on_pushButton_8_clicked(); + void on_comboBox_visa_OnCurrentTextChanged(QString arg1); + bool getJoinState(QString arg1); + private: void getCheckDevice(bool bInit=true); void getCheckMethod(); @@ -84,6 +87,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + QString TranTypeUnit(QString sUnit); private: Ui::CheckWindow *ui; @@ -96,6 +100,7 @@ QList calibrationList; VisaCommonEngine deviceEngine; VisaCommonEngine standardEngine; + VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; QMap> caliDataList; @@ -105,6 +110,8 @@ int curHeadIdx=-1; int iEquipType=1; QMap unitTransList; + //unitTypeTransList + QMap unitTypeTransList; QMap cmdPlaceHolderList; QString standardId; int currConnectIdx; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index cc9f249..07fa032 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -120,10 +120,10 @@ "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id " "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID " " JOIN biz_business_order_info bo ON bo.id = blei.order_id " - " WHERE blei.measure_dept_id = :deptId " + // " WHERE blei.measure_dept_id = :deptId " " ORDER BY blei.update_time DESC"); // 将参数绑定到占位符 - query.bindValue(":deptId", deptId); + // query.bindValue(":deptId", deptId); if (query.exec()) { while (query.next()) { @@ -906,13 +906,16 @@ if(deviceCatoryName.contains("数字多用表(手持)")){ DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); } - DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); break; case 4: if (deviceCatoryName.contains("一般压力表")){ DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList); }//else if 后续可判断其他检定项分类 break; + case 13: + //示波器标准装置 = 13 + //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); + break; } @@ -1085,188 +1088,187 @@ QMap> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { + QList DCVList; + QList ACVList; + QList DCIList; + QList ACIList; + QList RList; + if(itemCatoryName.contains("数字多用表")){ + for(const QStringList &row : ResultData) + { + QStringList head; + QStringList Data; + QString VerificationItem=NULL; + if (!row.isEmpty()) { // 确保行不为空 + if(row[2]=="DCV") + { + VerificationItem = "DCV"; + //添加列头 - QList DCVList; - QList ACVList; - QList DCIList; - QList ACIList; - QList RList; - if(itemCatoryName.contains("数字多用表")){ - for(const QStringList &row : ResultData) - { - QStringList head; - QStringList Data; - QString VerificationItem=NULL; - if (!row.isEmpty()) { // 确保行不为空 - if(row[2]=="DCV") - { - VerificationItem = "DCV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCVList.append(Data); + } + else if(row[2]=="ACV" ) + { + VerificationItem = "ACV"; + //添加列头 - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCVList.append(Data); - } - else if(row[2]=="ACV" ) - { - VerificationItem = "ACV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACVList.append(Data); + } else if(row[2]=="DCI" ) + { + VerificationItem = "DCI"; + //添加列头 - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACVList.append(Data); - } else if(row[2]=="DCI" ) - { - VerificationItem = "DCI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + //Data.append(row[5]); //频率 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCIList.append(Data); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - //Data.append(row[5]); //频率 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCIList.append(Data); + } else if(row[2]=="ACI" ) + { + VerificationItem = "ACI"; + //添加列头 - } else if(row[2]=="ACI" ) - { - VerificationItem = "ACI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACIList.append(Data); + } else if(row[2]=="R") + { + VerificationItem = "R"; + //添加列头 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACIList.append(Data); - } else if(row[2]=="R") - { - VerificationItem = "R"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 - head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[13]); //两线/四线 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + RList.append(Data); + } - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[13]); //两线/四线 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - RList.append(Data); - } + } + } - } - } - - if(DCVList.count()!=0){ - DataMapList.insert("DCV",DCVList); - }; - if(ACVList.count()!=0){ - DataMapList.insert("ACV",ACVList); - }; - if(DCIList.count()!=0){ - DataMapList.insert("DCI",DCIList); - }; - if(ACIList.count()!=0){ - DataMapList.insert("ACI",ACIList); - }; - if(RList.count()!=0){ - DataMapList.insert("R",RList); - }; - } - return DataMapList; + if(DCVList.count()!=0){ + DataMapList.insert("DCV",DCVList); + }; + if(ACVList.count()!=0){ + DataMapList.insert("ACV",ACVList); + }; + if(DCIList.count()!=0){ + DataMapList.insert("DCI",DCIList); + }; + if(ACIList.count()!=0){ + DataMapList.insert("ACI",ACIList); + }; + if(RList.count()!=0){ + DataMapList.insert("R",RList); + }; + } + return DataMapList; } //检定数据管理 首页 QList BaseCommonApi::getVerificationData() @@ -3067,7 +3069,101 @@ DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); return DataMapList; } +//检定项 示波器检定装置 +QMap> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList) +{ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT * FROM biz_business_device_measure_item_data_oscilloscope bbdmido" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id " + " WHERE bbdmido.item_id = :itemId ORDER BY bbdmido.update_time DESC"); + // 将参数绑定到占位符 + query.bindValue(":itemId", itemId); + if (query.exec()) { + while (query.next()) { + result.clear(); + result.append(query.value("id").toString()); + result.append(query.value("item_id").toString()); //检定项目ID + result.append(query.value("time_base").toString());//时基 + result.append(query.value("current_gain").toString());//直流增益(示波器-数字) + result.append(query.value("current_bias").toString());//直流偏置(示波器-数字) + result.append(query.value("band_width").toString());//频带宽度 (示波器-数字/模拟) + result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟) + result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟) + result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟) + result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟) + result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟) + result.append(query.value("cycle_signal").toString());//周期时标信号 + result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位 + result.append(query.value("technical_index").toString());//技术指标 + result.append(query.value("technical_index_unit").toString());//技术指标单位 + result.append(query.value("thoroughfare").toString());//通道 + result.append(query.value("impedance").toString());//阻抗 + result.append(query.value("impedance_unit").toString());//阻抗单位 + result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div + result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位 + result.append(query.value("standard_value").toString());//标准值 + result.append(query.value("standard_value_unit").toString());//标准值单位 + result.append(query.value("band_width").toString());//频带宽度 + result.append(query.value("band_width_unit").toString());//频带宽度单位 + result.append(query.value("amplitude").toString());//幅度 + result.append(query.value("amplitude_unit").toString());//幅度单位 + result.append(query.value("trigger_type").toString());//触发类型 + result.append(query.value("signal_frequency").toString());//信号频率 + result.append(query.value("nominal_value").toString());//标称值 + result.append(query.value("nominal_value_unit").toString());//标称值单位 + result.append(query.value("create_time").toString()); + result.append(query.value("update_time").toString()); + resultData.append(result); + } + } else { + qDebug() << "Query execution failed: " << query.lastError().text(); + } + + + DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList IndicationErrorList; + if(itemCatoryName.contains("数字示波器")){ + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2] =="1") { + VerificationItem = "示值误差"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正" + <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + + Data.append(row[0]); //ID + Data.append(row[2]); //标准器示值 + + Data.append(row[2]);//轻敲前示值-正 + Data.append(row[2]);//"轻敲前示值-反" + Data.append(row[2]);//轻敲后示值-正 + Data.append(row[2]);//轻敲后示值-反 + Data.append("0");//轻敲前后变动量-正 + Data.append("0");//轻敲前后变动量-反 + IndicationErrorList.append(Data); + } + + } + } + if(IndicationErrorList.count()!=0){ + DataMapList.insert("示值误差",IndicationErrorList); + }; + return DataMapList; +} QMap> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { QList IndicationErrorList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index 7acfc02..3c51ea2 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1223,6 +1223,10 @@ static bool SearchSelectTable(QString id, BaseClass *object); //【结果保存】压力 static bool InsertDeviceMeasureDataPistonGauge(DeviceMeasureDataPistonGauge gauge); + + //示波器 + static QMap> getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList); + QMap> GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); }; #endif // BASECOMMONAPI_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..19a4fc2 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -69,6 +69,10 @@ cmdPlaceHolderList.insert("{FREQ}","频率"); cmdPlaceHolderList.insert("{UNIT}","单位"); cmdPlaceHolderList.insert("{FUNIT}","频率单位"); + //转换 + unitTypeTransList.insert("Ω","OHM"); + unitTypeTransList.insert("KΩ","KOHM"); + unitTypeTransList.insert("MΩ","MOHM"); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -306,7 +310,13 @@ ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 row++; } + //搜索仪器地址放入下拉框 + ui->comboBox_visa->clear(); + + QStringList visaAddrs = engine.getVisaAddrs(); + ui->comboBox_visa->addItems(visaAddrs); ui->tableWidget_3->selectRow(0); + connect(ui->comboBox_visa,&QComboBox::currentTextChanged,this,&CheckWindow::on_comboBox_visa_OnCurrentTextChanged); } void CheckWindow::showCheck() @@ -707,6 +717,7 @@ else ui->radioButton_visa->setChecked(true); ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ QStringList sList = addr.serial_port.split(";"); if(sList.length()==5){ @@ -717,6 +728,12 @@ ui->comboBox_stop->setCurrentText(sList[4]); } } + //修改连接状态 + if(getJoinState(addr.visa)) + { + ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("ON")); + }else{ ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("OFF"));} + } } @@ -807,7 +824,11 @@ if(connectList.length()>0&&connectList[0].type==0) deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); if(connectList.length()>1&&connectList[1].type==1) - standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); + { + if(standardEngine.openDevice(connectList[1].programInterface.visa,"Visa")); + ui->tableWidget_Standard->setItem(0,1,new QTableWidgetItem("ON")); + } + } InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) @@ -841,6 +862,15 @@ } return dTmp; } +QString CheckWindow::TranTypeUnit(QString sUnit) +{ + QString NewsUnit=sUnit; + if(unitTypeTransList.keys().contains(sUnit)) + { + NewsUnit=unitTypeTransList.value(sUnit); + } + return NewsUnit; +} QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); @@ -871,14 +901,16 @@ Delay_MSec(delay); return ""; } - + QString NewUnit; for (QString key : cmdPlaceHolderList.keys()) { if(sCmd.contains(key)){ int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(key)); if(idx!=-1){ if(devicetype) { - sNewCmd = sNewCmd.replace(key,data[idx]); + + NewUnit = TranTypeUnit(data[idx]); //转换 Ω->OHM + sNewCmd = sNewCmd.replace(key,NewUnit); continue; } int idx2= getIndexByHeader(sLabel,"单位"); @@ -980,8 +1012,8 @@ idx= getIndexByHeader(sLabel,"绝对误差"); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 示值: %1 绝对误差 %2").arg(dStdValue).arg(dError)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); Delay_MSec(2000); } //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); @@ -1141,3 +1173,28 @@ } } } + + +void CheckWindow::on_comboBox_visa_OnCurrentTextChanged(QString arg1) +{ + //lab_deviceinfo + getJoinState(arg1); + +} +bool CheckWindow::getJoinState(QString arg1) +{ + bool IsSucc=false; + QString visaAdd=arg1; + QStringList parts = engine.getdeviceIdninfo(visaAdd).split(","); + if(parts.count()>2) + { + ui->lab_deviceinfo->setText(parts[0]+"-"+parts[1]); + IsSucc=true; + } + + if(parts.contains("false")) + { + ui->lab_deviceinfo->setText("无连接"); + } + return IsSucc; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..9508e55 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -66,6 +66,9 @@ void on_pushButton_8_clicked(); + void on_comboBox_visa_OnCurrentTextChanged(QString arg1); + bool getJoinState(QString arg1); + private: void getCheckDevice(bool bInit=true); void getCheckMethod(); @@ -84,6 +87,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + QString TranTypeUnit(QString sUnit); private: Ui::CheckWindow *ui; @@ -96,6 +100,7 @@ QList calibrationList; VisaCommonEngine deviceEngine; VisaCommonEngine standardEngine; + VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; QMap> caliDataList; @@ -105,6 +110,8 @@ int curHeadIdx=-1; int iEquipType=1; QMap unitTransList; + //unitTypeTransList + QMap unitTypeTransList; QMap cmdPlaceHolderList; QString standardId; int currConnectIdx; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index 794c8a4..8537841 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1490,6 +1490,30 @@ + + + + + 12 + + + + 设置信息: + + + + + + + + 12 + + + + + + + diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index cc9f249..07fa032 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -120,10 +120,10 @@ "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id " "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID " " JOIN biz_business_order_info bo ON bo.id = blei.order_id " - " WHERE blei.measure_dept_id = :deptId " + // " WHERE blei.measure_dept_id = :deptId " " ORDER BY blei.update_time DESC"); // 将参数绑定到占位符 - query.bindValue(":deptId", deptId); + // query.bindValue(":deptId", deptId); if (query.exec()) { while (query.next()) { @@ -906,13 +906,16 @@ if(deviceCatoryName.contains("数字多用表(手持)")){ DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); } - DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); break; case 4: if (deviceCatoryName.contains("一般压力表")){ DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList); }//else if 后续可判断其他检定项分类 break; + case 13: + //示波器标准装置 = 13 + //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); + break; } @@ -1085,188 +1088,187 @@ QMap> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { + QList DCVList; + QList ACVList; + QList DCIList; + QList ACIList; + QList RList; + if(itemCatoryName.contains("数字多用表")){ + for(const QStringList &row : ResultData) + { + QStringList head; + QStringList Data; + QString VerificationItem=NULL; + if (!row.isEmpty()) { // 确保行不为空 + if(row[2]=="DCV") + { + VerificationItem = "DCV"; + //添加列头 - QList DCVList; - QList ACVList; - QList DCIList; - QList ACIList; - QList RList; - if(itemCatoryName.contains("数字多用表")){ - for(const QStringList &row : ResultData) - { - QStringList head; - QStringList Data; - QString VerificationItem=NULL; - if (!row.isEmpty()) { // 确保行不为空 - if(row[2]=="DCV") - { - VerificationItem = "DCV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCVList.append(Data); + } + else if(row[2]=="ACV" ) + { + VerificationItem = "ACV"; + //添加列头 - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCVList.append(Data); - } - else if(row[2]=="ACV" ) - { - VerificationItem = "ACV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACVList.append(Data); + } else if(row[2]=="DCI" ) + { + VerificationItem = "DCI"; + //添加列头 - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACVList.append(Data); - } else if(row[2]=="DCI" ) - { - VerificationItem = "DCI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + //Data.append(row[5]); //频率 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCIList.append(Data); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - //Data.append(row[5]); //频率 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCIList.append(Data); + } else if(row[2]=="ACI" ) + { + VerificationItem = "ACI"; + //添加列头 - } else if(row[2]=="ACI" ) - { - VerificationItem = "ACI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACIList.append(Data); + } else if(row[2]=="R") + { + VerificationItem = "R"; + //添加列头 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACIList.append(Data); - } else if(row[2]=="R") - { - VerificationItem = "R"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 - head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[13]); //两线/四线 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + RList.append(Data); + } - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[13]); //两线/四线 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - RList.append(Data); - } + } + } - } - } - - if(DCVList.count()!=0){ - DataMapList.insert("DCV",DCVList); - }; - if(ACVList.count()!=0){ - DataMapList.insert("ACV",ACVList); - }; - if(DCIList.count()!=0){ - DataMapList.insert("DCI",DCIList); - }; - if(ACIList.count()!=0){ - DataMapList.insert("ACI",ACIList); - }; - if(RList.count()!=0){ - DataMapList.insert("R",RList); - }; - } - return DataMapList; + if(DCVList.count()!=0){ + DataMapList.insert("DCV",DCVList); + }; + if(ACVList.count()!=0){ + DataMapList.insert("ACV",ACVList); + }; + if(DCIList.count()!=0){ + DataMapList.insert("DCI",DCIList); + }; + if(ACIList.count()!=0){ + DataMapList.insert("ACI",ACIList); + }; + if(RList.count()!=0){ + DataMapList.insert("R",RList); + }; + } + return DataMapList; } //检定数据管理 首页 QList BaseCommonApi::getVerificationData() @@ -3067,7 +3069,101 @@ DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); return DataMapList; } +//检定项 示波器检定装置 +QMap> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList) +{ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT * FROM biz_business_device_measure_item_data_oscilloscope bbdmido" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id " + " WHERE bbdmido.item_id = :itemId ORDER BY bbdmido.update_time DESC"); + // 将参数绑定到占位符 + query.bindValue(":itemId", itemId); + if (query.exec()) { + while (query.next()) { + result.clear(); + result.append(query.value("id").toString()); + result.append(query.value("item_id").toString()); //检定项目ID + result.append(query.value("time_base").toString());//时基 + result.append(query.value("current_gain").toString());//直流增益(示波器-数字) + result.append(query.value("current_bias").toString());//直流偏置(示波器-数字) + result.append(query.value("band_width").toString());//频带宽度 (示波器-数字/模拟) + result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟) + result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟) + result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟) + result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟) + result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟) + result.append(query.value("cycle_signal").toString());//周期时标信号 + result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位 + result.append(query.value("technical_index").toString());//技术指标 + result.append(query.value("technical_index_unit").toString());//技术指标单位 + result.append(query.value("thoroughfare").toString());//通道 + result.append(query.value("impedance").toString());//阻抗 + result.append(query.value("impedance_unit").toString());//阻抗单位 + result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div + result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位 + result.append(query.value("standard_value").toString());//标准值 + result.append(query.value("standard_value_unit").toString());//标准值单位 + result.append(query.value("band_width").toString());//频带宽度 + result.append(query.value("band_width_unit").toString());//频带宽度单位 + result.append(query.value("amplitude").toString());//幅度 + result.append(query.value("amplitude_unit").toString());//幅度单位 + result.append(query.value("trigger_type").toString());//触发类型 + result.append(query.value("signal_frequency").toString());//信号频率 + result.append(query.value("nominal_value").toString());//标称值 + result.append(query.value("nominal_value_unit").toString());//标称值单位 + result.append(query.value("create_time").toString()); + result.append(query.value("update_time").toString()); + resultData.append(result); + } + } else { + qDebug() << "Query execution failed: " << query.lastError().text(); + } + + + DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList IndicationErrorList; + if(itemCatoryName.contains("数字示波器")){ + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2] =="1") { + VerificationItem = "示值误差"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正" + <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + + Data.append(row[0]); //ID + Data.append(row[2]); //标准器示值 + + Data.append(row[2]);//轻敲前示值-正 + Data.append(row[2]);//"轻敲前示值-反" + Data.append(row[2]);//轻敲后示值-正 + Data.append(row[2]);//轻敲后示值-反 + Data.append("0");//轻敲前后变动量-正 + Data.append("0");//轻敲前后变动量-反 + IndicationErrorList.append(Data); + } + + } + } + if(IndicationErrorList.count()!=0){ + DataMapList.insert("示值误差",IndicationErrorList); + }; + return DataMapList; +} QMap> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { QList IndicationErrorList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index 7acfc02..3c51ea2 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1223,6 +1223,10 @@ static bool SearchSelectTable(QString id, BaseClass *object); //【结果保存】压力 static bool InsertDeviceMeasureDataPistonGauge(DeviceMeasureDataPistonGauge gauge); + + //示波器 + static QMap> getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList); + QMap> GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); }; #endif // BASECOMMONAPI_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..19a4fc2 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -69,6 +69,10 @@ cmdPlaceHolderList.insert("{FREQ}","频率"); cmdPlaceHolderList.insert("{UNIT}","单位"); cmdPlaceHolderList.insert("{FUNIT}","频率单位"); + //转换 + unitTypeTransList.insert("Ω","OHM"); + unitTypeTransList.insert("KΩ","KOHM"); + unitTypeTransList.insert("MΩ","MOHM"); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -306,7 +310,13 @@ ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 row++; } + //搜索仪器地址放入下拉框 + ui->comboBox_visa->clear(); + + QStringList visaAddrs = engine.getVisaAddrs(); + ui->comboBox_visa->addItems(visaAddrs); ui->tableWidget_3->selectRow(0); + connect(ui->comboBox_visa,&QComboBox::currentTextChanged,this,&CheckWindow::on_comboBox_visa_OnCurrentTextChanged); } void CheckWindow::showCheck() @@ -707,6 +717,7 @@ else ui->radioButton_visa->setChecked(true); ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ QStringList sList = addr.serial_port.split(";"); if(sList.length()==5){ @@ -717,6 +728,12 @@ ui->comboBox_stop->setCurrentText(sList[4]); } } + //修改连接状态 + if(getJoinState(addr.visa)) + { + ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("ON")); + }else{ ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("OFF"));} + } } @@ -807,7 +824,11 @@ if(connectList.length()>0&&connectList[0].type==0) deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); if(connectList.length()>1&&connectList[1].type==1) - standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); + { + if(standardEngine.openDevice(connectList[1].programInterface.visa,"Visa")); + ui->tableWidget_Standard->setItem(0,1,new QTableWidgetItem("ON")); + } + } InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) @@ -841,6 +862,15 @@ } return dTmp; } +QString CheckWindow::TranTypeUnit(QString sUnit) +{ + QString NewsUnit=sUnit; + if(unitTypeTransList.keys().contains(sUnit)) + { + NewsUnit=unitTypeTransList.value(sUnit); + } + return NewsUnit; +} QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); @@ -871,14 +901,16 @@ Delay_MSec(delay); return ""; } - + QString NewUnit; for (QString key : cmdPlaceHolderList.keys()) { if(sCmd.contains(key)){ int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(key)); if(idx!=-1){ if(devicetype) { - sNewCmd = sNewCmd.replace(key,data[idx]); + + NewUnit = TranTypeUnit(data[idx]); //转换 Ω->OHM + sNewCmd = sNewCmd.replace(key,NewUnit); continue; } int idx2= getIndexByHeader(sLabel,"单位"); @@ -980,8 +1012,8 @@ idx= getIndexByHeader(sLabel,"绝对误差"); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 示值: %1 绝对误差 %2").arg(dStdValue).arg(dError)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); Delay_MSec(2000); } //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); @@ -1141,3 +1173,28 @@ } } } + + +void CheckWindow::on_comboBox_visa_OnCurrentTextChanged(QString arg1) +{ + //lab_deviceinfo + getJoinState(arg1); + +} +bool CheckWindow::getJoinState(QString arg1) +{ + bool IsSucc=false; + QString visaAdd=arg1; + QStringList parts = engine.getdeviceIdninfo(visaAdd).split(","); + if(parts.count()>2) + { + ui->lab_deviceinfo->setText(parts[0]+"-"+parts[1]); + IsSucc=true; + } + + if(parts.contains("false")) + { + ui->lab_deviceinfo->setText("无连接"); + } + return IsSucc; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..9508e55 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -66,6 +66,9 @@ void on_pushButton_8_clicked(); + void on_comboBox_visa_OnCurrentTextChanged(QString arg1); + bool getJoinState(QString arg1); + private: void getCheckDevice(bool bInit=true); void getCheckMethod(); @@ -84,6 +87,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + QString TranTypeUnit(QString sUnit); private: Ui::CheckWindow *ui; @@ -96,6 +100,7 @@ QList calibrationList; VisaCommonEngine deviceEngine; VisaCommonEngine standardEngine; + VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; QMap> caliDataList; @@ -105,6 +110,8 @@ int curHeadIdx=-1; int iEquipType=1; QMap unitTransList; + //unitTypeTransList + QMap unitTypeTransList; QMap cmdPlaceHolderList; QString standardId; int currConnectIdx; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index 794c8a4..8537841 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1490,6 +1490,30 @@ + + + + + 12 + + + + 设置信息: + + + + + + + + 12 + + + + + + + diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp index 5284fe6..84ca56b 100644 --- a/softwareDirectory/AutoVerScheme/databaseconnection.cpp +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -11,7 +11,6 @@ // 连接数据库 localdb = QSqlDatabase::addDatabase("QODBC"); - localdb.setHostName("localhost"); localdb.setDatabaseName("zdjd"); localdb.setPort(3306); @@ -19,11 +18,11 @@ localdb.setPassword("123456"); Maindb = QSqlDatabase::addDatabase("QODBC","Main"); - Maindb.setHostName("111.198.10.15"); - Maindb.setDatabaseName("casic_metering_xichang"); - Maindb.setPort(21906); - Maindb.setUserName("zdjdcs"); - Maindb.setPassword("11111111"); + Maindb.setHostName("27.99.50.20"); + Maindb.setDatabaseName("test"); + Maindb.setPort(3306); + Maindb.setUserName("casic_203"); + Maindb.setPassword("Casic_203"); diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index cc9f249..07fa032 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -120,10 +120,10 @@ "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id " "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID " " JOIN biz_business_order_info bo ON bo.id = blei.order_id " - " WHERE blei.measure_dept_id = :deptId " + // " WHERE blei.measure_dept_id = :deptId " " ORDER BY blei.update_time DESC"); // 将参数绑定到占位符 - query.bindValue(":deptId", deptId); + // query.bindValue(":deptId", deptId); if (query.exec()) { while (query.next()) { @@ -906,13 +906,16 @@ if(deviceCatoryName.contains("数字多用表(手持)")){ DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); } - DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); break; case 4: if (deviceCatoryName.contains("一般压力表")){ DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList); }//else if 后续可判断其他检定项分类 break; + case 13: + //示波器标准装置 = 13 + //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); + break; } @@ -1085,188 +1088,187 @@ QMap> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { + QList DCVList; + QList ACVList; + QList DCIList; + QList ACIList; + QList RList; + if(itemCatoryName.contains("数字多用表")){ + for(const QStringList &row : ResultData) + { + QStringList head; + QStringList Data; + QString VerificationItem=NULL; + if (!row.isEmpty()) { // 确保行不为空 + if(row[2]=="DCV") + { + VerificationItem = "DCV"; + //添加列头 - QList DCVList; - QList ACVList; - QList DCIList; - QList ACIList; - QList RList; - if(itemCatoryName.contains("数字多用表")){ - for(const QStringList &row : ResultData) - { - QStringList head; - QStringList Data; - QString VerificationItem=NULL; - if (!row.isEmpty()) { // 确保行不为空 - if(row[2]=="DCV") - { - VerificationItem = "DCV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCVList.append(Data); + } + else if(row[2]=="ACV" ) + { + VerificationItem = "ACV"; + //添加列头 - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCVList.append(Data); - } - else if(row[2]=="ACV" ) - { - VerificationItem = "ACV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACVList.append(Data); + } else if(row[2]=="DCI" ) + { + VerificationItem = "DCI"; + //添加列头 - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACVList.append(Data); - } else if(row[2]=="DCI" ) - { - VerificationItem = "DCI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + //Data.append(row[5]); //频率 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCIList.append(Data); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - //Data.append(row[5]); //频率 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCIList.append(Data); + } else if(row[2]=="ACI" ) + { + VerificationItem = "ACI"; + //添加列头 - } else if(row[2]=="ACI" ) - { - VerificationItem = "ACI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACIList.append(Data); + } else if(row[2]=="R") + { + VerificationItem = "R"; + //添加列头 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACIList.append(Data); - } else if(row[2]=="R") - { - VerificationItem = "R"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 - head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[13]); //两线/四线 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + RList.append(Data); + } - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[13]); //两线/四线 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - RList.append(Data); - } + } + } - } - } - - if(DCVList.count()!=0){ - DataMapList.insert("DCV",DCVList); - }; - if(ACVList.count()!=0){ - DataMapList.insert("ACV",ACVList); - }; - if(DCIList.count()!=0){ - DataMapList.insert("DCI",DCIList); - }; - if(ACIList.count()!=0){ - DataMapList.insert("ACI",ACIList); - }; - if(RList.count()!=0){ - DataMapList.insert("R",RList); - }; - } - return DataMapList; + if(DCVList.count()!=0){ + DataMapList.insert("DCV",DCVList); + }; + if(ACVList.count()!=0){ + DataMapList.insert("ACV",ACVList); + }; + if(DCIList.count()!=0){ + DataMapList.insert("DCI",DCIList); + }; + if(ACIList.count()!=0){ + DataMapList.insert("ACI",ACIList); + }; + if(RList.count()!=0){ + DataMapList.insert("R",RList); + }; + } + return DataMapList; } //检定数据管理 首页 QList BaseCommonApi::getVerificationData() @@ -3067,7 +3069,101 @@ DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); return DataMapList; } +//检定项 示波器检定装置 +QMap> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList) +{ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT * FROM biz_business_device_measure_item_data_oscilloscope bbdmido" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id " + " WHERE bbdmido.item_id = :itemId ORDER BY bbdmido.update_time DESC"); + // 将参数绑定到占位符 + query.bindValue(":itemId", itemId); + if (query.exec()) { + while (query.next()) { + result.clear(); + result.append(query.value("id").toString()); + result.append(query.value("item_id").toString()); //检定项目ID + result.append(query.value("time_base").toString());//时基 + result.append(query.value("current_gain").toString());//直流增益(示波器-数字) + result.append(query.value("current_bias").toString());//直流偏置(示波器-数字) + result.append(query.value("band_width").toString());//频带宽度 (示波器-数字/模拟) + result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟) + result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟) + result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟) + result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟) + result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟) + result.append(query.value("cycle_signal").toString());//周期时标信号 + result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位 + result.append(query.value("technical_index").toString());//技术指标 + result.append(query.value("technical_index_unit").toString());//技术指标单位 + result.append(query.value("thoroughfare").toString());//通道 + result.append(query.value("impedance").toString());//阻抗 + result.append(query.value("impedance_unit").toString());//阻抗单位 + result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div + result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位 + result.append(query.value("standard_value").toString());//标准值 + result.append(query.value("standard_value_unit").toString());//标准值单位 + result.append(query.value("band_width").toString());//频带宽度 + result.append(query.value("band_width_unit").toString());//频带宽度单位 + result.append(query.value("amplitude").toString());//幅度 + result.append(query.value("amplitude_unit").toString());//幅度单位 + result.append(query.value("trigger_type").toString());//触发类型 + result.append(query.value("signal_frequency").toString());//信号频率 + result.append(query.value("nominal_value").toString());//标称值 + result.append(query.value("nominal_value_unit").toString());//标称值单位 + result.append(query.value("create_time").toString()); + result.append(query.value("update_time").toString()); + resultData.append(result); + } + } else { + qDebug() << "Query execution failed: " << query.lastError().text(); + } + + + DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList IndicationErrorList; + if(itemCatoryName.contains("数字示波器")){ + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2] =="1") { + VerificationItem = "示值误差"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正" + <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + + Data.append(row[0]); //ID + Data.append(row[2]); //标准器示值 + + Data.append(row[2]);//轻敲前示值-正 + Data.append(row[2]);//"轻敲前示值-反" + Data.append(row[2]);//轻敲后示值-正 + Data.append(row[2]);//轻敲后示值-反 + Data.append("0");//轻敲前后变动量-正 + Data.append("0");//轻敲前后变动量-反 + IndicationErrorList.append(Data); + } + + } + } + if(IndicationErrorList.count()!=0){ + DataMapList.insert("示值误差",IndicationErrorList); + }; + return DataMapList; +} QMap> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { QList IndicationErrorList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index 7acfc02..3c51ea2 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1223,6 +1223,10 @@ static bool SearchSelectTable(QString id, BaseClass *object); //【结果保存】压力 static bool InsertDeviceMeasureDataPistonGauge(DeviceMeasureDataPistonGauge gauge); + + //示波器 + static QMap> getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList); + QMap> GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); }; #endif // BASECOMMONAPI_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..19a4fc2 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -69,6 +69,10 @@ cmdPlaceHolderList.insert("{FREQ}","频率"); cmdPlaceHolderList.insert("{UNIT}","单位"); cmdPlaceHolderList.insert("{FUNIT}","频率单位"); + //转换 + unitTypeTransList.insert("Ω","OHM"); + unitTypeTransList.insert("KΩ","KOHM"); + unitTypeTransList.insert("MΩ","MOHM"); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -306,7 +310,13 @@ ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 row++; } + //搜索仪器地址放入下拉框 + ui->comboBox_visa->clear(); + + QStringList visaAddrs = engine.getVisaAddrs(); + ui->comboBox_visa->addItems(visaAddrs); ui->tableWidget_3->selectRow(0); + connect(ui->comboBox_visa,&QComboBox::currentTextChanged,this,&CheckWindow::on_comboBox_visa_OnCurrentTextChanged); } void CheckWindow::showCheck() @@ -707,6 +717,7 @@ else ui->radioButton_visa->setChecked(true); ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ QStringList sList = addr.serial_port.split(";"); if(sList.length()==5){ @@ -717,6 +728,12 @@ ui->comboBox_stop->setCurrentText(sList[4]); } } + //修改连接状态 + if(getJoinState(addr.visa)) + { + ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("ON")); + }else{ ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("OFF"));} + } } @@ -807,7 +824,11 @@ if(connectList.length()>0&&connectList[0].type==0) deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); if(connectList.length()>1&&connectList[1].type==1) - standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); + { + if(standardEngine.openDevice(connectList[1].programInterface.visa,"Visa")); + ui->tableWidget_Standard->setItem(0,1,new QTableWidgetItem("ON")); + } + } InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) @@ -841,6 +862,15 @@ } return dTmp; } +QString CheckWindow::TranTypeUnit(QString sUnit) +{ + QString NewsUnit=sUnit; + if(unitTypeTransList.keys().contains(sUnit)) + { + NewsUnit=unitTypeTransList.value(sUnit); + } + return NewsUnit; +} QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); @@ -871,14 +901,16 @@ Delay_MSec(delay); return ""; } - + QString NewUnit; for (QString key : cmdPlaceHolderList.keys()) { if(sCmd.contains(key)){ int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(key)); if(idx!=-1){ if(devicetype) { - sNewCmd = sNewCmd.replace(key,data[idx]); + + NewUnit = TranTypeUnit(data[idx]); //转换 Ω->OHM + sNewCmd = sNewCmd.replace(key,NewUnit); continue; } int idx2= getIndexByHeader(sLabel,"单位"); @@ -980,8 +1012,8 @@ idx= getIndexByHeader(sLabel,"绝对误差"); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 示值: %1 绝对误差 %2").arg(dStdValue).arg(dError)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); Delay_MSec(2000); } //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); @@ -1141,3 +1173,28 @@ } } } + + +void CheckWindow::on_comboBox_visa_OnCurrentTextChanged(QString arg1) +{ + //lab_deviceinfo + getJoinState(arg1); + +} +bool CheckWindow::getJoinState(QString arg1) +{ + bool IsSucc=false; + QString visaAdd=arg1; + QStringList parts = engine.getdeviceIdninfo(visaAdd).split(","); + if(parts.count()>2) + { + ui->lab_deviceinfo->setText(parts[0]+"-"+parts[1]); + IsSucc=true; + } + + if(parts.contains("false")) + { + ui->lab_deviceinfo->setText("无连接"); + } + return IsSucc; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..9508e55 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -66,6 +66,9 @@ void on_pushButton_8_clicked(); + void on_comboBox_visa_OnCurrentTextChanged(QString arg1); + bool getJoinState(QString arg1); + private: void getCheckDevice(bool bInit=true); void getCheckMethod(); @@ -84,6 +87,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + QString TranTypeUnit(QString sUnit); private: Ui::CheckWindow *ui; @@ -96,6 +100,7 @@ QList calibrationList; VisaCommonEngine deviceEngine; VisaCommonEngine standardEngine; + VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; QMap> caliDataList; @@ -105,6 +110,8 @@ int curHeadIdx=-1; int iEquipType=1; QMap unitTransList; + //unitTypeTransList + QMap unitTypeTransList; QMap cmdPlaceHolderList; QString standardId; int currConnectIdx; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index 794c8a4..8537841 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1490,6 +1490,30 @@ + + + + + 12 + + + + 设置信息: + + + + + + + + 12 + + + + + + + diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp index 5284fe6..84ca56b 100644 --- a/softwareDirectory/AutoVerScheme/databaseconnection.cpp +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -11,7 +11,6 @@ // 连接数据库 localdb = QSqlDatabase::addDatabase("QODBC"); - localdb.setHostName("localhost"); localdb.setDatabaseName("zdjd"); localdb.setPort(3306); @@ -19,11 +18,11 @@ localdb.setPassword("123456"); Maindb = QSqlDatabase::addDatabase("QODBC","Main"); - Maindb.setHostName("111.198.10.15"); - Maindb.setDatabaseName("casic_metering_xichang"); - Maindb.setPort(21906); - Maindb.setUserName("zdjdcs"); - Maindb.setPassword("11111111"); + Maindb.setHostName("27.99.50.20"); + Maindb.setDatabaseName("test"); + Maindb.setPort(3306); + Maindb.setUserName("casic_203"); + Maindb.setPassword("Casic_203"); diff --git a/softwareDirectory/AutoVerScheme/syncdialog.cpp b/softwareDirectory/AutoVerScheme/syncdialog.cpp index db52073..11570fb 100644 --- a/softwareDirectory/AutoVerScheme/syncdialog.cpp +++ b/softwareDirectory/AutoVerScheme/syncdialog.cpp @@ -61,7 +61,7 @@ threadPool= QThreadPool::globalInstance(); threadPool->setMaxThreadCount(5); // 设置线程池中的最大线程数 // 遍历表名,为每个表创建一个任务并提交到线程池 - BaseCommonApi::SaveLogInfo(1,"开始下载同步"); + BaseCommonApi::SaveLogInfo(0,"开始下载同步"); while (query.next()) { QString tableName = query.value(0).toString(); @@ -122,7 +122,7 @@ mess +=errorMessage+"....."; } //log保存 - BaseCommonApi::SaveLogInfo(1,mess); + BaseCommonApi::SaveLogInfo(0,mess); //界面listview显示 ui->listWidget->addItem(mess); // 当添加新项后,滚动到底部 @@ -191,7 +191,7 @@ dbmang.InsertzdDataSync(entity); } } - BaseCommonApi::SaveLogInfo(1,"结束下载同步"); + BaseCommonApi::SaveLogInfo(0,"结束下载同步"); QMessageBox::warning(this, "提示", "结束!"); } diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index cc9f249..07fa032 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -120,10 +120,10 @@ "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id " "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID " " JOIN biz_business_order_info bo ON bo.id = blei.order_id " - " WHERE blei.measure_dept_id = :deptId " + // " WHERE blei.measure_dept_id = :deptId " " ORDER BY blei.update_time DESC"); // 将参数绑定到占位符 - query.bindValue(":deptId", deptId); + // query.bindValue(":deptId", deptId); if (query.exec()) { while (query.next()) { @@ -906,13 +906,16 @@ if(deviceCatoryName.contains("数字多用表(手持)")){ DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); } - DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); break; case 4: if (deviceCatoryName.contains("一般压力表")){ DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList); }//else if 后续可判断其他检定项分类 break; + case 13: + //示波器标准装置 = 13 + //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); + break; } @@ -1085,188 +1088,187 @@ QMap> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { + QList DCVList; + QList ACVList; + QList DCIList; + QList ACIList; + QList RList; + if(itemCatoryName.contains("数字多用表")){ + for(const QStringList &row : ResultData) + { + QStringList head; + QStringList Data; + QString VerificationItem=NULL; + if (!row.isEmpty()) { // 确保行不为空 + if(row[2]=="DCV") + { + VerificationItem = "DCV"; + //添加列头 - QList DCVList; - QList ACVList; - QList DCIList; - QList ACIList; - QList RList; - if(itemCatoryName.contains("数字多用表")){ - for(const QStringList &row : ResultData) - { - QStringList head; - QStringList Data; - QString VerificationItem=NULL; - if (!row.isEmpty()) { // 确保行不为空 - if(row[2]=="DCV") - { - VerificationItem = "DCV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCVList.append(Data); + } + else if(row[2]=="ACV" ) + { + VerificationItem = "ACV"; + //添加列头 - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCVList.append(Data); - } - else if(row[2]=="ACV" ) - { - VerificationItem = "ACV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACVList.append(Data); + } else if(row[2]=="DCI" ) + { + VerificationItem = "DCI"; + //添加列头 - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACVList.append(Data); - } else if(row[2]=="DCI" ) - { - VerificationItem = "DCI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + //Data.append(row[5]); //频率 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCIList.append(Data); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - //Data.append(row[5]); //频率 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCIList.append(Data); + } else if(row[2]=="ACI" ) + { + VerificationItem = "ACI"; + //添加列头 - } else if(row[2]=="ACI" ) - { - VerificationItem = "ACI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACIList.append(Data); + } else if(row[2]=="R") + { + VerificationItem = "R"; + //添加列头 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACIList.append(Data); - } else if(row[2]=="R") - { - VerificationItem = "R"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 - head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[13]); //两线/四线 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + RList.append(Data); + } - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[13]); //两线/四线 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - RList.append(Data); - } + } + } - } - } - - if(DCVList.count()!=0){ - DataMapList.insert("DCV",DCVList); - }; - if(ACVList.count()!=0){ - DataMapList.insert("ACV",ACVList); - }; - if(DCIList.count()!=0){ - DataMapList.insert("DCI",DCIList); - }; - if(ACIList.count()!=0){ - DataMapList.insert("ACI",ACIList); - }; - if(RList.count()!=0){ - DataMapList.insert("R",RList); - }; - } - return DataMapList; + if(DCVList.count()!=0){ + DataMapList.insert("DCV",DCVList); + }; + if(ACVList.count()!=0){ + DataMapList.insert("ACV",ACVList); + }; + if(DCIList.count()!=0){ + DataMapList.insert("DCI",DCIList); + }; + if(ACIList.count()!=0){ + DataMapList.insert("ACI",ACIList); + }; + if(RList.count()!=0){ + DataMapList.insert("R",RList); + }; + } + return DataMapList; } //检定数据管理 首页 QList BaseCommonApi::getVerificationData() @@ -3067,7 +3069,101 @@ DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); return DataMapList; } +//检定项 示波器检定装置 +QMap> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList) +{ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT * FROM biz_business_device_measure_item_data_oscilloscope bbdmido" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id " + " WHERE bbdmido.item_id = :itemId ORDER BY bbdmido.update_time DESC"); + // 将参数绑定到占位符 + query.bindValue(":itemId", itemId); + if (query.exec()) { + while (query.next()) { + result.clear(); + result.append(query.value("id").toString()); + result.append(query.value("item_id").toString()); //检定项目ID + result.append(query.value("time_base").toString());//时基 + result.append(query.value("current_gain").toString());//直流增益(示波器-数字) + result.append(query.value("current_bias").toString());//直流偏置(示波器-数字) + result.append(query.value("band_width").toString());//频带宽度 (示波器-数字/模拟) + result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟) + result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟) + result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟) + result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟) + result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟) + result.append(query.value("cycle_signal").toString());//周期时标信号 + result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位 + result.append(query.value("technical_index").toString());//技术指标 + result.append(query.value("technical_index_unit").toString());//技术指标单位 + result.append(query.value("thoroughfare").toString());//通道 + result.append(query.value("impedance").toString());//阻抗 + result.append(query.value("impedance_unit").toString());//阻抗单位 + result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div + result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位 + result.append(query.value("standard_value").toString());//标准值 + result.append(query.value("standard_value_unit").toString());//标准值单位 + result.append(query.value("band_width").toString());//频带宽度 + result.append(query.value("band_width_unit").toString());//频带宽度单位 + result.append(query.value("amplitude").toString());//幅度 + result.append(query.value("amplitude_unit").toString());//幅度单位 + result.append(query.value("trigger_type").toString());//触发类型 + result.append(query.value("signal_frequency").toString());//信号频率 + result.append(query.value("nominal_value").toString());//标称值 + result.append(query.value("nominal_value_unit").toString());//标称值单位 + result.append(query.value("create_time").toString()); + result.append(query.value("update_time").toString()); + resultData.append(result); + } + } else { + qDebug() << "Query execution failed: " << query.lastError().text(); + } + + + DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList IndicationErrorList; + if(itemCatoryName.contains("数字示波器")){ + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2] =="1") { + VerificationItem = "示值误差"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正" + <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + + Data.append(row[0]); //ID + Data.append(row[2]); //标准器示值 + + Data.append(row[2]);//轻敲前示值-正 + Data.append(row[2]);//"轻敲前示值-反" + Data.append(row[2]);//轻敲后示值-正 + Data.append(row[2]);//轻敲后示值-反 + Data.append("0");//轻敲前后变动量-正 + Data.append("0");//轻敲前后变动量-反 + IndicationErrorList.append(Data); + } + + } + } + if(IndicationErrorList.count()!=0){ + DataMapList.insert("示值误差",IndicationErrorList); + }; + return DataMapList; +} QMap> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { QList IndicationErrorList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index 7acfc02..3c51ea2 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1223,6 +1223,10 @@ static bool SearchSelectTable(QString id, BaseClass *object); //【结果保存】压力 static bool InsertDeviceMeasureDataPistonGauge(DeviceMeasureDataPistonGauge gauge); + + //示波器 + static QMap> getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList); + QMap> GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); }; #endif // BASECOMMONAPI_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..19a4fc2 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -69,6 +69,10 @@ cmdPlaceHolderList.insert("{FREQ}","频率"); cmdPlaceHolderList.insert("{UNIT}","单位"); cmdPlaceHolderList.insert("{FUNIT}","频率单位"); + //转换 + unitTypeTransList.insert("Ω","OHM"); + unitTypeTransList.insert("KΩ","KOHM"); + unitTypeTransList.insert("MΩ","MOHM"); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -306,7 +310,13 @@ ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 row++; } + //搜索仪器地址放入下拉框 + ui->comboBox_visa->clear(); + + QStringList visaAddrs = engine.getVisaAddrs(); + ui->comboBox_visa->addItems(visaAddrs); ui->tableWidget_3->selectRow(0); + connect(ui->comboBox_visa,&QComboBox::currentTextChanged,this,&CheckWindow::on_comboBox_visa_OnCurrentTextChanged); } void CheckWindow::showCheck() @@ -707,6 +717,7 @@ else ui->radioButton_visa->setChecked(true); ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ QStringList sList = addr.serial_port.split(";"); if(sList.length()==5){ @@ -717,6 +728,12 @@ ui->comboBox_stop->setCurrentText(sList[4]); } } + //修改连接状态 + if(getJoinState(addr.visa)) + { + ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("ON")); + }else{ ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("OFF"));} + } } @@ -807,7 +824,11 @@ if(connectList.length()>0&&connectList[0].type==0) deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); if(connectList.length()>1&&connectList[1].type==1) - standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); + { + if(standardEngine.openDevice(connectList[1].programInterface.visa,"Visa")); + ui->tableWidget_Standard->setItem(0,1,new QTableWidgetItem("ON")); + } + } InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) @@ -841,6 +862,15 @@ } return dTmp; } +QString CheckWindow::TranTypeUnit(QString sUnit) +{ + QString NewsUnit=sUnit; + if(unitTypeTransList.keys().contains(sUnit)) + { + NewsUnit=unitTypeTransList.value(sUnit); + } + return NewsUnit; +} QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); @@ -871,14 +901,16 @@ Delay_MSec(delay); return ""; } - + QString NewUnit; for (QString key : cmdPlaceHolderList.keys()) { if(sCmd.contains(key)){ int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(key)); if(idx!=-1){ if(devicetype) { - sNewCmd = sNewCmd.replace(key,data[idx]); + + NewUnit = TranTypeUnit(data[idx]); //转换 Ω->OHM + sNewCmd = sNewCmd.replace(key,NewUnit); continue; } int idx2= getIndexByHeader(sLabel,"单位"); @@ -980,8 +1012,8 @@ idx= getIndexByHeader(sLabel,"绝对误差"); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 示值: %1 绝对误差 %2").arg(dStdValue).arg(dError)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); Delay_MSec(2000); } //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); @@ -1141,3 +1173,28 @@ } } } + + +void CheckWindow::on_comboBox_visa_OnCurrentTextChanged(QString arg1) +{ + //lab_deviceinfo + getJoinState(arg1); + +} +bool CheckWindow::getJoinState(QString arg1) +{ + bool IsSucc=false; + QString visaAdd=arg1; + QStringList parts = engine.getdeviceIdninfo(visaAdd).split(","); + if(parts.count()>2) + { + ui->lab_deviceinfo->setText(parts[0]+"-"+parts[1]); + IsSucc=true; + } + + if(parts.contains("false")) + { + ui->lab_deviceinfo->setText("无连接"); + } + return IsSucc; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..9508e55 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -66,6 +66,9 @@ void on_pushButton_8_clicked(); + void on_comboBox_visa_OnCurrentTextChanged(QString arg1); + bool getJoinState(QString arg1); + private: void getCheckDevice(bool bInit=true); void getCheckMethod(); @@ -84,6 +87,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + QString TranTypeUnit(QString sUnit); private: Ui::CheckWindow *ui; @@ -96,6 +100,7 @@ QList calibrationList; VisaCommonEngine deviceEngine; VisaCommonEngine standardEngine; + VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; QMap> caliDataList; @@ -105,6 +110,8 @@ int curHeadIdx=-1; int iEquipType=1; QMap unitTransList; + //unitTypeTransList + QMap unitTypeTransList; QMap cmdPlaceHolderList; QString standardId; int currConnectIdx; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index 794c8a4..8537841 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1490,6 +1490,30 @@ + + + + + 12 + + + + 设置信息: + + + + + + + + 12 + + + + + + + diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp index 5284fe6..84ca56b 100644 --- a/softwareDirectory/AutoVerScheme/databaseconnection.cpp +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -11,7 +11,6 @@ // 连接数据库 localdb = QSqlDatabase::addDatabase("QODBC"); - localdb.setHostName("localhost"); localdb.setDatabaseName("zdjd"); localdb.setPort(3306); @@ -19,11 +18,11 @@ localdb.setPassword("123456"); Maindb = QSqlDatabase::addDatabase("QODBC","Main"); - Maindb.setHostName("111.198.10.15"); - Maindb.setDatabaseName("casic_metering_xichang"); - Maindb.setPort(21906); - Maindb.setUserName("zdjdcs"); - Maindb.setPassword("11111111"); + Maindb.setHostName("27.99.50.20"); + Maindb.setDatabaseName("test"); + Maindb.setPort(3306); + Maindb.setUserName("casic_203"); + Maindb.setPassword("Casic_203"); diff --git a/softwareDirectory/AutoVerScheme/syncdialog.cpp b/softwareDirectory/AutoVerScheme/syncdialog.cpp index db52073..11570fb 100644 --- a/softwareDirectory/AutoVerScheme/syncdialog.cpp +++ b/softwareDirectory/AutoVerScheme/syncdialog.cpp @@ -61,7 +61,7 @@ threadPool= QThreadPool::globalInstance(); threadPool->setMaxThreadCount(5); // 设置线程池中的最大线程数 // 遍历表名,为每个表创建一个任务并提交到线程池 - BaseCommonApi::SaveLogInfo(1,"开始下载同步"); + BaseCommonApi::SaveLogInfo(0,"开始下载同步"); while (query.next()) { QString tableName = query.value(0).toString(); @@ -122,7 +122,7 @@ mess +=errorMessage+"....."; } //log保存 - BaseCommonApi::SaveLogInfo(1,mess); + BaseCommonApi::SaveLogInfo(0,mess); //界面listview显示 ui->listWidget->addItem(mess); // 当添加新项后,滚动到底部 @@ -191,7 +191,7 @@ dbmang.InsertzdDataSync(entity); } } - BaseCommonApi::SaveLogInfo(1,"结束下载同步"); + BaseCommonApi::SaveLogInfo(0,"结束下载同步"); QMessageBox::warning(this, "提示", "结束!"); } diff --git a/softwareDirectory/AutoVerScheme/visacommonengine.cpp b/softwareDirectory/AutoVerScheme/visacommonengine.cpp index 43cec07..39dfed2 100644 --- a/softwareDirectory/AutoVerScheme/visacommonengine.cpp +++ b/softwareDirectory/AutoVerScheme/visacommonengine.cpp @@ -31,7 +31,7 @@ qDebug() << "An error occurred while finding resources."; return addrList; } - + //openDevice("*IDN?") if ( numInstrs > 0 ) { addrList.append(instrDescriptor); } @@ -55,7 +55,16 @@ return addrList; } - +QString VisaCommonEngine::getdeviceIdninfo(QString sAddr) +{ + QString info="false"; + if(this->openDevice(sAddr,"Visa")) + { + info=this->queryData("*IDN?"); + this->closeDevice(); + } + return info; +} QStringList VisaCommonEngine::getSerialAddrs() { QStringList addrList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index cc9f249..07fa032 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -120,10 +120,10 @@ "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id " "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID " " JOIN biz_business_order_info bo ON bo.id = blei.order_id " - " WHERE blei.measure_dept_id = :deptId " + // " WHERE blei.measure_dept_id = :deptId " " ORDER BY blei.update_time DESC"); // 将参数绑定到占位符 - query.bindValue(":deptId", deptId); + // query.bindValue(":deptId", deptId); if (query.exec()) { while (query.next()) { @@ -906,13 +906,16 @@ if(deviceCatoryName.contains("数字多用表(手持)")){ DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); } - DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList); break; case 4: if (deviceCatoryName.contains("一般压力表")){ DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList); }//else if 后续可判断其他检定项分类 break; + case 13: + //示波器标准装置 = 13 + //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); + break; } @@ -1085,188 +1088,187 @@ QMap> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { + QList DCVList; + QList ACVList; + QList DCIList; + QList ACIList; + QList RList; + if(itemCatoryName.contains("数字多用表")){ + for(const QStringList &row : ResultData) + { + QStringList head; + QStringList Data; + QString VerificationItem=NULL; + if (!row.isEmpty()) { // 确保行不为空 + if(row[2]=="DCV") + { + VerificationItem = "DCV"; + //添加列头 - QList DCVList; - QList ACVList; - QList DCIList; - QList ACIList; - QList RList; - if(itemCatoryName.contains("数字多用表")){ - for(const QStringList &row : ResultData) - { - QStringList head; - QStringList Data; - QString VerificationItem=NULL; - if (!row.isEmpty()) { // 确保行不为空 - if(row[2]=="DCV") - { - VerificationItem = "DCV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCVList.append(Data); + } + else if(row[2]=="ACV" ) + { + VerificationItem = "ACV"; + //添加列头 - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCVList.append(Data); - } - else if(row[2]=="ACV" ) - { - VerificationItem = "ACV"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACVList.append(Data); + } else if(row[2]=="DCI" ) + { + VerificationItem = "DCI"; + //添加列头 - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"<< "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACVList.append(Data); - } else if(row[2]=="DCI" ) - { - VerificationItem = "DCI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + //Data.append(row[5]); //频率 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + DCIList.append(Data); - //添加数据 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - //Data.append(row[5]); //频率 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - DCIList.append(Data); + } else if(row[2]=="ACI" ) + { + VerificationItem = "ACI"; + //添加列头 - } else if(row[2]=="ACI" ) - { - VerificationItem = "ACI"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); - head << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); + //添加数据 - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[5]); //频率 + Data.append(row[6]); //频率单位 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + ACIList.append(Data); + } else if(row[2]=="R") + { + VerificationItem = "R"; + //添加列头 - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[5]); //频率 - Data.append(row[6]); //频率单位 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - ACIList.append(Data); - } else if(row[2]=="R") - { - VerificationItem = "R"; - //添加列头 + head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" + << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; + HeadMapList->insert(VerificationItem,head); + //添加数据 - head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线" << "量程" - << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"; - HeadMapList->insert(VerificationItem,head); - //添加数据 + Data.append(row[0]); //ID + Data.append(row[2]); //检定项目 + Data.append(row[3]); //量 + Data.append(row[4]); //单位 + Data.append(row[13]); //两线/四线 + Data.append(row[7]); //量程 + Data.append(row[8]); //标准值 + Data.append(row[15]); //示值 + Data.append(""); //绝对误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 + try { + //保证数据库内数据没问题 + Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) + + (row[12].toDouble()*row[7].toDouble()))); + } catch(const std::exception &e) { + Data.append("0"); + } + Data.append(row[9]); //分辨力 + RList.append(Data); + } - Data.append(row[0]); //ID - Data.append(row[2]); //检定项目 - Data.append(row[3]); //量 - Data.append(row[4]); //单位 - Data.append(row[13]); //两线/四线 - Data.append(row[7]); //量程 - Data.append(row[8]); //标准值 - Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 - //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { - //保证数据库内数据没问题 - Data.append(QString::number((row[11].toDouble()*row[8].toDouble()) - + (row[12].toDouble()*row[7].toDouble()))); - } catch(const std::exception &e) { - Data.append("0"); - } - Data.append(row[9]); //分辨力 - RList.append(Data); - } + } + } - } - } - - if(DCVList.count()!=0){ - DataMapList.insert("DCV",DCVList); - }; - if(ACVList.count()!=0){ - DataMapList.insert("ACV",ACVList); - }; - if(DCIList.count()!=0){ - DataMapList.insert("DCI",DCIList); - }; - if(ACIList.count()!=0){ - DataMapList.insert("ACI",ACIList); - }; - if(RList.count()!=0){ - DataMapList.insert("R",RList); - }; - } - return DataMapList; + if(DCVList.count()!=0){ + DataMapList.insert("DCV",DCVList); + }; + if(ACVList.count()!=0){ + DataMapList.insert("ACV",ACVList); + }; + if(DCIList.count()!=0){ + DataMapList.insert("DCI",DCIList); + }; + if(ACIList.count()!=0){ + DataMapList.insert("ACI",ACIList); + }; + if(RList.count()!=0){ + DataMapList.insert("R",RList); + }; + } + return DataMapList; } //检定数据管理 首页 QList BaseCommonApi::getVerificationData() @@ -3067,7 +3069,101 @@ DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); return DataMapList; } +//检定项 示波器检定装置 +QMap> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList) +{ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT * FROM biz_business_device_measure_item_data_oscilloscope bbdmido" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id " + " WHERE bbdmido.item_id = :itemId ORDER BY bbdmido.update_time DESC"); + // 将参数绑定到占位符 + query.bindValue(":itemId", itemId); + if (query.exec()) { + while (query.next()) { + result.clear(); + result.append(query.value("id").toString()); + result.append(query.value("item_id").toString()); //检定项目ID + result.append(query.value("time_base").toString());//时基 + result.append(query.value("current_gain").toString());//直流增益(示波器-数字) + result.append(query.value("current_bias").toString());//直流偏置(示波器-数字) + result.append(query.value("band_width").toString());//频带宽度 (示波器-数字/模拟) + result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟) + result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟) + result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟) + result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟) + result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟) + result.append(query.value("cycle_signal").toString());//周期时标信号 + result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位 + result.append(query.value("technical_index").toString());//技术指标 + result.append(query.value("technical_index_unit").toString());//技术指标单位 + result.append(query.value("thoroughfare").toString());//通道 + result.append(query.value("impedance").toString());//阻抗 + result.append(query.value("impedance_unit").toString());//阻抗单位 + result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div + result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位 + result.append(query.value("standard_value").toString());//标准值 + result.append(query.value("standard_value_unit").toString());//标准值单位 + result.append(query.value("band_width").toString());//频带宽度 + result.append(query.value("band_width_unit").toString());//频带宽度单位 + result.append(query.value("amplitude").toString());//幅度 + result.append(query.value("amplitude_unit").toString());//幅度单位 + result.append(query.value("trigger_type").toString());//触发类型 + result.append(query.value("signal_frequency").toString());//信号频率 + result.append(query.value("nominal_value").toString());//标称值 + result.append(query.value("nominal_value_unit").toString());//标称值单位 + result.append(query.value("create_time").toString()); + result.append(query.value("update_time").toString()); + resultData.append(result); + } + } else { + qDebug() << "Query execution failed: " << query.lastError().text(); + } + + + DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList IndicationErrorList; + if(itemCatoryName.contains("数字示波器")){ + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2] =="1") { + VerificationItem = "示值误差"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正" + <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + + Data.append(row[0]); //ID + Data.append(row[2]); //标准器示值 + + Data.append(row[2]);//轻敲前示值-正 + Data.append(row[2]);//"轻敲前示值-反" + Data.append(row[2]);//轻敲后示值-正 + Data.append(row[2]);//轻敲后示值-反 + Data.append("0");//轻敲前后变动量-正 + Data.append("0");//轻敲前后变动量-反 + IndicationErrorList.append(Data); + } + + } + } + if(IndicationErrorList.count()!=0){ + DataMapList.insert("示值误差",IndicationErrorList); + }; + return DataMapList; +} QMap> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) { QList IndicationErrorList; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index 7acfc02..3c51ea2 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1223,6 +1223,10 @@ static bool SearchSelectTable(QString id, BaseClass *object); //【结果保存】压力 static bool InsertDeviceMeasureDataPistonGauge(DeviceMeasureDataPistonGauge gauge); + + //示波器 + static QMap> getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap *headList); + QMap> GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); }; #endif // BASECOMMONAPI_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 976715c..19a4fc2 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -69,6 +69,10 @@ cmdPlaceHolderList.insert("{FREQ}","频率"); cmdPlaceHolderList.insert("{UNIT}","单位"); cmdPlaceHolderList.insert("{FUNIT}","频率单位"); + //转换 + unitTypeTransList.insert("Ω","OHM"); + unitTypeTransList.insert("KΩ","KOHM"); + unitTypeTransList.insert("MΩ","MOHM"); getCheckDevice(); //ui->stackedWidget_2->setCurrentIndex(1); //ui->tableWidgetDevice->verticalHeader()->sectionResizeMode(QHeaderView::Stretch); @@ -306,7 +310,13 @@ ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据 row++; } + //搜索仪器地址放入下拉框 + ui->comboBox_visa->clear(); + + QStringList visaAddrs = engine.getVisaAddrs(); + ui->comboBox_visa->addItems(visaAddrs); ui->tableWidget_3->selectRow(0); + connect(ui->comboBox_visa,&QComboBox::currentTextChanged,this,&CheckWindow::on_comboBox_visa_OnCurrentTextChanged); } void CheckWindow::showCheck() @@ -707,6 +717,7 @@ else ui->radioButton_visa->setChecked(true); ui->comboBox_visa->setCurrentText(addr.visa); + if(addr.serial_port!=""){ QStringList sList = addr.serial_port.split(";"); if(sList.length()==5){ @@ -717,6 +728,12 @@ ui->comboBox_stop->setCurrentText(sList[4]); } } + //修改连接状态 + if(getJoinState(addr.visa)) + { + ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("ON")); + }else{ ui->tableWidget_3->setItem(currentRow,1,new QTableWidgetItem("OFF"));} + } } @@ -807,7 +824,11 @@ if(connectList.length()>0&&connectList[0].type==0) deviceEngine.openDevice(connectList[0].programInterface.visa,"Visa"); if(connectList.length()>1&&connectList[1].type==1) - standardEngine.openDevice(connectList[1].programInterface.visa,"Visa"); + { + if(standardEngine.openDevice(connectList[1].programInterface.visa,"Visa")); + ui->tableWidget_Standard->setItem(0,1,new QTableWidgetItem("ON")); + } + } InstructionLib* CheckWindow::getCmdByCheckName(int idx,QString name) @@ -841,6 +862,15 @@ } return dTmp; } +QString CheckWindow::TranTypeUnit(QString sUnit) +{ + QString NewsUnit=sUnit; + if(unitTypeTransList.keys().contains(sUnit)) + { + NewsUnit=unitTypeTransList.value(sUnit); + } + return NewsUnit; +} QString CheckWindow::TranDecimals(QString sLabel,QStringList data,double TestValue) { int dex=getIndexByHeader(sLabel,"标准值"); @@ -871,14 +901,16 @@ Delay_MSec(delay); return ""; } - + QString NewUnit; for (QString key : cmdPlaceHolderList.keys()) { if(sCmd.contains(key)){ int idx= getIndexByHeader(sLabel,cmdPlaceHolderList.value(key)); if(idx!=-1){ if(devicetype) { - sNewCmd = sNewCmd.replace(key,data[idx]); + + NewUnit = TranTypeUnit(data[idx]); //转换 Ω->OHM + sNewCmd = sNewCmd.replace(key,NewUnit); continue; } int idx2= getIndexByHeader(sLabel,"单位"); @@ -980,8 +1012,8 @@ idx= getIndexByHeader(sLabel,"绝对误差"); dataRes[i][idx] = newdError; ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); //示值 - - BaseCommonApi::SaveLogInfo(1,QString("示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); + BaseCommonApi::SaveLogInfo(1,QString("转换前 示值: %1 绝对误差 %2").arg(dStdValue).arg(dError)); + BaseCommonApi::SaveLogInfo(1,QString("转换后 示值: %1 绝对误差 %2").arg(newdStdValue).arg(newdError)); Delay_MSec(2000); } //ui->tableWidgetCheck->setItem(i,19,new QTableWidgetItem(sRet)); @@ -1141,3 +1173,28 @@ } } } + + +void CheckWindow::on_comboBox_visa_OnCurrentTextChanged(QString arg1) +{ + //lab_deviceinfo + getJoinState(arg1); + +} +bool CheckWindow::getJoinState(QString arg1) +{ + bool IsSucc=false; + QString visaAdd=arg1; + QStringList parts = engine.getdeviceIdninfo(visaAdd).split(","); + if(parts.count()>2) + { + ui->lab_deviceinfo->setText(parts[0]+"-"+parts[1]); + IsSucc=true; + } + + if(parts.contains("false")) + { + ui->lab_deviceinfo->setText("无连接"); + } + return IsSucc; +} diff --git a/softwareDirectory/AutoVerScheme/checkwindow.h b/softwareDirectory/AutoVerScheme/checkwindow.h index 35707bf..9508e55 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.h +++ b/softwareDirectory/AutoVerScheme/checkwindow.h @@ -66,6 +66,9 @@ void on_pushButton_8_clicked(); + void on_comboBox_visa_OnCurrentTextChanged(QString arg1); + bool getJoinState(QString arg1); + private: void getCheckDevice(bool bInit=true); void getCheckMethod(); @@ -84,6 +87,7 @@ void SetStandardCombox(CatDeviceInfor info); void updateStandardTable(); QString TranDecimals(QString sLabel,QStringList data,double TestValue); + QString TranTypeUnit(QString sUnit); private: Ui::CheckWindow *ui; @@ -96,6 +100,7 @@ QList calibrationList; VisaCommonEngine deviceEngine; VisaCommonEngine standardEngine; + VisaCommonEngine engine;; QList measureCalList; SaveDeviceMeasureInfo measureInfo; QMap> caliDataList; @@ -105,6 +110,8 @@ int curHeadIdx=-1; int iEquipType=1; QMap unitTransList; + //unitTypeTransList + QMap unitTypeTransList; QMap cmdPlaceHolderList; QString standardId; int currConnectIdx; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.ui b/softwareDirectory/AutoVerScheme/checkwindow.ui index 794c8a4..8537841 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.ui +++ b/softwareDirectory/AutoVerScheme/checkwindow.ui @@ -1490,6 +1490,30 @@ + + + + + 12 + + + + 设置信息: + + + + + + + + 12 + + + + + + + diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp index 5284fe6..84ca56b 100644 --- a/softwareDirectory/AutoVerScheme/databaseconnection.cpp +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -11,7 +11,6 @@ // 连接数据库 localdb = QSqlDatabase::addDatabase("QODBC"); - localdb.setHostName("localhost"); localdb.setDatabaseName("zdjd"); localdb.setPort(3306); @@ -19,11 +18,11 @@ localdb.setPassword("123456"); Maindb = QSqlDatabase::addDatabase("QODBC","Main"); - Maindb.setHostName("111.198.10.15"); - Maindb.setDatabaseName("casic_metering_xichang"); - Maindb.setPort(21906); - Maindb.setUserName("zdjdcs"); - Maindb.setPassword("11111111"); + Maindb.setHostName("27.99.50.20"); + Maindb.setDatabaseName("test"); + Maindb.setPort(3306); + Maindb.setUserName("casic_203"); + Maindb.setPassword("Casic_203"); diff --git a/softwareDirectory/AutoVerScheme/syncdialog.cpp b/softwareDirectory/AutoVerScheme/syncdialog.cpp index db52073..11570fb 100644 --- a/softwareDirectory/AutoVerScheme/syncdialog.cpp +++ b/softwareDirectory/AutoVerScheme/syncdialog.cpp @@ -61,7 +61,7 @@ threadPool= QThreadPool::globalInstance(); threadPool->setMaxThreadCount(5); // 设置线程池中的最大线程数 // 遍历表名,为每个表创建一个任务并提交到线程池 - BaseCommonApi::SaveLogInfo(1,"开始下载同步"); + BaseCommonApi::SaveLogInfo(0,"开始下载同步"); while (query.next()) { QString tableName = query.value(0).toString(); @@ -122,7 +122,7 @@ mess +=errorMessage+"....."; } //log保存 - BaseCommonApi::SaveLogInfo(1,mess); + BaseCommonApi::SaveLogInfo(0,mess); //界面listview显示 ui->listWidget->addItem(mess); // 当添加新项后,滚动到底部 @@ -191,7 +191,7 @@ dbmang.InsertzdDataSync(entity); } } - BaseCommonApi::SaveLogInfo(1,"结束下载同步"); + BaseCommonApi::SaveLogInfo(0,"结束下载同步"); QMessageBox::warning(this, "提示", "结束!"); } diff --git a/softwareDirectory/AutoVerScheme/visacommonengine.cpp b/softwareDirectory/AutoVerScheme/visacommonengine.cpp index 43cec07..39dfed2 100644 --- a/softwareDirectory/AutoVerScheme/visacommonengine.cpp +++ b/softwareDirectory/AutoVerScheme/visacommonengine.cpp @@ -31,7 +31,7 @@ qDebug() << "An error occurred while finding resources."; return addrList; } - + //openDevice("*IDN?") if ( numInstrs > 0 ) { addrList.append(instrDescriptor); } @@ -55,7 +55,16 @@ return addrList; } - +QString VisaCommonEngine::getdeviceIdninfo(QString sAddr) +{ + QString info="false"; + if(this->openDevice(sAddr,"Visa")) + { + info=this->queryData("*IDN?"); + this->closeDevice(); + } + return info; +} QStringList VisaCommonEngine::getSerialAddrs() { QStringList addrList; diff --git a/softwareDirectory/AutoVerScheme/visacommonengine.h b/softwareDirectory/AutoVerScheme/visacommonengine.h index f9ef609..15108f7 100644 --- a/softwareDirectory/AutoVerScheme/visacommonengine.h +++ b/softwareDirectory/AutoVerScheme/visacommonengine.h @@ -19,6 +19,7 @@ bool getState(); QStringList getVisaAddrs(); QStringList getSerialAddrs(); + QString getdeviceIdninfo(QString sAddr); private: //visa ViSession defaultRM; @@ -33,6 +34,7 @@ QByteArray utf8Bytes; bool commState=false; QSerialPort serial; + }; #endif // VISACOMMONENGINE_H