feat:自建台站报告

This commit is contained in:
nieziyan 2024-08-02 15:37:30 +08:00
parent 0aeb76d959
commit 69e668a9a7
11 changed files with 827 additions and 21 deletions

View File

@ -457,8 +457,8 @@ public class Sample_C_Analysis {
idAnalysis = serviceQuotes.getAnalysesService().getIdAnalysis(sampleId); idAnalysis = serviceQuotes.getAnalysesService().getIdAnalysis(sampleId);
// 保存分析结果 ==> INSERT INTO RNAUTO.GARDS_ANALYSES // 保存分析结果 ==> INSERT INTO RNAUTO.GARDS_ANALYSES
saveAnalysisROI(sampleId, idAnalysis, middleDatas); saveAnalysisROI(sampleId, idAnalysis, middleDatas);
// 获取Table IdAnalysis:RoiId:GStoreMiddleProcessData // 获取Table RoiId:GStoreMiddleProcessData
middleDataTable(sampleId, middleDatas); middleDataTable(idAnalysis, middleDatas);
// 修改保存结果状态 ==> UPDATE ORIGINAL.GARDS_SAMPLE_DATA // 修改保存结果状态 ==> UPDATE ORIGINAL.GARDS_SAMPLE_DATA
// serviceQuotes.getSampleDataService().updateStatus(null,null); // serviceQuotes.getSampleDataService().updateStatus(null,null);
/* GARDS_CALIBRATION_PAIRS_ROI 数据表保存 */ /* GARDS_CALIBRATION_PAIRS_ROI 数据表保存 */
@ -811,8 +811,8 @@ public class Sample_C_Analysis {
serviceQuotes.getAnalysisRoiAutoService().saveBatch(analysisRois); serviceQuotes.getAnalysisRoiAutoService().saveBatch(analysisRois);
} }
public void middleDataTable(Integer sampleId, GStoreMiddleProcessData... middleDatas){ public void middleDataTable(Integer idAnalysis, GStoreMiddleProcessData... middleDatas){
List<GardsAnalysisRoi> analysisRois = serviceQuotes.getAnalysisRoiAutoService().analysisRoi(sampleId); List<GardsAnalysisRoi> analysisRois = serviceQuotes.getAnalysisRoiAutoService().analysisRoi(idAnalysis);
Map<Integer, GStoreMiddleProcessData> middleDataMap = new LinkedHashMap<>(); Map<Integer, GStoreMiddleProcessData> middleDataMap = new LinkedHashMap<>();
for (int i = 0; i < analysisRois.size(); i++) { for (int i = 0; i < analysisRois.size(); i++) {
GardsAnalysisRoi analysisRoi = analysisRois.get(i); GardsAnalysisRoi analysisRoi = analysisRois.get(i);

View File

@ -2314,6 +2314,12 @@ public class GammaFileUtil extends AbstractLogOrReport {
} }
} }
public List<String> GetReportContent(PHDFile phd, String userName, String flag) {
GStoreMiddleProcessData middleData = new GStoreMiddleProcessData();
GetInterMiddlData(phd, userName, middleData, flag);
return reportContent(middleData);
}
public boolean GetInterMiddlData(PHDFile phd, String userName, GStoreMiddleProcessData middleData, String flag) { public boolean GetInterMiddlData(PHDFile phd, String userName, GStoreMiddleProcessData middleData, String flag) {
boolean bRet = true; boolean bRet = true;
Map<String, NuclideLines> temp = new HashMap<>(); Map<String, NuclideLines> temp = new HashMap<>();
@ -3115,6 +3121,293 @@ public class GammaFileUtil extends AbstractLogOrReport {
return ""; return "";
} }
public List<String> reportContent(GStoreMiddleProcessData middleData) {
List<String> result = new ArrayList<>();
result.add(" CNL06 GENERATED REPORT");
result.add(" " + middleData.analyses_type + " RADIONUCLIDE REPORT");
if (middleData.sample_Type.equals(SystemType.PARTICULATE.getType())) {
result.add(" (Particulates Version) ");
} else if (middleData.sample_Type.equals(SystemType.GAMMA.getType())) {
result.add(" (Noble Gas Version) ");
}
result.add(" Creation Date " + DateUtils.formatDate(new Date(), "yyyy/MM/dd-HH:mm:ss"));
result.add("#SAMPLE INFORMATION");
//报告内容第一部分数据
result.add(rowFormat("%sStation ID:%-25s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_stationID));
result.add(rowFormat("%sDetector ID:%-24s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_detectID));
result.add(rowFormat("%sSample ID:%-26s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_id));
result.add(rowFormat("%sSample Geometry:%-20s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_Geometry));
result.add(rowFormat("%sSample Quantity[m3]:%-16s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_quantity));
result.add(rowFormat("%sSample Type:%-24s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_Type));
result.add(rowFormat("%sCollection Start:%-19s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_collection_start));
result.add(rowFormat("%sCollection Stop:%-20s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_collection_stop));
result.add(rowFormat("%sSampling Time[h]:%-19s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_time));
result.add(rowFormat("%sDecay Time[h]:%-22s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_decay_time));
result.add(rowFormat("%sAcquisition Start:%-18s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_acquisiton_start));
result.add(rowFormat("%sAcquisition Stop:%-19s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_acquistion_stop));
result.add(rowFormat("%sAcquisition Time[s]:%-16s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_acquistion_time));
result.add(rowFormat("%sAvg Flow Rate[m3/h]:%-16s%s", StringPool.SPACE, StringPool.SPACE, middleData.sample_Avg_Flow_Rate));
String[] cells1 = new String[]{" Collection Station Comments"};
String[] datas1 = new String[]{middleData.Collection_Station_Comments};
//根据固定宽度切割数据
Map<String, List<String>> reportMap1 = GetReportFixedWidth(cells1, datas1, 30);
List<String> title1 = reportMap1.get("title");
List<String> content1 = reportMap1.get("content");
for (int i = 0; i < title1.size(); i++) {
String title = title1.get(i);
String content = content1.get(i);
result.add(String.format("%s:%-8s%s", title, StringPool.SPACE, content));
}
//报告内容第二部分数据
String[] cell2 = new String[]{" Analysis General Comments"};
String[] datas2 = new String[]{middleData.NDC_Analysis_General_Comments};
//根据固定宽度切割数据
Map<String, List<String>> reportMap2 = GetReportFixedWidth(cell2, datas2, 30);
List<String> title2 = reportMap2.get("title");
List<String> content2 = reportMap2.get("content");
for (int i = 0; i < title2.size(); i++) {
String title = title2.get(i);
String content = content2.get(i);
result.add(String.format("%s:%-10s%s", title, StringPool.SPACE, content));
}
//获取核素信息
String qsNuclidesName = "";
for (int m = 0; m < middleData.nucl_ided_Nuclidename.size() - 1; m++) {
qsNuclidesName = qsNuclidesName + middleData.nucl_ided_Nuclidename.get(m) + ";";
}
if (middleData.nucl_ided_Nuclidename.size() > 1) {
qsNuclidesName = qsNuclidesName + middleData.nucl_ided_Nuclidename.get(middleData.nucl_ided_Nuclidename.size() - 1);
}
result.add("#ACTIVITY SUMMARY");
//报告内容第三部分数据
String[] cells3 = new String[]{" Nuclides Identified"};
String[] datas3 = new String[]{qsNuclidesName};
//根据固定宽度切割数据
Map<String, List<String>> reportMap3 = GetReportFixedWidth(cells3, datas3, 30);
List<String> title3 = reportMap3.get("title");
List<String> content3 = reportMap3.get("content");
for (int i = 0; i < title3.size(); i++) {
String title = title3.get(i);
String content = content3.get(i);
result.add(String.format("%s:%-16s%s", title, StringPool.SPACE, content));
}
result.add(String.format("%s:%-4s%s", " Keyline Activities for Nuclides", StringPool.SPACE, ""));
result.add(String.format("%s:%-8s%s", " with defined Reference Line", StringPool.SPACE, ""));
result.add(String.format("%s:%-12s%s", " Activity Reference Time", StringPool.SPACE, middleData.sample_acquisiton_start));
result.add(String.format("%s:%-7s%s", " Concentration Reference Time", StringPool.SPACE, middleData.sample_collection_start));
String nuclideTitle = "%-15s%-18s%-15s%-15s%-15s%-21s%-15s";
String[] nuclideData = new String[]{" Nuclide", "Halflife(s)", "Activity(Bq)", "RelErr%", "MDA(Bq)", "Conc(uBq/m^3)", "MDC"};
result.add(rowFormat(nuclideTitle, nuclideData));
for (int i = 0; i < middleData.nucl_ided_Nuclidename.size(); i++) {
result.add(rowFormat(nuclideTitle, StringPool.SPACE + middleData.nucl_ided_Nuclidename.get(i), middleData.nucl_ided_Halflife.get(i), String.format("%.3f", Double.valueOf(middleData.nucl_ided_activ_key.get(i))),
String.format("%.3f", Double.valueOf(middleData.nucl_ided_activ_key_err.get(i)) / Double.valueOf(middleData.nucl_ided_activ_key.get(i)) * 100), middleData.nucl_ided_mda.get(i),
middleData.nucl_ided_Concentration.get(i), middleData.nucl_ided_MDC.get(i)));
}
result.add("#PEAK SEARCH RESULTS");
result.add(StringPool.SPACE + middleData.peaks_idPeak.size() + " peaks reported:");
double peaksUsed = 0;
for (int m = 0; m < middleData.peaks_Nuclide_name.size(); m++) {
if (StringUtils.isNotBlank(middleData.peaks_Nuclide_name.get(m))) {
peaksUsed++;
}
}
result.add(StringPool.SPACE + peaksUsed + " peaks with ID (" + NumberFormatUtil.numberSixLen(String.valueOf(peaksUsed / middleData.peaks_idPeak.size() * 100)) + "%):");
result.add(StringPool.SPACE + (middleData.peaks_idPeak.size() - peaksUsed) + " peaks without ID(" + NumberFormatUtil.numberSixLen(String.valueOf(Double.valueOf(middleData.peaks_idPeak.size() - peaksUsed) / middleData.peaks_idPeak.size() * 100)) + "%):");
String peakTitle = "%-10s%-15s%-15s%-14s%-15s%-21s%-15s%-11s%-28s";
String[] peakData = new String[]{" PeakID", "Energy[kev]", "Centroid", "FWHM[kev]", "NetArea", "NAErr%", "Signif", "Sensit", "Nuclide"};
result.add(rowFormat(peakTitle, peakData));
for (int i = 0; i < middleData.peaks_idPeak.size(); i++) {
result.add(rowFormat(peakTitle, StringPool.SPACE + middleData.peaks_idPeak.get(i), String.format("%.3f", Double.valueOf(middleData.peaks_Energy.get(i))),
String.format("%.3f", Double.valueOf(middleData.peaks_peakCentroid.get(i))), String.format("%.3f", Double.valueOf(middleData.peaks_Fwhm.get(i))),
String.format("%.3f", Double.valueOf(middleData.peaks_Area.get(i))),
String.format("%.3f", (Double.valueOf(middleData.peaks_areaErr.get(i)) / Double.valueOf(middleData.peaks_Area.get(i)) * 100)),
String.format("%.3f", Double.valueOf(middleData.peaks_Significance.get(i))), String.format("%.3f", Double.valueOf(middleData.peaks_Sensitivity.get(i))),
StringUtils.join(middleData.peaks_Nuclide_name.get(i), StringPool.SEMICOLON)));
}
result.add("#PROCESSING PARAMETERS");
result.add(rowFormat("%sECutAnalysis_Low:%-19s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getECutAnalysis_Low())));
result.add(rowFormat("%sECutAnalysis_High:%-18s%s", StringPool.SPACE, StringPool.SPACE, middleData.setting_specSetup.getECutAnalysis_High() == -9999 ? "inf" : String.valueOf(middleData.setting_specSetup.getECutAnalysis_High())));
result.add(rowFormat("%sEnergyTolerance:%-20s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getEnergyTolerance())));
result.add(rowFormat("%sBaseImprovePSS:%-21s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getBaseImprovePSS())));
result.add(rowFormat("%sPSS_low:%-28s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getPss_low())));
result.add(rowFormat("%sk_back:%-29s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getK_back())));
result.add(rowFormat("%sk_alpha:%-28s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getK_alpha())));
result.add(rowFormat("%sk_beta:%-29s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getK_beta())));
result.add(rowFormat("%sRiskLevelK:%-25s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getRiskLevelK())));
Date refTimeAct = middleData.setting_specSetup.getRefTime_act();
result.add(rowFormat("%srefTime_act:%-24s%s", StringPool.SPACE, StringPool.SPACE, DateUtils.formatDate(refTimeAct), "yyyy-MM-dd HH:mm:ss"));
result.add(rowFormat("%srefTime_conc:%-23s%s", StringPool.SPACE, StringPool.SPACE, DateUtils.formatDate(middleData.setting_specSetup.getRefTime_conc(), "yyyy-MM-dd HH:mm:ss")));
result.add("#CALIBRATION PARAMETERS");
result.add(rowFormat("%sCalibrationPSS_low:%-17s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getCalibrationPSS_low())));
result.add(rowFormat("%sCalibrationPSS_high:%-16s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(middleData.setting_specSetup.getCalibrationPSS_high())));
result.add(rowFormat("%sbUpdateCal:%-25s%s", StringPool.SPACE, StringPool.SPACE, (middleData.setting_specSetup.isBUpdateCal() ? "1" : "0")));
result.add(rowFormat("%sKeepCalPeakSearchPeaks:%-13s%s", StringPool.SPACE, StringPool.SPACE, (middleData.setting_specSetup.isKeepCalPeakSearchPeaks() ? "1" : "0")));
if (middleData.calibration_pairs_E_idCalPoint.size() > 0) {
result.add("#Calibration");
result.add(" Energy Calibration [" + middleData.calibration_pairs_E_Input + " ]");
result.add(rowFormat("%sFunction:%-27s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_E_functionTypeDef));
String[] cellsE4 = new String[]{" E"};
String[] datasE4 = new String[]{middleData.calibration_E_functionDef};
//根据固定宽度切割数据
Map<String, List<String>> reportMapE4 = GetReportFixedWidth(cellsE4, datasE4, 30);
List<String> titleE4 = reportMapE4.get("title");
List<String> contentE4 = reportMapE4.get("content");
for (int i = 0; i < titleE4.size(); i++) {
String title = titleE4.get(i);
String content = contentE4.get(i);
result.add(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content));
}
String[] cells4 = new String[]{" P"};
String[] datas4 = new String[]{middleData.calibration_E_coeff_string};
//根据固定宽度切割数据
Map<String, List<String>> reportMap4 = GetReportFixedWidth(cells4, datas4, 30);
List<String> title4 = reportMap4.get("title");
List<String> content4 = reportMap4.get("content");
for (int i = 0; i < title4.size(); i++) {
String title = title4.get(i);
String content = content4.get(i);
result.add(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content));
}
result.add(rowFormat("%sErr:%-32s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_E_uncoeff_string));
result.add(rowFormat("%sData:%-31s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_pairs_E_Input));
}
if (middleData.calibration_pairs_R_idCalPoint.size() > 0) {
result.add(" Resolution Calibration [" + middleData.calibration_pairs_R_Input + " ]");
result.add(rowFormat("%sFunction:%-27s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_R_functionTypeDef));
String[] cellsE5 = new String[]{" E"};
String[] datasE5 = new String[]{middleData.calibration_R_functionDef};
//根据固定宽度切割数据
Map<String, List<String>> reportMapE5 = GetReportFixedWidth(cellsE5, datasE5, 30);
List<String> titleE5 = reportMapE5.get("title");
List<String> contentE5 = reportMapE5.get("content");
for (int i = 0; i < titleE5.size(); i++) {
String title = titleE5.get(i);
String content = contentE5.get(i);
result.add(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content));
}
String[] cells5 = new String[]{" P"};
String[] datas5 = new String[]{middleData.calibration_R_coeff_string};
//根据固定宽度切割数据
Map<String, List<String>> reportMap5 = GetReportFixedWidth(cells5, datas5, 30);
List<String> title5 = reportMap5.get("title");
List<String> content5 = reportMap5.get("content");
for (int i = 0; i < title5.size(); i++) {
String title = title5.get(i);
String content = content5.get(i);
result.add(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content));
}
result.add(rowFormat("%sErr:%-32s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_R_uncoeff_string));
result.add(rowFormat("%sData:%-31s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_pairs_R_Input));
}
if (middleData.calibration_pairs_EF_idCalPoint.size() > 0) {
result.add(" Efficiency Calibration [" + middleData.calibration_pairs_EF_Input + " ]");
result.add(rowFormat("%sFunction:%-27s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_EF_functionTypeDef));
String[] cellsE6 = new String[]{" E"};
String[] datasE6 = new String[]{middleData.calibration_EF_functionDef};
//根据固定宽度切割数据
Map<String, List<String>> reportMapE6 = GetReportFixedWidth(cellsE6, datasE6, 30);
List<String> titleE6 = reportMapE6.get("title");
List<String> contentE6 = reportMapE6.get("content");
for (int i = 0; i < titleE6.size(); i++) {
String title = titleE6.get(i);
String content = contentE6.get(i);
result.add(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content));
}
String[] cells6 = new String[]{" P"};
String[] datas6 = new String[]{middleData.calibration_EF_coeff_string};
//根据固定宽度切割数据
Map<String, List<String>> reportMap6 = GetReportFixedWidth(cells6, datas6, 30);
List<String> title6 = reportMap6.get("title");
List<String> content6 = reportMap6.get("content");
for (int i = 0; i < title6.size(); i++) {
String title = title6.get(i);
String content = content6.get(i);
result.add(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content));
}
result.add(rowFormat("%sErr:%-32s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_EF_uncoeff_string));
result.add(rowFormat("%sData:%-31s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_pairs_EF_Input));
}
if (middleData.calibration_pairs_T_idCalPoint.size() > 0) {
result.add(" Tot_efficiency Calibration [" + middleData.calibration_pairs_T_Input + " ]");
result.add(rowFormat("%sFunction:%-27s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_T_functionTypeDef));
String[] cellsE7 = new String[]{" E"};
String[] datasE7 = new String[]{middleData.calibration_T_functionDef};
//根据固定宽度切割数据
Map<String, List<String>> reportMapE7 = GetReportFixedWidth(cellsE7, datasE7, 30);
List<String> titleE7 = reportMapE7.get("title");
List<String> contentE7 = reportMapE7.get("content");
for (int i = 0; i < titleE7.size(); i++) {
String title = titleE7.get(i);
String content = contentE7.get(i);
result.add(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content));
}
String[] cells7 = new String[]{" P"};
String[] datas7 = new String[]{middleData.calibration_T_coeff_string};
//根据固定宽度切割数据
Map<String, List<String>> reportMap7 = GetReportFixedWidth(cells7, datas7, 30);
List<String> title7 = reportMap7.get("title");
List<String> content7 = reportMap7.get("content");
for (int i = 0; i < title7.size(); i++) {
String title = title7.get(i);
String content = content7.get(i);
result.add(rowFormat("%s:%-34s%s", title, StringPool.SPACE, content));
}
result.add(rowFormat("%sErr:%-32s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_T_uncoeff_string));
result.add(rowFormat("%sData:%-31s%s", StringPool.SPACE, StringPool.SPACE, middleData.calibration_pairs_T_Input));
}
result.add("#DATA QUALITY FLAGS");
String qualityTitle = "%-15s%-15s%-15s%-15s";
result.add(rowFormat(qualityTitle, " Name", "Pass/Fail", "Value", "Test"));
for (int i = 0; i < middleData.QC_CHECK_QC_NAME.size(); i++) {
result.add(rowFormat(qualityTitle, StringPool.SPACE + middleData.QC_CHECK_QC_NAME.get(i), (Double.valueOf(middleData.QC_CHECK_QC_RESULT.get(i)) < 1 ? "Fail" : "Pass"), StringUtils.isNotBlank(middleData.QC_CHECK_QC_VALUE.get(i)) ? String.format("%.3f", Double.valueOf(middleData.QC_CHECK_QC_VALUE.get(i))) : "null", middleData.QC_CHECK_QC_STANDARD.get(i)));
}
return result;
}
public List<String> DoubleLimit(List data) { public List<String> DoubleLimit(List data) {
List<String> rData = new LinkedList<>(); List<String> rData = new LinkedList<>();
for(int pos=0;pos<data.size();pos++) { for(int pos=0;pos<data.size();pos++) {

View File

@ -7,7 +7,5 @@ import java.util.List;
public interface IGardsAnalysisRoiAutoService extends IService<GardsAnalysisRoi> { public interface IGardsAnalysisRoiAutoService extends IService<GardsAnalysisRoi> {
Integer getIdAnalysisAny(Integer sampleId); List<GardsAnalysisRoi> analysisRoi(Integer idAnalysis);
List<GardsAnalysisRoi> analysisRoi(Integer sampleId);
} }

View File

@ -16,21 +16,11 @@ import java.util.List;
@DS("ora") @DS("ora")
public class GardsAnalysisRoiAutoServiceImpl extends ServiceImpl<GardsAnalysisRoiMapper, GardsAnalysisRoi> implements IGardsAnalysisRoiAutoService { public class GardsAnalysisRoiAutoServiceImpl extends ServiceImpl<GardsAnalysisRoiMapper, GardsAnalysisRoi> implements IGardsAnalysisRoiAutoService {
@Override @Override
public Integer getIdAnalysisAny(Integer sampleId) { public List<GardsAnalysisRoi> analysisRoi(Integer idAnalysis) {
LambdaQueryWrapper<GardsAnalysisRoi> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<GardsAnalysisRoi> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(GardsAnalysisRoi::getSampleId, sampleId); wrapper.eq(GardsAnalysisRoi::getIdAnalysis, idAnalysis);
List<GardsAnalysisRoi> analysisRois = list(wrapper); wrapper.orderByAsc(GardsAnalysisRoi::getRoiNum);
return analysisRois.stream().findAny().orElse(new GardsAnalysisRoi())
.getIdAnalysis();
}
@Override
public List<GardsAnalysisRoi> analysisRoi(Integer sampleId) {
LambdaQueryWrapper<GardsAnalysisRoi> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(GardsAnalysisRoi::getSampleId, sampleId);
wrapper.orderByAsc(GardsAnalysisRoi::getIdAnalysis);
return list(wrapper); return list(wrapper);
} }
} }

View File

@ -11,6 +11,11 @@ import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.cache.SelfCache; import org.jeecg.common.cache.SelfCache;
import org.jeecg.modules.base.abstracts.AbstractLogOrReport; import org.jeecg.modules.base.abstracts.AbstractLogOrReport;
import org.jeecg.modules.base.enums.CalName; import org.jeecg.modules.base.enums.CalName;
import org.jeecg.modules.base.enums.DataTypeAbbr;
import org.jeecg.modules.entity.GardsCalibrationSpectrum;
import org.jeecg.modules.entity.GardsROIChannelsSpectrum;
import org.jeecg.modules.entity.GardsROIResultsSpectrum;
import org.jeecg.modules.entity.GardsXeResultsSpectrum;
import org.jeecg.modules.entity.vo.*; import org.jeecg.modules.entity.vo.*;
import org.jeecg.modules.native_jni.CalValuesHandler; import org.jeecg.modules.native_jni.CalValuesHandler;
import org.jeecg.modules.native_jni.EnergySpectrumHandler; import org.jeecg.modules.native_jni.EnergySpectrumHandler;
@ -27,6 +32,7 @@ import java.io.PrintWriter;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.ParseException; import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Component @Component
@Slf4j @Slf4j
@ -1104,4 +1110,434 @@ public class SelfStationUtil extends AbstractLogOrReport {
} }
} }
public List<String> reportContent(BetaDataFile betaDataFile, RRRLogInfo rrrLogInfo){
GardsCalibrationSpectrum gammaCalibrationParamS = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum gammaCalibrationParamG = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum gammaCalibrationParamD = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum gammaCalibrationParamES = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum gammaCalibrationParamEG = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum gammaCalibrationParamED = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum betaCalibrationParamS = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum betaCalibrationParamG = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum betaCalibrationParamD = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum betaCalibrationParamES = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum betaCalibrationParamEG = new GardsCalibrationSpectrum();
GardsCalibrationSpectrum betaCalibrationParamED = new GardsCalibrationSpectrum();
List<String> result = new ArrayList<>();
//对分析后的内容进行数据获取
List<GardsROIChannelsSpectrum> channelsSpectrums = betaDataFile.getRoiChannelsSpectrumList();
List<GardsROIChannelsSpectrum> roiChannelsSpectrumsSample = channelsSpectrums.stream().filter(item -> item.getDataType().equalsIgnoreCase(DataTypeAbbr.SAMPLEPHD.getType())).collect(Collectors.toList());
List<GardsROIChannelsSpectrum> roiChannelsSpectrumsGas = channelsSpectrums.stream().filter(item -> item.getDataType().equalsIgnoreCase(DataTypeAbbr.GASBKPHD.getType())).collect(Collectors.toList());
List<GardsROIChannelsSpectrum> roiChannelsSpectrumsDet = channelsSpectrums.stream().filter(item -> item.getDataType().equalsIgnoreCase(DataTypeAbbr.DETBKPHD.getType())).collect(Collectors.toList());
List<GardsROIResultsSpectrum> resultsSpectrums = betaDataFile.getRoiResultsSpectrumList();
List<GardsXeResultsSpectrum> xeResultsSpectrums = betaDataFile.getXeResultsSpectrumList();
for (int i=0; i<xeResultsSpectrums.size(); i++) {
for (int j=0; j<rrrLogInfo.getXeResultsSpectrumList().size(); j++) {
if (xeResultsSpectrums.get(i).getNuclideName().equalsIgnoreCase(rrrLogInfo.getXeResultsSpectrumList().get(j).getNuclideName())) {
xeResultsSpectrums.get(i).setNidFlag(rrrLogInfo.getXeResultsSpectrumList().get(j).getNidFlag());
}
}
}
//#SAMPLE: LIMITS PER ROI GAMMA
List<GardsCalibrationSpectrum> gammaCalibrationParamList = betaDataFile.getGammaCalibrationSpectrumList();
List<GardsCalibrationSpectrum> gammaCalibrationSpectrumEList = betaDataFile.getGammaCalibrationSpectrumEList();
for (int i=0; i<gammaCalibrationParamList.size(); i++) {
if (gammaCalibrationParamList.get(i).getDataType().equals(DataTypeAbbr.SAMPLEPHD.getType())) {
gammaCalibrationParamS = gammaCalibrationParamList.get(i);
} else if (gammaCalibrationParamList.get(i).getDataType().equals(DataTypeAbbr.GASBKPHD.getType())) {
gammaCalibrationParamG = gammaCalibrationParamList.get(i);
} else if (gammaCalibrationParamList.get(i).getDataType().equals(DataTypeAbbr.DETBKPHD.getType())) {
gammaCalibrationParamD = gammaCalibrationParamList.get(i);
}
}
for (int i=0; i<gammaCalibrationSpectrumEList.size(); i++) {
if (gammaCalibrationSpectrumEList.get(i).getDataType().equals(DataTypeAbbr.SAMPLEPHD.getType())) {
gammaCalibrationParamES = gammaCalibrationSpectrumEList.get(i);
} else if (gammaCalibrationSpectrumEList.get(i).getDataType().equals(DataTypeAbbr.GASBKPHD.getType())) {
gammaCalibrationParamEG = gammaCalibrationSpectrumEList.get(i);
} else if (gammaCalibrationSpectrumEList.get(i).getDataType().equals(DataTypeAbbr.DETBKPHD.getType())) {
gammaCalibrationParamED = gammaCalibrationSpectrumEList.get(i);
}
}
//#SAMPLE: LIMITS PER ROI BETA
List<GardsCalibrationSpectrum> betaCalibrationParamList = betaDataFile.getBetaCalibrationSpectrumList();
List<GardsCalibrationSpectrum> betaCalibrationSpectrumEList = betaDataFile.getBetaCalibrationSpectrumEList();
for (int i=0; i<betaCalibrationParamList.size(); i++) {
if (betaCalibrationParamList.get(i).getDataType().equals(DataTypeAbbr.SAMPLEPHD.getType())) {
betaCalibrationParamS = betaCalibrationParamList.get(i);
} else if (betaCalibrationParamList.get(i).getDataType().equals(DataTypeAbbr.GASBKPHD.getType())) {
betaCalibrationParamG = betaCalibrationParamList.get(i);
} else if (betaCalibrationParamList.get(i).getDataType().equals(DataTypeAbbr.DETBKPHD.getType())) {
betaCalibrationParamD = betaCalibrationParamList.get(i);
}
}
for (int i=0; i<betaCalibrationSpectrumEList.size(); i++) {
if (betaCalibrationSpectrumEList.get(i).getDataType().equals(DataTypeAbbr.SAMPLEPHD.getType())) {
betaCalibrationParamES = betaCalibrationSpectrumEList.get(i);
} else if (betaCalibrationSpectrumEList.get(i).getDataType().equals(DataTypeAbbr.GASBKPHD.getType())) {
betaCalibrationParamEG = betaCalibrationSpectrumEList.get(i);
} else if (betaCalibrationSpectrumEList.get(i).getDataType().equals(DataTypeAbbr.DETBKPHD.getType())) {
betaCalibrationParamED = betaCalibrationSpectrumEList.get(i);
}
}
Information information = new Information();
//sampleFile 相关数据
EnergySpectrumStruct sampleSourceData = betaDataFile.getSampleStruct();
if (Objects.nonNull(sampleSourceData)) {
try {
information.setSample_measid_name(sampleSourceData.measurement_id);
information.setSample_det_measid_name(sampleSourceData.detector_bk_measurement_id);
information.setSample_gas_measid_name(sampleSourceData.gas_bk_measurement_id);
information.setSit_det_code(sampleSourceData.site_code);
information.setSample_type(sampleSourceData.system_type);
information.setGeometry(sampleSourceData.sample_geometry);
information.setSpectral_qualifie(sampleSourceData.spectrum_quantity);
String transmit_dtg_str=sampleSourceData.transmit_date+ StringPool.SPACE+sampleSourceData.transmit_time;
Date transmit_dtg = DateUtils.parseDate(transmit_dtg_str);
information.setTransmit_dtg(transmit_dtg);
information.setDetect_code(sampleSourceData.detector_code);
information.setMeasurementID(sampleSourceData.measurement_id.replace("\\","/"));
information.setBkgdMeasurementID(sampleSourceData.detector_bk_measurement_id.replace("\\","/"));
information.setGasBkgdMeasurementID(sampleSourceData.gas_bk_measurement_id.replace("\\","/"));
information.setSampleRefId(sampleSourceData.sample_ref_id);
String collect_start_str = sampleSourceData.collection_start_date+StringPool.SPACE+sampleSourceData.collection_start_time;
Date collect_start = DateUtils.parseDate(collect_start_str);
information.setCollect_start(collect_start);
String collect_stop_str = sampleSourceData.collection_stop_date+StringPool.SPACE+sampleSourceData.collection_stop_time;
Date collect_stop = DateUtils.parseDate(collect_stop_str);
information.setCollect_stop(collect_stop);
information.setS_xe_stable_volume(sampleSourceData.air_volume);
String acquisition_start_str = sampleSourceData.acquisition_start_date+StringPool.SPACE+sampleSourceData.acquisition_start_time;
Date acquisition_start = DateUtils.parseDate(acquisition_start_str);
information.setAcquisition_start(acquisition_start);
long dataTime = (long) (acquisition_start.getTime() + sampleSourceData.acquisition_real_time * 1000);
String acquisition_stop_str = DateUtils.formatDate(new Date(dataTime), "yyyy/MM/dd HH:mm:ss");
Date acquisition_stop = DateUtils.parseDate(acquisition_stop_str);
information.setAcquisition_stop(acquisition_stop);
information.setAcquisition_real_sec(sampleSourceData.acquisition_real_time);
information.setAcquisition_live_sec(sampleSourceData.acquisition_live_time);
information.setS_volume_of_Xe(sampleSourceData.sample_volume_of_Xe);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
EnergySpectrumStruct gasSourceData = betaDataFile.getGasStruct();
if (Objects.nonNull(gasSourceData)) {
information.setGas_measid_name(gasSourceData.measurement_id);
}
EnergySpectrumStruct detSourceData = betaDataFile.getDetStruct();
if (Objects.nonNull(detSourceData)) {
information.setDet_measid_name(detSourceData.measurement_id);
}
result.add(titleFormat("%sCNL06 GENERATED REPORT%s", 60, StringPool.SPACE, StringPool.SPACE));
result.add(titleFormat("%sREVIEWED RADIONUCLIDE REPORT%s", 57, StringPool.SPACE, StringPool.SPACE));
result.add(titleFormat("%s(Noble Gas Version)%s", 61, StringPool.SPACE, StringPool.SPACE));
result.add(titleFormat("%sCreation Date "+DateUtils.formatDate(new Date(), "yyyy/MM/dd-HH:mm:ss")+"%s", 54, StringPool.SPACE, StringPool.SPACE));
result.add("#FILE INFORMATION");
result.add(rowFormat("%sSampleMeasID:%-15s%s", StringPool.SPACE, StringPool.SPACE, information.getMeasurementID()));
result.add(rowFormat("%sGASBKMeasID:%-16s%s", StringPool.SPACE, StringPool.SPACE, information.getGasBkgdMeasurementID()));
result.add(rowFormat("%sSRID:%-23s%s", StringPool.SPACE, StringPool.SPACE, information.getSampleRefId()));
result.add(rowFormat("%sDetector Type:%-14s%s", StringPool.SPACE, StringPool.SPACE, "3D b-g"));
result.add("#COLLECTION INFORMATION");
result.add(rowFormat("%sStation CODE:%-15s%s", StringPool.SPACE, StringPool.SPACE, information.getSit_det_code()));
result.add(rowFormat("%sDetector CODE:%-14s%s", StringPool.SPACE, StringPool.SPACE, information.getDetect_code()));
result.add(rowFormat("%sCollection Start:%-11s%s", StringPool.SPACE, StringPool.SPACE, DateUtils.formatDate(information.getCollect_start(), "yyyy/MM/dd HH:mm:ss")));
result.add(rowFormat("%sCollection Stop:%-12s%s", StringPool.SPACE, StringPool.SPACE, DateUtils.formatDate(information.getCollect_stop(), "yyyy/MM/dd HH:mm:ss")));
result.add(rowFormat("%sCollection TIME(h):%-9s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(((information.getCollect_stop().getTime()-information.getCollect_start().getTime())/1000)/3600)));
result.add(rowFormat("%sAir Volume[cm3]:%-12s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(information.getS_xe_stable_volume())));
result.add(rowFormat("%sXe Volume[cm3]:%-13s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(information.getS_volume_of_Xe())));
result.add("#ACQUISITION INFORMATION");
result.add(rowFormat("%sAcquisition Start:%-10s%s", StringPool.SPACE, StringPool.SPACE, DateUtils.formatDate(information.getAcquisition_start(), "yyyy/MM/dd HH:mm:ss")));
result.add(rowFormat("%sAcq Real Time(s):%-11s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(information.getAcquisition_real_sec())));
result.add(rowFormat("%sAcq Live Time:%-14s%s", StringPool.SPACE, StringPool.SPACE, String.valueOf(information.getAcquisition_live_sec())));
result.add("#SOFTWARE");
result.add(rowFormat("%sversion:%-20s%s", StringPool.SPACE, StringPool.SPACE, "1.0.1"));
result.add("#SAMPLE Old CALIBRATION");
result.add(rowFormat("%sOld Beta%-43sOld Gamma%-42s", StringPool.SPACE, StringPool.SPACE, StringPool.SPACE));
//拼接历史计算公式 CH
String oldBetaSampleCHStr = rowFormat("%sCH(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE,
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(1)),
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(2)));
String oldGammaSampleCHStr = rowFormat("CH(x) = (%s)+(%s)*x+(%s)x*x%-24s",
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(1)),
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(2)), StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-oldBetaSampleCHStr.length())+"s%s", oldBetaSampleCHStr, StringPool.SPACE, oldGammaSampleCHStr));
//拼接历史计算公式 E
String oldBetaSampleEStr = rowFormat("%sE(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE,
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(1)),
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(2)));
String oldGammaSampleEStr = rowFormat("E(x) = (%s)+(%s)*x+(%s)x*x%-24s",
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(1)),
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(2)), StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-oldBetaSampleEStr.length())+"s%s", oldBetaSampleEStr, StringPool.SPACE, oldGammaSampleEStr));
result.add("#SAMPLE New CALIBRATION");
result.add(rowFormat("%sNew Beta%-43sNew Gamma%-42s", StringPool.SPACE, StringPool.SPACE, StringPool.SPACE));
//拼接新计算公式 CH
String newBetaSampleCHStr = rowFormat("%sCH(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE,
(Objects.isNull(betaCalibrationParamES.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamES.getCoeff1()))),
(Objects.isNull(betaCalibrationParamES.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamES.getCoeff2()))),
(Objects.isNull(betaCalibrationParamES.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamES.getCoeff3()))));
String newGammaSampleCHStr = rowFormat("CH(x) = (%s)+(%s)*x+(%s)x*x%-24s",
(Objects.isNull(gammaCalibrationParamES.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamES.getCoeff1()))),
(Objects.isNull(gammaCalibrationParamES.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamES.getCoeff2()))),
(Objects.isNull(gammaCalibrationParamES.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamES.getCoeff3()))),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-newBetaSampleCHStr.length())+"s%s", newBetaSampleCHStr, StringPool.SPACE, newGammaSampleCHStr));
//拼接新计算公式 E
String newBetaSampleEStr = rowFormat("%sE(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE,
(Objects.isNull(betaCalibrationParamS.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamS.getCoeff1()))),
(Objects.isNull(betaCalibrationParamS.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamS.getCoeff2()))),
(Objects.isNull(betaCalibrationParamS.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamS.getCoeff3()))));
String newGammaSampleEStr = rowFormat("E(x) = (%s)+(%s)*x+(%s)x*x%-24s",
(Objects.isNull(gammaCalibrationParamS.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamS.getCoeff1()))),
(Objects.isNull(gammaCalibrationParamS.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamS.getCoeff2()))),
(Objects.isNull(gammaCalibrationParamS.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamS.getCoeff3()))),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-newBetaSampleEStr.length())+"s%s", newBetaSampleEStr, StringPool.SPACE, newGammaSampleEStr));
result.add("#SAMPLE: LIMITS PER ROI");
String limitRoi = "%s%-15s%-15s%-15s";
result.add(rowFormat(limitRoi, StringPool.SPACE, "Roi", "Beta", "Gamma"));
if (CollectionUtils.isNotEmpty(roiChannelsSpectrumsSample)) {
for (GardsROIChannelsSpectrum channelsSpectrum:roiChannelsSpectrumsSample) {
result.add(rowFormat(limitRoi, StringPool.SPACE, String.valueOf(channelsSpectrum.getRoi()), channelsSpectrum.getBChanStart()+" to "+channelsSpectrum.getBChanStop(), channelsSpectrum.getGChanStart()+" to "+channelsSpectrum.getGChanStop()));
}
}
result.add("#DET Old CALIBRATION");
result.add(rowFormat("%sOld Beta%-43sOld Gamma%-42s", StringPool.SPACE, StringPool.SPACE, StringPool.SPACE));
//拼接历史计算公式 CH
String oldBetaDetCHStr = rowFormat("%sCH(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE, NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(1)), NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(2)));
String oldGammaDetCHStr = rowFormat("CH(x) = (%s)+(%s)*x+(%s)x*x%-24s", NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(1)), NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(2)),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-oldBetaDetCHStr.length())+"s%s", oldBetaDetCHStr, StringPool.SPACE, oldGammaDetCHStr));
//拼接历史计算公式 E
String oldBetaDetEStr = rowFormat("%sE(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE, NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(1)), NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(2)));
String oldGammaDetEStr = rowFormat("E(x) = (%s)+(%s)*x+(%s)x*x%-24s", NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(1)), NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(2)),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-oldBetaDetEStr.length())+"s%s", oldBetaDetEStr, StringPool.SPACE, oldGammaDetEStr));
result.add("#DET New CALIBRATION");
result.add(rowFormat("%sNew Beta%-43sNew Gamma%-42s", StringPool.SPACE, StringPool.SPACE, StringPool.SPACE));
//拼接新计算公式 CH
String newBetaDetCHStr = rowFormat("%sCH(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE,
(Objects.isNull(betaCalibrationParamED.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamED.getCoeff1()))),
(Objects.isNull(betaCalibrationParamED.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamED.getCoeff2()))),
(Objects.isNull(betaCalibrationParamED.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamED.getCoeff3()))));
String newGammaDetCHStr = rowFormat("CH(x) = (%s)+(%s)*x+(%s)x*x%-24s", (Objects.isNull(gammaCalibrationParamED.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamED.getCoeff1()))),
(Objects.isNull(gammaCalibrationParamED.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamED.getCoeff2()))),
(Objects.isNull(gammaCalibrationParamED.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamED.getCoeff3()))),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-newBetaDetCHStr.length())+"s%s", newBetaDetCHStr, StringPool.SPACE, newGammaDetCHStr));
//拼接新计算公式 E
String newBetaDetEStr = rowFormat("%sE(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE,
(Objects.isNull(betaCalibrationParamD.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamD.getCoeff1()))),
(Objects.isNull(betaCalibrationParamD.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamD.getCoeff2()))),
(Objects.isNull(betaCalibrationParamD.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamD.getCoeff3()))));
String newGammaDetEStr = rowFormat("E(x) = (%s)+(%s)*x+(%s)x*x%-24s", (Objects.isNull(gammaCalibrationParamD.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamD.getCoeff1()))),
(Objects.isNull(gammaCalibrationParamD.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamD.getCoeff2()))),
(Objects.isNull(gammaCalibrationParamD.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamD.getCoeff3()))),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-newBetaDetEStr.length())+"s%s", newBetaDetEStr, StringPool.SPACE, newGammaDetEStr));
result.add("#DET: LIMITS PER ROI");
result.add(rowFormat(limitRoi, StringPool.SPACE, "Roi", "Beta", "Gamma"));
if (CollectionUtils.isNotEmpty(roiChannelsSpectrumsDet)) {
for (GardsROIChannelsSpectrum channelsSpectrum:roiChannelsSpectrumsDet) {
result.add(rowFormat(limitRoi, StringPool.SPACE, String.valueOf(channelsSpectrum.getRoi()), channelsSpectrum.getBChanStart()+" to "+channelsSpectrum.getBChanStop(), channelsSpectrum.getGChanStart()+" to "+channelsSpectrum.getGChanStop()));
}
}
result.add("#GAS Old CALIBRATION");
result.add(rowFormat("%sOld Beta%-43sOld Gamma%-42s", StringPool.SPACE, StringPool.SPACE, StringPool.SPACE));
//拼接历史计算公式 CH
String oldBetaGasCHStr = rowFormat("%sCH(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE, NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(1)), NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(2)));
String oldGammaGasCHStr = rowFormat("CH(x) = (%s)+(%s)*x+(%s)x*x%-24s", NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(1)), NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(2)),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-oldBetaGasCHStr.length())+"s%s", oldBetaGasCHStr, StringPool.SPACE, oldGammaGasCHStr));
String oldBetaGasEStr = rowFormat("%sE(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE, NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(1)), NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(2)));
String oldGammaGasEStr = rowFormat("E(x) = (%s)+(%s)*x+(%s)x*x%-24s", NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(0)),
NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(1)), NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(2)),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-oldBetaGasEStr.length())+"s%s", oldBetaGasEStr, StringPool.SPACE, oldGammaGasEStr));
result.add("#GAS New CALIBRATION");
result.add(rowFormat("%sNew Beta%-43sNew Gamma%-42s", StringPool.SPACE, StringPool.SPACE, StringPool.SPACE));
//拼接新计算公式 CH
String newBetaGasCHStr = rowFormat("%sCH(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE,
(Objects.isNull(betaCalibrationParamEG.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamEG.getCoeff1()))),
(Objects.isNull(betaCalibrationParamEG.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamEG.getCoeff2()))),
(Objects.isNull(betaCalibrationParamEG.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaToUiOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamEG.getCoeff3()))));
String newGammaGasCHStr = rowFormat("CH(x) = (%s)+(%s)*x+(%s)x*x%-24s", (Objects.isNull(gammaCalibrationParamEG.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamEG.getCoeff1()))),
(Objects.isNull(gammaCalibrationParamEG.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamEG.getCoeff2()))),
(Objects.isNull(gammaCalibrationParamEG.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaToUiOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamEG.getCoeff3()))),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-newBetaGasCHStr.length())+"s%s", newBetaGasCHStr, StringPool.SPACE, newGammaGasCHStr));
//拼接新计算公式 E
String newBetaGasEStr = rowFormat("%sE(x) = (%s)+(%s)*x+(%s)x*x", StringPool.SPACE,
(Objects.isNull(betaCalibrationParamG.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamG.getCoeff1()))),
(Objects.isNull(betaCalibrationParamG.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamG.getCoeff2()))),
(Objects.isNull(betaCalibrationParamG.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getBetaFittingParaOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(betaCalibrationParamG.getCoeff3()))));
String newGammaGasEStr = rowFormat("E(x) = (%s)+(%s)*x+(%s)x*x%-24s", (Objects.isNull(gammaCalibrationParamG.getCoeff1())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(0)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamG.getCoeff1()))),
(Objects.isNull(gammaCalibrationParamG.getCoeff2())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(1)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamG.getCoeff2()))),
(Objects.isNull(gammaCalibrationParamG.getCoeff3())?NumberFormatUtil.numberSixLen(betaDataFile.getGammaFittingParaOld().get(2)):NumberFormatUtil.numberSixLen(String.valueOf(gammaCalibrationParamG.getCoeff3()))),
StringPool.SPACE);
result.add(rowFormat("%s%-"+(52-newBetaGasEStr.length())+"s%s", newBetaGasEStr, StringPool.SPACE, newGammaGasEStr));
result.add("#GAS: LIMITS PER ROI");
result.add(rowFormat(limitRoi, StringPool.SPACE, "Roi", "Beta", "Gamma"));
if (CollectionUtils.isNotEmpty(roiChannelsSpectrumsGas)) {
for (GardsROIChannelsSpectrum channelsSpectrum:roiChannelsSpectrumsGas) {
result.add(rowFormat(limitRoi, StringPool.SPACE, String.valueOf(channelsSpectrum.getRoi()), channelsSpectrum.getBChanStart()+" to "+channelsSpectrum.getBChanStop(), channelsSpectrum.getGChanStart()+" to "+channelsSpectrum.getGChanStop()));
}
}
result.add("#GROSS COUNTS PER ROI");
String grossRoi = "%s%-15s%-15s%-15s%-15s";
result.add(rowFormat(grossRoi, StringPool.SPACE, "Roi", "Sample", "GasBkgnd", "DetBkgnd"));
if (CollectionUtils.isNotEmpty(resultsSpectrums)) {
for (GardsROIResultsSpectrum resultsSpectrum:resultsSpectrums) {
result.add(rowFormat(grossRoi, StringPool.SPACE, String.valueOf(resultsSpectrum.getRoi()), String.valueOf(resultsSpectrum.getSGross()), String.valueOf(resultsSpectrum.getGGross()), String.valueOf(resultsSpectrum.getBGross())));
}
}
result.add("#NET COUNTS AND LC PER ROI");
String netRoi = "%s%-15s%-25s%-15s";
if (betaDataFile.isBProcessed()) {
if (CollectionUtils.isNotEmpty(resultsSpectrums)) {
if (Objects.isNull(resultsSpectrums.get(0).getLcCts())) {
result.add(rowFormat(netRoi, StringPool.SPACE, "Roi", "Net count", StringPool.SPACE));
if (CollectionUtils.isNotEmpty(resultsSpectrums)) {
for (GardsROIResultsSpectrum resultsSpectrum:resultsSpectrums){
result.add(rowFormat(netRoi, StringPool.SPACE, String.valueOf(resultsSpectrum.getRoi()), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getNet()))+" +/- "+NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getNetErr())), StringPool.SPACE));
}
}
} else {
result.add(rowFormat(netRoi, StringPool.SPACE, "Roi", "Net count", "LC"));
if (CollectionUtils.isNotEmpty(resultsSpectrums)) {
for (GardsROIResultsSpectrum resultsSpectrum:resultsSpectrums){
result.add(rowFormat(netRoi, StringPool.SPACE, String.valueOf(resultsSpectrum.getRoi()), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getNet()))+" +/- "+NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getNetErr())), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getLcCts()))));
}
}
}
} else {
result.add(rowFormat(netRoi, StringPool.SPACE, "Roi", "Net count", "LC"));
}
} else {
if (CollectionUtils.isNotEmpty(resultsSpectrums)) {
if (Objects.isNull(resultsSpectrums.get(0).getLcCts())) {
result.add(rowFormat(netRoi, StringPool.SPACE, "Roi", "Net count", StringPool.SPACE));
if (CollectionUtils.isNotEmpty(resultsSpectrums)) {
for (GardsROIResultsSpectrum resultsSpectrum:resultsSpectrums){
result.add(rowFormat(netRoi, StringPool.SPACE, String.valueOf(resultsSpectrum.getRoi()), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getNet()))+" +/- "+NumberFormatUtil.numberSixLen(String.valueOf(Math.sqrt(resultsSpectrum.getNetErr()))), StringPool.SPACE));
}
}
} else {
result.add(rowFormat(netRoi, StringPool.SPACE, "Roi", "Net count", "LC"));
if (CollectionUtils.isNotEmpty(resultsSpectrums)) {
for (GardsROIResultsSpectrum resultsSpectrum:resultsSpectrums){
result.add(rowFormat(netRoi, StringPool.SPACE, String.valueOf(resultsSpectrum.getRoi()), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getNet()))+" +/- "+NumberFormatUtil.numberSixLen(String.valueOf(Math.sqrt(resultsSpectrum.getNetErr()))), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getLcCts()))));
}
}
}
} else {
result.add(rowFormat(netRoi, StringPool.SPACE, "Roi", "Net count", "LC"));
}
}
result.add("#CONCENTRATION AND LC PER ROI");
String conLcRoi = "%s%-15s%-25s%-15s%-15s";
result.add(rowFormat(conLcRoi, StringPool.SPACE, "Roi", "Conc(mBq/m3)", "LC(mBq/m3)", "MDC(mBq/m3):"));
if (betaDataFile.isBProcessed()) {
if (CollectionUtils.isNotEmpty(resultsSpectrums)) {
for (GardsROIResultsSpectrum resultsSpectrum:resultsSpectrums){
result.add(rowFormat(conLcRoi, StringPool.SPACE, String.valueOf(resultsSpectrum.getRoi()), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getConc()))+" +/- "+NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getConcErr())), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getLc())), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getMdc()))));
}
}
} else {
if (CollectionUtils.isNotEmpty(resultsSpectrums)) {
for (GardsROIResultsSpectrum resultsSpectrum:resultsSpectrums){
result.add(rowFormat(conLcRoi, StringPool.SPACE, String.valueOf(resultsSpectrum.getRoi()), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getConcErr()))+" +/- "+NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getConcErr())), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getLc())), NumberFormatUtil.numberSixLen(String.valueOf(resultsSpectrum.getMdc()))));
}
}
}
result.add("#RESULT SUMMARY");
String resultSum = "%s%-15s%-25s%-15s%-15s%-15s";
result.add(rowFormat(resultSum, StringPool.SPACE, "Nuclide Name", "Conc", "LC", "MDC", "NID Flag"));
if (CollectionUtils.isNotEmpty(xeResultsSpectrums)) {
for (GardsXeResultsSpectrum xeResultsSpectrum:xeResultsSpectrums) {
result.add(rowFormat(resultSum, StringPool.SPACE, xeResultsSpectrum.getNuclideName(), NumberFormatUtil.numberSixLen(String.valueOf(xeResultsSpectrum.getConc()))+" +/- "+NumberFormatUtil.numberSixLen(String.valueOf(xeResultsSpectrum.getConcErr())), NumberFormatUtil.numberSixLen(String.valueOf(xeResultsSpectrum.getLc())), NumberFormatUtil.numberSixLen(String.valueOf(xeResultsSpectrum.getMdc())), String.valueOf(xeResultsSpectrum.getNidFlag())));
}
}
return result;
}
} }

