新的块
This commit is contained in:
		
							parent
							
								
									29acdf7eea
								
							
						
					
					
						commit
						b70e2d238a
					
				|  | @ -120,6 +120,7 @@ QString CplusToJava::jstring2QString(JNIEnv* env, jstring jstr) | ||||||
|     return qstr; |     return qstr; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| std::vector<double> CplusToJava::jobjectArray2vectorD(JNIEnv* env, jobjectArray listValue) | std::vector<double> CplusToJava::jobjectArray2vectorD(JNIEnv* env, jobjectArray listValue) | ||||||
| { | { | ||||||
|     // 处理数组元素
 |     // 处理数组元素
 | ||||||
|  | @ -128,15 +129,15 @@ std::vector<double> CplusToJava::jobjectArray2vectorD(JNIEnv* env, jobjectArray | ||||||
| 
 | 
 | ||||||
|     for (int i = 0; i < arrayLen; i++) { |     for (int i = 0; i < arrayLen; i++) { | ||||||
|         jobject element = env->GetObjectArrayElement(listValue, i); |         jobject element = env->GetObjectArrayElement(listValue, i); | ||||||
| 		if (element) |         if (element) | ||||||
| 		{ |         { | ||||||
| 			jdouble value = env->CallDoubleMethod(element, env->GetMethodID(env->FindClass("java/lang/Double"), "doubleValue", "()D")); |             jdouble value = env->CallDoubleMethod(element, env->GetMethodID(env->FindClass("java/lang/Double"), "doubleValue", "()D")); | ||||||
| 			results.push_back(value); |             results.push_back(value); | ||||||
| 		} |         } | ||||||
| 		else |         else | ||||||
| 		{ |         { | ||||||
| 			results.push_back(qQNaN()); |             results.push_back(qQNaN()); | ||||||
| 		} |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return results; |     return results; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <!DOCTYPE QtCreatorProject> | <!DOCTYPE QtCreatorProject> | ||||||
| <!-- Written by QtCreator 4.9.1, 2024-08-16T10:07:31. --> | <!-- Written by QtCreator 4.9.1, 2024-08-26T16:15:56. --> | ||||||
| <qtcreator> | <qtcreator> | ||||||
|  <data> |  <data> | ||||||
|   <variable>EnvironmentId</variable> |   <variable>EnvironmentId</variable> | ||||||
|  |  | ||||||
|  | @ -224,6 +224,10 @@ bool RadionuclideMessage::AnalyseMessgeBody(QTextStream &content) | ||||||
|         { |         { | ||||||
|             bRet &= Analyse_Certificate_Block(content, line); |             bRet &= Analyse_Certificate_Block(content, line); | ||||||
|         } |         } | ||||||
|  |         else if ( 0==line.compare(block_flag.at(23)) && bRet) | ||||||
|  |         { | ||||||
|  |             bRet &= Analyse_Gps_Block(content, line); | ||||||
|  |         } | ||||||
|         else if ( 0==line.compare(block_flag.at(24)) && bRet) |         else if ( 0==line.compare(block_flag.at(24)) && bRet) | ||||||
|         { |         { | ||||||
|             bRet &= Analyse_b_self_Attenuation_Block(content, line); |             bRet &= Analyse_b_self_Attenuation_Block(content, line); | ||||||
|  | @ -232,10 +236,7 @@ bool RadionuclideMessage::AnalyseMessgeBody(QTextStream &content) | ||||||
|         { |         { | ||||||
|             bRet &= Analyse_b_Efficiency_Block(content, line); |             bRet &= Analyse_b_Efficiency_Block(content, line); | ||||||
|         } |         } | ||||||
|         else if ( 0==line.compare(block_flag.at(23)) && bRet) | 
 | ||||||
|         { |  | ||||||
|             bRet &= Analyse_Gps_Block(content, line); |  | ||||||
|         } |  | ||||||
|         else |         else | ||||||
|         {   // 数据错误,数据有效
 |         {   // 数据错误,数据有效
 | ||||||
|             bIsValid = false; |             bIsValid = false; | ||||||
|  |  | ||||||
|  | @ -3249,125 +3249,137 @@ JNIEXPORT void JNICALL test_analyseSpectrum(const char* pszPath) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| jstring Java_org_jeecg_modules_native_1jni_CalValuesHandler_selfBgAnalyse(JNIEnv *env, jclass, jstring phdFile, jstring json) | //jstring Java_org_jeecg_modules_native_1jni_CalValuesHandler_selfBgAnalyse(JNIEnv *env, jclass, jstring phdFile, jstring json)
 | ||||||
| { | //{
 | ||||||
|     QString phdPath = CplusToJava::jstring2QString(env, phdFile); | //    QString phdPath = CplusToJava::jstring2QString(env, phdFile);
 | ||||||
|     //phd转换
 | //    //phd转换
 | ||||||
|     PHDFile* phd = new PHDFile; | //    PHDFile* phd = new PHDFile;
 | ||||||
| 
 | 
 | ||||||
|     phd->filepath = phdPath; | //    phd->filepath = phdPath;
 | ||||||
|     if(!AlgFunc::LoadSpectrum(phd)) | //    if(!AlgFunc::LoadSpectrum(phd))
 | ||||||
|     { | //    {
 | ||||||
|         return env->NewStringUTF(""); | //        printf("load error!\n");
 | ||||||
|     } | //        return env->NewStringUTF("");
 | ||||||
|  | //    }
 | ||||||
| 
 | 
 | ||||||
|     QDateTime collectStart = QDateTime::fromString(phd->collect.collection_start_date + " " + phd->collect.collection_start_time, QString(DATATIME_FORMAT)); | //    QDateTime collectStart = QDateTime::fromString(phd->collect.collection_start_date + " " + phd->collect.collection_start_time, QString(DATATIME_FORMAT));
 | ||||||
|     QDateTime collectStop = QDateTime::fromString(phd->collect.collection_stop_date + " " + phd->collect.collection_stop_time, QString(DATATIME_FORMAT)); | //    QDateTime collectStop = QDateTime::fromString(phd->collect.collection_stop_date + " " + phd->collect.collection_stop_time, QString(DATATIME_FORMAT));
 | ||||||
|     QDateTime acqStart = QDateTime::fromString(phd->acq.acquisition_start_date + " " + phd->acq.acquisition_start_time, QString(DATATIME_FORMAT)); | //    QDateTime acqStart = QDateTime::fromString(phd->acq.acquisition_start_date + " " + phd->acq.acquisition_start_time, QString(DATATIME_FORMAT));
 | ||||||
|     double tc = collectStart.secsTo(collectStop);   // 采样时间
 | //    double tc = collectStart.secsTo(collectStop);   // 采样时间
 | ||||||
|     double tp = collectStop.secsTo(acqStart);       // 衰变时间
 | //    double tp = collectStop.secsTo(acqStart);       // 衰变时间
 | ||||||
|     double tr = phd->acq.acquisition_real_time;     // 能谱获取实时间
 | //    double tr = phd->acq.acquisition_real_time;     // 能谱获取实时间
 | ||||||
|     double tl = phd->acq.acquisition_live_time;     // 能谱获取活时间
 | //    double tl = phd->acq.acquisition_live_time;     // 能谱获取活时间
 | ||||||
| //    QMap<QString, double> sendOdds;
 | ////    QMap<QString, double> sendOdds;
 | ||||||
| //    QMap<QString, double> halfLife;
 | ////    QMap<QString, double> halfLife;
 | ||||||
| //    QMap<QString, double> area;
 | ////    QMap<QString, double> area;
 | ||||||
| 
 | 
 | ||||||
|     QString jsonStr = CplusToJava::jstring2QString(env, json); | //    QString jsonStr = CplusToJava::jstring2QString(env, json);
 | ||||||
|     QJsonDocument doc; | //    printf("json str:%s\n",jsonStr.toStdString().c_str());
 | ||||||
|     doc = QJsonDocument::fromJson(jsonStr.toUtf8()); | //    QJsonDocument doc;
 | ||||||
|     QJsonObject inObj = doc.object(); | //    doc = QJsonDocument::fromJson(jsonStr.toUtf8());
 | ||||||
|  | //    QJsonObject inObj = doc.object();
 | ||||||
| 
 | 
 | ||||||
| //    QMap<QString, double> sendOdds = {{"XE-131m",(43.9) / 100.0},{"XE-133m",(45.7) / 100.0},{"XE-133",37 / 100.0},{"XE-135",90 / 100.0}};
 | ////    QMap<QString, double> sendOdds = {{"XE-131m",(43.9) / 100.0},{"XE-133m",(45.7) / 100.0},{"XE-133",37 / 100.0},{"XE-135",90 / 100.0}};
 | ||||||
| //    QMap<QString, double> halfLife = {{"XE-131m",11.93400 * (24 * 60 * 60)},{"XE-133m",2.190000 * (24 * 60 * 60)},{"XE-133",5.243000 * (24 * 60 * 60)},{"XE-135",0.380832 * (24 * 60 * 60)}};
 | ////    QMap<QString, double> halfLife = {{"XE-131m",11.93400 * (24 * 60 * 60)},{"XE-133m",2.190000 * (24 * 60 * 60)},{"XE-133",5.243000 * (24 * 60 * 60)},{"XE-135",0.380832 * (24 * 60 * 60)}};
 | ||||||
| ////        QMap<QString, double> halfLife = {{"XE-131m",11.93400},{"XE-133m",2.190000 },{"XE-133",5.243000 },{"XE-135",0.380832 }};
 | //////        QMap<QString, double> halfLife = {{"XE-131m",11.93400},{"XE-133m",2.190000 },{"XE-133",5.243000 },{"XE-135",0.380832 }};
 | ||||||
| //    QMap<QString, double> area = {{"XE-131m",579},{"XE-133m",925},{"XE-133",2361},{"XE-135",363}};
 | ////    QMap<QString, double> area = {{"XE-131m",579},{"XE-133m",925},{"XE-133",2361},{"XE-135",363}};
 | ||||||
|     QJsonArray data; | //    QJsonArray data;
 | ||||||
|     for(int i = 0; i < phd->bSelfAttenuation.devNames.size(); i++) | //    for(int i = 0; i < phd->bSelfAttenuation.devNames.size(); i++)
 | ||||||
|     { | //    {
 | ||||||
|         QString name = phd->bSelfAttenuation.devNames[i]; | //        QString name = phd->bSelfAttenuation.devNames[i];
 | ||||||
|         std::array<double, 3> self = phd->bSelfAttenuation.xenon[i]; | //        std::array<double, 3> self = phd->bSelfAttenuation.xenon[i];
 | ||||||
|         std::array<double, 3> self2 = phd->bSelfAttenuation.nitrogen[i]; | //        std::array<double, 3> self2 = phd->bSelfAttenuation.nitrogen[i];
 | ||||||
| 
 | 
 | ||||||
|         double vxe, vn2; | //        double vxe, vn2;
 | ||||||
|         vxe = phd->process.sample_volume_of_Xe; | //        vxe = phd->process.sample_volume_of_Xe;
 | ||||||
|         vn2 = phd->process.Xe_collection_yield; | //        vn2 = phd->process.Xe_collection_yield;
 | ||||||
|         QJsonObject factorObj = inObj[name].toObject(); | //        QJsonObject factorObj = inObj[name].toObject();
 | ||||||
| 
 | 
 | ||||||
|         double halfLife = factorObj["halflife"].toString().toDouble() * (24 * 60 * 60); | //        double halfLife = factorObj["halflife"].toString().toDouble() * (24 * 60 * 60);
 | ||||||
|         double sendOdds = factorObj["yield"].toString().toDouble() / 100.0; | //        double sendOdds = factorObj["yield"].toString().toDouble() / 100.0;
 | ||||||
|         double area = factorObj["area"].toString().toDouble(); | //        double area = factorObj["area"].toString().toDouble();
 | ||||||
|  | //        printf("halfLife:%f\n",halfLife);
 | ||||||
|  | //        printf("sendOdds:%f\n",sendOdds);
 | ||||||
|  | //        printf("area:%f\n",area);
 | ||||||
| 
 | 
 | ||||||
|         double bgeff, geff; | 
 | ||||||
|         double f; | //        double bgeff, geff;
 | ||||||
|         double fxe = self[0] - self[1] * vxe + self[2] * pow(10, -5) * pow(vxe,2); | //        double f;
 | ||||||
|         double fn2 = self2[0] - self2[0] * vn2 + self2[2] * pow(10, -4) * pow(vn2, 2); | //        double fxe = self[0] - self[1] * vxe + self[2] * pow(10, -5) * pow(vxe,2);
 | ||||||
|         f = fxe * fn2; | //        double fn2 = self2[0] - self2[0] * vn2 + self2[2] * pow(10, -4) * pow(vn2, 2);
 | ||||||
| //        if(phd->bSelfAttenuation.devNames[i].compare("XE-133") == 0)
 | //        f = fxe * fn2;
 | ||||||
|  | ////        if(phd->bSelfAttenuation.devNames[i].compare("XE-133") == 0)
 | ||||||
|  | ////        {
 | ||||||
|  | ////            double fxe133 = self[0] - self[1] * vxe + self[2] * pow(10, -5) * pow(vxe,2);
 | ||||||
|  | ////            double fn2133 = self2[0] - self2[0] * vn2 + self2[2] * pow(10, -4) * pow(vn2, 2);
 | ||||||
|  | ////            f = fxe133 * fn2133;
 | ||||||
|  | 
 | ||||||
|  | ////        }
 | ||||||
|  | ////        else if(phd->bSelfAttenuation.devNames[i].compare("XE-135") == 0)
 | ||||||
|  | ////        {
 | ||||||
|  | ////            double fxe135 = self[0] - self[1] * vxe + self[2] * pow(10, -5) * pow(vxe,2);
 | ||||||
|  | ////            double fn2135 = self2[0] - self2[0] * vn2 + self2[2] * pow(10, -4) * pow(vn2, 2);
 | ||||||
|  | ////            f = fxe135 * fn2135;
 | ||||||
|  | ////        }
 | ||||||
|  | ////        else if(phd->bSelfAttenuation.devNames[i].compare("XE-133m") == 0)
 | ||||||
|  | ////        {
 | ||||||
|  | ////            f = 1;
 | ||||||
|  | ////        }
 | ||||||
|  | ////        else if(phd->bSelfAttenuation.devNames[i].compare("XE-131m") == 0)
 | ||||||
|  | ////        {
 | ||||||
|  | ////            f = 1;
 | ||||||
|  | ////        }
 | ||||||
|  | 
 | ||||||
|  | //        for(int i2 = 0; i2 < phd->nMapbgEffiKD[CalPHD].nuclide_name.size(); i2++)
 | ||||||
| //        {
 | //        {
 | ||||||
| //            double fxe133 = self[0] - self[1] * vxe + self[2] * pow(10, -5) * pow(vxe,2);
 | //            if(phd->nMapbgEffiKD[CalPHD].nuclide_name[i2].compare(name) == 0)
 | ||||||
| //            double fn2133 = self2[0] - self2[0] * vn2 + self2[2] * pow(10, -4) * pow(vn2, 2);
 | //            {
 | ||||||
| //            f = fxe133 * fn2133;
 | //                bgeff = phd->nMapbgEffiKD[CalPHD].bg_efficiency[i2];
 | ||||||
| 
 | //                break;
 | ||||||
| //        }
 | //            }
 | ||||||
| //        else if(phd->bSelfAttenuation.devNames[i].compare("XE-135") == 0)
 |  | ||||||
| //        {
 |  | ||||||
| //            double fxe135 = self[0] - self[1] * vxe + self[2] * pow(10, -5) * pow(vxe,2);
 |  | ||||||
| //            double fn2135 = self2[0] - self2[0] * vn2 + self2[2] * pow(10, -4) * pow(vn2, 2);
 |  | ||||||
| //            f = fxe135 * fn2135;
 |  | ||||||
| //        }
 |  | ||||||
| //        else if(phd->bSelfAttenuation.devNames[i].compare("XE-133m") == 0)
 |  | ||||||
| //        {
 |  | ||||||
| //            f = 1;
 |  | ||||||
| //        }
 |  | ||||||
| //        else if(phd->bSelfAttenuation.devNames[i].compare("XE-131m") == 0)
 |  | ||||||
| //        {
 |  | ||||||
| //            f = 1;
 |  | ||||||
| //        }
 | //        }
 | ||||||
| 
 | 
 | ||||||
|         for(int i2 = 0; i2 < phd->nMapbgEffiKD[CalPHD].nuclide_name.size(); i2++) | //        for(int i2 = 0; i2 < phd->nMapEffiKD[CalPHD].dev_name.size(); i2++)
 | ||||||
|         { | //        {
 | ||||||
|             if(phd->nMapbgEffiKD[CalPHD].nuclide_name[i2].compare(name) == 0) | //            if(phd->nMapEffiKD[CalPHD].dev_name[i2].compare(name) == 0)
 | ||||||
|             { | //            {
 | ||||||
|                 bgeff = phd->nMapbgEffiKD[CalPHD].bg_efficiency[i2]; | //                geff = phd->nMapEffiKD[CalPHD].efficiency[i2];
 | ||||||
|                 break; | //                break;
 | ||||||
|             } | //            }
 | ||||||
|         } | //        }
 | ||||||
| 
 | 
 | ||||||
|         for(int i2 = 0; i2 < phd->nMapEffiKD[CalPHD].dev_name.size(); i2++) | //        double e = exp(1.0); // 计算e的值
 | ||||||
|         { | //        double ln2 = log(2);
 | ||||||
|             if(phd->nMapEffiKD[CalPHD].dev_name[i2].compare(name) == 0) | //        double T = (halfLife);
 | ||||||
|             { | //        double lambda = ln2 / T;
 | ||||||
|                 geff = phd->nMapEffiKD[CalPHD].efficiency[i2]; | //        double kc = lambda * tr / (1 - pow(e, -(lambda * tr)));
 | ||||||
|                 break; | //        double a_up = (area / f);
 | ||||||
|             } | //        double a_low = (tl * bgeff * geff * sendOdds);
 | ||||||
|         } | //        double a = (a_up / a_low) * kc;
 | ||||||
|  | //        double ac_mi = lambda * tp;
 | ||||||
|  | //        double ac_e = pow(e, ac_mi);
 | ||||||
|  | //        double ac_kc = (lambda * tc) / (1 - pow(e, -(lambda * tc)));
 | ||||||
| 
 | 
 | ||||||
|         double e = exp(1.0); // 计算e的值
 | //        double ac = (1000 * a / (vxe / 0.087)) * ac_e * ac_kc;
 | ||||||
|         double ln2 = log(2); | //         qDebug() << "ac : " << ac;
 | ||||||
|         double T = (halfLife); | //        double cBaseLine = factorObj["baseline"].toString().toDouble();
 | ||||||
|         double lambda = ln2 / T; | //        double ld = 2.71 + 4.65 * sqrt(cBaseLine);
 | ||||||
|         double kc = lambda * tr / (1 - pow(e, -(lambda * tr))); | //        double mda = (ld / a_low) * kc;
 | ||||||
|         double a_up = (area / f); | //        double mdc = (1000 * mda / (vxe / 0.087)) * ac_e * ac_kc;
 | ||||||
|         double a_low = (tl * bgeff * geff * sendOdds); |  | ||||||
|         double a = (a_up / a_low) * kc; |  | ||||||
|         double ac_mi = lambda * tp; |  | ||||||
|         double ac_e = pow(e, ac_mi); |  | ||||||
|         double ac_kc = (lambda * tc) / (1 - pow(e, -(lambda * tc))); |  | ||||||
| 
 | 
 | ||||||
|         double ac = (1000 * a / (vxe / 0.087)) * ac_e * ac_kc; | //        QJsonObject obj;
 | ||||||
|          qDebug() << "ac : " << ac; | //        obj["name"] = name;
 | ||||||
|  | //        obj["conc"] = ac;
 | ||||||
|  | //        obj["mda"] = mda;
 | ||||||
|  | //        obj["mdc"] = mdc;
 | ||||||
|  | //        data.push_back(obj);
 | ||||||
|  | //    }
 | ||||||
| 
 | 
 | ||||||
|          QJsonObject obj; | //    QJsonDocument document;
 | ||||||
|          obj["name"] = name; | //    document.setArray(data);
 | ||||||
|          obj["ac"] = ac; | //    QByteArray simpbyte_array = document.toJson(QJsonDocument::Compact);
 | ||||||
|          data.push_back(obj); | //    QString simpjson_str(simpbyte_array);
 | ||||||
|     } | //    printf("result : %s\n", simpjson_str.toStdString().c_str());
 | ||||||
| 
 | //    jstring jresult = env->NewStringUTF(simpjson_str.toStdString().c_str());
 | ||||||
|     QJsonDocument document; | //    return jresult;
 | ||||||
|     document.setArray(data); | //}
 | ||||||
|     QByteArray simpbyte_array = document.toJson(QJsonDocument::Compact); |  | ||||||
|     QString simpjson_str(simpbyte_array); |  | ||||||
| 
 |  | ||||||
|     jstring jresult = env->NewStringUTF(simpjson_str.toStdString().c_str()); |  | ||||||
|     return jresult; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  | @ -158,13 +158,13 @@ JNIEXPORT jstring JNICALL Java_org_jeecg_modules_native_1jni_CalValuesHandler_an | ||||||
| JNIEXPORT jstring JNICALL Java_org_jeecg_modules_native_1jni_CalValuesHandler_fitPeakFull | JNIEXPORT jstring JNICALL Java_org_jeecg_modules_native_1jni_CalValuesHandler_fitPeakFull | ||||||
| (JNIEnv *, jclass, jstring, jobject, jobject, jobject); | (JNIEnv *, jclass, jstring, jobject, jobject, jobject); | ||||||
| 
 | 
 | ||||||
| /*
 | ///*
 | ||||||
|  * Class:     org_jeecg_modules_native_jni_CalValuesHandler | // * Class:     org_jeecg_modules_native_jni_CalValuesHandler
 | ||||||
|  * Method:    selfBgAnalyse | // * Method:    selfBgAnalyse
 | ||||||
|  * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; | // * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 | ||||||
|  */ | // */
 | ||||||
| JNIEXPORT jstring JNICALL Java_org_jeecg_modules_native_1jni_CalValuesHandler_selfBgAnalyse | //JNIEXPORT jstring JNICALL Java_org_jeecg_modules_native_1jni_CalValuesHandler_selfBgAnalyse
 | ||||||
| (JNIEnv *, jclass, jstring, jstring); | //(JNIEnv *, jclass, jstring, jstring);
 | ||||||
| 
 | 
 | ||||||
| JNIEXPORT void JNICALL test_analyseSpectrum(const char* pszPath); | JNIEXPORT void JNICALL test_analyseSpectrum(const char* pszPath); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										8
									
								
								selfBgAnalyse.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								selfBgAnalyse.json
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | { | ||||||
|  | 	"XE-133":{ | ||||||
|  | 		"halflife":"11.12", | ||||||
|  | 		"yield":"2.1", | ||||||
|  | 		"area":"243", | ||||||
|  | 		"baseline":"1.0" | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 wanglong
						wanglong