diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 2bf97e3..6593d87 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1014,6 +1014,18 @@ //示波器标准装置 DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); break; + //微波衰减标准装置 + case 11: + DataList=BaseCommonApi::getDeviceMicrowaveAttenuation(deviceCatoryName,CliTable[0].id,HeadList); + break; + //低频信号发生器标准装置 + case 16: + DataList=BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList); + break; + //小功率标准装置 + case 15: + DataList=BaseCommonApi::getDeviceSmallPower(deviceCatoryName,CliTable[0].id,HeadList); + break; } return DataList; @@ -1235,15 +1247,16 @@ Data.append(row[7]); //量程 Data.append(row[8]); //标准值 Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1268,14 +1281,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1299,14 +1313,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1333,14 +1348,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1364,14 +1380,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /* 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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -2460,6 +2477,7 @@ return isSuccess; }; + //计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备 bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure) { @@ -2468,6 +2486,7 @@ " (id,data_id,equipment_id,create_time,update_time) " " VALUES " " (:id,:data_id,:equipment_id,:create_time,:update_time)"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); // QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":id", deviceMeasure.id); @@ -2513,12 +2532,14 @@ //【结果保存】示波器 DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast(entity); //【结果保存】二等铂电阻 - DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); + DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); //【结果保存】频谱分析仪 DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast(entity); //【结果保存】信号发生器 - DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); + DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); if(orderInfo !=nullptr){ + + resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'") .arg("'" + orderInfo->customer_name + "'") .arg("'" + orderInfo->require_over_time + "'") @@ -4079,7 +4100,7 @@ break; } case 10: { - //信号 + //信号发生器 DeviceMeasureDataSignalGenerator *generator = dynamic_cast(object); if (generator != nullptr) { result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator); @@ -4100,6 +4121,27 @@ } break; } + case 11: { + //微波衰减器 InsertDeviceMicrowaveAttenuation + MicrowaveAttenuationCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceMicrowaveAttenuation(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + case 16: { + //低频信号发生器 + LFSignalGeneratoCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceLFSignalGenerator(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + // 可能还有其他的case default: result = false; @@ -6512,7 +6554,468 @@ } return result; } +QMap> BaseCommonApi::getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT bbdmidama.*,bbdmii.attenuation_amount FROM biz_business_device_measure_item_data_microwave_attenuation bbdmidama" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidama.item_id" + " WHERE bbdmidama.item_id = :itemId ORDER BY bbdmidama.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("attenuation_amount").toString()); //检定项目状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("nominal_value_unit").toString()); //标称值单位 7 + result.append(query.value("composition").toString()); //组合方式 + result.append(query.value("urel").toString()); //U(k=2) + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_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= GetDataReturnItemListByMicrowaveAttenuation(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList PadValueList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2]=="1" && row[3] == "1") { + VerificationItem = "衰减量"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"组合方式" + <<"直通测量值"<<"加入衰减测量值"<<"指标下限"<<"衰减量" + <<"指标上限"<<"U(k=2)"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append(row[6]+row[7]);//标称值 + Data.append(row[8]);//组合方式 + Data.append("");//直通测量值 + Data.append("");//加入衰减测量值 + Data.append(QString::number(row[6].toDouble()-row[11].toDouble())+row[7]);//指标下限 + Data.append("");//衰减量 + Data.append(QString::number(row[6].toDouble()+row[11].toDouble())+row[7]);//指标上限 + Data.append("");//U(k=2) + Data.append(row[9]);//结论 + PadValueList.append(Data); + } + } + if(PadValueList.count()!=0){ + DataMapList.insert("衰减量",PadValueList); + }; + return DataMapList; +} +// 【结果保存】 微波衰减器 +bool BaseCommonApi::InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_microwave_attenuation " + " (id,data_id,data_type,frequency,frequency_unit,nominal_value, " + " nominal_value_unit,composition,direct_measure_value,add_measure_value, " + " attenuation_amount,lower_index,upper_index,urel,conclusion,exceed_mark, " + " create_time,update_time)VALUES( " + " :id,:data_id,:data_type,:frequency,:frequency_unit,:nominal_value, " + " :nominal_value_unit,:composition,:direct_measure_value,:add_measure_value, " + " :attenuation_amount,:lower_index,:upper_index,:urel,:conclusion,:exceed_mark," + " :create_time,:update_time " + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":nominal_value_unit", scope.nominal_value_unit); + query.bindValue(":composition", scope.composition); + query.bindValue(":direct_measure_value", scope.direct_measure_value); + query.bindValue(":add_measure_value", scope.add_measure_value); + query.bindValue(":attenuation_amount", scope.attenuation_amount); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +QMap> BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT *,bbdmii.frequency as freq FROM biz_business_device_measure_item_data_low_frequency_signal bbdmidlfs" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlfs.item_id" + " WHERE bbdmidlfs.item_id = :itemId ORDER BY bbdmidlfs.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("freq").toString()); //频率状态 3 + result.append(query.value("harmonic_distortion").toString()); //谐波失真状态 4 + result.append(query.value("rise_time").toString()); //上升时间状态 5 + result.append(query.value("ac_voltage").toString()); //交流电压状态 6 + result.append(query.value("dc_voltage").toString()); //直流电流状态 7 + result.append(query.value("sinusoid_flatness").toString()); //正弦信号平坦度状态 8 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("unit").toString()); //标称值单位 12 + result.append(query.value("amplitude").toString()); //幅度 + result.append(query.value("amplitude_unit").toString()); //幅度单位 + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_unit").toString()); //技术指标单位 17 + result.append(query.value("ac_frequency").toString()); //交流频率 + result.append(query.value("ac_frequency_unit").toString()); //交流频率单位 + result.append(query.value("valid_digit").toString()); //有效位数 + result.append(query.value("datum_point").toString()); //是否为基准点(1/0) 21 + result.append(query.value("voltage").toString()); //电压 + result.append(query.value("voltage_unit").toString()); //电压单位 + result.append(query.value("value_one").toString()); //数值1(不带%,计算技术指标使用) + result.append(query.value("value_two").toString()); //数值2(计算技术指标使用) 25 + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList freqList; + QList ac_voltageList; + QList dc_voltageList; + QList rise_timeList; + QList sinusoid_flatnessList; + QList harmonic_distortionList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "频率"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论"<<"有效位数"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + Data.append(row[20]);//有效位数 + freqList.append(Data); + }else if(!row.isEmpty() && row[6]=="1" && row[2] == "2") { + VerificationItem = "交流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"交流频率"<<"指标下限" + <<"测量值"<<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(row[18]+row[19]);//交流频率 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + ac_voltageList.append(Data); + }else if(!row.isEmpty() && row[7]=="1" && row[2] == "3") { + VerificationItem = "直流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-row[16].toDouble())+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+row[16].toDouble())+row[12]);//指标上限 + Data.append("");//结论 + dc_voltageList.append(Data); + }else if(!row.isEmpty() && row[5]=="1" && row[2] == "4") { + VerificationItem = "上升时间"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"上升时间" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率 + Data.append(row[13]+row[14]);//幅度 + Data.append("");//上升时间 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + rise_timeList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "正弦信号平坦度"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"电压"<<"频率点"<<"测量值" + <<"平坦度"<<"技术指标"<<"结论"<<"基准点" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[22]+row[23]);//电压 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append("");//平坦度 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + Data.append(row[21]);//基准点 + sinusoid_flatnessList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "总谐波失真"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"测量值" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + harmonic_distortionList.append(Data); + } + } + if(freqList.count()!=0){ + DataMapList.insert("频率",freqList); + }; + if(ac_voltageList.count()!=0){ + DataMapList.insert("交流电压",ac_voltageList); + }; + if(dc_voltageList.count()!=0){ + DataMapList.insert("直流电压",dc_voltageList); + }; + if(rise_timeList.count()!=0){ + DataMapList.insert("上升时间",rise_timeList); + }; + if(sinusoid_flatnessList.count()!=0){ + DataMapList.insert("正弦信号平坦度",sinusoid_flatnessList); + }; + if(harmonic_distortionList.count()!=0){ + DataMapList.insert("总谐波失真",harmonic_distortionList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_frequency_signal(id,data_id,data_type," + " nominal_value,unit,upper_index,lower_index,measure_value,measure_value_unit,conclusion," + " convert_deviation,frequency,frequency_unit,voltage,voltage_unit,rise_time,datum_point," + " ac_frequency,ac_frequency_unit,amplitude,amplitude_unit,flatness,technical_index_symbol," + " technical_index,technical_index_unit,exceed_mark,create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :nominal_value,:unit,:upper_index,:lower_index,:measure_value,:measure_value_unit,:conclusion," + " :convert_deviation,:frequency,:frequency_unit,:voltage,:voltage_unit,:rise_time,:datum_point," + " :ac_frequency,:ac_frequency_unit,:amplitude,:amplitude_unit,:flatness,:technical_index_symbol," + " :technical_index,:technical_index_unit,:exceed_mark,:create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":unit", scope.unit); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":measure_value", scope.measure_value); + query.bindValue(":measure_value_unit", scope.measure_value_unit); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":convert_deviation", scope.convert_deviation); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":voltage", scope.voltage); + query.bindValue(":voltage_unit", scope.voltage_unit); + query.bindValue(":rise_time", scope.rise_time); + query.bindValue(":datum_point", scope.datum_point); + query.bindValue(":ac_frequency", scope.ac_frequency); + query.bindValue(":ac_frequency_unit", scope.ac_frequency_unit); + query.bindValue(":amplitude", scope.amplitude); + query.bindValue(":amplitude_unit", scope.amplitude_unit); + query.bindValue(":flatness", scope.flatness); + query.bindValue(":technical_index_symbol", scope.technical_index_symbol); + query.bindValue(":technical_index", scope.technical_index); + query.bindValue(":technical_index_unit", scope.technical_index_unit); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +//检定项-小功率装置 +QMap> BaseCommonApi::getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT bbdmidlp.*,bbdmii.calibration_factor FROM biz_business_device_measure_item_data_low_power bbdmidlp" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlp.item_id" + " WHERE bbdmidlp.item_id = :itemId ORDER BY bbdmidlp.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("calibration_factor").toString()); //启动状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 5 + result.append(query.value("kc").toString()); //Kc/% + result.append(query.value("standard_reflection_coefficient").toString()); //标准反射系数ГGe + result.append(query.value("device_reflection_coefficient").toString()); //被检设备反射系数Гu 8 + result.append(query.value("urel").toString()); //U(k=2) + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList calibrationFactorList; + + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "校准因子"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"Pcu/mW"<<"Kc/%" + <<"被测探头示数Pbu/mW"<<"标准反射系数ГGe"<<"被检设备反射系数Гu" + <<"被测探头校准因子Kb/%"<<"U(k=2)"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append("");//幅度 + Data.append(row[6]);//Kc/% + Data.append("");//被测探头示数Pbu/mW + Data.append(row[7]);//标准反射系数ГGe + Data.append(row[8]);//被检设备反射系数Гu + Data.append("");//被测探头校准因子Kb/% + Data.append(row[9]);//U(k=2) + calibrationFactorList.append(Data); + } + } + if(calibrationFactorList.count()!=0){ + DataMapList.insert("校准因子",calibrationFactorList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceSmallPower(SmallPowerCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_power(id,data_id,data_type," + " frequency,frequency_unit,pcu,kc,probe_pbu,standard_reflection_coefficient," + " device_reflection_coefficient,probe_calibration_factor,urel,exceed_mark," + " create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :frequency,:frequency_unit,:pcu,:kc,:probe_pbu,:standard_reflection_coefficient," + " :device_reflection_coefficient,:probe_calibration_factor,:urel,:exceed_mark," + " :create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":pcu", scope.pcu); + query.bindValue(":kc", scope.kc); + query.bindValue(":probe_pbu", scope.probe_pbu); + query.bindValue(":standard_reflection_coefficient", scope.standard_reflection_coefficient); + query.bindValue(":device_reflection_coefficient", scope.device_reflection_coefficient); + query.bindValue(":probe_calibration_factor", scope.probe_calibration_factor); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } //核查程序管理-核查设置-多功能校准源 参数设备id 同信息管理-标准设备管理-核查项及核查点 QMap>> BaseCommonApi::getStandardCheckItemDataCalibrator(QString equipment_id,QMap> *headList) diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 2bf97e3..6593d87 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1014,6 +1014,18 @@ //示波器标准装置 DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); break; + //微波衰减标准装置 + case 11: + DataList=BaseCommonApi::getDeviceMicrowaveAttenuation(deviceCatoryName,CliTable[0].id,HeadList); + break; + //低频信号发生器标准装置 + case 16: + DataList=BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList); + break; + //小功率标准装置 + case 15: + DataList=BaseCommonApi::getDeviceSmallPower(deviceCatoryName,CliTable[0].id,HeadList); + break; } return DataList; @@ -1235,15 +1247,16 @@ Data.append(row[7]); //量程 Data.append(row[8]); //标准值 Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1268,14 +1281,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1299,14 +1313,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1333,14 +1348,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1364,14 +1380,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /* 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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -2460,6 +2477,7 @@ return isSuccess; }; + //计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备 bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure) { @@ -2468,6 +2486,7 @@ " (id,data_id,equipment_id,create_time,update_time) " " VALUES " " (:id,:data_id,:equipment_id,:create_time,:update_time)"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); // QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":id", deviceMeasure.id); @@ -2513,12 +2532,14 @@ //【结果保存】示波器 DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast(entity); //【结果保存】二等铂电阻 - DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); + DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); //【结果保存】频谱分析仪 DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast(entity); //【结果保存】信号发生器 - DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); + DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); if(orderInfo !=nullptr){ + + resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'") .arg("'" + orderInfo->customer_name + "'") .arg("'" + orderInfo->require_over_time + "'") @@ -4079,7 +4100,7 @@ break; } case 10: { - //信号 + //信号发生器 DeviceMeasureDataSignalGenerator *generator = dynamic_cast(object); if (generator != nullptr) { result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator); @@ -4100,6 +4121,27 @@ } break; } + case 11: { + //微波衰减器 InsertDeviceMicrowaveAttenuation + MicrowaveAttenuationCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceMicrowaveAttenuation(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + case 16: { + //低频信号发生器 + LFSignalGeneratoCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceLFSignalGenerator(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + // 可能还有其他的case default: result = false; @@ -6512,7 +6554,468 @@ } return result; } +QMap> BaseCommonApi::getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT bbdmidama.*,bbdmii.attenuation_amount FROM biz_business_device_measure_item_data_microwave_attenuation bbdmidama" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidama.item_id" + " WHERE bbdmidama.item_id = :itemId ORDER BY bbdmidama.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("attenuation_amount").toString()); //检定项目状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("nominal_value_unit").toString()); //标称值单位 7 + result.append(query.value("composition").toString()); //组合方式 + result.append(query.value("urel").toString()); //U(k=2) + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_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= GetDataReturnItemListByMicrowaveAttenuation(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList PadValueList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2]=="1" && row[3] == "1") { + VerificationItem = "衰减量"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"组合方式" + <<"直通测量值"<<"加入衰减测量值"<<"指标下限"<<"衰减量" + <<"指标上限"<<"U(k=2)"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append(row[6]+row[7]);//标称值 + Data.append(row[8]);//组合方式 + Data.append("");//直通测量值 + Data.append("");//加入衰减测量值 + Data.append(QString::number(row[6].toDouble()-row[11].toDouble())+row[7]);//指标下限 + Data.append("");//衰减量 + Data.append(QString::number(row[6].toDouble()+row[11].toDouble())+row[7]);//指标上限 + Data.append("");//U(k=2) + Data.append(row[9]);//结论 + PadValueList.append(Data); + } + } + if(PadValueList.count()!=0){ + DataMapList.insert("衰减量",PadValueList); + }; + return DataMapList; +} +// 【结果保存】 微波衰减器 +bool BaseCommonApi::InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_microwave_attenuation " + " (id,data_id,data_type,frequency,frequency_unit,nominal_value, " + " nominal_value_unit,composition,direct_measure_value,add_measure_value, " + " attenuation_amount,lower_index,upper_index,urel,conclusion,exceed_mark, " + " create_time,update_time)VALUES( " + " :id,:data_id,:data_type,:frequency,:frequency_unit,:nominal_value, " + " :nominal_value_unit,:composition,:direct_measure_value,:add_measure_value, " + " :attenuation_amount,:lower_index,:upper_index,:urel,:conclusion,:exceed_mark," + " :create_time,:update_time " + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":nominal_value_unit", scope.nominal_value_unit); + query.bindValue(":composition", scope.composition); + query.bindValue(":direct_measure_value", scope.direct_measure_value); + query.bindValue(":add_measure_value", scope.add_measure_value); + query.bindValue(":attenuation_amount", scope.attenuation_amount); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +QMap> BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT *,bbdmii.frequency as freq FROM biz_business_device_measure_item_data_low_frequency_signal bbdmidlfs" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlfs.item_id" + " WHERE bbdmidlfs.item_id = :itemId ORDER BY bbdmidlfs.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("freq").toString()); //频率状态 3 + result.append(query.value("harmonic_distortion").toString()); //谐波失真状态 4 + result.append(query.value("rise_time").toString()); //上升时间状态 5 + result.append(query.value("ac_voltage").toString()); //交流电压状态 6 + result.append(query.value("dc_voltage").toString()); //直流电流状态 7 + result.append(query.value("sinusoid_flatness").toString()); //正弦信号平坦度状态 8 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("unit").toString()); //标称值单位 12 + result.append(query.value("amplitude").toString()); //幅度 + result.append(query.value("amplitude_unit").toString()); //幅度单位 + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_unit").toString()); //技术指标单位 17 + result.append(query.value("ac_frequency").toString()); //交流频率 + result.append(query.value("ac_frequency_unit").toString()); //交流频率单位 + result.append(query.value("valid_digit").toString()); //有效位数 + result.append(query.value("datum_point").toString()); //是否为基准点(1/0) 21 + result.append(query.value("voltage").toString()); //电压 + result.append(query.value("voltage_unit").toString()); //电压单位 + result.append(query.value("value_one").toString()); //数值1(不带%,计算技术指标使用) + result.append(query.value("value_two").toString()); //数值2(计算技术指标使用) 25 + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList freqList; + QList ac_voltageList; + QList dc_voltageList; + QList rise_timeList; + QList sinusoid_flatnessList; + QList harmonic_distortionList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "频率"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论"<<"有效位数"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + Data.append(row[20]);//有效位数 + freqList.append(Data); + }else if(!row.isEmpty() && row[6]=="1" && row[2] == "2") { + VerificationItem = "交流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"交流频率"<<"指标下限" + <<"测量值"<<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(row[18]+row[19]);//交流频率 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + ac_voltageList.append(Data); + }else if(!row.isEmpty() && row[7]=="1" && row[2] == "3") { + VerificationItem = "直流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-row[16].toDouble())+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+row[16].toDouble())+row[12]);//指标上限 + Data.append("");//结论 + dc_voltageList.append(Data); + }else if(!row.isEmpty() && row[5]=="1" && row[2] == "4") { + VerificationItem = "上升时间"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"上升时间" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率 + Data.append(row[13]+row[14]);//幅度 + Data.append("");//上升时间 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + rise_timeList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "正弦信号平坦度"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"电压"<<"频率点"<<"测量值" + <<"平坦度"<<"技术指标"<<"结论"<<"基准点" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[22]+row[23]);//电压 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append("");//平坦度 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + Data.append(row[21]);//基准点 + sinusoid_flatnessList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "总谐波失真"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"测量值" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + harmonic_distortionList.append(Data); + } + } + if(freqList.count()!=0){ + DataMapList.insert("频率",freqList); + }; + if(ac_voltageList.count()!=0){ + DataMapList.insert("交流电压",ac_voltageList); + }; + if(dc_voltageList.count()!=0){ + DataMapList.insert("直流电压",dc_voltageList); + }; + if(rise_timeList.count()!=0){ + DataMapList.insert("上升时间",rise_timeList); + }; + if(sinusoid_flatnessList.count()!=0){ + DataMapList.insert("正弦信号平坦度",sinusoid_flatnessList); + }; + if(harmonic_distortionList.count()!=0){ + DataMapList.insert("总谐波失真",harmonic_distortionList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_frequency_signal(id,data_id,data_type," + " nominal_value,unit,upper_index,lower_index,measure_value,measure_value_unit,conclusion," + " convert_deviation,frequency,frequency_unit,voltage,voltage_unit,rise_time,datum_point," + " ac_frequency,ac_frequency_unit,amplitude,amplitude_unit,flatness,technical_index_symbol," + " technical_index,technical_index_unit,exceed_mark,create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :nominal_value,:unit,:upper_index,:lower_index,:measure_value,:measure_value_unit,:conclusion," + " :convert_deviation,:frequency,:frequency_unit,:voltage,:voltage_unit,:rise_time,:datum_point," + " :ac_frequency,:ac_frequency_unit,:amplitude,:amplitude_unit,:flatness,:technical_index_symbol," + " :technical_index,:technical_index_unit,:exceed_mark,:create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":unit", scope.unit); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":measure_value", scope.measure_value); + query.bindValue(":measure_value_unit", scope.measure_value_unit); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":convert_deviation", scope.convert_deviation); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":voltage", scope.voltage); + query.bindValue(":voltage_unit", scope.voltage_unit); + query.bindValue(":rise_time", scope.rise_time); + query.bindValue(":datum_point", scope.datum_point); + query.bindValue(":ac_frequency", scope.ac_frequency); + query.bindValue(":ac_frequency_unit", scope.ac_frequency_unit); + query.bindValue(":amplitude", scope.amplitude); + query.bindValue(":amplitude_unit", scope.amplitude_unit); + query.bindValue(":flatness", scope.flatness); + query.bindValue(":technical_index_symbol", scope.technical_index_symbol); + query.bindValue(":technical_index", scope.technical_index); + query.bindValue(":technical_index_unit", scope.technical_index_unit); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +//检定项-小功率装置 +QMap> BaseCommonApi::getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT bbdmidlp.*,bbdmii.calibration_factor FROM biz_business_device_measure_item_data_low_power bbdmidlp" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlp.item_id" + " WHERE bbdmidlp.item_id = :itemId ORDER BY bbdmidlp.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("calibration_factor").toString()); //启动状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 5 + result.append(query.value("kc").toString()); //Kc/% + result.append(query.value("standard_reflection_coefficient").toString()); //标准反射系数ГGe + result.append(query.value("device_reflection_coefficient").toString()); //被检设备反射系数Гu 8 + result.append(query.value("urel").toString()); //U(k=2) + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList calibrationFactorList; + + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "校准因子"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"Pcu/mW"<<"Kc/%" + <<"被测探头示数Pbu/mW"<<"标准反射系数ГGe"<<"被检设备反射系数Гu" + <<"被测探头校准因子Kb/%"<<"U(k=2)"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append("");//幅度 + Data.append(row[6]);//Kc/% + Data.append("");//被测探头示数Pbu/mW + Data.append(row[7]);//标准反射系数ГGe + Data.append(row[8]);//被检设备反射系数Гu + Data.append("");//被测探头校准因子Kb/% + Data.append(row[9]);//U(k=2) + calibrationFactorList.append(Data); + } + } + if(calibrationFactorList.count()!=0){ + DataMapList.insert("校准因子",calibrationFactorList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceSmallPower(SmallPowerCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_power(id,data_id,data_type," + " frequency,frequency_unit,pcu,kc,probe_pbu,standard_reflection_coefficient," + " device_reflection_coefficient,probe_calibration_factor,urel,exceed_mark," + " create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :frequency,:frequency_unit,:pcu,:kc,:probe_pbu,:standard_reflection_coefficient," + " :device_reflection_coefficient,:probe_calibration_factor,:urel,:exceed_mark," + " :create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":pcu", scope.pcu); + query.bindValue(":kc", scope.kc); + query.bindValue(":probe_pbu", scope.probe_pbu); + query.bindValue(":standard_reflection_coefficient", scope.standard_reflection_coefficient); + query.bindValue(":device_reflection_coefficient", scope.device_reflection_coefficient); + query.bindValue(":probe_calibration_factor", scope.probe_calibration_factor); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } //核查程序管理-核查设置-多功能校准源 参数设备id 同信息管理-标准设备管理-核查项及核查点 QMap>> BaseCommonApi::getStandardCheckItemDataCalibrator(QString equipment_id,QMap> *headList) diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index c3314ce..f4dffc8 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1089,6 +1089,83 @@ QString create_time; QString update_time; }; +//结果保存-微波衰减器-查询 +class MicrowaveAttenuationCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString nominal_value_unit; + QString composition; + QString direct_measure_value; + QString add_measure_value; + QString attenuation_amount; + QString lower_index; + QString upper_index; + QString urel; + QString conclusion; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-小功率-查询 +class SmallPowerCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString pcu; + QString kc; + QString probe_pbu; + QString standard_reflection_coefficient; + QString device_reflection_coefficient; + QString probe_calibration_factor; + QString urel; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-低频信号-查询 +class LFSignalGeneratoCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString unit; + QString lower_index; + QString upper_index; + QString urel; + QString measure_value; + QString measure_value_unit; + QString conclusion; + QString convert_deviation; + QString voltage; + QString voltage_unit; + QString rise_time; + QString datum_point; + QString ac_frequency; + QString ac_frequency_unit; + QString amplitude; + QString amplitude_unit; + QString flatness; + QString technical_index_symbol; + QString technical_index; + QString technical_index_unit; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; //结果保存-示波器装置-查询 class DeviceOscilloscopeCalibration:public BaseClass { @@ -1720,6 +1797,20 @@ static QList getStandardInfo(); //根据标准装置id查询标准设备 static QList getStandardInfoListByStandardId(QString standardId); + + //【查询】检定项-微波衰减器 + static QMap> getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope); + //【查询】检定项-低频信号装置 + static QMap> getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope); + //【查询】检定项-小功率装置 + static QMap> getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceSmallPower(SmallPowerCalibration scope); + //【保存】核查基本信息 static bool InsertStandardCheckInfo(StandardCheckInfo info); //【查询】核查项-多功能校准源 @@ -1731,10 +1822,6 @@ static QMap>> getStandardCheckItemDataResistanceThermometer(QString equipment_id,QMap> *headList); static QMap>> GetDataReturnItemListByCheckItemDataResistanceThermometer(QList ResultData,QMap>> DataMapList,QMap> *headList); - - - - //同步成功后更新检定项字段 static bool UpdateMeasureItemInfo(QString item_id); //配套设备关联表 diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 2bf97e3..6593d87 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1014,6 +1014,18 @@ //示波器标准装置 DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); break; + //微波衰减标准装置 + case 11: + DataList=BaseCommonApi::getDeviceMicrowaveAttenuation(deviceCatoryName,CliTable[0].id,HeadList); + break; + //低频信号发生器标准装置 + case 16: + DataList=BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList); + break; + //小功率标准装置 + case 15: + DataList=BaseCommonApi::getDeviceSmallPower(deviceCatoryName,CliTable[0].id,HeadList); + break; } return DataList; @@ -1235,15 +1247,16 @@ Data.append(row[7]); //量程 Data.append(row[8]); //标准值 Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1268,14 +1281,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1299,14 +1313,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1333,14 +1348,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1364,14 +1380,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /* 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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -2460,6 +2477,7 @@ return isSuccess; }; + //计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备 bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure) { @@ -2468,6 +2486,7 @@ " (id,data_id,equipment_id,create_time,update_time) " " VALUES " " (:id,:data_id,:equipment_id,:create_time,:update_time)"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); // QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":id", deviceMeasure.id); @@ -2513,12 +2532,14 @@ //【结果保存】示波器 DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast(entity); //【结果保存】二等铂电阻 - DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); + DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); //【结果保存】频谱分析仪 DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast(entity); //【结果保存】信号发生器 - DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); + DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); if(orderInfo !=nullptr){ + + resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'") .arg("'" + orderInfo->customer_name + "'") .arg("'" + orderInfo->require_over_time + "'") @@ -4079,7 +4100,7 @@ break; } case 10: { - //信号 + //信号发生器 DeviceMeasureDataSignalGenerator *generator = dynamic_cast(object); if (generator != nullptr) { result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator); @@ -4100,6 +4121,27 @@ } break; } + case 11: { + //微波衰减器 InsertDeviceMicrowaveAttenuation + MicrowaveAttenuationCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceMicrowaveAttenuation(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + case 16: { + //低频信号发生器 + LFSignalGeneratoCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceLFSignalGenerator(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + // 可能还有其他的case default: result = false; @@ -6512,7 +6554,468 @@ } return result; } +QMap> BaseCommonApi::getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT bbdmidama.*,bbdmii.attenuation_amount FROM biz_business_device_measure_item_data_microwave_attenuation bbdmidama" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidama.item_id" + " WHERE bbdmidama.item_id = :itemId ORDER BY bbdmidama.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("attenuation_amount").toString()); //检定项目状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("nominal_value_unit").toString()); //标称值单位 7 + result.append(query.value("composition").toString()); //组合方式 + result.append(query.value("urel").toString()); //U(k=2) + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_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= GetDataReturnItemListByMicrowaveAttenuation(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList PadValueList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2]=="1" && row[3] == "1") { + VerificationItem = "衰减量"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"组合方式" + <<"直通测量值"<<"加入衰减测量值"<<"指标下限"<<"衰减量" + <<"指标上限"<<"U(k=2)"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append(row[6]+row[7]);//标称值 + Data.append(row[8]);//组合方式 + Data.append("");//直通测量值 + Data.append("");//加入衰减测量值 + Data.append(QString::number(row[6].toDouble()-row[11].toDouble())+row[7]);//指标下限 + Data.append("");//衰减量 + Data.append(QString::number(row[6].toDouble()+row[11].toDouble())+row[7]);//指标上限 + Data.append("");//U(k=2) + Data.append(row[9]);//结论 + PadValueList.append(Data); + } + } + if(PadValueList.count()!=0){ + DataMapList.insert("衰减量",PadValueList); + }; + return DataMapList; +} +// 【结果保存】 微波衰减器 +bool BaseCommonApi::InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_microwave_attenuation " + " (id,data_id,data_type,frequency,frequency_unit,nominal_value, " + " nominal_value_unit,composition,direct_measure_value,add_measure_value, " + " attenuation_amount,lower_index,upper_index,urel,conclusion,exceed_mark, " + " create_time,update_time)VALUES( " + " :id,:data_id,:data_type,:frequency,:frequency_unit,:nominal_value, " + " :nominal_value_unit,:composition,:direct_measure_value,:add_measure_value, " + " :attenuation_amount,:lower_index,:upper_index,:urel,:conclusion,:exceed_mark," + " :create_time,:update_time " + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":nominal_value_unit", scope.nominal_value_unit); + query.bindValue(":composition", scope.composition); + query.bindValue(":direct_measure_value", scope.direct_measure_value); + query.bindValue(":add_measure_value", scope.add_measure_value); + query.bindValue(":attenuation_amount", scope.attenuation_amount); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +QMap> BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT *,bbdmii.frequency as freq FROM biz_business_device_measure_item_data_low_frequency_signal bbdmidlfs" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlfs.item_id" + " WHERE bbdmidlfs.item_id = :itemId ORDER BY bbdmidlfs.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("freq").toString()); //频率状态 3 + result.append(query.value("harmonic_distortion").toString()); //谐波失真状态 4 + result.append(query.value("rise_time").toString()); //上升时间状态 5 + result.append(query.value("ac_voltage").toString()); //交流电压状态 6 + result.append(query.value("dc_voltage").toString()); //直流电流状态 7 + result.append(query.value("sinusoid_flatness").toString()); //正弦信号平坦度状态 8 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("unit").toString()); //标称值单位 12 + result.append(query.value("amplitude").toString()); //幅度 + result.append(query.value("amplitude_unit").toString()); //幅度单位 + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_unit").toString()); //技术指标单位 17 + result.append(query.value("ac_frequency").toString()); //交流频率 + result.append(query.value("ac_frequency_unit").toString()); //交流频率单位 + result.append(query.value("valid_digit").toString()); //有效位数 + result.append(query.value("datum_point").toString()); //是否为基准点(1/0) 21 + result.append(query.value("voltage").toString()); //电压 + result.append(query.value("voltage_unit").toString()); //电压单位 + result.append(query.value("value_one").toString()); //数值1(不带%,计算技术指标使用) + result.append(query.value("value_two").toString()); //数值2(计算技术指标使用) 25 + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList freqList; + QList ac_voltageList; + QList dc_voltageList; + QList rise_timeList; + QList sinusoid_flatnessList; + QList harmonic_distortionList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "频率"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论"<<"有效位数"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + Data.append(row[20]);//有效位数 + freqList.append(Data); + }else if(!row.isEmpty() && row[6]=="1" && row[2] == "2") { + VerificationItem = "交流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"交流频率"<<"指标下限" + <<"测量值"<<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(row[18]+row[19]);//交流频率 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + ac_voltageList.append(Data); + }else if(!row.isEmpty() && row[7]=="1" && row[2] == "3") { + VerificationItem = "直流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-row[16].toDouble())+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+row[16].toDouble())+row[12]);//指标上限 + Data.append("");//结论 + dc_voltageList.append(Data); + }else if(!row.isEmpty() && row[5]=="1" && row[2] == "4") { + VerificationItem = "上升时间"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"上升时间" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率 + Data.append(row[13]+row[14]);//幅度 + Data.append("");//上升时间 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + rise_timeList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "正弦信号平坦度"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"电压"<<"频率点"<<"测量值" + <<"平坦度"<<"技术指标"<<"结论"<<"基准点" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[22]+row[23]);//电压 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append("");//平坦度 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + Data.append(row[21]);//基准点 + sinusoid_flatnessList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "总谐波失真"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"测量值" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + harmonic_distortionList.append(Data); + } + } + if(freqList.count()!=0){ + DataMapList.insert("频率",freqList); + }; + if(ac_voltageList.count()!=0){ + DataMapList.insert("交流电压",ac_voltageList); + }; + if(dc_voltageList.count()!=0){ + DataMapList.insert("直流电压",dc_voltageList); + }; + if(rise_timeList.count()!=0){ + DataMapList.insert("上升时间",rise_timeList); + }; + if(sinusoid_flatnessList.count()!=0){ + DataMapList.insert("正弦信号平坦度",sinusoid_flatnessList); + }; + if(harmonic_distortionList.count()!=0){ + DataMapList.insert("总谐波失真",harmonic_distortionList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_frequency_signal(id,data_id,data_type," + " nominal_value,unit,upper_index,lower_index,measure_value,measure_value_unit,conclusion," + " convert_deviation,frequency,frequency_unit,voltage,voltage_unit,rise_time,datum_point," + " ac_frequency,ac_frequency_unit,amplitude,amplitude_unit,flatness,technical_index_symbol," + " technical_index,technical_index_unit,exceed_mark,create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :nominal_value,:unit,:upper_index,:lower_index,:measure_value,:measure_value_unit,:conclusion," + " :convert_deviation,:frequency,:frequency_unit,:voltage,:voltage_unit,:rise_time,:datum_point," + " :ac_frequency,:ac_frequency_unit,:amplitude,:amplitude_unit,:flatness,:technical_index_symbol," + " :technical_index,:technical_index_unit,:exceed_mark,:create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":unit", scope.unit); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":measure_value", scope.measure_value); + query.bindValue(":measure_value_unit", scope.measure_value_unit); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":convert_deviation", scope.convert_deviation); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":voltage", scope.voltage); + query.bindValue(":voltage_unit", scope.voltage_unit); + query.bindValue(":rise_time", scope.rise_time); + query.bindValue(":datum_point", scope.datum_point); + query.bindValue(":ac_frequency", scope.ac_frequency); + query.bindValue(":ac_frequency_unit", scope.ac_frequency_unit); + query.bindValue(":amplitude", scope.amplitude); + query.bindValue(":amplitude_unit", scope.amplitude_unit); + query.bindValue(":flatness", scope.flatness); + query.bindValue(":technical_index_symbol", scope.technical_index_symbol); + query.bindValue(":technical_index", scope.technical_index); + query.bindValue(":technical_index_unit", scope.technical_index_unit); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +//检定项-小功率装置 +QMap> BaseCommonApi::getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT bbdmidlp.*,bbdmii.calibration_factor FROM biz_business_device_measure_item_data_low_power bbdmidlp" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlp.item_id" + " WHERE bbdmidlp.item_id = :itemId ORDER BY bbdmidlp.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("calibration_factor").toString()); //启动状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 5 + result.append(query.value("kc").toString()); //Kc/% + result.append(query.value("standard_reflection_coefficient").toString()); //标准反射系数ГGe + result.append(query.value("device_reflection_coefficient").toString()); //被检设备反射系数Гu 8 + result.append(query.value("urel").toString()); //U(k=2) + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList calibrationFactorList; + + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "校准因子"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"Pcu/mW"<<"Kc/%" + <<"被测探头示数Pbu/mW"<<"标准反射系数ГGe"<<"被检设备反射系数Гu" + <<"被测探头校准因子Kb/%"<<"U(k=2)"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append("");//幅度 + Data.append(row[6]);//Kc/% + Data.append("");//被测探头示数Pbu/mW + Data.append(row[7]);//标准反射系数ГGe + Data.append(row[8]);//被检设备反射系数Гu + Data.append("");//被测探头校准因子Kb/% + Data.append(row[9]);//U(k=2) + calibrationFactorList.append(Data); + } + } + if(calibrationFactorList.count()!=0){ + DataMapList.insert("校准因子",calibrationFactorList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceSmallPower(SmallPowerCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_power(id,data_id,data_type," + " frequency,frequency_unit,pcu,kc,probe_pbu,standard_reflection_coefficient," + " device_reflection_coefficient,probe_calibration_factor,urel,exceed_mark," + " create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :frequency,:frequency_unit,:pcu,:kc,:probe_pbu,:standard_reflection_coefficient," + " :device_reflection_coefficient,:probe_calibration_factor,:urel,:exceed_mark," + " :create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":pcu", scope.pcu); + query.bindValue(":kc", scope.kc); + query.bindValue(":probe_pbu", scope.probe_pbu); + query.bindValue(":standard_reflection_coefficient", scope.standard_reflection_coefficient); + query.bindValue(":device_reflection_coefficient", scope.device_reflection_coefficient); + query.bindValue(":probe_calibration_factor", scope.probe_calibration_factor); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } //核查程序管理-核查设置-多功能校准源 参数设备id 同信息管理-标准设备管理-核查项及核查点 QMap>> BaseCommonApi::getStandardCheckItemDataCalibrator(QString equipment_id,QMap> *headList) diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index c3314ce..f4dffc8 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1089,6 +1089,83 @@ QString create_time; QString update_time; }; +//结果保存-微波衰减器-查询 +class MicrowaveAttenuationCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString nominal_value_unit; + QString composition; + QString direct_measure_value; + QString add_measure_value; + QString attenuation_amount; + QString lower_index; + QString upper_index; + QString urel; + QString conclusion; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-小功率-查询 +class SmallPowerCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString pcu; + QString kc; + QString probe_pbu; + QString standard_reflection_coefficient; + QString device_reflection_coefficient; + QString probe_calibration_factor; + QString urel; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-低频信号-查询 +class LFSignalGeneratoCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString unit; + QString lower_index; + QString upper_index; + QString urel; + QString measure_value; + QString measure_value_unit; + QString conclusion; + QString convert_deviation; + QString voltage; + QString voltage_unit; + QString rise_time; + QString datum_point; + QString ac_frequency; + QString ac_frequency_unit; + QString amplitude; + QString amplitude_unit; + QString flatness; + QString technical_index_symbol; + QString technical_index; + QString technical_index_unit; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; //结果保存-示波器装置-查询 class DeviceOscilloscopeCalibration:public BaseClass { @@ -1720,6 +1797,20 @@ static QList getStandardInfo(); //根据标准装置id查询标准设备 static QList getStandardInfoListByStandardId(QString standardId); + + //【查询】检定项-微波衰减器 + static QMap> getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope); + //【查询】检定项-低频信号装置 + static QMap> getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope); + //【查询】检定项-小功率装置 + static QMap> getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceSmallPower(SmallPowerCalibration scope); + //【保存】核查基本信息 static bool InsertStandardCheckInfo(StandardCheckInfo info); //【查询】核查项-多功能校准源 @@ -1731,10 +1822,6 @@ static QMap>> getStandardCheckItemDataResistanceThermometer(QString equipment_id,QMap> *headList); static QMap>> GetDataReturnItemListByCheckItemDataResistanceThermometer(QList ResultData,QMap>> DataMapList,QMap> *headList); - - - - //同步成功后更新检定项字段 static bool UpdateMeasureItemInfo(QString item_id); //配套设备关联表 diff --git a/softwareDirectory/AutoVerScheme/checkdevice.cpp b/softwareDirectory/AutoVerScheme/checkdevice.cpp index ca8c64c..5283198 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.cpp +++ b/softwareDirectory/AutoVerScheme/checkdevice.cpp @@ -18,6 +18,7 @@ ui->tableWidget_4->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); //getCheckDevice(); getStandardDevice(); + } CheckDevice::~CheckDevice() @@ -67,6 +68,7 @@ void CheckDevice::getStandardDevice() { bizDeviceList.clear(); + CheckState.clear(); bizDeviceList = BaseCommonApi::getBizDeviceManage(); QString sFilterName = ui->lineEdit_10->text(); QString sFilterModel = ui->lineEdit_11->text(); @@ -85,6 +87,7 @@ if(!bAdd){ bizDeviceList.removeAt(i); } + CheckState.insert(i,false); } page=20; pageIndex=-1; @@ -113,14 +116,25 @@ ui->tableWidget_4->insertRow(rowCount); //QCheckBox *checkBox = new QCheckBox; //ui->tableWidget_4->setCellWidget(row, 0, checkBox); + //checkBox->setChecked(CheckState.value(i)); QTableWidgetItem* p_check = new QTableWidgetItem(); p_check->setCheckState(Qt::Unchecked); ui->tableWidget_4->setItem(row,0,p_check); + //connect(checkBox, &QCheckBox::stateChanged, this, [this,i,checkBox]() { + // 获取当前行第一列的 ID + + // OnitemChanged(i,checkBox->checkState()); + + + //}); + ui->tableWidget_4->setItem(row, 1, new QTableWidgetItem(bizDevice.equipment_name)); ui->tableWidget_4->setItem(row, 2, new QTableWidgetItem(bizDevice.model)); ui->tableWidget_4->setItem(row, 3, new QTableWidgetItem(bizDevice.manufacture_no)); ui->tableWidget_4->setItem(row, 4, new QTableWidgetItem(bizDevice.manufacturer)); row++; + + } } @@ -181,3 +195,12 @@ ui->lineEdit_12->setText(""); getStandardDevice(); } +void CheckDevice::OnitemChanged(int index,Qt::CheckState CurrState) +{ + if(CurrState==Qt::Unchecked){ + CheckState[index] = false; + }else{ + CheckState[index] = true; + } + +} diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 2bf97e3..6593d87 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1014,6 +1014,18 @@ //示波器标准装置 DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); break; + //微波衰减标准装置 + case 11: + DataList=BaseCommonApi::getDeviceMicrowaveAttenuation(deviceCatoryName,CliTable[0].id,HeadList); + break; + //低频信号发生器标准装置 + case 16: + DataList=BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList); + break; + //小功率标准装置 + case 15: + DataList=BaseCommonApi::getDeviceSmallPower(deviceCatoryName,CliTable[0].id,HeadList); + break; } return DataList; @@ -1235,15 +1247,16 @@ Data.append(row[7]); //量程 Data.append(row[8]); //标准值 Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1268,14 +1281,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1299,14 +1313,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1333,14 +1348,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1364,14 +1380,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /* 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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -2460,6 +2477,7 @@ return isSuccess; }; + //计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备 bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure) { @@ -2468,6 +2486,7 @@ " (id,data_id,equipment_id,create_time,update_time) " " VALUES " " (:id,:data_id,:equipment_id,:create_time,:update_time)"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); // QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":id", deviceMeasure.id); @@ -2513,12 +2532,14 @@ //【结果保存】示波器 DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast(entity); //【结果保存】二等铂电阻 - DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); + DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); //【结果保存】频谱分析仪 DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast(entity); //【结果保存】信号发生器 - DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); + DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); if(orderInfo !=nullptr){ + + resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'") .arg("'" + orderInfo->customer_name + "'") .arg("'" + orderInfo->require_over_time + "'") @@ -4079,7 +4100,7 @@ break; } case 10: { - //信号 + //信号发生器 DeviceMeasureDataSignalGenerator *generator = dynamic_cast(object); if (generator != nullptr) { result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator); @@ -4100,6 +4121,27 @@ } break; } + case 11: { + //微波衰减器 InsertDeviceMicrowaveAttenuation + MicrowaveAttenuationCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceMicrowaveAttenuation(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + case 16: { + //低频信号发生器 + LFSignalGeneratoCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceLFSignalGenerator(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + // 可能还有其他的case default: result = false; @@ -6512,7 +6554,468 @@ } return result; } +QMap> BaseCommonApi::getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT bbdmidama.*,bbdmii.attenuation_amount FROM biz_business_device_measure_item_data_microwave_attenuation bbdmidama" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidama.item_id" + " WHERE bbdmidama.item_id = :itemId ORDER BY bbdmidama.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("attenuation_amount").toString()); //检定项目状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("nominal_value_unit").toString()); //标称值单位 7 + result.append(query.value("composition").toString()); //组合方式 + result.append(query.value("urel").toString()); //U(k=2) + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_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= GetDataReturnItemListByMicrowaveAttenuation(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList PadValueList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2]=="1" && row[3] == "1") { + VerificationItem = "衰减量"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"组合方式" + <<"直通测量值"<<"加入衰减测量值"<<"指标下限"<<"衰减量" + <<"指标上限"<<"U(k=2)"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append(row[6]+row[7]);//标称值 + Data.append(row[8]);//组合方式 + Data.append("");//直通测量值 + Data.append("");//加入衰减测量值 + Data.append(QString::number(row[6].toDouble()-row[11].toDouble())+row[7]);//指标下限 + Data.append("");//衰减量 + Data.append(QString::number(row[6].toDouble()+row[11].toDouble())+row[7]);//指标上限 + Data.append("");//U(k=2) + Data.append(row[9]);//结论 + PadValueList.append(Data); + } + } + if(PadValueList.count()!=0){ + DataMapList.insert("衰减量",PadValueList); + }; + return DataMapList; +} +// 【结果保存】 微波衰减器 +bool BaseCommonApi::InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_microwave_attenuation " + " (id,data_id,data_type,frequency,frequency_unit,nominal_value, " + " nominal_value_unit,composition,direct_measure_value,add_measure_value, " + " attenuation_amount,lower_index,upper_index,urel,conclusion,exceed_mark, " + " create_time,update_time)VALUES( " + " :id,:data_id,:data_type,:frequency,:frequency_unit,:nominal_value, " + " :nominal_value_unit,:composition,:direct_measure_value,:add_measure_value, " + " :attenuation_amount,:lower_index,:upper_index,:urel,:conclusion,:exceed_mark," + " :create_time,:update_time " + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":nominal_value_unit", scope.nominal_value_unit); + query.bindValue(":composition", scope.composition); + query.bindValue(":direct_measure_value", scope.direct_measure_value); + query.bindValue(":add_measure_value", scope.add_measure_value); + query.bindValue(":attenuation_amount", scope.attenuation_amount); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +QMap> BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT *,bbdmii.frequency as freq FROM biz_business_device_measure_item_data_low_frequency_signal bbdmidlfs" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlfs.item_id" + " WHERE bbdmidlfs.item_id = :itemId ORDER BY bbdmidlfs.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("freq").toString()); //频率状态 3 + result.append(query.value("harmonic_distortion").toString()); //谐波失真状态 4 + result.append(query.value("rise_time").toString()); //上升时间状态 5 + result.append(query.value("ac_voltage").toString()); //交流电压状态 6 + result.append(query.value("dc_voltage").toString()); //直流电流状态 7 + result.append(query.value("sinusoid_flatness").toString()); //正弦信号平坦度状态 8 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("unit").toString()); //标称值单位 12 + result.append(query.value("amplitude").toString()); //幅度 + result.append(query.value("amplitude_unit").toString()); //幅度单位 + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_unit").toString()); //技术指标单位 17 + result.append(query.value("ac_frequency").toString()); //交流频率 + result.append(query.value("ac_frequency_unit").toString()); //交流频率单位 + result.append(query.value("valid_digit").toString()); //有效位数 + result.append(query.value("datum_point").toString()); //是否为基准点(1/0) 21 + result.append(query.value("voltage").toString()); //电压 + result.append(query.value("voltage_unit").toString()); //电压单位 + result.append(query.value("value_one").toString()); //数值1(不带%,计算技术指标使用) + result.append(query.value("value_two").toString()); //数值2(计算技术指标使用) 25 + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList freqList; + QList ac_voltageList; + QList dc_voltageList; + QList rise_timeList; + QList sinusoid_flatnessList; + QList harmonic_distortionList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "频率"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论"<<"有效位数"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + Data.append(row[20]);//有效位数 + freqList.append(Data); + }else if(!row.isEmpty() && row[6]=="1" && row[2] == "2") { + VerificationItem = "交流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"交流频率"<<"指标下限" + <<"测量值"<<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(row[18]+row[19]);//交流频率 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + ac_voltageList.append(Data); + }else if(!row.isEmpty() && row[7]=="1" && row[2] == "3") { + VerificationItem = "直流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-row[16].toDouble())+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+row[16].toDouble())+row[12]);//指标上限 + Data.append("");//结论 + dc_voltageList.append(Data); + }else if(!row.isEmpty() && row[5]=="1" && row[2] == "4") { + VerificationItem = "上升时间"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"上升时间" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率 + Data.append(row[13]+row[14]);//幅度 + Data.append("");//上升时间 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + rise_timeList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "正弦信号平坦度"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"电压"<<"频率点"<<"测量值" + <<"平坦度"<<"技术指标"<<"结论"<<"基准点" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[22]+row[23]);//电压 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append("");//平坦度 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + Data.append(row[21]);//基准点 + sinusoid_flatnessList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "总谐波失真"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"测量值" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + harmonic_distortionList.append(Data); + } + } + if(freqList.count()!=0){ + DataMapList.insert("频率",freqList); + }; + if(ac_voltageList.count()!=0){ + DataMapList.insert("交流电压",ac_voltageList); + }; + if(dc_voltageList.count()!=0){ + DataMapList.insert("直流电压",dc_voltageList); + }; + if(rise_timeList.count()!=0){ + DataMapList.insert("上升时间",rise_timeList); + }; + if(sinusoid_flatnessList.count()!=0){ + DataMapList.insert("正弦信号平坦度",sinusoid_flatnessList); + }; + if(harmonic_distortionList.count()!=0){ + DataMapList.insert("总谐波失真",harmonic_distortionList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_frequency_signal(id,data_id,data_type," + " nominal_value,unit,upper_index,lower_index,measure_value,measure_value_unit,conclusion," + " convert_deviation,frequency,frequency_unit,voltage,voltage_unit,rise_time,datum_point," + " ac_frequency,ac_frequency_unit,amplitude,amplitude_unit,flatness,technical_index_symbol," + " technical_index,technical_index_unit,exceed_mark,create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :nominal_value,:unit,:upper_index,:lower_index,:measure_value,:measure_value_unit,:conclusion," + " :convert_deviation,:frequency,:frequency_unit,:voltage,:voltage_unit,:rise_time,:datum_point," + " :ac_frequency,:ac_frequency_unit,:amplitude,:amplitude_unit,:flatness,:technical_index_symbol," + " :technical_index,:technical_index_unit,:exceed_mark,:create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":unit", scope.unit); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":measure_value", scope.measure_value); + query.bindValue(":measure_value_unit", scope.measure_value_unit); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":convert_deviation", scope.convert_deviation); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":voltage", scope.voltage); + query.bindValue(":voltage_unit", scope.voltage_unit); + query.bindValue(":rise_time", scope.rise_time); + query.bindValue(":datum_point", scope.datum_point); + query.bindValue(":ac_frequency", scope.ac_frequency); + query.bindValue(":ac_frequency_unit", scope.ac_frequency_unit); + query.bindValue(":amplitude", scope.amplitude); + query.bindValue(":amplitude_unit", scope.amplitude_unit); + query.bindValue(":flatness", scope.flatness); + query.bindValue(":technical_index_symbol", scope.technical_index_symbol); + query.bindValue(":technical_index", scope.technical_index); + query.bindValue(":technical_index_unit", scope.technical_index_unit); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +//检定项-小功率装置 +QMap> BaseCommonApi::getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT bbdmidlp.*,bbdmii.calibration_factor FROM biz_business_device_measure_item_data_low_power bbdmidlp" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlp.item_id" + " WHERE bbdmidlp.item_id = :itemId ORDER BY bbdmidlp.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("calibration_factor").toString()); //启动状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 5 + result.append(query.value("kc").toString()); //Kc/% + result.append(query.value("standard_reflection_coefficient").toString()); //标准反射系数ГGe + result.append(query.value("device_reflection_coefficient").toString()); //被检设备反射系数Гu 8 + result.append(query.value("urel").toString()); //U(k=2) + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList calibrationFactorList; + + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "校准因子"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"Pcu/mW"<<"Kc/%" + <<"被测探头示数Pbu/mW"<<"标准反射系数ГGe"<<"被检设备反射系数Гu" + <<"被测探头校准因子Kb/%"<<"U(k=2)"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append("");//幅度 + Data.append(row[6]);//Kc/% + Data.append("");//被测探头示数Pbu/mW + Data.append(row[7]);//标准反射系数ГGe + Data.append(row[8]);//被检设备反射系数Гu + Data.append("");//被测探头校准因子Kb/% + Data.append(row[9]);//U(k=2) + calibrationFactorList.append(Data); + } + } + if(calibrationFactorList.count()!=0){ + DataMapList.insert("校准因子",calibrationFactorList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceSmallPower(SmallPowerCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_power(id,data_id,data_type," + " frequency,frequency_unit,pcu,kc,probe_pbu,standard_reflection_coefficient," + " device_reflection_coefficient,probe_calibration_factor,urel,exceed_mark," + " create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :frequency,:frequency_unit,:pcu,:kc,:probe_pbu,:standard_reflection_coefficient," + " :device_reflection_coefficient,:probe_calibration_factor,:urel,:exceed_mark," + " :create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":pcu", scope.pcu); + query.bindValue(":kc", scope.kc); + query.bindValue(":probe_pbu", scope.probe_pbu); + query.bindValue(":standard_reflection_coefficient", scope.standard_reflection_coefficient); + query.bindValue(":device_reflection_coefficient", scope.device_reflection_coefficient); + query.bindValue(":probe_calibration_factor", scope.probe_calibration_factor); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } //核查程序管理-核查设置-多功能校准源 参数设备id 同信息管理-标准设备管理-核查项及核查点 QMap>> BaseCommonApi::getStandardCheckItemDataCalibrator(QString equipment_id,QMap> *headList) diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index c3314ce..f4dffc8 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1089,6 +1089,83 @@ QString create_time; QString update_time; }; +//结果保存-微波衰减器-查询 +class MicrowaveAttenuationCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString nominal_value_unit; + QString composition; + QString direct_measure_value; + QString add_measure_value; + QString attenuation_amount; + QString lower_index; + QString upper_index; + QString urel; + QString conclusion; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-小功率-查询 +class SmallPowerCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString pcu; + QString kc; + QString probe_pbu; + QString standard_reflection_coefficient; + QString device_reflection_coefficient; + QString probe_calibration_factor; + QString urel; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-低频信号-查询 +class LFSignalGeneratoCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString unit; + QString lower_index; + QString upper_index; + QString urel; + QString measure_value; + QString measure_value_unit; + QString conclusion; + QString convert_deviation; + QString voltage; + QString voltage_unit; + QString rise_time; + QString datum_point; + QString ac_frequency; + QString ac_frequency_unit; + QString amplitude; + QString amplitude_unit; + QString flatness; + QString technical_index_symbol; + QString technical_index; + QString technical_index_unit; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; //结果保存-示波器装置-查询 class DeviceOscilloscopeCalibration:public BaseClass { @@ -1720,6 +1797,20 @@ static QList getStandardInfo(); //根据标准装置id查询标准设备 static QList getStandardInfoListByStandardId(QString standardId); + + //【查询】检定项-微波衰减器 + static QMap> getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope); + //【查询】检定项-低频信号装置 + static QMap> getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope); + //【查询】检定项-小功率装置 + static QMap> getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceSmallPower(SmallPowerCalibration scope); + //【保存】核查基本信息 static bool InsertStandardCheckInfo(StandardCheckInfo info); //【查询】核查项-多功能校准源 @@ -1731,10 +1822,6 @@ static QMap>> getStandardCheckItemDataResistanceThermometer(QString equipment_id,QMap> *headList); static QMap>> GetDataReturnItemListByCheckItemDataResistanceThermometer(QList ResultData,QMap>> DataMapList,QMap> *headList); - - - - //同步成功后更新检定项字段 static bool UpdateMeasureItemInfo(QString item_id); //配套设备关联表 diff --git a/softwareDirectory/AutoVerScheme/checkdevice.cpp b/softwareDirectory/AutoVerScheme/checkdevice.cpp index ca8c64c..5283198 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.cpp +++ b/softwareDirectory/AutoVerScheme/checkdevice.cpp @@ -18,6 +18,7 @@ ui->tableWidget_4->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); //getCheckDevice(); getStandardDevice(); + } CheckDevice::~CheckDevice() @@ -67,6 +68,7 @@ void CheckDevice::getStandardDevice() { bizDeviceList.clear(); + CheckState.clear(); bizDeviceList = BaseCommonApi::getBizDeviceManage(); QString sFilterName = ui->lineEdit_10->text(); QString sFilterModel = ui->lineEdit_11->text(); @@ -85,6 +87,7 @@ if(!bAdd){ bizDeviceList.removeAt(i); } + CheckState.insert(i,false); } page=20; pageIndex=-1; @@ -113,14 +116,25 @@ ui->tableWidget_4->insertRow(rowCount); //QCheckBox *checkBox = new QCheckBox; //ui->tableWidget_4->setCellWidget(row, 0, checkBox); + //checkBox->setChecked(CheckState.value(i)); QTableWidgetItem* p_check = new QTableWidgetItem(); p_check->setCheckState(Qt::Unchecked); ui->tableWidget_4->setItem(row,0,p_check); + //connect(checkBox, &QCheckBox::stateChanged, this, [this,i,checkBox]() { + // 获取当前行第一列的 ID + + // OnitemChanged(i,checkBox->checkState()); + + + //}); + ui->tableWidget_4->setItem(row, 1, new QTableWidgetItem(bizDevice.equipment_name)); ui->tableWidget_4->setItem(row, 2, new QTableWidgetItem(bizDevice.model)); ui->tableWidget_4->setItem(row, 3, new QTableWidgetItem(bizDevice.manufacture_no)); ui->tableWidget_4->setItem(row, 4, new QTableWidgetItem(bizDevice.manufacturer)); row++; + + } } @@ -181,3 +195,12 @@ ui->lineEdit_12->setText(""); getStandardDevice(); } +void CheckDevice::OnitemChanged(int index,Qt::CheckState CurrState) +{ + if(CurrState==Qt::Unchecked){ + CheckState[index] = false; + }else{ + CheckState[index] = true; + } + +} diff --git a/softwareDirectory/AutoVerScheme/checkdevice.h b/softwareDirectory/AutoVerScheme/checkdevice.h index f8dddb3..c6700a4 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.h +++ b/softwareDirectory/AutoVerScheme/checkdevice.h @@ -29,7 +29,7 @@ void on_pushButton_18_clicked(); void onpageChanged(int currPage); - + void OnitemChanged(int currPage,Qt::CheckState State); private: void getCheckDevice(); void getStandardDevice(); @@ -43,6 +43,7 @@ int page; int totalcount; int pageIndex; + QMap CheckState; }; #endif // CHECKDEVICE_H diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 2bf97e3..6593d87 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1014,6 +1014,18 @@ //示波器标准装置 DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); break; + //微波衰减标准装置 + case 11: + DataList=BaseCommonApi::getDeviceMicrowaveAttenuation(deviceCatoryName,CliTable[0].id,HeadList); + break; + //低频信号发生器标准装置 + case 16: + DataList=BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList); + break; + //小功率标准装置 + case 15: + DataList=BaseCommonApi::getDeviceSmallPower(deviceCatoryName,CliTable[0].id,HeadList); + break; } return DataList; @@ -1235,15 +1247,16 @@ Data.append(row[7]); //量程 Data.append(row[8]); //标准值 Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1268,14 +1281,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1299,14 +1313,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1333,14 +1348,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1364,14 +1380,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /* 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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -2460,6 +2477,7 @@ return isSuccess; }; + //计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备 bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure) { @@ -2468,6 +2486,7 @@ " (id,data_id,equipment_id,create_time,update_time) " " VALUES " " (:id,:data_id,:equipment_id,:create_time,:update_time)"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); // QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":id", deviceMeasure.id); @@ -2513,12 +2532,14 @@ //【结果保存】示波器 DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast(entity); //【结果保存】二等铂电阻 - DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); + DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); //【结果保存】频谱分析仪 DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast(entity); //【结果保存】信号发生器 - DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); + DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); if(orderInfo !=nullptr){ + + resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'") .arg("'" + orderInfo->customer_name + "'") .arg("'" + orderInfo->require_over_time + "'") @@ -4079,7 +4100,7 @@ break; } case 10: { - //信号 + //信号发生器 DeviceMeasureDataSignalGenerator *generator = dynamic_cast(object); if (generator != nullptr) { result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator); @@ -4100,6 +4121,27 @@ } break; } + case 11: { + //微波衰减器 InsertDeviceMicrowaveAttenuation + MicrowaveAttenuationCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceMicrowaveAttenuation(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + case 16: { + //低频信号发生器 + LFSignalGeneratoCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceLFSignalGenerator(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + // 可能还有其他的case default: result = false; @@ -6512,7 +6554,468 @@ } return result; } +QMap> BaseCommonApi::getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT bbdmidama.*,bbdmii.attenuation_amount FROM biz_business_device_measure_item_data_microwave_attenuation bbdmidama" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidama.item_id" + " WHERE bbdmidama.item_id = :itemId ORDER BY bbdmidama.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("attenuation_amount").toString()); //检定项目状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("nominal_value_unit").toString()); //标称值单位 7 + result.append(query.value("composition").toString()); //组合方式 + result.append(query.value("urel").toString()); //U(k=2) + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_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= GetDataReturnItemListByMicrowaveAttenuation(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList PadValueList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2]=="1" && row[3] == "1") { + VerificationItem = "衰减量"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"组合方式" + <<"直通测量值"<<"加入衰减测量值"<<"指标下限"<<"衰减量" + <<"指标上限"<<"U(k=2)"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append(row[6]+row[7]);//标称值 + Data.append(row[8]);//组合方式 + Data.append("");//直通测量值 + Data.append("");//加入衰减测量值 + Data.append(QString::number(row[6].toDouble()-row[11].toDouble())+row[7]);//指标下限 + Data.append("");//衰减量 + Data.append(QString::number(row[6].toDouble()+row[11].toDouble())+row[7]);//指标上限 + Data.append("");//U(k=2) + Data.append(row[9]);//结论 + PadValueList.append(Data); + } + } + if(PadValueList.count()!=0){ + DataMapList.insert("衰减量",PadValueList); + }; + return DataMapList; +} +// 【结果保存】 微波衰减器 +bool BaseCommonApi::InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_microwave_attenuation " + " (id,data_id,data_type,frequency,frequency_unit,nominal_value, " + " nominal_value_unit,composition,direct_measure_value,add_measure_value, " + " attenuation_amount,lower_index,upper_index,urel,conclusion,exceed_mark, " + " create_time,update_time)VALUES( " + " :id,:data_id,:data_type,:frequency,:frequency_unit,:nominal_value, " + " :nominal_value_unit,:composition,:direct_measure_value,:add_measure_value, " + " :attenuation_amount,:lower_index,:upper_index,:urel,:conclusion,:exceed_mark," + " :create_time,:update_time " + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":nominal_value_unit", scope.nominal_value_unit); + query.bindValue(":composition", scope.composition); + query.bindValue(":direct_measure_value", scope.direct_measure_value); + query.bindValue(":add_measure_value", scope.add_measure_value); + query.bindValue(":attenuation_amount", scope.attenuation_amount); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +QMap> BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT *,bbdmii.frequency as freq FROM biz_business_device_measure_item_data_low_frequency_signal bbdmidlfs" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlfs.item_id" + " WHERE bbdmidlfs.item_id = :itemId ORDER BY bbdmidlfs.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("freq").toString()); //频率状态 3 + result.append(query.value("harmonic_distortion").toString()); //谐波失真状态 4 + result.append(query.value("rise_time").toString()); //上升时间状态 5 + result.append(query.value("ac_voltage").toString()); //交流电压状态 6 + result.append(query.value("dc_voltage").toString()); //直流电流状态 7 + result.append(query.value("sinusoid_flatness").toString()); //正弦信号平坦度状态 8 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("unit").toString()); //标称值单位 12 + result.append(query.value("amplitude").toString()); //幅度 + result.append(query.value("amplitude_unit").toString()); //幅度单位 + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_unit").toString()); //技术指标单位 17 + result.append(query.value("ac_frequency").toString()); //交流频率 + result.append(query.value("ac_frequency_unit").toString()); //交流频率单位 + result.append(query.value("valid_digit").toString()); //有效位数 + result.append(query.value("datum_point").toString()); //是否为基准点(1/0) 21 + result.append(query.value("voltage").toString()); //电压 + result.append(query.value("voltage_unit").toString()); //电压单位 + result.append(query.value("value_one").toString()); //数值1(不带%,计算技术指标使用) + result.append(query.value("value_two").toString()); //数值2(计算技术指标使用) 25 + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList freqList; + QList ac_voltageList; + QList dc_voltageList; + QList rise_timeList; + QList sinusoid_flatnessList; + QList harmonic_distortionList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "频率"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论"<<"有效位数"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + Data.append(row[20]);//有效位数 + freqList.append(Data); + }else if(!row.isEmpty() && row[6]=="1" && row[2] == "2") { + VerificationItem = "交流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"交流频率"<<"指标下限" + <<"测量值"<<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(row[18]+row[19]);//交流频率 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + ac_voltageList.append(Data); + }else if(!row.isEmpty() && row[7]=="1" && row[2] == "3") { + VerificationItem = "直流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-row[16].toDouble())+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+row[16].toDouble())+row[12]);//指标上限 + Data.append("");//结论 + dc_voltageList.append(Data); + }else if(!row.isEmpty() && row[5]=="1" && row[2] == "4") { + VerificationItem = "上升时间"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"上升时间" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率 + Data.append(row[13]+row[14]);//幅度 + Data.append("");//上升时间 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + rise_timeList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "正弦信号平坦度"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"电压"<<"频率点"<<"测量值" + <<"平坦度"<<"技术指标"<<"结论"<<"基准点" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[22]+row[23]);//电压 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append("");//平坦度 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + Data.append(row[21]);//基准点 + sinusoid_flatnessList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "总谐波失真"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"测量值" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + harmonic_distortionList.append(Data); + } + } + if(freqList.count()!=0){ + DataMapList.insert("频率",freqList); + }; + if(ac_voltageList.count()!=0){ + DataMapList.insert("交流电压",ac_voltageList); + }; + if(dc_voltageList.count()!=0){ + DataMapList.insert("直流电压",dc_voltageList); + }; + if(rise_timeList.count()!=0){ + DataMapList.insert("上升时间",rise_timeList); + }; + if(sinusoid_flatnessList.count()!=0){ + DataMapList.insert("正弦信号平坦度",sinusoid_flatnessList); + }; + if(harmonic_distortionList.count()!=0){ + DataMapList.insert("总谐波失真",harmonic_distortionList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_frequency_signal(id,data_id,data_type," + " nominal_value,unit,upper_index,lower_index,measure_value,measure_value_unit,conclusion," + " convert_deviation,frequency,frequency_unit,voltage,voltage_unit,rise_time,datum_point," + " ac_frequency,ac_frequency_unit,amplitude,amplitude_unit,flatness,technical_index_symbol," + " technical_index,technical_index_unit,exceed_mark,create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :nominal_value,:unit,:upper_index,:lower_index,:measure_value,:measure_value_unit,:conclusion," + " :convert_deviation,:frequency,:frequency_unit,:voltage,:voltage_unit,:rise_time,:datum_point," + " :ac_frequency,:ac_frequency_unit,:amplitude,:amplitude_unit,:flatness,:technical_index_symbol," + " :technical_index,:technical_index_unit,:exceed_mark,:create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":unit", scope.unit); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":measure_value", scope.measure_value); + query.bindValue(":measure_value_unit", scope.measure_value_unit); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":convert_deviation", scope.convert_deviation); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":voltage", scope.voltage); + query.bindValue(":voltage_unit", scope.voltage_unit); + query.bindValue(":rise_time", scope.rise_time); + query.bindValue(":datum_point", scope.datum_point); + query.bindValue(":ac_frequency", scope.ac_frequency); + query.bindValue(":ac_frequency_unit", scope.ac_frequency_unit); + query.bindValue(":amplitude", scope.amplitude); + query.bindValue(":amplitude_unit", scope.amplitude_unit); + query.bindValue(":flatness", scope.flatness); + query.bindValue(":technical_index_symbol", scope.technical_index_symbol); + query.bindValue(":technical_index", scope.technical_index); + query.bindValue(":technical_index_unit", scope.technical_index_unit); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +//检定项-小功率装置 +QMap> BaseCommonApi::getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT bbdmidlp.*,bbdmii.calibration_factor FROM biz_business_device_measure_item_data_low_power bbdmidlp" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlp.item_id" + " WHERE bbdmidlp.item_id = :itemId ORDER BY bbdmidlp.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("calibration_factor").toString()); //启动状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 5 + result.append(query.value("kc").toString()); //Kc/% + result.append(query.value("standard_reflection_coefficient").toString()); //标准反射系数ГGe + result.append(query.value("device_reflection_coefficient").toString()); //被检设备反射系数Гu 8 + result.append(query.value("urel").toString()); //U(k=2) + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList calibrationFactorList; + + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "校准因子"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"Pcu/mW"<<"Kc/%" + <<"被测探头示数Pbu/mW"<<"标准反射系数ГGe"<<"被检设备反射系数Гu" + <<"被测探头校准因子Kb/%"<<"U(k=2)"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append("");//幅度 + Data.append(row[6]);//Kc/% + Data.append("");//被测探头示数Pbu/mW + Data.append(row[7]);//标准反射系数ГGe + Data.append(row[8]);//被检设备反射系数Гu + Data.append("");//被测探头校准因子Kb/% + Data.append(row[9]);//U(k=2) + calibrationFactorList.append(Data); + } + } + if(calibrationFactorList.count()!=0){ + DataMapList.insert("校准因子",calibrationFactorList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceSmallPower(SmallPowerCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_power(id,data_id,data_type," + " frequency,frequency_unit,pcu,kc,probe_pbu,standard_reflection_coefficient," + " device_reflection_coefficient,probe_calibration_factor,urel,exceed_mark," + " create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :frequency,:frequency_unit,:pcu,:kc,:probe_pbu,:standard_reflection_coefficient," + " :device_reflection_coefficient,:probe_calibration_factor,:urel,:exceed_mark," + " :create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":pcu", scope.pcu); + query.bindValue(":kc", scope.kc); + query.bindValue(":probe_pbu", scope.probe_pbu); + query.bindValue(":standard_reflection_coefficient", scope.standard_reflection_coefficient); + query.bindValue(":device_reflection_coefficient", scope.device_reflection_coefficient); + query.bindValue(":probe_calibration_factor", scope.probe_calibration_factor); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } //核查程序管理-核查设置-多功能校准源 参数设备id 同信息管理-标准设备管理-核查项及核查点 QMap>> BaseCommonApi::getStandardCheckItemDataCalibrator(QString equipment_id,QMap> *headList) diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index c3314ce..f4dffc8 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1089,6 +1089,83 @@ QString create_time; QString update_time; }; +//结果保存-微波衰减器-查询 +class MicrowaveAttenuationCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString nominal_value_unit; + QString composition; + QString direct_measure_value; + QString add_measure_value; + QString attenuation_amount; + QString lower_index; + QString upper_index; + QString urel; + QString conclusion; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-小功率-查询 +class SmallPowerCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString pcu; + QString kc; + QString probe_pbu; + QString standard_reflection_coefficient; + QString device_reflection_coefficient; + QString probe_calibration_factor; + QString urel; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-低频信号-查询 +class LFSignalGeneratoCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString unit; + QString lower_index; + QString upper_index; + QString urel; + QString measure_value; + QString measure_value_unit; + QString conclusion; + QString convert_deviation; + QString voltage; + QString voltage_unit; + QString rise_time; + QString datum_point; + QString ac_frequency; + QString ac_frequency_unit; + QString amplitude; + QString amplitude_unit; + QString flatness; + QString technical_index_symbol; + QString technical_index; + QString technical_index_unit; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; //结果保存-示波器装置-查询 class DeviceOscilloscopeCalibration:public BaseClass { @@ -1720,6 +1797,20 @@ static QList getStandardInfo(); //根据标准装置id查询标准设备 static QList getStandardInfoListByStandardId(QString standardId); + + //【查询】检定项-微波衰减器 + static QMap> getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope); + //【查询】检定项-低频信号装置 + static QMap> getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope); + //【查询】检定项-小功率装置 + static QMap> getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceSmallPower(SmallPowerCalibration scope); + //【保存】核查基本信息 static bool InsertStandardCheckInfo(StandardCheckInfo info); //【查询】核查项-多功能校准源 @@ -1731,10 +1822,6 @@ static QMap>> getStandardCheckItemDataResistanceThermometer(QString equipment_id,QMap> *headList); static QMap>> GetDataReturnItemListByCheckItemDataResistanceThermometer(QList ResultData,QMap>> DataMapList,QMap> *headList); - - - - //同步成功后更新检定项字段 static bool UpdateMeasureItemInfo(QString item_id); //配套设备关联表 diff --git a/softwareDirectory/AutoVerScheme/checkdevice.cpp b/softwareDirectory/AutoVerScheme/checkdevice.cpp index ca8c64c..5283198 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.cpp +++ b/softwareDirectory/AutoVerScheme/checkdevice.cpp @@ -18,6 +18,7 @@ ui->tableWidget_4->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); //getCheckDevice(); getStandardDevice(); + } CheckDevice::~CheckDevice() @@ -67,6 +68,7 @@ void CheckDevice::getStandardDevice() { bizDeviceList.clear(); + CheckState.clear(); bizDeviceList = BaseCommonApi::getBizDeviceManage(); QString sFilterName = ui->lineEdit_10->text(); QString sFilterModel = ui->lineEdit_11->text(); @@ -85,6 +87,7 @@ if(!bAdd){ bizDeviceList.removeAt(i); } + CheckState.insert(i,false); } page=20; pageIndex=-1; @@ -113,14 +116,25 @@ ui->tableWidget_4->insertRow(rowCount); //QCheckBox *checkBox = new QCheckBox; //ui->tableWidget_4->setCellWidget(row, 0, checkBox); + //checkBox->setChecked(CheckState.value(i)); QTableWidgetItem* p_check = new QTableWidgetItem(); p_check->setCheckState(Qt::Unchecked); ui->tableWidget_4->setItem(row,0,p_check); + //connect(checkBox, &QCheckBox::stateChanged, this, [this,i,checkBox]() { + // 获取当前行第一列的 ID + + // OnitemChanged(i,checkBox->checkState()); + + + //}); + ui->tableWidget_4->setItem(row, 1, new QTableWidgetItem(bizDevice.equipment_name)); ui->tableWidget_4->setItem(row, 2, new QTableWidgetItem(bizDevice.model)); ui->tableWidget_4->setItem(row, 3, new QTableWidgetItem(bizDevice.manufacture_no)); ui->tableWidget_4->setItem(row, 4, new QTableWidgetItem(bizDevice.manufacturer)); row++; + + } } @@ -181,3 +195,12 @@ ui->lineEdit_12->setText(""); getStandardDevice(); } +void CheckDevice::OnitemChanged(int index,Qt::CheckState CurrState) +{ + if(CurrState==Qt::Unchecked){ + CheckState[index] = false; + }else{ + CheckState[index] = true; + } + +} diff --git a/softwareDirectory/AutoVerScheme/checkdevice.h b/softwareDirectory/AutoVerScheme/checkdevice.h index f8dddb3..c6700a4 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.h +++ b/softwareDirectory/AutoVerScheme/checkdevice.h @@ -29,7 +29,7 @@ void on_pushButton_18_clicked(); void onpageChanged(int currPage); - + void OnitemChanged(int currPage,Qt::CheckState State); private: void getCheckDevice(); void getStandardDevice(); @@ -43,6 +43,7 @@ int page; int totalcount; int pageIndex; + QMap CheckState; }; #endif // CHECKDEVICE_H diff --git a/softwareDirectory/AutoVerScheme/checkmethodmanage.h b/softwareDirectory/AutoVerScheme/checkmethodmanage.h index 0f6143e..ae021d7 100644 --- a/softwareDirectory/AutoVerScheme/checkmethodmanage.h +++ b/softwareDirectory/AutoVerScheme/checkmethodmanage.h @@ -34,7 +34,8 @@ QList programList; int editIdx=-1; QStringList equipList={"多功能校准源标准装置","直流稳压电源检定装置","多功能电气安全标准器标准装置","0.02级活塞式压力计标准装置","二等铂电阻温度计标准装置","安全阀校验装置", - "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置"}; + "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置" + ,"低频信号发生器标准装置","S参数标准装置","失真度标准装置"}; QList catList; int page; int totalcount; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 2bf97e3..6593d87 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1014,6 +1014,18 @@ //示波器标准装置 DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); break; + //微波衰减标准装置 + case 11: + DataList=BaseCommonApi::getDeviceMicrowaveAttenuation(deviceCatoryName,CliTable[0].id,HeadList); + break; + //低频信号发生器标准装置 + case 16: + DataList=BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList); + break; + //小功率标准装置 + case 15: + DataList=BaseCommonApi::getDeviceSmallPower(deviceCatoryName,CliTable[0].id,HeadList); + break; } return DataList; @@ -1235,15 +1247,16 @@ Data.append(row[7]); //量程 Data.append(row[8]); //标准值 Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1268,14 +1281,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1299,14 +1313,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1333,14 +1348,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1364,14 +1380,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /* 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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -2460,6 +2477,7 @@ return isSuccess; }; + //计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备 bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure) { @@ -2468,6 +2486,7 @@ " (id,data_id,equipment_id,create_time,update_time) " " VALUES " " (:id,:data_id,:equipment_id,:create_time,:update_time)"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); // QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":id", deviceMeasure.id); @@ -2513,12 +2532,14 @@ //【结果保存】示波器 DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast(entity); //【结果保存】二等铂电阻 - DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); + DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); //【结果保存】频谱分析仪 DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast(entity); //【结果保存】信号发生器 - DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); + DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); if(orderInfo !=nullptr){ + + resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'") .arg("'" + orderInfo->customer_name + "'") .arg("'" + orderInfo->require_over_time + "'") @@ -4079,7 +4100,7 @@ break; } case 10: { - //信号 + //信号发生器 DeviceMeasureDataSignalGenerator *generator = dynamic_cast(object); if (generator != nullptr) { result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator); @@ -4100,6 +4121,27 @@ } break; } + case 11: { + //微波衰减器 InsertDeviceMicrowaveAttenuation + MicrowaveAttenuationCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceMicrowaveAttenuation(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + case 16: { + //低频信号发生器 + LFSignalGeneratoCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceLFSignalGenerator(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + // 可能还有其他的case default: result = false; @@ -6512,7 +6554,468 @@ } return result; } +QMap> BaseCommonApi::getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT bbdmidama.*,bbdmii.attenuation_amount FROM biz_business_device_measure_item_data_microwave_attenuation bbdmidama" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidama.item_id" + " WHERE bbdmidama.item_id = :itemId ORDER BY bbdmidama.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("attenuation_amount").toString()); //检定项目状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("nominal_value_unit").toString()); //标称值单位 7 + result.append(query.value("composition").toString()); //组合方式 + result.append(query.value("urel").toString()); //U(k=2) + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_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= GetDataReturnItemListByMicrowaveAttenuation(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList PadValueList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2]=="1" && row[3] == "1") { + VerificationItem = "衰减量"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"组合方式" + <<"直通测量值"<<"加入衰减测量值"<<"指标下限"<<"衰减量" + <<"指标上限"<<"U(k=2)"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append(row[6]+row[7]);//标称值 + Data.append(row[8]);//组合方式 + Data.append("");//直通测量值 + Data.append("");//加入衰减测量值 + Data.append(QString::number(row[6].toDouble()-row[11].toDouble())+row[7]);//指标下限 + Data.append("");//衰减量 + Data.append(QString::number(row[6].toDouble()+row[11].toDouble())+row[7]);//指标上限 + Data.append("");//U(k=2) + Data.append(row[9]);//结论 + PadValueList.append(Data); + } + } + if(PadValueList.count()!=0){ + DataMapList.insert("衰减量",PadValueList); + }; + return DataMapList; +} +// 【结果保存】 微波衰减器 +bool BaseCommonApi::InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_microwave_attenuation " + " (id,data_id,data_type,frequency,frequency_unit,nominal_value, " + " nominal_value_unit,composition,direct_measure_value,add_measure_value, " + " attenuation_amount,lower_index,upper_index,urel,conclusion,exceed_mark, " + " create_time,update_time)VALUES( " + " :id,:data_id,:data_type,:frequency,:frequency_unit,:nominal_value, " + " :nominal_value_unit,:composition,:direct_measure_value,:add_measure_value, " + " :attenuation_amount,:lower_index,:upper_index,:urel,:conclusion,:exceed_mark," + " :create_time,:update_time " + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":nominal_value_unit", scope.nominal_value_unit); + query.bindValue(":composition", scope.composition); + query.bindValue(":direct_measure_value", scope.direct_measure_value); + query.bindValue(":add_measure_value", scope.add_measure_value); + query.bindValue(":attenuation_amount", scope.attenuation_amount); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +QMap> BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT *,bbdmii.frequency as freq FROM biz_business_device_measure_item_data_low_frequency_signal bbdmidlfs" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlfs.item_id" + " WHERE bbdmidlfs.item_id = :itemId ORDER BY bbdmidlfs.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("freq").toString()); //频率状态 3 + result.append(query.value("harmonic_distortion").toString()); //谐波失真状态 4 + result.append(query.value("rise_time").toString()); //上升时间状态 5 + result.append(query.value("ac_voltage").toString()); //交流电压状态 6 + result.append(query.value("dc_voltage").toString()); //直流电流状态 7 + result.append(query.value("sinusoid_flatness").toString()); //正弦信号平坦度状态 8 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("unit").toString()); //标称值单位 12 + result.append(query.value("amplitude").toString()); //幅度 + result.append(query.value("amplitude_unit").toString()); //幅度单位 + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_unit").toString()); //技术指标单位 17 + result.append(query.value("ac_frequency").toString()); //交流频率 + result.append(query.value("ac_frequency_unit").toString()); //交流频率单位 + result.append(query.value("valid_digit").toString()); //有效位数 + result.append(query.value("datum_point").toString()); //是否为基准点(1/0) 21 + result.append(query.value("voltage").toString()); //电压 + result.append(query.value("voltage_unit").toString()); //电压单位 + result.append(query.value("value_one").toString()); //数值1(不带%,计算技术指标使用) + result.append(query.value("value_two").toString()); //数值2(计算技术指标使用) 25 + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList freqList; + QList ac_voltageList; + QList dc_voltageList; + QList rise_timeList; + QList sinusoid_flatnessList; + QList harmonic_distortionList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "频率"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论"<<"有效位数"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + Data.append(row[20]);//有效位数 + freqList.append(Data); + }else if(!row.isEmpty() && row[6]=="1" && row[2] == "2") { + VerificationItem = "交流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"交流频率"<<"指标下限" + <<"测量值"<<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(row[18]+row[19]);//交流频率 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + ac_voltageList.append(Data); + }else if(!row.isEmpty() && row[7]=="1" && row[2] == "3") { + VerificationItem = "直流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-row[16].toDouble())+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+row[16].toDouble())+row[12]);//指标上限 + Data.append("");//结论 + dc_voltageList.append(Data); + }else if(!row.isEmpty() && row[5]=="1" && row[2] == "4") { + VerificationItem = "上升时间"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"上升时间" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率 + Data.append(row[13]+row[14]);//幅度 + Data.append("");//上升时间 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + rise_timeList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "正弦信号平坦度"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"电压"<<"频率点"<<"测量值" + <<"平坦度"<<"技术指标"<<"结论"<<"基准点" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[22]+row[23]);//电压 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append("");//平坦度 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + Data.append(row[21]);//基准点 + sinusoid_flatnessList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "总谐波失真"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"测量值" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + harmonic_distortionList.append(Data); + } + } + if(freqList.count()!=0){ + DataMapList.insert("频率",freqList); + }; + if(ac_voltageList.count()!=0){ + DataMapList.insert("交流电压",ac_voltageList); + }; + if(dc_voltageList.count()!=0){ + DataMapList.insert("直流电压",dc_voltageList); + }; + if(rise_timeList.count()!=0){ + DataMapList.insert("上升时间",rise_timeList); + }; + if(sinusoid_flatnessList.count()!=0){ + DataMapList.insert("正弦信号平坦度",sinusoid_flatnessList); + }; + if(harmonic_distortionList.count()!=0){ + DataMapList.insert("总谐波失真",harmonic_distortionList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_frequency_signal(id,data_id,data_type," + " nominal_value,unit,upper_index,lower_index,measure_value,measure_value_unit,conclusion," + " convert_deviation,frequency,frequency_unit,voltage,voltage_unit,rise_time,datum_point," + " ac_frequency,ac_frequency_unit,amplitude,amplitude_unit,flatness,technical_index_symbol," + " technical_index,technical_index_unit,exceed_mark,create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :nominal_value,:unit,:upper_index,:lower_index,:measure_value,:measure_value_unit,:conclusion," + " :convert_deviation,:frequency,:frequency_unit,:voltage,:voltage_unit,:rise_time,:datum_point," + " :ac_frequency,:ac_frequency_unit,:amplitude,:amplitude_unit,:flatness,:technical_index_symbol," + " :technical_index,:technical_index_unit,:exceed_mark,:create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":unit", scope.unit); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":measure_value", scope.measure_value); + query.bindValue(":measure_value_unit", scope.measure_value_unit); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":convert_deviation", scope.convert_deviation); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":voltage", scope.voltage); + query.bindValue(":voltage_unit", scope.voltage_unit); + query.bindValue(":rise_time", scope.rise_time); + query.bindValue(":datum_point", scope.datum_point); + query.bindValue(":ac_frequency", scope.ac_frequency); + query.bindValue(":ac_frequency_unit", scope.ac_frequency_unit); + query.bindValue(":amplitude", scope.amplitude); + query.bindValue(":amplitude_unit", scope.amplitude_unit); + query.bindValue(":flatness", scope.flatness); + query.bindValue(":technical_index_symbol", scope.technical_index_symbol); + query.bindValue(":technical_index", scope.technical_index); + query.bindValue(":technical_index_unit", scope.technical_index_unit); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +//检定项-小功率装置 +QMap> BaseCommonApi::getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT bbdmidlp.*,bbdmii.calibration_factor FROM biz_business_device_measure_item_data_low_power bbdmidlp" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlp.item_id" + " WHERE bbdmidlp.item_id = :itemId ORDER BY bbdmidlp.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("calibration_factor").toString()); //启动状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 5 + result.append(query.value("kc").toString()); //Kc/% + result.append(query.value("standard_reflection_coefficient").toString()); //标准反射系数ГGe + result.append(query.value("device_reflection_coefficient").toString()); //被检设备反射系数Гu 8 + result.append(query.value("urel").toString()); //U(k=2) + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList calibrationFactorList; + + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "校准因子"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"Pcu/mW"<<"Kc/%" + <<"被测探头示数Pbu/mW"<<"标准反射系数ГGe"<<"被检设备反射系数Гu" + <<"被测探头校准因子Kb/%"<<"U(k=2)"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append("");//幅度 + Data.append(row[6]);//Kc/% + Data.append("");//被测探头示数Pbu/mW + Data.append(row[7]);//标准反射系数ГGe + Data.append(row[8]);//被检设备反射系数Гu + Data.append("");//被测探头校准因子Kb/% + Data.append(row[9]);//U(k=2) + calibrationFactorList.append(Data); + } + } + if(calibrationFactorList.count()!=0){ + DataMapList.insert("校准因子",calibrationFactorList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceSmallPower(SmallPowerCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_power(id,data_id,data_type," + " frequency,frequency_unit,pcu,kc,probe_pbu,standard_reflection_coefficient," + " device_reflection_coefficient,probe_calibration_factor,urel,exceed_mark," + " create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :frequency,:frequency_unit,:pcu,:kc,:probe_pbu,:standard_reflection_coefficient," + " :device_reflection_coefficient,:probe_calibration_factor,:urel,:exceed_mark," + " :create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":pcu", scope.pcu); + query.bindValue(":kc", scope.kc); + query.bindValue(":probe_pbu", scope.probe_pbu); + query.bindValue(":standard_reflection_coefficient", scope.standard_reflection_coefficient); + query.bindValue(":device_reflection_coefficient", scope.device_reflection_coefficient); + query.bindValue(":probe_calibration_factor", scope.probe_calibration_factor); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } //核查程序管理-核查设置-多功能校准源 参数设备id 同信息管理-标准设备管理-核查项及核查点 QMap>> BaseCommonApi::getStandardCheckItemDataCalibrator(QString equipment_id,QMap> *headList) diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index c3314ce..f4dffc8 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1089,6 +1089,83 @@ QString create_time; QString update_time; }; +//结果保存-微波衰减器-查询 +class MicrowaveAttenuationCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString nominal_value_unit; + QString composition; + QString direct_measure_value; + QString add_measure_value; + QString attenuation_amount; + QString lower_index; + QString upper_index; + QString urel; + QString conclusion; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-小功率-查询 +class SmallPowerCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString pcu; + QString kc; + QString probe_pbu; + QString standard_reflection_coefficient; + QString device_reflection_coefficient; + QString probe_calibration_factor; + QString urel; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-低频信号-查询 +class LFSignalGeneratoCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString unit; + QString lower_index; + QString upper_index; + QString urel; + QString measure_value; + QString measure_value_unit; + QString conclusion; + QString convert_deviation; + QString voltage; + QString voltage_unit; + QString rise_time; + QString datum_point; + QString ac_frequency; + QString ac_frequency_unit; + QString amplitude; + QString amplitude_unit; + QString flatness; + QString technical_index_symbol; + QString technical_index; + QString technical_index_unit; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; //结果保存-示波器装置-查询 class DeviceOscilloscopeCalibration:public BaseClass { @@ -1720,6 +1797,20 @@ static QList getStandardInfo(); //根据标准装置id查询标准设备 static QList getStandardInfoListByStandardId(QString standardId); + + //【查询】检定项-微波衰减器 + static QMap> getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope); + //【查询】检定项-低频信号装置 + static QMap> getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope); + //【查询】检定项-小功率装置 + static QMap> getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceSmallPower(SmallPowerCalibration scope); + //【保存】核查基本信息 static bool InsertStandardCheckInfo(StandardCheckInfo info); //【查询】核查项-多功能校准源 @@ -1731,10 +1822,6 @@ static QMap>> getStandardCheckItemDataResistanceThermometer(QString equipment_id,QMap> *headList); static QMap>> GetDataReturnItemListByCheckItemDataResistanceThermometer(QList ResultData,QMap>> DataMapList,QMap> *headList); - - - - //同步成功后更新检定项字段 static bool UpdateMeasureItemInfo(QString item_id); //配套设备关联表 diff --git a/softwareDirectory/AutoVerScheme/checkdevice.cpp b/softwareDirectory/AutoVerScheme/checkdevice.cpp index ca8c64c..5283198 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.cpp +++ b/softwareDirectory/AutoVerScheme/checkdevice.cpp @@ -18,6 +18,7 @@ ui->tableWidget_4->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); //getCheckDevice(); getStandardDevice(); + } CheckDevice::~CheckDevice() @@ -67,6 +68,7 @@ void CheckDevice::getStandardDevice() { bizDeviceList.clear(); + CheckState.clear(); bizDeviceList = BaseCommonApi::getBizDeviceManage(); QString sFilterName = ui->lineEdit_10->text(); QString sFilterModel = ui->lineEdit_11->text(); @@ -85,6 +87,7 @@ if(!bAdd){ bizDeviceList.removeAt(i); } + CheckState.insert(i,false); } page=20; pageIndex=-1; @@ -113,14 +116,25 @@ ui->tableWidget_4->insertRow(rowCount); //QCheckBox *checkBox = new QCheckBox; //ui->tableWidget_4->setCellWidget(row, 0, checkBox); + //checkBox->setChecked(CheckState.value(i)); QTableWidgetItem* p_check = new QTableWidgetItem(); p_check->setCheckState(Qt::Unchecked); ui->tableWidget_4->setItem(row,0,p_check); + //connect(checkBox, &QCheckBox::stateChanged, this, [this,i,checkBox]() { + // 获取当前行第一列的 ID + + // OnitemChanged(i,checkBox->checkState()); + + + //}); + ui->tableWidget_4->setItem(row, 1, new QTableWidgetItem(bizDevice.equipment_name)); ui->tableWidget_4->setItem(row, 2, new QTableWidgetItem(bizDevice.model)); ui->tableWidget_4->setItem(row, 3, new QTableWidgetItem(bizDevice.manufacture_no)); ui->tableWidget_4->setItem(row, 4, new QTableWidgetItem(bizDevice.manufacturer)); row++; + + } } @@ -181,3 +195,12 @@ ui->lineEdit_12->setText(""); getStandardDevice(); } +void CheckDevice::OnitemChanged(int index,Qt::CheckState CurrState) +{ + if(CurrState==Qt::Unchecked){ + CheckState[index] = false; + }else{ + CheckState[index] = true; + } + +} diff --git a/softwareDirectory/AutoVerScheme/checkdevice.h b/softwareDirectory/AutoVerScheme/checkdevice.h index f8dddb3..c6700a4 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.h +++ b/softwareDirectory/AutoVerScheme/checkdevice.h @@ -29,7 +29,7 @@ void on_pushButton_18_clicked(); void onpageChanged(int currPage); - + void OnitemChanged(int currPage,Qt::CheckState State); private: void getCheckDevice(); void getStandardDevice(); @@ -43,6 +43,7 @@ int page; int totalcount; int pageIndex; + QMap CheckState; }; #endif // CHECKDEVICE_H diff --git a/softwareDirectory/AutoVerScheme/checkmethodmanage.h b/softwareDirectory/AutoVerScheme/checkmethodmanage.h index 0f6143e..ae021d7 100644 --- a/softwareDirectory/AutoVerScheme/checkmethodmanage.h +++ b/softwareDirectory/AutoVerScheme/checkmethodmanage.h @@ -34,7 +34,8 @@ QList programList; int editIdx=-1; QStringList equipList={"多功能校准源标准装置","直流稳压电源检定装置","多功能电气安全标准器标准装置","0.02级活塞式压力计标准装置","二等铂电阻温度计标准装置","安全阀校验装置", - "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置"}; + "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置" + ,"低频信号发生器标准装置","S参数标准装置","失真度标准装置"}; QList catList; int page; int totalcount; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index b227101..0b8dec3 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -1078,16 +1078,26 @@ ui->tableWidgetCheck->setCellWidget(i,j,tmp_widget); }else ui->tableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); - if(dataRes[i][1] == "DCV" || dataRes[i][1] == "DCI"){ - ui->tableWidgetCheck->hideColumn(10); - ui->tableWidgetCheck->hideColumn(11); - }else if (dataRes[i][1] == "ACV" || dataRes[i][1] == "ACI") { - ui->tableWidgetCheck->hideColumn(12); - ui->tableWidgetCheck->hideColumn(13); - }else if (dataRes[i][1] == "R") { - ui->tableWidgetCheck->hideColumn(11); - ui->tableWidgetCheck->hideColumn(12); - } + //需要界面Ui隐藏的列 + if(iEquipType==1){ + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("a"))); + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("b"))); + + /*if(dataRes[i][1] == "DCV" || dataRes[i][1] == "DCI"){ + ui->tableWidgetCheck->hideColumn(10); + ui->tableWidgetCheck->hideColumn(11); + }else if (dataRes[i][1] == "ACV" || dataRes[i][1] == "ACI") { + ui->tableWidgetCheck->hideColumn(12); + ui->tableWidgetCheck->hideColumn(13); + }else if (dataRes[i][1] == "R") { + ui->tableWidgetCheck->hideColumn(11); + ui->tableWidgetCheck->hideColumn(12); + }*/ + }else if(iEquipType==16){ + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("基准点"))); + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("有效位数"))); + } + } } @@ -1716,7 +1726,7 @@ QMessageBox::warning(this, "警告", "设备未连接!"); } return; - }else if(iEquipType==10){ + }else if(iEquipType==10 || iEquipType==16){ //信号源采集读数 标准器 this->SignalGeneratortextflow(); return; @@ -1753,13 +1763,23 @@ //暂时加到这个地方 后面统一编写 if(sParam=="DCI"||sParam=="ACI") { + int idx2= getIndexByHeader(constsLable,QStrTranQStrList("单位")); if(idx2!=-1) { QString ConstUnit=""; + QString Item; QString v=dataRes[i][idx2].toUpper(); - if(i!=0) - ConstUnit=dataRes[i-1][idx2].toUpper(); + if(i!=0){ + ConstUnit=dataRes[i-1][idx2].toUpper(); + Item=dataRes[i-1][idx]; + } + if(Item!=sParam){ + if(!this->showDialog("电流换线提醒",QString("换线提醒\n %1测试").arg(sParam).arg(v))) + { + continue; + } + } BaseCommonApi::SaveLogInfo(1,ConstUnit+"-"+v); if((ConstUnit=="MA" && v=="A") || (ConstUnit=="A" && v=="MA")) @@ -1784,34 +1804,79 @@ instrcutLibRole=getCmdByRoleName("电子负载",constsLable); SendDevice(instrcutLibRole,&engineRole); } + else if(iEquipType==11){ + + BaseCommonApi::SaveLogInfo(1,QString("信号发生器")); + VisaCommonEngine engineRole2=getVisaCommbyRoleName("信号发生器"); //角色 + InstructionLib *instrcutLibRole2=getCmdByRoleName("信号发生器",constsLable); + SendDevice(instrcutLibRole2,&engineRole2); + BaseCommonApi::SaveLogInfo(1,QString("测量接收机")); + VisaCommonEngine engineRole=getVisaCommbyRoleName("测量接收机"); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName("测量接收机",constsLable); + SendDevice(instrcutLibRole,&engineRole); + //校准流程 + bool IsCli=true; + if(i!=0){ + idx = getIndexByHeader(constsLable,QStrTranQStrList("频率")); + QString FreqValue,PageFreqValue; + FreqValue=Removeunit(dataRes[i][idx]); + PageFreqValue=Removeunit(dataRes[i-1][idx]); + if(PageFreqValue==FreqValue){ + IsCli=false; + } + } + if(IsCli){ + //&& 只在频率切换时进行校准 + //功率校准 + InstructionLib *PowerPage=getCmdByRoleName("测量接收机","界面切换"); + InstructionLib *PowerCali=getCmdByRoleName("信号发生器","校准"); + InstructionLib *PowerCaliSt=getCmdByRoleName("测量接收机","校准"); + if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ + InstructionLib Temp; + InstructionLib TempSt; + for(QString item:PowerCali->instruct_read.split(';')) + { + Temp.instruct_config=item; + SendDevice(&Temp,&deviceEngine); + if(item.contains("20")){ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + }else{ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + } + } + } + } + + sRet=ReadDevice(instrcutLibRole,&engineRole); + } else { + InstructionLib *instrcutLibstan = getCmdByCheckName(1,sParam); SendDevice(instrcutLibstan,&standardEngine,true); //被检设备读数 BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); SendDevice(instrcutLib,&deviceEngine); - //在被检设备读数前 - if(iEquipType==10){ - if(sParam=="功率"){ - //功率开始测试前进行校准 - InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); - InstructionLib *PowerCali=getCmdByCheckName(1,"功率校准"); - InstructionLib *PowerDevice=getCmdByCheckName(1,constsLable); - QStringList ReadCmd=PowerCali->instruct_read.split(';'); - for(int i=0;itableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } @@ -2744,6 +2822,165 @@ BaseCommonApi::SaveLogInfo(1,QString("转换后 THD 测试值 %1").arg(newdStdValue)); } } + else if(iEquipType==11){ + bool State=true; + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被测量值"); + State=false; + } + int idx=-1; + int idx2=-1; + double Upp,low; + QString Resdata,data,unit; + unit="dBm"; + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList("直通测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + if(State){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("组合方式")); + if(!this->showDialog("加入衰减测量值提醒",QString("组合方式 %1").arg(dataRes[i][idx]))) + { + return; + } + BaseCommonApi::SaveLogInfo(1,QString("测量接收机")); + VisaCommonEngine engineRole=getVisaCommbyRoleName("测量接收机"); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName("测量接收机",constsLable); + SendDevice(instrcutLibRole,&engineRole); + dStdValue=ReadDevice(instrcutLibRole,&engineRole).toDouble(); + }else{ + dStdValue=InputDialog("请输入加入衰减测量值"); + } + Resdata=QString::number(newdStdValue.toDouble()-dStdValue); + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList("加入衰减测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + idx= getIndexByHeader(sLabel,QStrTranQStrList("衰减量")); + dataRes[i][idx]=Resdata+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(Resdata+unit)); //衰减量 + idx= getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + idx2= getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + + Upp=Removeunit(dataRes[i][idx]).toDouble(); + low=Removeunit(dataRes[i][idx2]).toDouble(); + idx= getIndexByHeader(sLabel,QStrTranQStrList("结论")); + if(Resdata.toDouble()>low && Resdata.toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("符合指标")); + }else{ + dataRes[i][idx]="不符合"; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("不符合")); + } + + } + else if(iEquipType==16){ + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被检示值"); + } + int idx=-1; + int idx2=-1; + QString data,unit,dataTemp; + bool datum=false; + // QString Resultdata,Resiltunit; + if(sLabel=="频率" || sLabel=="交流电压" || sLabel=="直流电压"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="交流电压" || sLabel=="直流电压"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + idx= getIndexByHeader(sLabel,QStrTranQStrList("有效位数")); + newdStdValue=QString::number(dStdValue,'f',dataRes[i][idx].toInt()); + } + + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="上升时间"){ + //寻找单位 + idx= getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + int lastDigitIndex = dataRes[i][idx].lastIndexOf(QRegExp("[0-9]")); + if(lastDigitIndex!=-1){ + //寻找单位 + unit=dataRes[i][idx].mid(lastDigitIndex + 1); + }else{ + unit=""; + } + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList(sLabel)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //上升时间 + }else if(sLabel=="正弦信号平坦度"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("电压")); + ItemUnitSplit(dataRes[i][idx],data,unit); + newdStdValue=QString::number(dStdValue,'f',3); + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + + idx= getIndexByHeader(sLabel,QStrTranQStrList("基准点")); + if(dataRes[i][idx]=="1"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + dataRes[i][idx]=newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //平坦度 + }else{ + idx2= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + //寻找基准点测量值 + for(QStringList item:dataRes){ + if(item[idx]=="1"){ + data=item[idx2]; + datum=true; + } + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + dataRes[i][idx]=QString::number((dataRes[i][idx].toDouble()-data.toDouble())/data.toDouble()); + } + dataTemp="不符合"; + idx=getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + idx2= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + data=dataRes[i][idx]; + if(datum){ + dataTemp="基准点"; + }else{ + if(data.contains("<")){ + QRegularExpression re("[^\\d]+"); + data=data.replace(re, ""); + if(dataRes[i][idx2].toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(dataTemp)); //结论 + } + else if(sLabel=="总谐波失真"){ + unit = "%"; + idx2= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + newdStdValue=QString::number(dStdValue,'f',3); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + + dataTemp="不符合"; + idx=getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + data=dataRes[i][idx]; + if(data.contains("<")){ + QRegularExpression re("[^\\d]+"); + data=data.replace(re, ""); + if(dataRes[i][idx2].toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(dataTemp)); //结论 + } + } } void CheckWindow::Oscilloscopetextflow() { @@ -3093,9 +3330,9 @@ if(IsCli){ //&& 只在频率切换时进行校准 //功率校准 - InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); - InstructionLib *PowerCali=getCmdByCheckName(0,"功率校准"); - InstructionLib *PowerCaliSt=getCmdByCheckName(1,"功率校准"); + InstructionLib *PowerPage=getCmdByCheckName(1,"界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(0,"校准"); + InstructionLib *PowerCaliSt=getCmdByCheckName(1,"校准"); if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ InstructionLib Temp; InstructionLib TempSt; @@ -3722,8 +3959,8 @@ else if(sLabel=="电流示值误差(直接测量)") sRole ="电流表"; BaseCommonApi::SaveLogInfo(1,QString("可编程交流电源读取数值")); - VisaCommonEngine engineRole=getVisaCommbyRoleName("sRole"); //角色 - InstructionLib *instrcutLibRole=getCmdByRoleName("sRole",sLabel); + VisaCommonEngine engineRole=getVisaCommbyRoleName(sRole); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName(sRole,sLabel); sRet = ReadDevice(instrcutLibRole,&engineRole); }else{ BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 2bf97e3..6593d87 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1014,6 +1014,18 @@ //示波器标准装置 DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); break; + //微波衰减标准装置 + case 11: + DataList=BaseCommonApi::getDeviceMicrowaveAttenuation(deviceCatoryName,CliTable[0].id,HeadList); + break; + //低频信号发生器标准装置 + case 16: + DataList=BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList); + break; + //小功率标准装置 + case 15: + DataList=BaseCommonApi::getDeviceSmallPower(deviceCatoryName,CliTable[0].id,HeadList); + break; } return DataList; @@ -1235,15 +1247,16 @@ Data.append(row[7]); //量程 Data.append(row[8]); //标准值 Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1268,14 +1281,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1299,14 +1313,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1333,14 +1348,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1364,14 +1380,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /* 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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -2460,6 +2477,7 @@ return isSuccess; }; + //计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备 bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure) { @@ -2468,6 +2486,7 @@ " (id,data_id,equipment_id,create_time,update_time) " " VALUES " " (:id,:data_id,:equipment_id,:create_time,:update_time)"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); // QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":id", deviceMeasure.id); @@ -2513,12 +2532,14 @@ //【结果保存】示波器 DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast(entity); //【结果保存】二等铂电阻 - DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); + DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); //【结果保存】频谱分析仪 DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast(entity); //【结果保存】信号发生器 - DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); + DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); if(orderInfo !=nullptr){ + + resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'") .arg("'" + orderInfo->customer_name + "'") .arg("'" + orderInfo->require_over_time + "'") @@ -4079,7 +4100,7 @@ break; } case 10: { - //信号 + //信号发生器 DeviceMeasureDataSignalGenerator *generator = dynamic_cast(object); if (generator != nullptr) { result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator); @@ -4100,6 +4121,27 @@ } break; } + case 11: { + //微波衰减器 InsertDeviceMicrowaveAttenuation + MicrowaveAttenuationCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceMicrowaveAttenuation(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + case 16: { + //低频信号发生器 + LFSignalGeneratoCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceLFSignalGenerator(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + // 可能还有其他的case default: result = false; @@ -6512,7 +6554,468 @@ } return result; } +QMap> BaseCommonApi::getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT bbdmidama.*,bbdmii.attenuation_amount FROM biz_business_device_measure_item_data_microwave_attenuation bbdmidama" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidama.item_id" + " WHERE bbdmidama.item_id = :itemId ORDER BY bbdmidama.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("attenuation_amount").toString()); //检定项目状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("nominal_value_unit").toString()); //标称值单位 7 + result.append(query.value("composition").toString()); //组合方式 + result.append(query.value("urel").toString()); //U(k=2) + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_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= GetDataReturnItemListByMicrowaveAttenuation(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList PadValueList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2]=="1" && row[3] == "1") { + VerificationItem = "衰减量"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"组合方式" + <<"直通测量值"<<"加入衰减测量值"<<"指标下限"<<"衰减量" + <<"指标上限"<<"U(k=2)"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append(row[6]+row[7]);//标称值 + Data.append(row[8]);//组合方式 + Data.append("");//直通测量值 + Data.append("");//加入衰减测量值 + Data.append(QString::number(row[6].toDouble()-row[11].toDouble())+row[7]);//指标下限 + Data.append("");//衰减量 + Data.append(QString::number(row[6].toDouble()+row[11].toDouble())+row[7]);//指标上限 + Data.append("");//U(k=2) + Data.append(row[9]);//结论 + PadValueList.append(Data); + } + } + if(PadValueList.count()!=0){ + DataMapList.insert("衰减量",PadValueList); + }; + return DataMapList; +} +// 【结果保存】 微波衰减器 +bool BaseCommonApi::InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_microwave_attenuation " + " (id,data_id,data_type,frequency,frequency_unit,nominal_value, " + " nominal_value_unit,composition,direct_measure_value,add_measure_value, " + " attenuation_amount,lower_index,upper_index,urel,conclusion,exceed_mark, " + " create_time,update_time)VALUES( " + " :id,:data_id,:data_type,:frequency,:frequency_unit,:nominal_value, " + " :nominal_value_unit,:composition,:direct_measure_value,:add_measure_value, " + " :attenuation_amount,:lower_index,:upper_index,:urel,:conclusion,:exceed_mark," + " :create_time,:update_time " + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":nominal_value_unit", scope.nominal_value_unit); + query.bindValue(":composition", scope.composition); + query.bindValue(":direct_measure_value", scope.direct_measure_value); + query.bindValue(":add_measure_value", scope.add_measure_value); + query.bindValue(":attenuation_amount", scope.attenuation_amount); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +QMap> BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT *,bbdmii.frequency as freq FROM biz_business_device_measure_item_data_low_frequency_signal bbdmidlfs" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlfs.item_id" + " WHERE bbdmidlfs.item_id = :itemId ORDER BY bbdmidlfs.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("freq").toString()); //频率状态 3 + result.append(query.value("harmonic_distortion").toString()); //谐波失真状态 4 + result.append(query.value("rise_time").toString()); //上升时间状态 5 + result.append(query.value("ac_voltage").toString()); //交流电压状态 6 + result.append(query.value("dc_voltage").toString()); //直流电流状态 7 + result.append(query.value("sinusoid_flatness").toString()); //正弦信号平坦度状态 8 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("unit").toString()); //标称值单位 12 + result.append(query.value("amplitude").toString()); //幅度 + result.append(query.value("amplitude_unit").toString()); //幅度单位 + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_unit").toString()); //技术指标单位 17 + result.append(query.value("ac_frequency").toString()); //交流频率 + result.append(query.value("ac_frequency_unit").toString()); //交流频率单位 + result.append(query.value("valid_digit").toString()); //有效位数 + result.append(query.value("datum_point").toString()); //是否为基准点(1/0) 21 + result.append(query.value("voltage").toString()); //电压 + result.append(query.value("voltage_unit").toString()); //电压单位 + result.append(query.value("value_one").toString()); //数值1(不带%,计算技术指标使用) + result.append(query.value("value_two").toString()); //数值2(计算技术指标使用) 25 + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList freqList; + QList ac_voltageList; + QList dc_voltageList; + QList rise_timeList; + QList sinusoid_flatnessList; + QList harmonic_distortionList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "频率"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论"<<"有效位数"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + Data.append(row[20]);//有效位数 + freqList.append(Data); + }else if(!row.isEmpty() && row[6]=="1" && row[2] == "2") { + VerificationItem = "交流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"交流频率"<<"指标下限" + <<"测量值"<<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(row[18]+row[19]);//交流频率 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + ac_voltageList.append(Data); + }else if(!row.isEmpty() && row[7]=="1" && row[2] == "3") { + VerificationItem = "直流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-row[16].toDouble())+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+row[16].toDouble())+row[12]);//指标上限 + Data.append("");//结论 + dc_voltageList.append(Data); + }else if(!row.isEmpty() && row[5]=="1" && row[2] == "4") { + VerificationItem = "上升时间"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"上升时间" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率 + Data.append(row[13]+row[14]);//幅度 + Data.append("");//上升时间 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + rise_timeList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "正弦信号平坦度"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"电压"<<"频率点"<<"测量值" + <<"平坦度"<<"技术指标"<<"结论"<<"基准点" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[22]+row[23]);//电压 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append("");//平坦度 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + Data.append(row[21]);//基准点 + sinusoid_flatnessList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "总谐波失真"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"测量值" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + harmonic_distortionList.append(Data); + } + } + if(freqList.count()!=0){ + DataMapList.insert("频率",freqList); + }; + if(ac_voltageList.count()!=0){ + DataMapList.insert("交流电压",ac_voltageList); + }; + if(dc_voltageList.count()!=0){ + DataMapList.insert("直流电压",dc_voltageList); + }; + if(rise_timeList.count()!=0){ + DataMapList.insert("上升时间",rise_timeList); + }; + if(sinusoid_flatnessList.count()!=0){ + DataMapList.insert("正弦信号平坦度",sinusoid_flatnessList); + }; + if(harmonic_distortionList.count()!=0){ + DataMapList.insert("总谐波失真",harmonic_distortionList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_frequency_signal(id,data_id,data_type," + " nominal_value,unit,upper_index,lower_index,measure_value,measure_value_unit,conclusion," + " convert_deviation,frequency,frequency_unit,voltage,voltage_unit,rise_time,datum_point," + " ac_frequency,ac_frequency_unit,amplitude,amplitude_unit,flatness,technical_index_symbol," + " technical_index,technical_index_unit,exceed_mark,create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :nominal_value,:unit,:upper_index,:lower_index,:measure_value,:measure_value_unit,:conclusion," + " :convert_deviation,:frequency,:frequency_unit,:voltage,:voltage_unit,:rise_time,:datum_point," + " :ac_frequency,:ac_frequency_unit,:amplitude,:amplitude_unit,:flatness,:technical_index_symbol," + " :technical_index,:technical_index_unit,:exceed_mark,:create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":unit", scope.unit); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":measure_value", scope.measure_value); + query.bindValue(":measure_value_unit", scope.measure_value_unit); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":convert_deviation", scope.convert_deviation); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":voltage", scope.voltage); + query.bindValue(":voltage_unit", scope.voltage_unit); + query.bindValue(":rise_time", scope.rise_time); + query.bindValue(":datum_point", scope.datum_point); + query.bindValue(":ac_frequency", scope.ac_frequency); + query.bindValue(":ac_frequency_unit", scope.ac_frequency_unit); + query.bindValue(":amplitude", scope.amplitude); + query.bindValue(":amplitude_unit", scope.amplitude_unit); + query.bindValue(":flatness", scope.flatness); + query.bindValue(":technical_index_symbol", scope.technical_index_symbol); + query.bindValue(":technical_index", scope.technical_index); + query.bindValue(":technical_index_unit", scope.technical_index_unit); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +//检定项-小功率装置 +QMap> BaseCommonApi::getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT bbdmidlp.*,bbdmii.calibration_factor FROM biz_business_device_measure_item_data_low_power bbdmidlp" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlp.item_id" + " WHERE bbdmidlp.item_id = :itemId ORDER BY bbdmidlp.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("calibration_factor").toString()); //启动状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 5 + result.append(query.value("kc").toString()); //Kc/% + result.append(query.value("standard_reflection_coefficient").toString()); //标准反射系数ГGe + result.append(query.value("device_reflection_coefficient").toString()); //被检设备反射系数Гu 8 + result.append(query.value("urel").toString()); //U(k=2) + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList calibrationFactorList; + + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "校准因子"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"Pcu/mW"<<"Kc/%" + <<"被测探头示数Pbu/mW"<<"标准反射系数ГGe"<<"被检设备反射系数Гu" + <<"被测探头校准因子Kb/%"<<"U(k=2)"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append("");//幅度 + Data.append(row[6]);//Kc/% + Data.append("");//被测探头示数Pbu/mW + Data.append(row[7]);//标准反射系数ГGe + Data.append(row[8]);//被检设备反射系数Гu + Data.append("");//被测探头校准因子Kb/% + Data.append(row[9]);//U(k=2) + calibrationFactorList.append(Data); + } + } + if(calibrationFactorList.count()!=0){ + DataMapList.insert("校准因子",calibrationFactorList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceSmallPower(SmallPowerCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_power(id,data_id,data_type," + " frequency,frequency_unit,pcu,kc,probe_pbu,standard_reflection_coefficient," + " device_reflection_coefficient,probe_calibration_factor,urel,exceed_mark," + " create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :frequency,:frequency_unit,:pcu,:kc,:probe_pbu,:standard_reflection_coefficient," + " :device_reflection_coefficient,:probe_calibration_factor,:urel,:exceed_mark," + " :create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":pcu", scope.pcu); + query.bindValue(":kc", scope.kc); + query.bindValue(":probe_pbu", scope.probe_pbu); + query.bindValue(":standard_reflection_coefficient", scope.standard_reflection_coefficient); + query.bindValue(":device_reflection_coefficient", scope.device_reflection_coefficient); + query.bindValue(":probe_calibration_factor", scope.probe_calibration_factor); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } //核查程序管理-核查设置-多功能校准源 参数设备id 同信息管理-标准设备管理-核查项及核查点 QMap>> BaseCommonApi::getStandardCheckItemDataCalibrator(QString equipment_id,QMap> *headList) diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index c3314ce..f4dffc8 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1089,6 +1089,83 @@ QString create_time; QString update_time; }; +//结果保存-微波衰减器-查询 +class MicrowaveAttenuationCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString nominal_value_unit; + QString composition; + QString direct_measure_value; + QString add_measure_value; + QString attenuation_amount; + QString lower_index; + QString upper_index; + QString urel; + QString conclusion; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-小功率-查询 +class SmallPowerCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString pcu; + QString kc; + QString probe_pbu; + QString standard_reflection_coefficient; + QString device_reflection_coefficient; + QString probe_calibration_factor; + QString urel; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-低频信号-查询 +class LFSignalGeneratoCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString unit; + QString lower_index; + QString upper_index; + QString urel; + QString measure_value; + QString measure_value_unit; + QString conclusion; + QString convert_deviation; + QString voltage; + QString voltage_unit; + QString rise_time; + QString datum_point; + QString ac_frequency; + QString ac_frequency_unit; + QString amplitude; + QString amplitude_unit; + QString flatness; + QString technical_index_symbol; + QString technical_index; + QString technical_index_unit; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; //结果保存-示波器装置-查询 class DeviceOscilloscopeCalibration:public BaseClass { @@ -1720,6 +1797,20 @@ static QList getStandardInfo(); //根据标准装置id查询标准设备 static QList getStandardInfoListByStandardId(QString standardId); + + //【查询】检定项-微波衰减器 + static QMap> getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope); + //【查询】检定项-低频信号装置 + static QMap> getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope); + //【查询】检定项-小功率装置 + static QMap> getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceSmallPower(SmallPowerCalibration scope); + //【保存】核查基本信息 static bool InsertStandardCheckInfo(StandardCheckInfo info); //【查询】核查项-多功能校准源 @@ -1731,10 +1822,6 @@ static QMap>> getStandardCheckItemDataResistanceThermometer(QString equipment_id,QMap> *headList); static QMap>> GetDataReturnItemListByCheckItemDataResistanceThermometer(QList ResultData,QMap>> DataMapList,QMap> *headList); - - - - //同步成功后更新检定项字段 static bool UpdateMeasureItemInfo(QString item_id); //配套设备关联表 diff --git a/softwareDirectory/AutoVerScheme/checkdevice.cpp b/softwareDirectory/AutoVerScheme/checkdevice.cpp index ca8c64c..5283198 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.cpp +++ b/softwareDirectory/AutoVerScheme/checkdevice.cpp @@ -18,6 +18,7 @@ ui->tableWidget_4->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); //getCheckDevice(); getStandardDevice(); + } CheckDevice::~CheckDevice() @@ -67,6 +68,7 @@ void CheckDevice::getStandardDevice() { bizDeviceList.clear(); + CheckState.clear(); bizDeviceList = BaseCommonApi::getBizDeviceManage(); QString sFilterName = ui->lineEdit_10->text(); QString sFilterModel = ui->lineEdit_11->text(); @@ -85,6 +87,7 @@ if(!bAdd){ bizDeviceList.removeAt(i); } + CheckState.insert(i,false); } page=20; pageIndex=-1; @@ -113,14 +116,25 @@ ui->tableWidget_4->insertRow(rowCount); //QCheckBox *checkBox = new QCheckBox; //ui->tableWidget_4->setCellWidget(row, 0, checkBox); + //checkBox->setChecked(CheckState.value(i)); QTableWidgetItem* p_check = new QTableWidgetItem(); p_check->setCheckState(Qt::Unchecked); ui->tableWidget_4->setItem(row,0,p_check); + //connect(checkBox, &QCheckBox::stateChanged, this, [this,i,checkBox]() { + // 获取当前行第一列的 ID + + // OnitemChanged(i,checkBox->checkState()); + + + //}); + ui->tableWidget_4->setItem(row, 1, new QTableWidgetItem(bizDevice.equipment_name)); ui->tableWidget_4->setItem(row, 2, new QTableWidgetItem(bizDevice.model)); ui->tableWidget_4->setItem(row, 3, new QTableWidgetItem(bizDevice.manufacture_no)); ui->tableWidget_4->setItem(row, 4, new QTableWidgetItem(bizDevice.manufacturer)); row++; + + } } @@ -181,3 +195,12 @@ ui->lineEdit_12->setText(""); getStandardDevice(); } +void CheckDevice::OnitemChanged(int index,Qt::CheckState CurrState) +{ + if(CurrState==Qt::Unchecked){ + CheckState[index] = false; + }else{ + CheckState[index] = true; + } + +} diff --git a/softwareDirectory/AutoVerScheme/checkdevice.h b/softwareDirectory/AutoVerScheme/checkdevice.h index f8dddb3..c6700a4 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.h +++ b/softwareDirectory/AutoVerScheme/checkdevice.h @@ -29,7 +29,7 @@ void on_pushButton_18_clicked(); void onpageChanged(int currPage); - + void OnitemChanged(int currPage,Qt::CheckState State); private: void getCheckDevice(); void getStandardDevice(); @@ -43,6 +43,7 @@ int page; int totalcount; int pageIndex; + QMap CheckState; }; #endif // CHECKDEVICE_H diff --git a/softwareDirectory/AutoVerScheme/checkmethodmanage.h b/softwareDirectory/AutoVerScheme/checkmethodmanage.h index 0f6143e..ae021d7 100644 --- a/softwareDirectory/AutoVerScheme/checkmethodmanage.h +++ b/softwareDirectory/AutoVerScheme/checkmethodmanage.h @@ -34,7 +34,8 @@ QList programList; int editIdx=-1; QStringList equipList={"多功能校准源标准装置","直流稳压电源检定装置","多功能电气安全标准器标准装置","0.02级活塞式压力计标准装置","二等铂电阻温度计标准装置","安全阀校验装置", - "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置"}; + "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置" + ,"低频信号发生器标准装置","S参数标准装置","失真度标准装置"}; QList catList; int page; int totalcount; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index b227101..0b8dec3 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -1078,16 +1078,26 @@ ui->tableWidgetCheck->setCellWidget(i,j,tmp_widget); }else ui->tableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); - if(dataRes[i][1] == "DCV" || dataRes[i][1] == "DCI"){ - ui->tableWidgetCheck->hideColumn(10); - ui->tableWidgetCheck->hideColumn(11); - }else if (dataRes[i][1] == "ACV" || dataRes[i][1] == "ACI") { - ui->tableWidgetCheck->hideColumn(12); - ui->tableWidgetCheck->hideColumn(13); - }else if (dataRes[i][1] == "R") { - ui->tableWidgetCheck->hideColumn(11); - ui->tableWidgetCheck->hideColumn(12); - } + //需要界面Ui隐藏的列 + if(iEquipType==1){ + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("a"))); + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("b"))); + + /*if(dataRes[i][1] == "DCV" || dataRes[i][1] == "DCI"){ + ui->tableWidgetCheck->hideColumn(10); + ui->tableWidgetCheck->hideColumn(11); + }else if (dataRes[i][1] == "ACV" || dataRes[i][1] == "ACI") { + ui->tableWidgetCheck->hideColumn(12); + ui->tableWidgetCheck->hideColumn(13); + }else if (dataRes[i][1] == "R") { + ui->tableWidgetCheck->hideColumn(11); + ui->tableWidgetCheck->hideColumn(12); + }*/ + }else if(iEquipType==16){ + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("基准点"))); + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("有效位数"))); + } + } } @@ -1716,7 +1726,7 @@ QMessageBox::warning(this, "警告", "设备未连接!"); } return; - }else if(iEquipType==10){ + }else if(iEquipType==10 || iEquipType==16){ //信号源采集读数 标准器 this->SignalGeneratortextflow(); return; @@ -1753,13 +1763,23 @@ //暂时加到这个地方 后面统一编写 if(sParam=="DCI"||sParam=="ACI") { + int idx2= getIndexByHeader(constsLable,QStrTranQStrList("单位")); if(idx2!=-1) { QString ConstUnit=""; + QString Item; QString v=dataRes[i][idx2].toUpper(); - if(i!=0) - ConstUnit=dataRes[i-1][idx2].toUpper(); + if(i!=0){ + ConstUnit=dataRes[i-1][idx2].toUpper(); + Item=dataRes[i-1][idx]; + } + if(Item!=sParam){ + if(!this->showDialog("电流换线提醒",QString("换线提醒\n %1测试").arg(sParam).arg(v))) + { + continue; + } + } BaseCommonApi::SaveLogInfo(1,ConstUnit+"-"+v); if((ConstUnit=="MA" && v=="A") || (ConstUnit=="A" && v=="MA")) @@ -1784,34 +1804,79 @@ instrcutLibRole=getCmdByRoleName("电子负载",constsLable); SendDevice(instrcutLibRole,&engineRole); } + else if(iEquipType==11){ + + BaseCommonApi::SaveLogInfo(1,QString("信号发生器")); + VisaCommonEngine engineRole2=getVisaCommbyRoleName("信号发生器"); //角色 + InstructionLib *instrcutLibRole2=getCmdByRoleName("信号发生器",constsLable); + SendDevice(instrcutLibRole2,&engineRole2); + BaseCommonApi::SaveLogInfo(1,QString("测量接收机")); + VisaCommonEngine engineRole=getVisaCommbyRoleName("测量接收机"); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName("测量接收机",constsLable); + SendDevice(instrcutLibRole,&engineRole); + //校准流程 + bool IsCli=true; + if(i!=0){ + idx = getIndexByHeader(constsLable,QStrTranQStrList("频率")); + QString FreqValue,PageFreqValue; + FreqValue=Removeunit(dataRes[i][idx]); + PageFreqValue=Removeunit(dataRes[i-1][idx]); + if(PageFreqValue==FreqValue){ + IsCli=false; + } + } + if(IsCli){ + //&& 只在频率切换时进行校准 + //功率校准 + InstructionLib *PowerPage=getCmdByRoleName("测量接收机","界面切换"); + InstructionLib *PowerCali=getCmdByRoleName("信号发生器","校准"); + InstructionLib *PowerCaliSt=getCmdByRoleName("测量接收机","校准"); + if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ + InstructionLib Temp; + InstructionLib TempSt; + for(QString item:PowerCali->instruct_read.split(';')) + { + Temp.instruct_config=item; + SendDevice(&Temp,&deviceEngine); + if(item.contains("20")){ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + }else{ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + } + } + } + } + + sRet=ReadDevice(instrcutLibRole,&engineRole); + } else { + InstructionLib *instrcutLibstan = getCmdByCheckName(1,sParam); SendDevice(instrcutLibstan,&standardEngine,true); //被检设备读数 BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); SendDevice(instrcutLib,&deviceEngine); - //在被检设备读数前 - if(iEquipType==10){ - if(sParam=="功率"){ - //功率开始测试前进行校准 - InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); - InstructionLib *PowerCali=getCmdByCheckName(1,"功率校准"); - InstructionLib *PowerDevice=getCmdByCheckName(1,constsLable); - QStringList ReadCmd=PowerCali->instruct_read.split(';'); - for(int i=0;itableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } @@ -2744,6 +2822,165 @@ BaseCommonApi::SaveLogInfo(1,QString("转换后 THD 测试值 %1").arg(newdStdValue)); } } + else if(iEquipType==11){ + bool State=true; + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被测量值"); + State=false; + } + int idx=-1; + int idx2=-1; + double Upp,low; + QString Resdata,data,unit; + unit="dBm"; + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList("直通测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + if(State){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("组合方式")); + if(!this->showDialog("加入衰减测量值提醒",QString("组合方式 %1").arg(dataRes[i][idx]))) + { + return; + } + BaseCommonApi::SaveLogInfo(1,QString("测量接收机")); + VisaCommonEngine engineRole=getVisaCommbyRoleName("测量接收机"); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName("测量接收机",constsLable); + SendDevice(instrcutLibRole,&engineRole); + dStdValue=ReadDevice(instrcutLibRole,&engineRole).toDouble(); + }else{ + dStdValue=InputDialog("请输入加入衰减测量值"); + } + Resdata=QString::number(newdStdValue.toDouble()-dStdValue); + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList("加入衰减测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + idx= getIndexByHeader(sLabel,QStrTranQStrList("衰减量")); + dataRes[i][idx]=Resdata+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(Resdata+unit)); //衰减量 + idx= getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + idx2= getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + + Upp=Removeunit(dataRes[i][idx]).toDouble(); + low=Removeunit(dataRes[i][idx2]).toDouble(); + idx= getIndexByHeader(sLabel,QStrTranQStrList("结论")); + if(Resdata.toDouble()>low && Resdata.toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("符合指标")); + }else{ + dataRes[i][idx]="不符合"; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("不符合")); + } + + } + else if(iEquipType==16){ + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被检示值"); + } + int idx=-1; + int idx2=-1; + QString data,unit,dataTemp; + bool datum=false; + // QString Resultdata,Resiltunit; + if(sLabel=="频率" || sLabel=="交流电压" || sLabel=="直流电压"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="交流电压" || sLabel=="直流电压"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + idx= getIndexByHeader(sLabel,QStrTranQStrList("有效位数")); + newdStdValue=QString::number(dStdValue,'f',dataRes[i][idx].toInt()); + } + + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="上升时间"){ + //寻找单位 + idx= getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + int lastDigitIndex = dataRes[i][idx].lastIndexOf(QRegExp("[0-9]")); + if(lastDigitIndex!=-1){ + //寻找单位 + unit=dataRes[i][idx].mid(lastDigitIndex + 1); + }else{ + unit=""; + } + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList(sLabel)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //上升时间 + }else if(sLabel=="正弦信号平坦度"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("电压")); + ItemUnitSplit(dataRes[i][idx],data,unit); + newdStdValue=QString::number(dStdValue,'f',3); + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + + idx= getIndexByHeader(sLabel,QStrTranQStrList("基准点")); + if(dataRes[i][idx]=="1"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + dataRes[i][idx]=newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //平坦度 + }else{ + idx2= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + //寻找基准点测量值 + for(QStringList item:dataRes){ + if(item[idx]=="1"){ + data=item[idx2]; + datum=true; + } + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + dataRes[i][idx]=QString::number((dataRes[i][idx].toDouble()-data.toDouble())/data.toDouble()); + } + dataTemp="不符合"; + idx=getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + idx2= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + data=dataRes[i][idx]; + if(datum){ + dataTemp="基准点"; + }else{ + if(data.contains("<")){ + QRegularExpression re("[^\\d]+"); + data=data.replace(re, ""); + if(dataRes[i][idx2].toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(dataTemp)); //结论 + } + else if(sLabel=="总谐波失真"){ + unit = "%"; + idx2= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + newdStdValue=QString::number(dStdValue,'f',3); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + + dataTemp="不符合"; + idx=getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + data=dataRes[i][idx]; + if(data.contains("<")){ + QRegularExpression re("[^\\d]+"); + data=data.replace(re, ""); + if(dataRes[i][idx2].toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(dataTemp)); //结论 + } + } } void CheckWindow::Oscilloscopetextflow() { @@ -3093,9 +3330,9 @@ if(IsCli){ //&& 只在频率切换时进行校准 //功率校准 - InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); - InstructionLib *PowerCali=getCmdByCheckName(0,"功率校准"); - InstructionLib *PowerCaliSt=getCmdByCheckName(1,"功率校准"); + InstructionLib *PowerPage=getCmdByCheckName(1,"界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(0,"校准"); + InstructionLib *PowerCaliSt=getCmdByCheckName(1,"校准"); if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ InstructionLib Temp; InstructionLib TempSt; @@ -3722,8 +3959,8 @@ else if(sLabel=="电流示值误差(直接测量)") sRole ="电流表"; BaseCommonApi::SaveLogInfo(1,QString("可编程交流电源读取数值")); - VisaCommonEngine engineRole=getVisaCommbyRoleName("sRole"); //角色 - InstructionLib *instrcutLibRole=getCmdByRoleName("sRole",sLabel); + VisaCommonEngine engineRole=getVisaCommbyRoleName(sRole); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName(sRole,sLabel); sRet = ReadDevice(instrcutLibRole,&engineRole); }else{ BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 0367ee1..a6a927f 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -186,9 +186,9 @@ return ""; } -int DialogCheckResult::getDictebyItemName(QString Name) +QString DialogCheckResult::getDictebyItemName(QString Name) { - int NewName=0; + QString NewName="0"; if(checkitemlist.keys().contains(Name)) { NewName=checkitemlist.value(Name); @@ -820,14 +820,14 @@ //示波器检定装置 else if(iEquipType==13) { - checkitemlist.insert("时基",1); - checkitemlist.insert("直流增益",2); - checkitemlist.insert("直流偏置",3); - checkitemlist.insert("频带宽度",4); - checkitemlist.insert("触发灵敏度",5); - checkitemlist.insert("上升时间",6); - checkitemlist.insert("输入电阻",7); - checkitemlist.insert("校准信号",8); + checkitemlist.insert("时基","1"); + checkitemlist.insert("直流增益","2"); + checkitemlist.insert("直流偏置","3"); + checkitemlist.insert("频带宽度","4"); + checkitemlist.insert("触发灵敏度","5"); + checkitemlist.insert("上升时间","6"); + checkitemlist.insert("输入电阻","7"); + checkitemlist.insert("校准信号","8"); QString Value,Unit; //ItemUnitSplit for (int i = 0; i < dataRes.count(); ++i) { @@ -881,7 +881,86 @@ measItem.bottom_measure_value=Value; measItem.bottom_measure_value_unit=Unit; //decibel_number - BaseCommonApi::InsertDeviceOscilloscopeCalibration(measItem); + BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); + } + } + //微波衰减器 + else if(iEquipType==11){ + QString Value,Unit; + //ItemUnitSplit + for (int i = 0; i < dataRes.count(); ++i) { + MicrowaveAttenuationCalibration measItem; + measItem.id = QString::number(api.generateId()); + measItem.data_id = measInfo.id; + measItem.data_type = "1"; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),Value,Unit); + measItem.nominal_value=Value; + measItem.nominal_value_unit=Unit; + measItem.composition=getValueByHeader(i,sLabel,"组合方式"); + measItem.direct_measure_value=getValueByHeader(i,sLabel,"直接测量值"); + measItem.add_measure_value=getValueByHeader(i,sLabel,"加入衰减测量值"); + measItem.attenuation_amount=getValueByHeader(i,sLabel,"衰减量"); + measItem.lower_index=getValueByHeader(i,sLabel,"指标下限"); + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + measItem.conclusion=getValueByHeader(i,sLabel,"结论"); + //decibel_number + BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); + } + } + else if(iEquipType==16){ + checkitemlist.insert("频率","1"); + checkitemlist.insert("交流电压","2"); + checkitemlist.insert("直流电压","3"); + checkitemlist.insert("上升时间","4"); + checkitemlist.insert("正弦信号平坦度","5"); + checkitemlist.insert("正弦信号平坦度","6"); + QString Value,Unit; + //ItemUnitSplit + for (int i = 0; i < dataRes.count(); ++i) { + LFSignalGeneratoCalibration measItem; + measItem.id = QString::number(api.generateId()); + measItem.data_id = measInfo.id; + measItem.data_type = getDictebyItemName(getValueByHeader(i,sLabel,"检定项目")); + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),Value,Unit); + measItem.nominal_value=Value; + measItem.unit=Unit; + measItem.lower_index=getValueByHeader(i,sLabel,"指标下限"); + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + measItem.conclusion=getValueByHeader(i,sLabel,"结论"); + //measItem.convert_deviation=""; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"电压"),Value,Unit); + measItem.voltage=Value; + measItem.voltage_unit=Unit; + measItem.rise_time=getValueByHeader(i,sLabel,"上升时间"); + //是否为基准点 如何判断 需确定 + measItem.datum_point="0"; + ItemUnitSplit(getValueByHeader(i,sLabel,"交流频率"),Value,Unit); + measItem.ac_frequency=Value; + measItem.ac_frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"幅度"),Value,Unit); + measItem.amplitude=Value; + measItem.amplitude_unit=Unit; + measItem.flatness=getValueByHeader(i,sLabel,"平坦度"); + //超出范围标*(1/0)界面没有 + Value=getValueByHeader(i,sLabel,"技术指标"); + if(Value!=""){ + measItem.technical_index=Value.mid(1, Value.count() - 1); + measItem.technical_index_symbol=Value.left(1); + measItem.technical_index_unit= Value.right(1); + } + + + BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); } } } diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 2bf97e3..6593d87 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1014,6 +1014,18 @@ //示波器标准装置 DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); break; + //微波衰减标准装置 + case 11: + DataList=BaseCommonApi::getDeviceMicrowaveAttenuation(deviceCatoryName,CliTable[0].id,HeadList); + break; + //低频信号发生器标准装置 + case 16: + DataList=BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList); + break; + //小功率标准装置 + case 15: + DataList=BaseCommonApi::getDeviceSmallPower(deviceCatoryName,CliTable[0].id,HeadList); + break; } return DataList; @@ -1235,15 +1247,16 @@ Data.append(row[7]); //量程 Data.append(row[8]); //标准值 Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1268,14 +1281,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1299,14 +1313,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1333,14 +1348,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1364,14 +1380,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /* 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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -2460,6 +2477,7 @@ return isSuccess; }; + //计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备 bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure) { @@ -2468,6 +2486,7 @@ " (id,data_id,equipment_id,create_time,update_time) " " VALUES " " (:id,:data_id,:equipment_id,:create_time,:update_time)"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); // QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":id", deviceMeasure.id); @@ -2513,12 +2532,14 @@ //【结果保存】示波器 DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast(entity); //【结果保存】二等铂电阻 - DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); + DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); //【结果保存】频谱分析仪 DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast(entity); //【结果保存】信号发生器 - DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); + DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); if(orderInfo !=nullptr){ + + resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'") .arg("'" + orderInfo->customer_name + "'") .arg("'" + orderInfo->require_over_time + "'") @@ -4079,7 +4100,7 @@ break; } case 10: { - //信号 + //信号发生器 DeviceMeasureDataSignalGenerator *generator = dynamic_cast(object); if (generator != nullptr) { result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator); @@ -4100,6 +4121,27 @@ } break; } + case 11: { + //微波衰减器 InsertDeviceMicrowaveAttenuation + MicrowaveAttenuationCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceMicrowaveAttenuation(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + case 16: { + //低频信号发生器 + LFSignalGeneratoCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceLFSignalGenerator(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + // 可能还有其他的case default: result = false; @@ -6512,7 +6554,468 @@ } return result; } +QMap> BaseCommonApi::getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT bbdmidama.*,bbdmii.attenuation_amount FROM biz_business_device_measure_item_data_microwave_attenuation bbdmidama" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidama.item_id" + " WHERE bbdmidama.item_id = :itemId ORDER BY bbdmidama.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("attenuation_amount").toString()); //检定项目状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("nominal_value_unit").toString()); //标称值单位 7 + result.append(query.value("composition").toString()); //组合方式 + result.append(query.value("urel").toString()); //U(k=2) + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_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= GetDataReturnItemListByMicrowaveAttenuation(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList PadValueList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2]=="1" && row[3] == "1") { + VerificationItem = "衰减量"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"组合方式" + <<"直通测量值"<<"加入衰减测量值"<<"指标下限"<<"衰减量" + <<"指标上限"<<"U(k=2)"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append(row[6]+row[7]);//标称值 + Data.append(row[8]);//组合方式 + Data.append("");//直通测量值 + Data.append("");//加入衰减测量值 + Data.append(QString::number(row[6].toDouble()-row[11].toDouble())+row[7]);//指标下限 + Data.append("");//衰减量 + Data.append(QString::number(row[6].toDouble()+row[11].toDouble())+row[7]);//指标上限 + Data.append("");//U(k=2) + Data.append(row[9]);//结论 + PadValueList.append(Data); + } + } + if(PadValueList.count()!=0){ + DataMapList.insert("衰减量",PadValueList); + }; + return DataMapList; +} +// 【结果保存】 微波衰减器 +bool BaseCommonApi::InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_microwave_attenuation " + " (id,data_id,data_type,frequency,frequency_unit,nominal_value, " + " nominal_value_unit,composition,direct_measure_value,add_measure_value, " + " attenuation_amount,lower_index,upper_index,urel,conclusion,exceed_mark, " + " create_time,update_time)VALUES( " + " :id,:data_id,:data_type,:frequency,:frequency_unit,:nominal_value, " + " :nominal_value_unit,:composition,:direct_measure_value,:add_measure_value, " + " :attenuation_amount,:lower_index,:upper_index,:urel,:conclusion,:exceed_mark," + " :create_time,:update_time " + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":nominal_value_unit", scope.nominal_value_unit); + query.bindValue(":composition", scope.composition); + query.bindValue(":direct_measure_value", scope.direct_measure_value); + query.bindValue(":add_measure_value", scope.add_measure_value); + query.bindValue(":attenuation_amount", scope.attenuation_amount); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +QMap> BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT *,bbdmii.frequency as freq FROM biz_business_device_measure_item_data_low_frequency_signal bbdmidlfs" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlfs.item_id" + " WHERE bbdmidlfs.item_id = :itemId ORDER BY bbdmidlfs.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("freq").toString()); //频率状态 3 + result.append(query.value("harmonic_distortion").toString()); //谐波失真状态 4 + result.append(query.value("rise_time").toString()); //上升时间状态 5 + result.append(query.value("ac_voltage").toString()); //交流电压状态 6 + result.append(query.value("dc_voltage").toString()); //直流电流状态 7 + result.append(query.value("sinusoid_flatness").toString()); //正弦信号平坦度状态 8 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("unit").toString()); //标称值单位 12 + result.append(query.value("amplitude").toString()); //幅度 + result.append(query.value("amplitude_unit").toString()); //幅度单位 + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_unit").toString()); //技术指标单位 17 + result.append(query.value("ac_frequency").toString()); //交流频率 + result.append(query.value("ac_frequency_unit").toString()); //交流频率单位 + result.append(query.value("valid_digit").toString()); //有效位数 + result.append(query.value("datum_point").toString()); //是否为基准点(1/0) 21 + result.append(query.value("voltage").toString()); //电压 + result.append(query.value("voltage_unit").toString()); //电压单位 + result.append(query.value("value_one").toString()); //数值1(不带%,计算技术指标使用) + result.append(query.value("value_two").toString()); //数值2(计算技术指标使用) 25 + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList freqList; + QList ac_voltageList; + QList dc_voltageList; + QList rise_timeList; + QList sinusoid_flatnessList; + QList harmonic_distortionList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "频率"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论"<<"有效位数"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + Data.append(row[20]);//有效位数 + freqList.append(Data); + }else if(!row.isEmpty() && row[6]=="1" && row[2] == "2") { + VerificationItem = "交流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"交流频率"<<"指标下限" + <<"测量值"<<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(row[18]+row[19]);//交流频率 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + ac_voltageList.append(Data); + }else if(!row.isEmpty() && row[7]=="1" && row[2] == "3") { + VerificationItem = "直流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-row[16].toDouble())+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+row[16].toDouble())+row[12]);//指标上限 + Data.append("");//结论 + dc_voltageList.append(Data); + }else if(!row.isEmpty() && row[5]=="1" && row[2] == "4") { + VerificationItem = "上升时间"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"上升时间" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率 + Data.append(row[13]+row[14]);//幅度 + Data.append("");//上升时间 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + rise_timeList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "正弦信号平坦度"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"电压"<<"频率点"<<"测量值" + <<"平坦度"<<"技术指标"<<"结论"<<"基准点" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[22]+row[23]);//电压 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append("");//平坦度 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + Data.append(row[21]);//基准点 + sinusoid_flatnessList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "总谐波失真"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"测量值" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + harmonic_distortionList.append(Data); + } + } + if(freqList.count()!=0){ + DataMapList.insert("频率",freqList); + }; + if(ac_voltageList.count()!=0){ + DataMapList.insert("交流电压",ac_voltageList); + }; + if(dc_voltageList.count()!=0){ + DataMapList.insert("直流电压",dc_voltageList); + }; + if(rise_timeList.count()!=0){ + DataMapList.insert("上升时间",rise_timeList); + }; + if(sinusoid_flatnessList.count()!=0){ + DataMapList.insert("正弦信号平坦度",sinusoid_flatnessList); + }; + if(harmonic_distortionList.count()!=0){ + DataMapList.insert("总谐波失真",harmonic_distortionList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_frequency_signal(id,data_id,data_type," + " nominal_value,unit,upper_index,lower_index,measure_value,measure_value_unit,conclusion," + " convert_deviation,frequency,frequency_unit,voltage,voltage_unit,rise_time,datum_point," + " ac_frequency,ac_frequency_unit,amplitude,amplitude_unit,flatness,technical_index_symbol," + " technical_index,technical_index_unit,exceed_mark,create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :nominal_value,:unit,:upper_index,:lower_index,:measure_value,:measure_value_unit,:conclusion," + " :convert_deviation,:frequency,:frequency_unit,:voltage,:voltage_unit,:rise_time,:datum_point," + " :ac_frequency,:ac_frequency_unit,:amplitude,:amplitude_unit,:flatness,:technical_index_symbol," + " :technical_index,:technical_index_unit,:exceed_mark,:create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":unit", scope.unit); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":measure_value", scope.measure_value); + query.bindValue(":measure_value_unit", scope.measure_value_unit); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":convert_deviation", scope.convert_deviation); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":voltage", scope.voltage); + query.bindValue(":voltage_unit", scope.voltage_unit); + query.bindValue(":rise_time", scope.rise_time); + query.bindValue(":datum_point", scope.datum_point); + query.bindValue(":ac_frequency", scope.ac_frequency); + query.bindValue(":ac_frequency_unit", scope.ac_frequency_unit); + query.bindValue(":amplitude", scope.amplitude); + query.bindValue(":amplitude_unit", scope.amplitude_unit); + query.bindValue(":flatness", scope.flatness); + query.bindValue(":technical_index_symbol", scope.technical_index_symbol); + query.bindValue(":technical_index", scope.technical_index); + query.bindValue(":technical_index_unit", scope.technical_index_unit); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +//检定项-小功率装置 +QMap> BaseCommonApi::getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT bbdmidlp.*,bbdmii.calibration_factor FROM biz_business_device_measure_item_data_low_power bbdmidlp" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlp.item_id" + " WHERE bbdmidlp.item_id = :itemId ORDER BY bbdmidlp.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("calibration_factor").toString()); //启动状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 5 + result.append(query.value("kc").toString()); //Kc/% + result.append(query.value("standard_reflection_coefficient").toString()); //标准反射系数ГGe + result.append(query.value("device_reflection_coefficient").toString()); //被检设备反射系数Гu 8 + result.append(query.value("urel").toString()); //U(k=2) + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList calibrationFactorList; + + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "校准因子"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"Pcu/mW"<<"Kc/%" + <<"被测探头示数Pbu/mW"<<"标准反射系数ГGe"<<"被检设备反射系数Гu" + <<"被测探头校准因子Kb/%"<<"U(k=2)"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append("");//幅度 + Data.append(row[6]);//Kc/% + Data.append("");//被测探头示数Pbu/mW + Data.append(row[7]);//标准反射系数ГGe + Data.append(row[8]);//被检设备反射系数Гu + Data.append("");//被测探头校准因子Kb/% + Data.append(row[9]);//U(k=2) + calibrationFactorList.append(Data); + } + } + if(calibrationFactorList.count()!=0){ + DataMapList.insert("校准因子",calibrationFactorList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceSmallPower(SmallPowerCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_power(id,data_id,data_type," + " frequency,frequency_unit,pcu,kc,probe_pbu,standard_reflection_coefficient," + " device_reflection_coefficient,probe_calibration_factor,urel,exceed_mark," + " create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :frequency,:frequency_unit,:pcu,:kc,:probe_pbu,:standard_reflection_coefficient," + " :device_reflection_coefficient,:probe_calibration_factor,:urel,:exceed_mark," + " :create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":pcu", scope.pcu); + query.bindValue(":kc", scope.kc); + query.bindValue(":probe_pbu", scope.probe_pbu); + query.bindValue(":standard_reflection_coefficient", scope.standard_reflection_coefficient); + query.bindValue(":device_reflection_coefficient", scope.device_reflection_coefficient); + query.bindValue(":probe_calibration_factor", scope.probe_calibration_factor); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } //核查程序管理-核查设置-多功能校准源 参数设备id 同信息管理-标准设备管理-核查项及核查点 QMap>> BaseCommonApi::getStandardCheckItemDataCalibrator(QString equipment_id,QMap> *headList) diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index c3314ce..f4dffc8 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1089,6 +1089,83 @@ QString create_time; QString update_time; }; +//结果保存-微波衰减器-查询 +class MicrowaveAttenuationCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString nominal_value_unit; + QString composition; + QString direct_measure_value; + QString add_measure_value; + QString attenuation_amount; + QString lower_index; + QString upper_index; + QString urel; + QString conclusion; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-小功率-查询 +class SmallPowerCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString pcu; + QString kc; + QString probe_pbu; + QString standard_reflection_coefficient; + QString device_reflection_coefficient; + QString probe_calibration_factor; + QString urel; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-低频信号-查询 +class LFSignalGeneratoCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString unit; + QString lower_index; + QString upper_index; + QString urel; + QString measure_value; + QString measure_value_unit; + QString conclusion; + QString convert_deviation; + QString voltage; + QString voltage_unit; + QString rise_time; + QString datum_point; + QString ac_frequency; + QString ac_frequency_unit; + QString amplitude; + QString amplitude_unit; + QString flatness; + QString technical_index_symbol; + QString technical_index; + QString technical_index_unit; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; //结果保存-示波器装置-查询 class DeviceOscilloscopeCalibration:public BaseClass { @@ -1720,6 +1797,20 @@ static QList getStandardInfo(); //根据标准装置id查询标准设备 static QList getStandardInfoListByStandardId(QString standardId); + + //【查询】检定项-微波衰减器 + static QMap> getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope); + //【查询】检定项-低频信号装置 + static QMap> getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope); + //【查询】检定项-小功率装置 + static QMap> getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceSmallPower(SmallPowerCalibration scope); + //【保存】核查基本信息 static bool InsertStandardCheckInfo(StandardCheckInfo info); //【查询】核查项-多功能校准源 @@ -1731,10 +1822,6 @@ static QMap>> getStandardCheckItemDataResistanceThermometer(QString equipment_id,QMap> *headList); static QMap>> GetDataReturnItemListByCheckItemDataResistanceThermometer(QList ResultData,QMap>> DataMapList,QMap> *headList); - - - - //同步成功后更新检定项字段 static bool UpdateMeasureItemInfo(QString item_id); //配套设备关联表 diff --git a/softwareDirectory/AutoVerScheme/checkdevice.cpp b/softwareDirectory/AutoVerScheme/checkdevice.cpp index ca8c64c..5283198 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.cpp +++ b/softwareDirectory/AutoVerScheme/checkdevice.cpp @@ -18,6 +18,7 @@ ui->tableWidget_4->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); //getCheckDevice(); getStandardDevice(); + } CheckDevice::~CheckDevice() @@ -67,6 +68,7 @@ void CheckDevice::getStandardDevice() { bizDeviceList.clear(); + CheckState.clear(); bizDeviceList = BaseCommonApi::getBizDeviceManage(); QString sFilterName = ui->lineEdit_10->text(); QString sFilterModel = ui->lineEdit_11->text(); @@ -85,6 +87,7 @@ if(!bAdd){ bizDeviceList.removeAt(i); } + CheckState.insert(i,false); } page=20; pageIndex=-1; @@ -113,14 +116,25 @@ ui->tableWidget_4->insertRow(rowCount); //QCheckBox *checkBox = new QCheckBox; //ui->tableWidget_4->setCellWidget(row, 0, checkBox); + //checkBox->setChecked(CheckState.value(i)); QTableWidgetItem* p_check = new QTableWidgetItem(); p_check->setCheckState(Qt::Unchecked); ui->tableWidget_4->setItem(row,0,p_check); + //connect(checkBox, &QCheckBox::stateChanged, this, [this,i,checkBox]() { + // 获取当前行第一列的 ID + + // OnitemChanged(i,checkBox->checkState()); + + + //}); + ui->tableWidget_4->setItem(row, 1, new QTableWidgetItem(bizDevice.equipment_name)); ui->tableWidget_4->setItem(row, 2, new QTableWidgetItem(bizDevice.model)); ui->tableWidget_4->setItem(row, 3, new QTableWidgetItem(bizDevice.manufacture_no)); ui->tableWidget_4->setItem(row, 4, new QTableWidgetItem(bizDevice.manufacturer)); row++; + + } } @@ -181,3 +195,12 @@ ui->lineEdit_12->setText(""); getStandardDevice(); } +void CheckDevice::OnitemChanged(int index,Qt::CheckState CurrState) +{ + if(CurrState==Qt::Unchecked){ + CheckState[index] = false; + }else{ + CheckState[index] = true; + } + +} diff --git a/softwareDirectory/AutoVerScheme/checkdevice.h b/softwareDirectory/AutoVerScheme/checkdevice.h index f8dddb3..c6700a4 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.h +++ b/softwareDirectory/AutoVerScheme/checkdevice.h @@ -29,7 +29,7 @@ void on_pushButton_18_clicked(); void onpageChanged(int currPage); - + void OnitemChanged(int currPage,Qt::CheckState State); private: void getCheckDevice(); void getStandardDevice(); @@ -43,6 +43,7 @@ int page; int totalcount; int pageIndex; + QMap CheckState; }; #endif // CHECKDEVICE_H diff --git a/softwareDirectory/AutoVerScheme/checkmethodmanage.h b/softwareDirectory/AutoVerScheme/checkmethodmanage.h index 0f6143e..ae021d7 100644 --- a/softwareDirectory/AutoVerScheme/checkmethodmanage.h +++ b/softwareDirectory/AutoVerScheme/checkmethodmanage.h @@ -34,7 +34,8 @@ QList programList; int editIdx=-1; QStringList equipList={"多功能校准源标准装置","直流稳压电源检定装置","多功能电气安全标准器标准装置","0.02级活塞式压力计标准装置","二等铂电阻温度计标准装置","安全阀校验装置", - "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置"}; + "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置" + ,"低频信号发生器标准装置","S参数标准装置","失真度标准装置"}; QList catList; int page; int totalcount; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index b227101..0b8dec3 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -1078,16 +1078,26 @@ ui->tableWidgetCheck->setCellWidget(i,j,tmp_widget); }else ui->tableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); - if(dataRes[i][1] == "DCV" || dataRes[i][1] == "DCI"){ - ui->tableWidgetCheck->hideColumn(10); - ui->tableWidgetCheck->hideColumn(11); - }else if (dataRes[i][1] == "ACV" || dataRes[i][1] == "ACI") { - ui->tableWidgetCheck->hideColumn(12); - ui->tableWidgetCheck->hideColumn(13); - }else if (dataRes[i][1] == "R") { - ui->tableWidgetCheck->hideColumn(11); - ui->tableWidgetCheck->hideColumn(12); - } + //需要界面Ui隐藏的列 + if(iEquipType==1){ + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("a"))); + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("b"))); + + /*if(dataRes[i][1] == "DCV" || dataRes[i][1] == "DCI"){ + ui->tableWidgetCheck->hideColumn(10); + ui->tableWidgetCheck->hideColumn(11); + }else if (dataRes[i][1] == "ACV" || dataRes[i][1] == "ACI") { + ui->tableWidgetCheck->hideColumn(12); + ui->tableWidgetCheck->hideColumn(13); + }else if (dataRes[i][1] == "R") { + ui->tableWidgetCheck->hideColumn(11); + ui->tableWidgetCheck->hideColumn(12); + }*/ + }else if(iEquipType==16){ + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("基准点"))); + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("有效位数"))); + } + } } @@ -1716,7 +1726,7 @@ QMessageBox::warning(this, "警告", "设备未连接!"); } return; - }else if(iEquipType==10){ + }else if(iEquipType==10 || iEquipType==16){ //信号源采集读数 标准器 this->SignalGeneratortextflow(); return; @@ -1753,13 +1763,23 @@ //暂时加到这个地方 后面统一编写 if(sParam=="DCI"||sParam=="ACI") { + int idx2= getIndexByHeader(constsLable,QStrTranQStrList("单位")); if(idx2!=-1) { QString ConstUnit=""; + QString Item; QString v=dataRes[i][idx2].toUpper(); - if(i!=0) - ConstUnit=dataRes[i-1][idx2].toUpper(); + if(i!=0){ + ConstUnit=dataRes[i-1][idx2].toUpper(); + Item=dataRes[i-1][idx]; + } + if(Item!=sParam){ + if(!this->showDialog("电流换线提醒",QString("换线提醒\n %1测试").arg(sParam).arg(v))) + { + continue; + } + } BaseCommonApi::SaveLogInfo(1,ConstUnit+"-"+v); if((ConstUnit=="MA" && v=="A") || (ConstUnit=="A" && v=="MA")) @@ -1784,34 +1804,79 @@ instrcutLibRole=getCmdByRoleName("电子负载",constsLable); SendDevice(instrcutLibRole,&engineRole); } + else if(iEquipType==11){ + + BaseCommonApi::SaveLogInfo(1,QString("信号发生器")); + VisaCommonEngine engineRole2=getVisaCommbyRoleName("信号发生器"); //角色 + InstructionLib *instrcutLibRole2=getCmdByRoleName("信号发生器",constsLable); + SendDevice(instrcutLibRole2,&engineRole2); + BaseCommonApi::SaveLogInfo(1,QString("测量接收机")); + VisaCommonEngine engineRole=getVisaCommbyRoleName("测量接收机"); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName("测量接收机",constsLable); + SendDevice(instrcutLibRole,&engineRole); + //校准流程 + bool IsCli=true; + if(i!=0){ + idx = getIndexByHeader(constsLable,QStrTranQStrList("频率")); + QString FreqValue,PageFreqValue; + FreqValue=Removeunit(dataRes[i][idx]); + PageFreqValue=Removeunit(dataRes[i-1][idx]); + if(PageFreqValue==FreqValue){ + IsCli=false; + } + } + if(IsCli){ + //&& 只在频率切换时进行校准 + //功率校准 + InstructionLib *PowerPage=getCmdByRoleName("测量接收机","界面切换"); + InstructionLib *PowerCali=getCmdByRoleName("信号发生器","校准"); + InstructionLib *PowerCaliSt=getCmdByRoleName("测量接收机","校准"); + if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ + InstructionLib Temp; + InstructionLib TempSt; + for(QString item:PowerCali->instruct_read.split(';')) + { + Temp.instruct_config=item; + SendDevice(&Temp,&deviceEngine); + if(item.contains("20")){ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + }else{ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + } + } + } + } + + sRet=ReadDevice(instrcutLibRole,&engineRole); + } else { + InstructionLib *instrcutLibstan = getCmdByCheckName(1,sParam); SendDevice(instrcutLibstan,&standardEngine,true); //被检设备读数 BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); SendDevice(instrcutLib,&deviceEngine); - //在被检设备读数前 - if(iEquipType==10){ - if(sParam=="功率"){ - //功率开始测试前进行校准 - InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); - InstructionLib *PowerCali=getCmdByCheckName(1,"功率校准"); - InstructionLib *PowerDevice=getCmdByCheckName(1,constsLable); - QStringList ReadCmd=PowerCali->instruct_read.split(';'); - for(int i=0;itableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } @@ -2744,6 +2822,165 @@ BaseCommonApi::SaveLogInfo(1,QString("转换后 THD 测试值 %1").arg(newdStdValue)); } } + else if(iEquipType==11){ + bool State=true; + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被测量值"); + State=false; + } + int idx=-1; + int idx2=-1; + double Upp,low; + QString Resdata,data,unit; + unit="dBm"; + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList("直通测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + if(State){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("组合方式")); + if(!this->showDialog("加入衰减测量值提醒",QString("组合方式 %1").arg(dataRes[i][idx]))) + { + return; + } + BaseCommonApi::SaveLogInfo(1,QString("测量接收机")); + VisaCommonEngine engineRole=getVisaCommbyRoleName("测量接收机"); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName("测量接收机",constsLable); + SendDevice(instrcutLibRole,&engineRole); + dStdValue=ReadDevice(instrcutLibRole,&engineRole).toDouble(); + }else{ + dStdValue=InputDialog("请输入加入衰减测量值"); + } + Resdata=QString::number(newdStdValue.toDouble()-dStdValue); + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList("加入衰减测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + idx= getIndexByHeader(sLabel,QStrTranQStrList("衰减量")); + dataRes[i][idx]=Resdata+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(Resdata+unit)); //衰减量 + idx= getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + idx2= getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + + Upp=Removeunit(dataRes[i][idx]).toDouble(); + low=Removeunit(dataRes[i][idx2]).toDouble(); + idx= getIndexByHeader(sLabel,QStrTranQStrList("结论")); + if(Resdata.toDouble()>low && Resdata.toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("符合指标")); + }else{ + dataRes[i][idx]="不符合"; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("不符合")); + } + + } + else if(iEquipType==16){ + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被检示值"); + } + int idx=-1; + int idx2=-1; + QString data,unit,dataTemp; + bool datum=false; + // QString Resultdata,Resiltunit; + if(sLabel=="频率" || sLabel=="交流电压" || sLabel=="直流电压"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="交流电压" || sLabel=="直流电压"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + idx= getIndexByHeader(sLabel,QStrTranQStrList("有效位数")); + newdStdValue=QString::number(dStdValue,'f',dataRes[i][idx].toInt()); + } + + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="上升时间"){ + //寻找单位 + idx= getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + int lastDigitIndex = dataRes[i][idx].lastIndexOf(QRegExp("[0-9]")); + if(lastDigitIndex!=-1){ + //寻找单位 + unit=dataRes[i][idx].mid(lastDigitIndex + 1); + }else{ + unit=""; + } + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList(sLabel)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //上升时间 + }else if(sLabel=="正弦信号平坦度"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("电压")); + ItemUnitSplit(dataRes[i][idx],data,unit); + newdStdValue=QString::number(dStdValue,'f',3); + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + + idx= getIndexByHeader(sLabel,QStrTranQStrList("基准点")); + if(dataRes[i][idx]=="1"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + dataRes[i][idx]=newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //平坦度 + }else{ + idx2= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + //寻找基准点测量值 + for(QStringList item:dataRes){ + if(item[idx]=="1"){ + data=item[idx2]; + datum=true; + } + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + dataRes[i][idx]=QString::number((dataRes[i][idx].toDouble()-data.toDouble())/data.toDouble()); + } + dataTemp="不符合"; + idx=getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + idx2= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + data=dataRes[i][idx]; + if(datum){ + dataTemp="基准点"; + }else{ + if(data.contains("<")){ + QRegularExpression re("[^\\d]+"); + data=data.replace(re, ""); + if(dataRes[i][idx2].toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(dataTemp)); //结论 + } + else if(sLabel=="总谐波失真"){ + unit = "%"; + idx2= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + newdStdValue=QString::number(dStdValue,'f',3); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + + dataTemp="不符合"; + idx=getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + data=dataRes[i][idx]; + if(data.contains("<")){ + QRegularExpression re("[^\\d]+"); + data=data.replace(re, ""); + if(dataRes[i][idx2].toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(dataTemp)); //结论 + } + } } void CheckWindow::Oscilloscopetextflow() { @@ -3093,9 +3330,9 @@ if(IsCli){ //&& 只在频率切换时进行校准 //功率校准 - InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); - InstructionLib *PowerCali=getCmdByCheckName(0,"功率校准"); - InstructionLib *PowerCaliSt=getCmdByCheckName(1,"功率校准"); + InstructionLib *PowerPage=getCmdByCheckName(1,"界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(0,"校准"); + InstructionLib *PowerCaliSt=getCmdByCheckName(1,"校准"); if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ InstructionLib Temp; InstructionLib TempSt; @@ -3722,8 +3959,8 @@ else if(sLabel=="电流示值误差(直接测量)") sRole ="电流表"; BaseCommonApi::SaveLogInfo(1,QString("可编程交流电源读取数值")); - VisaCommonEngine engineRole=getVisaCommbyRoleName("sRole"); //角色 - InstructionLib *instrcutLibRole=getCmdByRoleName("sRole",sLabel); + VisaCommonEngine engineRole=getVisaCommbyRoleName(sRole); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName(sRole,sLabel); sRet = ReadDevice(instrcutLibRole,&engineRole); }else{ BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 0367ee1..a6a927f 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -186,9 +186,9 @@ return ""; } -int DialogCheckResult::getDictebyItemName(QString Name) +QString DialogCheckResult::getDictebyItemName(QString Name) { - int NewName=0; + QString NewName="0"; if(checkitemlist.keys().contains(Name)) { NewName=checkitemlist.value(Name); @@ -820,14 +820,14 @@ //示波器检定装置 else if(iEquipType==13) { - checkitemlist.insert("时基",1); - checkitemlist.insert("直流增益",2); - checkitemlist.insert("直流偏置",3); - checkitemlist.insert("频带宽度",4); - checkitemlist.insert("触发灵敏度",5); - checkitemlist.insert("上升时间",6); - checkitemlist.insert("输入电阻",7); - checkitemlist.insert("校准信号",8); + checkitemlist.insert("时基","1"); + checkitemlist.insert("直流增益","2"); + checkitemlist.insert("直流偏置","3"); + checkitemlist.insert("频带宽度","4"); + checkitemlist.insert("触发灵敏度","5"); + checkitemlist.insert("上升时间","6"); + checkitemlist.insert("输入电阻","7"); + checkitemlist.insert("校准信号","8"); QString Value,Unit; //ItemUnitSplit for (int i = 0; i < dataRes.count(); ++i) { @@ -881,7 +881,86 @@ measItem.bottom_measure_value=Value; measItem.bottom_measure_value_unit=Unit; //decibel_number - BaseCommonApi::InsertDeviceOscilloscopeCalibration(measItem); + BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); + } + } + //微波衰减器 + else if(iEquipType==11){ + QString Value,Unit; + //ItemUnitSplit + for (int i = 0; i < dataRes.count(); ++i) { + MicrowaveAttenuationCalibration measItem; + measItem.id = QString::number(api.generateId()); + measItem.data_id = measInfo.id; + measItem.data_type = "1"; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),Value,Unit); + measItem.nominal_value=Value; + measItem.nominal_value_unit=Unit; + measItem.composition=getValueByHeader(i,sLabel,"组合方式"); + measItem.direct_measure_value=getValueByHeader(i,sLabel,"直接测量值"); + measItem.add_measure_value=getValueByHeader(i,sLabel,"加入衰减测量值"); + measItem.attenuation_amount=getValueByHeader(i,sLabel,"衰减量"); + measItem.lower_index=getValueByHeader(i,sLabel,"指标下限"); + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + measItem.conclusion=getValueByHeader(i,sLabel,"结论"); + //decibel_number + BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); + } + } + else if(iEquipType==16){ + checkitemlist.insert("频率","1"); + checkitemlist.insert("交流电压","2"); + checkitemlist.insert("直流电压","3"); + checkitemlist.insert("上升时间","4"); + checkitemlist.insert("正弦信号平坦度","5"); + checkitemlist.insert("正弦信号平坦度","6"); + QString Value,Unit; + //ItemUnitSplit + for (int i = 0; i < dataRes.count(); ++i) { + LFSignalGeneratoCalibration measItem; + measItem.id = QString::number(api.generateId()); + measItem.data_id = measInfo.id; + measItem.data_type = getDictebyItemName(getValueByHeader(i,sLabel,"检定项目")); + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),Value,Unit); + measItem.nominal_value=Value; + measItem.unit=Unit; + measItem.lower_index=getValueByHeader(i,sLabel,"指标下限"); + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + measItem.conclusion=getValueByHeader(i,sLabel,"结论"); + //measItem.convert_deviation=""; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"电压"),Value,Unit); + measItem.voltage=Value; + measItem.voltage_unit=Unit; + measItem.rise_time=getValueByHeader(i,sLabel,"上升时间"); + //是否为基准点 如何判断 需确定 + measItem.datum_point="0"; + ItemUnitSplit(getValueByHeader(i,sLabel,"交流频率"),Value,Unit); + measItem.ac_frequency=Value; + measItem.ac_frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"幅度"),Value,Unit); + measItem.amplitude=Value; + measItem.amplitude_unit=Unit; + measItem.flatness=getValueByHeader(i,sLabel,"平坦度"); + //超出范围标*(1/0)界面没有 + Value=getValueByHeader(i,sLabel,"技术指标"); + if(Value!=""){ + measItem.technical_index=Value.mid(1, Value.count() - 1); + measItem.technical_index_symbol=Value.left(1); + measItem.technical_index_unit= Value.right(1); + } + + + BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); } } } diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index c04967d..bd38169 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -47,8 +47,8 @@ int curHeadIdx=-1; int iEquipType; QList catoryList; - QMap checkitemlist; - int getDictebyItemName(QString Name); + QMap checkitemlist; + QString getDictebyItemName(QString Name); void ItemUnitSplit(QString Value,QString &data,QString &unit); int curDevciceIdx=-1; }; diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.cpp b/softwareDirectory/AutoVerScheme/basecommonapi.cpp index 2bf97e3..6593d87 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.cpp +++ b/softwareDirectory/AutoVerScheme/basecommonapi.cpp @@ -1014,6 +1014,18 @@ //示波器标准装置 DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList); break; + //微波衰减标准装置 + case 11: + DataList=BaseCommonApi::getDeviceMicrowaveAttenuation(deviceCatoryName,CliTable[0].id,HeadList); + break; + //低频信号发生器标准装置 + case 16: + DataList=BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList); + break; + //小功率标准装置 + case 15: + DataList=BaseCommonApi::getDeviceSmallPower(deviceCatoryName,CliTable[0].id,HeadList); + break; } return DataList; @@ -1235,15 +1247,16 @@ Data.append(row[7]); //量程 Data.append(row[8]); //标准值 Data.append(row[15]); //示值 - Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 + //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1268,14 +1281,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1299,14 +1313,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1333,14 +1348,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /*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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -1364,14 +1380,15 @@ Data.append(row[8]); //标准值 Data.append(row[15]); //示值 Data.append(""); //绝对误差 软件界面计算 + Data.append(row[10]); //最大允许误差 软件界面计算 //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程 - try { + /* 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]); //分辨力 Data.append(row[11]);//a Data.append(row[12]);//b @@ -2460,6 +2477,7 @@ return isSuccess; }; + //计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备 bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure) { @@ -2468,6 +2486,7 @@ " (id,data_id,equipment_id,create_time,update_time) " " VALUES " " (:id,:data_id,:equipment_id,:create_time,:update_time)"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); // QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss"); query.bindValue(":id", deviceMeasure.id); @@ -2513,12 +2532,14 @@ //【结果保存】示波器 DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast(entity); //【结果保存】二等铂电阻 - DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); + DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast(entity); //【结果保存】频谱分析仪 DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast(entity); //【结果保存】信号发生器 - DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); + DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast(entity); if(orderInfo !=nullptr){ + + resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'") .arg("'" + orderInfo->customer_name + "'") .arg("'" + orderInfo->require_over_time + "'") @@ -4079,7 +4100,7 @@ break; } case 10: { - //信号 + //信号发生器 DeviceMeasureDataSignalGenerator *generator = dynamic_cast(object); if (generator != nullptr) { result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator); @@ -4100,6 +4121,27 @@ } break; } + case 11: { + //微波衰减器 InsertDeviceMicrowaveAttenuation + MicrowaveAttenuationCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceMicrowaveAttenuation(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + case 16: { + //低频信号发生器 + LFSignalGeneratoCalibration *recordGauge = dynamic_cast(object); + if (recordGauge != nullptr) { + result = BaseCommonApi::InsertDeviceLFSignalGenerator(*recordGauge); + } else { + // 处理转换失败的情况 + result = false; + } + } + // 可能还有其他的case default: result = false; @@ -6512,7 +6554,468 @@ } return result; } +QMap> BaseCommonApi::getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + QSqlQuery query; + query.prepare("SELECT bbdmidama.*,bbdmii.attenuation_amount FROM biz_business_device_measure_item_data_microwave_attenuation bbdmidama" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidama.item_id" + " WHERE bbdmidama.item_id = :itemId ORDER BY bbdmidama.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("attenuation_amount").toString()); //检定项目状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("nominal_value_unit").toString()); //标称值单位 7 + result.append(query.value("composition").toString()); //组合方式 + result.append(query.value("urel").toString()); //U(k=2) + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_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= GetDataReturnItemListByMicrowaveAttenuation(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList) +{ + QList PadValueList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + if (!row.isEmpty() && row[2]=="1" && row[3] == "1") { + VerificationItem = "衰减量"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"组合方式" + <<"直通测量值"<<"加入衰减测量值"<<"指标下限"<<"衰减量" + <<"指标上限"<<"U(k=2)"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append(row[6]+row[7]);//标称值 + Data.append(row[8]);//组合方式 + Data.append("");//直通测量值 + Data.append("");//加入衰减测量值 + Data.append(QString::number(row[6].toDouble()-row[11].toDouble())+row[7]);//指标下限 + Data.append("");//衰减量 + Data.append(QString::number(row[6].toDouble()+row[11].toDouble())+row[7]);//指标上限 + Data.append("");//U(k=2) + Data.append(row[9]);//结论 + PadValueList.append(Data); + } + } + if(PadValueList.count()!=0){ + DataMapList.insert("衰减量",PadValueList); + }; + return DataMapList; +} +// 【结果保存】 微波衰减器 +bool BaseCommonApi::InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_microwave_attenuation " + " (id,data_id,data_type,frequency,frequency_unit,nominal_value, " + " nominal_value_unit,composition,direct_measure_value,add_measure_value, " + " attenuation_amount,lower_index,upper_index,urel,conclusion,exceed_mark, " + " create_time,update_time)VALUES( " + " :id,:data_id,:data_type,:frequency,:frequency_unit,:nominal_value, " + " :nominal_value_unit,:composition,:direct_measure_value,:add_measure_value, " + " :attenuation_amount,:lower_index,:upper_index,:urel,:conclusion,:exceed_mark," + " :create_time,:update_time " + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":nominal_value_unit", scope.nominal_value_unit); + query.bindValue(":composition", scope.composition); + query.bindValue(":direct_measure_value", scope.direct_measure_value); + query.bindValue(":add_measure_value", scope.add_measure_value); + query.bindValue(":attenuation_amount", scope.attenuation_amount); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +QMap> BaseCommonApi::getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT *,bbdmii.frequency as freq FROM biz_business_device_measure_item_data_low_frequency_signal bbdmidlfs" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlfs.item_id" + " WHERE bbdmidlfs.item_id = :itemId ORDER BY bbdmidlfs.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("freq").toString()); //频率状态 3 + result.append(query.value("harmonic_distortion").toString()); //谐波失真状态 4 + result.append(query.value("rise_time").toString()); //上升时间状态 5 + result.append(query.value("ac_voltage").toString()); //交流电压状态 6 + result.append(query.value("dc_voltage").toString()); //直流电流状态 7 + result.append(query.value("sinusoid_flatness").toString()); //正弦信号平坦度状态 8 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 + result.append(query.value("nominal_value").toString()); //标称值 + result.append(query.value("unit").toString()); //标称值单位 12 + result.append(query.value("amplitude").toString()); //幅度 + result.append(query.value("amplitude_unit").toString()); //幅度单位 + result.append(query.value("technical_index_symbol").toString()); //技术指标前符号 + result.append(query.value("technical_index").toString()); //技术指标 + result.append(query.value("technical_index_unit").toString()); //技术指标单位 17 + result.append(query.value("ac_frequency").toString()); //交流频率 + result.append(query.value("ac_frequency_unit").toString()); //交流频率单位 + result.append(query.value("valid_digit").toString()); //有效位数 + result.append(query.value("datum_point").toString()); //是否为基准点(1/0) 21 + result.append(query.value("voltage").toString()); //电压 + result.append(query.value("voltage_unit").toString()); //电压单位 + result.append(query.value("value_one").toString()); //数值1(不带%,计算技术指标使用) + result.append(query.value("value_two").toString()); //数值2(计算技术指标使用) 25 + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList freqList; + QList ac_voltageList; + QList dc_voltageList; + QList rise_timeList; + QList sinusoid_flatnessList; + QList harmonic_distortionList; + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "频率"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论"<<"有效位数"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + Data.append(row[20]);//有效位数 + freqList.append(Data); + }else if(!row.isEmpty() && row[6]=="1" && row[2] == "2") { + VerificationItem = "交流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"交流频率"<<"指标下限" + <<"测量值"<<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(row[18]+row[19]);//交流频率 + Data.append(QString::number(row[11].toDouble()-(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+(row[11].toDouble()*row[16].toDouble()))+row[12]);//指标上限 + Data.append("");//结论 + ac_voltageList.append(Data); + }else if(!row.isEmpty() && row[7]=="1" && row[2] == "3") { + VerificationItem = "直流电压"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"标称值"<<"幅度"<<"指标下限"<<"测量值" + <<"指标上限"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[11]+row[12]);//标称值 + Data.append(row[13]+row[14]);//幅度 + Data.append(QString::number(row[11].toDouble()-row[16].toDouble())+row[12]);//指标下限 + Data.append("");//测量值 + Data.append(QString::number(row[11].toDouble()+row[16].toDouble())+row[12]);//指标上限 + Data.append("");//结论 + dc_voltageList.append(Data); + }else if(!row.isEmpty() && row[5]=="1" && row[2] == "4") { + VerificationItem = "上升时间"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"上升时间" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率 + Data.append(row[13]+row[14]);//幅度 + Data.append("");//上升时间 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + rise_timeList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "正弦信号平坦度"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"电压"<<"频率点"<<"测量值" + <<"平坦度"<<"技术指标"<<"结论"<<"基准点" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[22]+row[23]);//电压 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append("");//平坦度 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + Data.append(row[21]);//基准点 + sinusoid_flatnessList.append(Data); + }else if(!row.isEmpty() && row[8]=="1" && row[2] == "5") { + VerificationItem = "总谐波失真"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"测量值" + <<"技术指标"<<"结论" ; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[9]+row[10]);//频率点 + Data.append("");//测量值 + Data.append(row[15]+row[16]+row[17]);//技术指标 + Data.append("");//结论 + harmonic_distortionList.append(Data); + } + } + if(freqList.count()!=0){ + DataMapList.insert("频率",freqList); + }; + if(ac_voltageList.count()!=0){ + DataMapList.insert("交流电压",ac_voltageList); + }; + if(dc_voltageList.count()!=0){ + DataMapList.insert("直流电压",dc_voltageList); + }; + if(rise_timeList.count()!=0){ + DataMapList.insert("上升时间",rise_timeList); + }; + if(sinusoid_flatnessList.count()!=0){ + DataMapList.insert("正弦信号平坦度",sinusoid_flatnessList); + }; + if(harmonic_distortionList.count()!=0){ + DataMapList.insert("总谐波失真",harmonic_distortionList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_frequency_signal(id,data_id,data_type," + " nominal_value,unit,upper_index,lower_index,measure_value,measure_value_unit,conclusion," + " convert_deviation,frequency,frequency_unit,voltage,voltage_unit,rise_time,datum_point," + " ac_frequency,ac_frequency_unit,amplitude,amplitude_unit,flatness,technical_index_symbol," + " technical_index,technical_index_unit,exceed_mark,create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :nominal_value,:unit,:upper_index,:lower_index,:measure_value,:measure_value_unit,:conclusion," + " :convert_deviation,:frequency,:frequency_unit,:voltage,:voltage_unit,:rise_time,:datum_point," + " :ac_frequency,:ac_frequency_unit,:amplitude,:amplitude_unit,:flatness,:technical_index_symbol," + " :technical_index,:technical_index_unit,:exceed_mark,:create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":nominal_value", scope.nominal_value); + query.bindValue(":unit", scope.unit); + query.bindValue(":lower_index", scope.lower_index); + query.bindValue(":upper_index", scope.upper_index); + query.bindValue(":measure_value", scope.measure_value); + query.bindValue(":measure_value_unit", scope.measure_value_unit); + query.bindValue(":conclusion", scope.conclusion); + query.bindValue(":convert_deviation", scope.convert_deviation); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":voltage", scope.voltage); + query.bindValue(":voltage_unit", scope.voltage_unit); + query.bindValue(":rise_time", scope.rise_time); + query.bindValue(":datum_point", scope.datum_point); + query.bindValue(":ac_frequency", scope.ac_frequency); + query.bindValue(":ac_frequency_unit", scope.ac_frequency_unit); + query.bindValue(":amplitude", scope.amplitude); + query.bindValue(":amplitude_unit", scope.amplitude_unit); + query.bindValue(":flatness", scope.flatness); + query.bindValue(":technical_index_symbol", scope.technical_index_symbol); + query.bindValue(":technical_index", scope.technical_index); + query.bindValue(":technical_index_unit", scope.technical_index_unit); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } +//检定项-小功率装置 +QMap> BaseCommonApi::getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList){ + QMap> DataMapList; + QList resultData; + QStringList result; + resultData.clear(); + + QSqlQuery query; + query.prepare("SELECT bbdmidlp.*,bbdmii.calibration_factor FROM biz_business_device_measure_item_data_low_power bbdmidlp" + " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidlp.item_id" + " WHERE bbdmidlp.item_id = :itemId ORDER BY bbdmidlp.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()); + result.append(query.value("data_type").toString()); //检定项目ID + result.append(query.value("calibration_factor").toString()); //启动状态 + result.append(query.value("frequency").toString()); //频率 + result.append(query.value("frequency_unit").toString()); //频率单位 5 + result.append(query.value("kc").toString()); //Kc/% + result.append(query.value("standard_reflection_coefficient").toString()); //标准反射系数ГGe + result.append(query.value("device_reflection_coefficient").toString()); //被检设备反射系数Гu 8 + result.append(query.value("urel").toString()); //U(k=2) + 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= GetDataReturnItemListByLFSignalGenerator(itemCatoryName,resultData,DataMapList,headList); + return DataMapList; +} +QMap> BaseCommonApi::GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList){ + QList calibrationFactorList; + + for(const QStringList &row : ResultData) + { + QString VerificationItem=NULL; + // state data type + if (!row.isEmpty() && row[3]=="1" && row[2] == "1") { + VerificationItem = "校准因子"; + //添加列头 + QStringList head; + head <<"序号"<<"检定项目"<<"频率"<<"Pcu/mW"<<"Kc/%" + <<"被测探头示数Pbu/mW"<<"标准反射系数ГGe"<<"被检设备反射系数Гu" + <<"被测探头校准因子Kb/%"<<"U(k=2)"; + HeadMapList->insert(VerificationItem,head); + //添加数据 + QStringList Data; + Data.append(row[0]); //ID + Data.append(VerificationItem); //检定项目 + Data.append(row[4]+row[5]);//频率 + Data.append("");//幅度 + Data.append(row[6]);//Kc/% + Data.append("");//被测探头示数Pbu/mW + Data.append(row[7]);//标准反射系数ГGe + Data.append(row[8]);//被检设备反射系数Гu + Data.append("");//被测探头校准因子Kb/% + Data.append(row[9]);//U(k=2) + calibrationFactorList.append(Data); + } + } + if(calibrationFactorList.count()!=0){ + DataMapList.insert("校准因子",calibrationFactorList); + }; + return DataMapList; +} +bool BaseCommonApi::InsertDeviceSmallPower(SmallPowerCalibration scope){ + QSqlQuery query; + query.prepare(" INSERT INTO biz_business_device_measure_data_low_power(id,data_id,data_type," + " frequency,frequency_unit,pcu,kc,probe_pbu,standard_reflection_coefficient," + " device_reflection_coefficient,probe_calibration_factor,urel,exceed_mark," + " create_time,update_time)VALUES(" + " :id,:data_id,:data_type," + " :frequency,:frequency_unit,:pcu,:kc,:probe_pbu,:standard_reflection_coefficient," + " :device_reflection_coefficient,:probe_calibration_factor,:urel,:exceed_mark," + " :create_time,:update_time" + " )"); + QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); + query.bindValue(":id", scope.id); + query.bindValue(":data_id", scope.data_id); + query.bindValue(":data_type", scope.data_type); + query.bindValue(":frequency", scope.frequency); + query.bindValue(":frequency_unit", scope.frequency_unit); + query.bindValue(":pcu", scope.pcu); + query.bindValue(":kc", scope.kc); + query.bindValue(":probe_pbu", scope.probe_pbu); + query.bindValue(":standard_reflection_coefficient", scope.standard_reflection_coefficient); + query.bindValue(":device_reflection_coefficient", scope.device_reflection_coefficient); + query.bindValue(":probe_calibration_factor", scope.probe_calibration_factor); + query.bindValue(":urel", scope.urel); + query.bindValue(":exceed_mark", scope.exceed_mark); + query.bindValue(":create_time", currentDateTime); + query.bindValue(":update_time", currentDateTime); + bool isSuccess = query.exec(); + if (isSuccess) { + }else { + qDebug() << "Insert data failed: " << query.lastError().text(); + } + + return isSuccess; + } //核查程序管理-核查设置-多功能校准源 参数设备id 同信息管理-标准设备管理-核查项及核查点 QMap>> BaseCommonApi::getStandardCheckItemDataCalibrator(QString equipment_id,QMap> *headList) diff --git a/softwareDirectory/AutoVerScheme/basecommonapi.h b/softwareDirectory/AutoVerScheme/basecommonapi.h index c3314ce..f4dffc8 100644 --- a/softwareDirectory/AutoVerScheme/basecommonapi.h +++ b/softwareDirectory/AutoVerScheme/basecommonapi.h @@ -1089,6 +1089,83 @@ QString create_time; QString update_time; }; +//结果保存-微波衰减器-查询 +class MicrowaveAttenuationCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString nominal_value_unit; + QString composition; + QString direct_measure_value; + QString add_measure_value; + QString attenuation_amount; + QString lower_index; + QString upper_index; + QString urel; + QString conclusion; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-小功率-查询 +class SmallPowerCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString pcu; + QString kc; + QString probe_pbu; + QString standard_reflection_coefficient; + QString device_reflection_coefficient; + QString probe_calibration_factor; + QString urel; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; +//结果保存-低频信号-查询 +class LFSignalGeneratoCalibration:public BaseClass +{ +public: + QString id; + QString data_id;//检定数据管理基础信息表id + QString data_type;//检定数据类型(一个检定数据中区分两个表格)(字典code) + QString frequency; + QString frequency_unit; + QString nominal_value; + QString unit; + QString lower_index; + QString upper_index; + QString urel; + QString measure_value; + QString measure_value_unit; + QString conclusion; + QString convert_deviation; + QString voltage; + QString voltage_unit; + QString rise_time; + QString datum_point; + QString ac_frequency; + QString ac_frequency_unit; + QString amplitude; + QString amplitude_unit; + QString flatness; + QString technical_index_symbol; + QString technical_index; + QString technical_index_unit; + QString exceed_mark; + QDateTime create_time; + QDateTime update_time; +}; //结果保存-示波器装置-查询 class DeviceOscilloscopeCalibration:public BaseClass { @@ -1720,6 +1797,20 @@ static QList getStandardInfo(); //根据标准装置id查询标准设备 static QList getStandardInfoListByStandardId(QString standardId); + + //【查询】检定项-微波衰减器 + static QMap> getDeviceMicrowaveAttenuation(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByMicrowaveAttenuation(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceMicrowaveAttenuation(MicrowaveAttenuationCalibration scope); + //【查询】检定项-低频信号装置 + static QMap> getDeviceMeasureItemDataLFSignalGenerator(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListByLFSignalGenerator(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceLFSignalGenerator(LFSignalGeneratoCalibration scope); + //【查询】检定项-小功率装置 + static QMap> getDeviceSmallPower(QString itemCatoryName,QString itemId,QMap *headList); + static QMap> GetDataReturnItemListBySmallPower(QString itemCatoryName,QList ResultData,QMap> DataMapList,QMap *HeadMapList); + static bool InsertDeviceSmallPower(SmallPowerCalibration scope); + //【保存】核查基本信息 static bool InsertStandardCheckInfo(StandardCheckInfo info); //【查询】核查项-多功能校准源 @@ -1731,10 +1822,6 @@ static QMap>> getStandardCheckItemDataResistanceThermometer(QString equipment_id,QMap> *headList); static QMap>> GetDataReturnItemListByCheckItemDataResistanceThermometer(QList ResultData,QMap>> DataMapList,QMap> *headList); - - - - //同步成功后更新检定项字段 static bool UpdateMeasureItemInfo(QString item_id); //配套设备关联表 diff --git a/softwareDirectory/AutoVerScheme/checkdevice.cpp b/softwareDirectory/AutoVerScheme/checkdevice.cpp index ca8c64c..5283198 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.cpp +++ b/softwareDirectory/AutoVerScheme/checkdevice.cpp @@ -18,6 +18,7 @@ ui->tableWidget_4->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); //getCheckDevice(); getStandardDevice(); + } CheckDevice::~CheckDevice() @@ -67,6 +68,7 @@ void CheckDevice::getStandardDevice() { bizDeviceList.clear(); + CheckState.clear(); bizDeviceList = BaseCommonApi::getBizDeviceManage(); QString sFilterName = ui->lineEdit_10->text(); QString sFilterModel = ui->lineEdit_11->text(); @@ -85,6 +87,7 @@ if(!bAdd){ bizDeviceList.removeAt(i); } + CheckState.insert(i,false); } page=20; pageIndex=-1; @@ -113,14 +116,25 @@ ui->tableWidget_4->insertRow(rowCount); //QCheckBox *checkBox = new QCheckBox; //ui->tableWidget_4->setCellWidget(row, 0, checkBox); + //checkBox->setChecked(CheckState.value(i)); QTableWidgetItem* p_check = new QTableWidgetItem(); p_check->setCheckState(Qt::Unchecked); ui->tableWidget_4->setItem(row,0,p_check); + //connect(checkBox, &QCheckBox::stateChanged, this, [this,i,checkBox]() { + // 获取当前行第一列的 ID + + // OnitemChanged(i,checkBox->checkState()); + + + //}); + ui->tableWidget_4->setItem(row, 1, new QTableWidgetItem(bizDevice.equipment_name)); ui->tableWidget_4->setItem(row, 2, new QTableWidgetItem(bizDevice.model)); ui->tableWidget_4->setItem(row, 3, new QTableWidgetItem(bizDevice.manufacture_no)); ui->tableWidget_4->setItem(row, 4, new QTableWidgetItem(bizDevice.manufacturer)); row++; + + } } @@ -181,3 +195,12 @@ ui->lineEdit_12->setText(""); getStandardDevice(); } +void CheckDevice::OnitemChanged(int index,Qt::CheckState CurrState) +{ + if(CurrState==Qt::Unchecked){ + CheckState[index] = false; + }else{ + CheckState[index] = true; + } + +} diff --git a/softwareDirectory/AutoVerScheme/checkdevice.h b/softwareDirectory/AutoVerScheme/checkdevice.h index f8dddb3..c6700a4 100644 --- a/softwareDirectory/AutoVerScheme/checkdevice.h +++ b/softwareDirectory/AutoVerScheme/checkdevice.h @@ -29,7 +29,7 @@ void on_pushButton_18_clicked(); void onpageChanged(int currPage); - + void OnitemChanged(int currPage,Qt::CheckState State); private: void getCheckDevice(); void getStandardDevice(); @@ -43,6 +43,7 @@ int page; int totalcount; int pageIndex; + QMap CheckState; }; #endif // CHECKDEVICE_H diff --git a/softwareDirectory/AutoVerScheme/checkmethodmanage.h b/softwareDirectory/AutoVerScheme/checkmethodmanage.h index 0f6143e..ae021d7 100644 --- a/softwareDirectory/AutoVerScheme/checkmethodmanage.h +++ b/softwareDirectory/AutoVerScheme/checkmethodmanage.h @@ -34,7 +34,8 @@ QList programList; int editIdx=-1; QStringList equipList={"多功能校准源标准装置","直流稳压电源检定装置","多功能电气安全标准器标准装置","0.02级活塞式压力计标准装置","二等铂电阻温度计标准装置","安全阀校验装置", - "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置"}; + "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置" + ,"低频信号发生器标准装置","S参数标准装置","失真度标准装置"}; QList catList; int page; int totalcount; diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index b227101..0b8dec3 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -1078,16 +1078,26 @@ ui->tableWidgetCheck->setCellWidget(i,j,tmp_widget); }else ui->tableWidgetCheck->setItem(i, j, new QTableWidgetItem(dataRes[i][j])); - if(dataRes[i][1] == "DCV" || dataRes[i][1] == "DCI"){ - ui->tableWidgetCheck->hideColumn(10); - ui->tableWidgetCheck->hideColumn(11); - }else if (dataRes[i][1] == "ACV" || dataRes[i][1] == "ACI") { - ui->tableWidgetCheck->hideColumn(12); - ui->tableWidgetCheck->hideColumn(13); - }else if (dataRes[i][1] == "R") { - ui->tableWidgetCheck->hideColumn(11); - ui->tableWidgetCheck->hideColumn(12); - } + //需要界面Ui隐藏的列 + if(iEquipType==1){ + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("a"))); + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("b"))); + + /*if(dataRes[i][1] == "DCV" || dataRes[i][1] == "DCI"){ + ui->tableWidgetCheck->hideColumn(10); + ui->tableWidgetCheck->hideColumn(11); + }else if (dataRes[i][1] == "ACV" || dataRes[i][1] == "ACI") { + ui->tableWidgetCheck->hideColumn(12); + ui->tableWidgetCheck->hideColumn(13); + }else if (dataRes[i][1] == "R") { + ui->tableWidgetCheck->hideColumn(11); + ui->tableWidgetCheck->hideColumn(12); + }*/ + }else if(iEquipType==16){ + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("基准点"))); + ui->tableWidgetCheck->hideColumn(getIndexByHeader(sLabel,QStrTranQStrList("有效位数"))); + } + } } @@ -1716,7 +1726,7 @@ QMessageBox::warning(this, "警告", "设备未连接!"); } return; - }else if(iEquipType==10){ + }else if(iEquipType==10 || iEquipType==16){ //信号源采集读数 标准器 this->SignalGeneratortextflow(); return; @@ -1753,13 +1763,23 @@ //暂时加到这个地方 后面统一编写 if(sParam=="DCI"||sParam=="ACI") { + int idx2= getIndexByHeader(constsLable,QStrTranQStrList("单位")); if(idx2!=-1) { QString ConstUnit=""; + QString Item; QString v=dataRes[i][idx2].toUpper(); - if(i!=0) - ConstUnit=dataRes[i-1][idx2].toUpper(); + if(i!=0){ + ConstUnit=dataRes[i-1][idx2].toUpper(); + Item=dataRes[i-1][idx]; + } + if(Item!=sParam){ + if(!this->showDialog("电流换线提醒",QString("换线提醒\n %1测试").arg(sParam).arg(v))) + { + continue; + } + } BaseCommonApi::SaveLogInfo(1,ConstUnit+"-"+v); if((ConstUnit=="MA" && v=="A") || (ConstUnit=="A" && v=="MA")) @@ -1784,34 +1804,79 @@ instrcutLibRole=getCmdByRoleName("电子负载",constsLable); SendDevice(instrcutLibRole,&engineRole); } + else if(iEquipType==11){ + + BaseCommonApi::SaveLogInfo(1,QString("信号发生器")); + VisaCommonEngine engineRole2=getVisaCommbyRoleName("信号发生器"); //角色 + InstructionLib *instrcutLibRole2=getCmdByRoleName("信号发生器",constsLable); + SendDevice(instrcutLibRole2,&engineRole2); + BaseCommonApi::SaveLogInfo(1,QString("测量接收机")); + VisaCommonEngine engineRole=getVisaCommbyRoleName("测量接收机"); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName("测量接收机",constsLable); + SendDevice(instrcutLibRole,&engineRole); + //校准流程 + bool IsCli=true; + if(i!=0){ + idx = getIndexByHeader(constsLable,QStrTranQStrList("频率")); + QString FreqValue,PageFreqValue; + FreqValue=Removeunit(dataRes[i][idx]); + PageFreqValue=Removeunit(dataRes[i-1][idx]); + if(PageFreqValue==FreqValue){ + IsCli=false; + } + } + if(IsCli){ + //&& 只在频率切换时进行校准 + //功率校准 + InstructionLib *PowerPage=getCmdByRoleName("测量接收机","界面切换"); + InstructionLib *PowerCali=getCmdByRoleName("信号发生器","校准"); + InstructionLib *PowerCaliSt=getCmdByRoleName("测量接收机","校准"); + if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ + InstructionLib Temp; + InstructionLib TempSt; + for(QString item:PowerCali->instruct_read.split(';')) + { + Temp.instruct_config=item; + SendDevice(&Temp,&deviceEngine); + if(item.contains("20")){ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[0]; + SendDevice(&TempSt,&standardEngine); + }else{ + TempSt.instruct_config=PowerPage->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + TempSt.instruct_config=PowerCaliSt->instruct_config.split(";")[1]; + SendDevice(&TempSt,&standardEngine); + } + } + } + } + + sRet=ReadDevice(instrcutLibRole,&engineRole); + } else { + InstructionLib *instrcutLibstan = getCmdByCheckName(1,sParam); SendDevice(instrcutLibstan,&standardEngine,true); //被检设备读数 BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); SendDevice(instrcutLib,&deviceEngine); - //在被检设备读数前 - if(iEquipType==10){ - if(sParam=="功率"){ - //功率开始测试前进行校准 - InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); - InstructionLib *PowerCali=getCmdByCheckName(1,"功率校准"); - InstructionLib *PowerDevice=getCmdByCheckName(1,constsLable); - QStringList ReadCmd=PowerCali->instruct_read.split(';'); - for(int i=0;itableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdError)); } @@ -2744,6 +2822,165 @@ BaseCommonApi::SaveLogInfo(1,QString("转换后 THD 测试值 %1").arg(newdStdValue)); } } + else if(iEquipType==11){ + bool State=true; + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被测量值"); + State=false; + } + int idx=-1; + int idx2=-1; + double Upp,low; + QString Resdata,data,unit; + unit="dBm"; + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList("直通测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + if(State){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("组合方式")); + if(!this->showDialog("加入衰减测量值提醒",QString("组合方式 %1").arg(dataRes[i][idx]))) + { + return; + } + BaseCommonApi::SaveLogInfo(1,QString("测量接收机")); + VisaCommonEngine engineRole=getVisaCommbyRoleName("测量接收机"); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName("测量接收机",constsLable); + SendDevice(instrcutLibRole,&engineRole); + dStdValue=ReadDevice(instrcutLibRole,&engineRole).toDouble(); + }else{ + dStdValue=InputDialog("请输入加入衰减测量值"); + } + Resdata=QString::number(newdStdValue.toDouble()-dStdValue); + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList("加入衰减测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + idx= getIndexByHeader(sLabel,QStrTranQStrList("衰减量")); + dataRes[i][idx]=Resdata+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(Resdata+unit)); //衰减量 + idx= getIndexByHeader(sLabel,QStrTranQStrList("指标上限")); + idx2= getIndexByHeader(sLabel,QStrTranQStrList("指标下限")); + + Upp=Removeunit(dataRes[i][idx]).toDouble(); + low=Removeunit(dataRes[i][idx2]).toDouble(); + idx= getIndexByHeader(sLabel,QStrTranQStrList("结论")); + if(Resdata.toDouble()>low && Resdata.toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("符合指标")); + }else{ + dataRes[i][idx]="不符合"; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem("不符合")); + } + + } + else if(iEquipType==16){ + if(dStdValue==FP_INFINITE){ + dStdValue=InputDialog("请输入被检示值"); + } + int idx=-1; + int idx2=-1; + QString data,unit,dataTemp; + bool datum=false; + // QString Resultdata,Resiltunit; + if(sLabel=="频率" || sLabel=="交流电压" || sLabel=="直流电压"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("标称值")); + ItemUnitSplit(dataRes[i][idx],data,unit); + if(sLabel=="交流电压" || sLabel=="直流电压"){ + newdStdValue=QString::number(dStdValue,'f',3); + }else{ + idx= getIndexByHeader(sLabel,QStrTranQStrList("有效位数")); + newdStdValue=QString::number(dStdValue,'f',dataRes[i][idx].toInt()); + } + + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + }else if(sLabel=="上升时间"){ + //寻找单位 + idx= getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + int lastDigitIndex = dataRes[i][idx].lastIndexOf(QRegExp("[0-9]")); + if(lastDigitIndex!=-1){ + //寻找单位 + unit=dataRes[i][idx].mid(lastDigitIndex + 1); + }else{ + unit=""; + } + newdStdValue=QString::number(dStdValue,'f',2); + idx= getIndexByHeader(sLabel,QStrTranQStrList(sLabel)); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //上升时间 + }else if(sLabel=="正弦信号平坦度"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("电压")); + ItemUnitSplit(dataRes[i][idx],data,unit); + newdStdValue=QString::number(dStdValue,'f',3); + idx= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + dataRes[i][idx]=newdStdValue+unit; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + + idx= getIndexByHeader(sLabel,QStrTranQStrList("基准点")); + if(dataRes[i][idx]=="1"){ + idx= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + dataRes[i][idx]=newdStdValue; + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //平坦度 + }else{ + idx2= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + //寻找基准点测量值 + for(QStringList item:dataRes){ + if(item[idx]=="1"){ + data=item[idx2]; + datum=true; + } + } + idx= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + dataRes[i][idx]=QString::number((dataRes[i][idx].toDouble()-data.toDouble())/data.toDouble()); + } + dataTemp="不符合"; + idx=getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + idx2= getIndexByHeader(sLabel,QStrTranQStrList("平坦度")); + data=dataRes[i][idx]; + if(datum){ + dataTemp="基准点"; + }else{ + if(data.contains("<")){ + QRegularExpression re("[^\\d]+"); + data=data.replace(re, ""); + if(dataRes[i][idx2].toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(dataTemp)); //结论 + } + else if(sLabel=="总谐波失真"){ + unit = "%"; + idx2= getIndexByHeader(sLabel,QStrTranQStrList("测量值")); + newdStdValue=QString::number(dStdValue,'f',3); + ui->tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(newdStdValue+unit)); //测量值 + + dataTemp="不符合"; + idx=getIndexByHeader(sLabel,QStrTranQStrList("技术指标")); + data=dataRes[i][idx]; + if(data.contains("<")){ + QRegularExpression re("[^\\d]+"); + data=data.replace(re, ""); + if(dataRes[i][idx2].toDouble()tableWidgetCheck->setItem(i,idx,new QTableWidgetItem(dataTemp)); //结论 + } + } } void CheckWindow::Oscilloscopetextflow() { @@ -3093,9 +3330,9 @@ if(IsCli){ //&& 只在频率切换时进行校准 //功率校准 - InstructionLib *PowerPage=getCmdByCheckName(1,"功率界面切换"); - InstructionLib *PowerCali=getCmdByCheckName(0,"功率校准"); - InstructionLib *PowerCaliSt=getCmdByCheckName(1,"功率校准"); + InstructionLib *PowerPage=getCmdByCheckName(1,"界面切换"); + InstructionLib *PowerCali=getCmdByCheckName(0,"校准"); + InstructionLib *PowerCaliSt=getCmdByCheckName(1,"校准"); if(PowerCali!=nullptr && PowerCaliSt!=nullptr && PowerCaliSt!=nullptr){ InstructionLib Temp; InstructionLib TempSt; @@ -3722,8 +3959,8 @@ else if(sLabel=="电流示值误差(直接测量)") sRole ="电流表"; BaseCommonApi::SaveLogInfo(1,QString("可编程交流电源读取数值")); - VisaCommonEngine engineRole=getVisaCommbyRoleName("sRole"); //角色 - InstructionLib *instrcutLibRole=getCmdByRoleName("sRole",sLabel); + VisaCommonEngine engineRole=getVisaCommbyRoleName(sRole); //角色 + InstructionLib *instrcutLibRole=getCmdByRoleName(sRole,sLabel); sRet = ReadDevice(instrcutLibRole,&engineRole); }else{ BaseCommonApi::SaveLogInfo(1,QString("被检设备输出")); diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp index 0367ee1..a6a927f 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.cpp @@ -186,9 +186,9 @@ return ""; } -int DialogCheckResult::getDictebyItemName(QString Name) +QString DialogCheckResult::getDictebyItemName(QString Name) { - int NewName=0; + QString NewName="0"; if(checkitemlist.keys().contains(Name)) { NewName=checkitemlist.value(Name); @@ -820,14 +820,14 @@ //示波器检定装置 else if(iEquipType==13) { - checkitemlist.insert("时基",1); - checkitemlist.insert("直流增益",2); - checkitemlist.insert("直流偏置",3); - checkitemlist.insert("频带宽度",4); - checkitemlist.insert("触发灵敏度",5); - checkitemlist.insert("上升时间",6); - checkitemlist.insert("输入电阻",7); - checkitemlist.insert("校准信号",8); + checkitemlist.insert("时基","1"); + checkitemlist.insert("直流增益","2"); + checkitemlist.insert("直流偏置","3"); + checkitemlist.insert("频带宽度","4"); + checkitemlist.insert("触发灵敏度","5"); + checkitemlist.insert("上升时间","6"); + checkitemlist.insert("输入电阻","7"); + checkitemlist.insert("校准信号","8"); QString Value,Unit; //ItemUnitSplit for (int i = 0; i < dataRes.count(); ++i) { @@ -881,7 +881,86 @@ measItem.bottom_measure_value=Value; measItem.bottom_measure_value_unit=Unit; //decibel_number - BaseCommonApi::InsertDeviceOscilloscopeCalibration(measItem); + BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); + } + } + //微波衰减器 + else if(iEquipType==11){ + QString Value,Unit; + //ItemUnitSplit + for (int i = 0; i < dataRes.count(); ++i) { + MicrowaveAttenuationCalibration measItem; + measItem.id = QString::number(api.generateId()); + measItem.data_id = measInfo.id; + measItem.data_type = "1"; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),Value,Unit); + measItem.nominal_value=Value; + measItem.nominal_value_unit=Unit; + measItem.composition=getValueByHeader(i,sLabel,"组合方式"); + measItem.direct_measure_value=getValueByHeader(i,sLabel,"直接测量值"); + measItem.add_measure_value=getValueByHeader(i,sLabel,"加入衰减测量值"); + measItem.attenuation_amount=getValueByHeader(i,sLabel,"衰减量"); + measItem.lower_index=getValueByHeader(i,sLabel,"指标下限"); + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + measItem.urel=getValueByHeader(i,sLabel,"U(k=2)"); + measItem.conclusion=getValueByHeader(i,sLabel,"结论"); + //decibel_number + BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); + } + } + else if(iEquipType==16){ + checkitemlist.insert("频率","1"); + checkitemlist.insert("交流电压","2"); + checkitemlist.insert("直流电压","3"); + checkitemlist.insert("上升时间","4"); + checkitemlist.insert("正弦信号平坦度","5"); + checkitemlist.insert("正弦信号平坦度","6"); + QString Value,Unit; + //ItemUnitSplit + for (int i = 0; i < dataRes.count(); ++i) { + LFSignalGeneratoCalibration measItem; + measItem.id = QString::number(api.generateId()); + measItem.data_id = measInfo.id; + measItem.data_type = getDictebyItemName(getValueByHeader(i,sLabel,"检定项目")); + ItemUnitSplit(getValueByHeader(i,sLabel,"标称值"),Value,Unit); + measItem.nominal_value=Value; + measItem.unit=Unit; + measItem.lower_index=getValueByHeader(i,sLabel,"指标下限"); + measItem.upper_index=getValueByHeader(i,sLabel,"指标上限"); + ItemUnitSplit(getValueByHeader(i,sLabel,"测量值"),Value,Unit); + measItem.measure_value=Value; + measItem.measure_value_unit=Unit; + measItem.conclusion=getValueByHeader(i,sLabel,"结论"); + //measItem.convert_deviation=""; + ItemUnitSplit(getValueByHeader(i,sLabel,"频率"),Value,Unit); + measItem.frequency=Value; + measItem.frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"电压"),Value,Unit); + measItem.voltage=Value; + measItem.voltage_unit=Unit; + measItem.rise_time=getValueByHeader(i,sLabel,"上升时间"); + //是否为基准点 如何判断 需确定 + measItem.datum_point="0"; + ItemUnitSplit(getValueByHeader(i,sLabel,"交流频率"),Value,Unit); + measItem.ac_frequency=Value; + measItem.ac_frequency_unit=Unit; + ItemUnitSplit(getValueByHeader(i,sLabel,"幅度"),Value,Unit); + measItem.amplitude=Value; + measItem.amplitude_unit=Unit; + measItem.flatness=getValueByHeader(i,sLabel,"平坦度"); + //超出范围标*(1/0)界面没有 + Value=getValueByHeader(i,sLabel,"技术指标"); + if(Value!=""){ + measItem.technical_index=Value.mid(1, Value.count() - 1); + measItem.technical_index_symbol=Value.left(1); + measItem.technical_index_unit= Value.right(1); + } + + + BaseCommonApi::SearchSelectTable(QString::number(iEquipType),&measItem); } } } diff --git a/softwareDirectory/AutoVerScheme/dialogcheckresult.h b/softwareDirectory/AutoVerScheme/dialogcheckresult.h index c04967d..bd38169 100644 --- a/softwareDirectory/AutoVerScheme/dialogcheckresult.h +++ b/softwareDirectory/AutoVerScheme/dialogcheckresult.h @@ -47,8 +47,8 @@ int curHeadIdx=-1; int iEquipType; QList catoryList; - QMap checkitemlist; - int getDictebyItemName(QString Name); + QMap checkitemlist; + QString getDictebyItemName(QString Name); void ItemUnitSplit(QString Value,QString &data,QString &unit); int curDevciceIdx=-1; }; diff --git a/softwareDirectory/AutoVerScheme/newcheckmethod.h b/softwareDirectory/AutoVerScheme/newcheckmethod.h index b80b45e..1f2c74f 100644 --- a/softwareDirectory/AutoVerScheme/newcheckmethod.h +++ b/softwareDirectory/AutoVerScheme/newcheckmethod.h @@ -52,7 +52,8 @@ VerificationProgramInfo programInfo; bool bEditMode=true; QStringList equipList={"多功能校准源标准装置","直流稳压电源检定装置","多功能电气安全标准器标准装置","0.02级活塞式压力计标准装置","二等铂电阻温度计标准装置","安全阀校验装置", - "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置"}; + "精密露点仪标准装置","E2等级砝码标准装置","频谱分析仪标准装置","信号发生器标准装置","微波衰减标准装置","频率短期稳定度标准装置","示波器标准装置","铯原子频率标准装置","小功率标准装置" + ,"低频信号发生器标准装置","S参数标准装置","失真度标准装置"}; QList catList; };