View File

@ -401,4 +401,16 @@ public class SelfStationController {
public Result saveToDB(String fileName, HttpServletRequest request) { public Result saveToDB(String fileName, HttpServletRequest request) {
return selfStationService.saveToDB(fileName, request); return selfStationService.saveToDB(fileName, request);
} }
@GetMapping("viewARR")
@ApiOperation(value = "查看ARR报告", notes = "查看ARR报告")
public Result<?> viewARR(Integer sampleId, HttpServletResponse response) {
return selfStationService.viewARR(sampleId, response);
}
@PostMapping("viewRRR")
@ApiOperation(value = "查看RRR报告", notes = "查看RRR报告")
public Result<?> viewRRR(@RequestBody RRRLogInfo rrrLogInfo, HttpServletRequest request) {
return selfStationService.viewRRR(rrrLogInfo, request);
}
} }

View File

@ -11,6 +11,7 @@ import org.jeecg.modules.base.entity.configuration.GardsNuclLib;
import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib; import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib;
import org.jeecg.modules.base.entity.original.GardsSampleData; import org.jeecg.modules.base.entity.original.GardsSampleData;
import org.jeecg.modules.base.entity.rnman.*; import org.jeecg.modules.base.entity.rnman.*;
import org.jeecg.modules.base.entity.rnauto.GardsAnalyses;
import org.jeecg.modules.entity.*; import org.jeecg.modules.entity.*;
import org.jeecg.modules.entity.vo.*; import org.jeecg.modules.entity.vo.*;
@ -39,6 +40,8 @@ public interface SpectrumAnalysisMapper {
String viewARR(@Param(value = "sampleId") Integer sampleId); String viewARR(@Param(value = "sampleId") Integer sampleId);
GardsAnalyses viewARRSelf(@Param(value = "sampleId") Integer sampleId);
String viewRRR(@Param(value = "sampleId") Integer sampleId); String viewRRR(@Param(value = "sampleId") Integer sampleId);
GardsSampleDataSpectrum getSampleData(@Param(value = "sampleId") Integer sampleId); GardsSampleDataSpectrum getSampleData(@Param(value = "sampleId") Integer sampleId);

View File

@ -230,6 +230,10 @@
SELECT REPORT_PAHT FROM RNAUTO.GARDS_ANALYSES where SAMPLE_ID = #{sampleId} SELECT REPORT_PAHT FROM RNAUTO.GARDS_ANALYSES where SAMPLE_ID = #{sampleId}
</select> </select>
<select id="viewARRSelf" resultType="org.jeecg.modules.base.entity.rnauto.GardsAnalyses">
SELECT IDANALYSIS, REPORT_PAHT AS reportPath FROM RNAUTO.GARDS_ANALYSES where SAMPLE_ID = #{sampleId}
</select>
<select id="viewRRR" resultType="java.lang.String"> <select id="viewRRR" resultType="java.lang.String">
SELECT REPORT_PAHT FROM RNMAN.GARDS_ANALYSES where SAMPLE_ID = #{sampleId} SELECT REPORT_PAHT FROM RNMAN.GARDS_ANALYSES where SAMPLE_ID = #{sampleId}
</select> </select>

View File

@ -132,4 +132,8 @@ public interface ISelfStationService {
Result viewSpectrum(String fileName, HttpServletRequest request); Result viewSpectrum(String fileName, HttpServletRequest request);
Result saveToDB(String fileName, HttpServletRequest request); Result saveToDB(String fileName, HttpServletRequest request);
Result<?> viewARR(Integer sampleId, HttpServletResponse response);
Result<?> viewRRR(RRRLogInfo rrrLogInfo, HttpServletRequest request);
} }

View File

@ -17,7 +17,9 @@ import org.apache.commons.io.FileUtils;
import org.apache.commons.math3.fitting.WeightedObservedPoints; import org.apache.commons.math3.fitting.WeightedObservedPoints;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.cache.SelfCache; import org.jeecg.common.cache.SelfCache;
import org.jeecg.common.constant.Prompt;
import org.jeecg.common.constant.StringConstant; import org.jeecg.common.constant.StringConstant;
import org.jeecg.common.constant.enums.FileTypeEnum;
import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.properties.ParameterProperties;
import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.common.properties.SpectrumPathProperties;
import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.util.JwtUtil;
@ -26,6 +28,8 @@ import org.jeecg.modules.base.dto.RoiDto;
import org.jeecg.modules.base.entity.configuration.GardsNuclLib; import org.jeecg.modules.base.entity.configuration.GardsNuclLib;
import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib; import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib;
import org.jeecg.modules.base.entity.original.GardsSampleData; import org.jeecg.modules.base.entity.original.GardsSampleData;
import org.jeecg.modules.base.entity.rnauto.GardsAnalyses;
import org.jeecg.modules.base.entity.rnauto.GardsAnalysisRoi;
import org.jeecg.modules.base.entity.rnman.GardsAnalySetting; import org.jeecg.modules.base.entity.rnman.GardsAnalySetting;
import org.jeecg.modules.entity.GardsSampleDataSpectrum; import org.jeecg.modules.entity.GardsSampleDataSpectrum;
import org.jeecg.modules.entity.GardsXeResultsSpectrum; import org.jeecg.modules.entity.GardsXeResultsSpectrum;
@ -110,6 +114,8 @@ public class SelfStationServiceImpl implements ISelfStationService {
private IGardsCalibrationSpectrumService calibrationSpectrumService; private IGardsCalibrationSpectrumService calibrationSpectrumService;
@Autowired @Autowired
private IGardsAnalysesSpectrumService analysesSpectrumService; private IGardsAnalysesSpectrumService analysesSpectrumService;
@Autowired
private IGardsAnalysisRoiAutoService analysisRoiAutoService;
@Override @Override
@ -5023,6 +5029,63 @@ public class SelfStationServiceImpl implements ISelfStationService {
return result; return result;
} }
@Override
@DS("ora")
public Result<?> viewARR(Integer sampleId, HttpServletResponse response) {
GardsAnalyses analyses = spectrumAnalysisMapper.viewARRSelf(sampleId);
Map<String, List<String>> result = new HashMap<>();
if (ObjectUtil.isNull(analyses))
return Result.error("The automatic handler generated report does not exist");
Integer idAnalysis = analyses.getIdAnalysis();
String reportPath = analyses.getReportPath();
String rootPath = spectrumPathProperties.getRootPath();
String saveFilePath = spectrumPathProperties.getSaveFilePath();
reportPath = rootPath + saveFilePath + StrUtil.SLASH + reportPath + FileTypeEnum.arr.getType();
if (!FileUtil.exist(reportPath))
return Result.error("The automatic handler generated report does not exist");
result.put("Beta", FileUtil.readUtf8Lines(reportPath));
List<GardsAnalysisRoi> analysisRois = analysisRoiAutoService.analysisRoi(idAnalysis);
for (GardsAnalysisRoi analysisRoi : analysisRois) {
Integer roiNum = analysisRoi.getRoiNum();
String roiReportPath = analysisRoi.getReportPath();
roiReportPath = rootPath + saveFilePath + StrUtil.SLASH + roiReportPath + FileTypeEnum.arr.getType();
if (!FileUtil.exist(roiReportPath)) continue;
result.put("Gamma_ROI_" + roiNum, FileUtil.readUtf8Lines(roiReportPath));
}
return Result.OK(result);
}
@Override
public Result<?> viewRRR(RRRLogInfo rrrLogInfo, HttpServletRequest request) {
String userName = JwtUtil.getUserNameByToken(request);
Map<String, List<String>> result = new HashMap<>();
Cache<String, SelfStationData> selfCache = selfStationCache.getSelfCache();
SelfStationData selfStationData = selfCache.getIfPresent(rrrLogInfo.getSampleFileName() + StringPool.DASH + userName);
if (ObjectUtil.isNull(selfStationData))
return Result.error("Please select the parse file first!");
// 生成Beta 报告内容
BetaDataFile betaDataFile = selfStationData.getBetaDataFile();
if (ObjectUtil.isNull(betaDataFile))
return Result.error("Load basic file information first!");
if (betaDataFile.isSaveAnalysisResult())
result.put("Beta", selfStationUtil.reportContent(betaDataFile, rrrLogInfo));
// 生成4个Gamma ROI报告内容
SelfStationVueData sampleVueData = selfStationData.getSampleVueData();
PHDFile phd1 = sampleVueData.getROIOnePHDFile();
PHDFile phd2 = sampleVueData.getROITwoPHDFile();
PHDFile phd3 = sampleVueData.getROIThreePHDFile();
PHDFile phd4 = sampleVueData.getROIFourPHDFile();
List<String> reportContent1 = gammaFileUtil.GetReportContent(phd1, userName, "log");
List<String> reportContent2 = gammaFileUtil.GetReportContent(phd2, userName, "log");
List<String> reportContent3 = gammaFileUtil.GetReportContent(phd3, userName, "log");
List<String> reportContent4 = gammaFileUtil.GetReportContent(phd4, userName, "log");
result.put("Gamma_ROI_1", reportContent1);
result.put("Gamma_ROI_2", reportContent2);
result.put("Gamma_ROI_3", reportContent3);
result.put("Gamma_ROI_4", reportContent4);
return Result.OK(result);
}
@Transactional @Transactional
public boolean SaveSampleToDB(PHDFile phd, String input_file_name) { public boolean SaveSampleToDB(PHDFile phd, String input_file_name) {
boolean bRet = false; boolean bRet = false;

View File

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -189,12 +190,14 @@ public class SpectrumFileServiceImpl implements ISpectrumFileService {
// if (!exist) return Result.OK(page); // if (!exist) return Result.OK(page);
List<File> ftpFiles = ListUtil.toList(folder.listFiles()); List<File> ftpFiles = ListUtil.toList(folder.listFiles());
// 根据文件名进行过滤 // 根据文件名进行过滤
String regex1 = "[a-zA-Z]{3}[0-9]{2}_[0-9]{3}-[0-9]{8}_[0-9]{4}_S_(FULL_|PREL_)\\d+\\.PHD";
String regex2 = "[a-zA-Z]{3}[0-9]{2}_[0-9]{3}-[0-9]{8}_[0-9]{4}_S_(FULL_|PREL_)\\d+\\.\\d+\\.PHD";
String name = fileVo.getName(); String name = fileVo.getName();
if (StrUtil.isNotBlank(name)){ if (StrUtil.isNotBlank(name)){
String[] names = name.split(comma); String[] names = name.split(comma);
ftpFiles = ftpFiles.stream() ftpFiles = ftpFiles.stream()
.filter(file -> containsAllIgnoreCase(file.getName(),names)) .filter(file -> containsAllIgnoreCase(file.getName(),names))
.filter(file -> !StrUtil.contains(file.getName(), "_ROI_")) .filter(file -> ReUtil.isMatch(regex1, file.getName()) || ReUtil.isMatch(regex2, file.getName()))
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
for (File ftpFile : ftpFiles) { for (File ftpFile : ftpFiles) {