diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java index c1775686..d11006b4 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_C_Analysis.java @@ -457,8 +457,8 @@ public class Sample_C_Analysis { idAnalysis = serviceQuotes.getAnalysesService().getIdAnalysis(sampleId); // 保存分析结果 ==> INSERT INTO RNAUTO.GARDS_ANALYSES saveAnalysisROI(sampleId, idAnalysis, middleDatas); - // 获取Table IdAnalysis:RoiId:GStoreMiddleProcessData - middleDataTable(sampleId, middleDatas); + // 获取Table RoiId:GStoreMiddleProcessData + middleDataTable(idAnalysis, middleDatas); // 修改保存结果状态 ==> UPDATE ORIGINAL.GARDS_SAMPLE_DATA // serviceQuotes.getSampleDataService().updateStatus(null,null); /* GARDS_CALIBRATION_PAIRS_ROI 数据表保存 */ @@ -811,8 +811,8 @@ public class Sample_C_Analysis { serviceQuotes.getAnalysisRoiAutoService().saveBatch(analysisRois); } - public void middleDataTable(Integer sampleId, GStoreMiddleProcessData... middleDatas){ - List analysisRois = serviceQuotes.getAnalysisRoiAutoService().analysisRoi(sampleId); + public void middleDataTable(Integer idAnalysis, GStoreMiddleProcessData... middleDatas){ + List analysisRois = serviceQuotes.getAnalysisRoiAutoService().analysisRoi(idAnalysis); Map middleDataMap = new LinkedHashMap<>(); for (int i = 0; i < analysisRois.size(); i++) { GardsAnalysisRoi analysisRoi = analysisRois.get(i); diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java index c4696b4a..e5539748 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java @@ -2314,6 +2314,12 @@ public class GammaFileUtil extends AbstractLogOrReport { } } + public List 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) { boolean bRet = true; Map temp = new HashMap<>(); @@ -3115,6 +3121,293 @@ public class GammaFileUtil extends AbstractLogOrReport { return ""; } + public List reportContent(GStoreMiddleProcessData middleData) { + List 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> reportMap1 = GetReportFixedWidth(cells1, datas1, 30); + List title1 = reportMap1.get("title"); + List 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> reportMap2 = GetReportFixedWidth(cell2, datas2, 30); + List title2 = reportMap2.get("title"); + List 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> reportMap3 = GetReportFixedWidth(cells3, datas3, 30); + List title3 = reportMap3.get("title"); + List 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> reportMapE4 = GetReportFixedWidth(cellsE4, datasE4, 30); + List titleE4 = reportMapE4.get("title"); + List 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> reportMap4 = GetReportFixedWidth(cells4, datas4, 30); + List title4 = reportMap4.get("title"); + List 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> reportMapE5 = GetReportFixedWidth(cellsE5, datasE5, 30); + List titleE5 = reportMapE5.get("title"); + List 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> reportMap5 = GetReportFixedWidth(cells5, datas5, 30); + List title5 = reportMap5.get("title"); + List 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> reportMapE6 = GetReportFixedWidth(cellsE6, datasE6, 30); + List titleE6 = reportMapE6.get("title"); + List 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> reportMap6 = GetReportFixedWidth(cells6, datas6, 30); + List title6 = reportMap6.get("title"); + List 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> reportMapE7 = GetReportFixedWidth(cellsE7, datasE7, 30); + List titleE7 = reportMapE7.get("title"); + List 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> reportMap7 = GetReportFixedWidth(cells7, datas7, 30); + List title7 = reportMap7.get("title"); + List 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 DoubleLimit(List data) { List rData = new LinkedList<>(); for(int pos=0;pos { - Integer getIdAnalysisAny(Integer sampleId); - - List analysisRoi(Integer sampleId); + List analysisRoi(Integer idAnalysis); } diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsAnalysisRoiAutoServiceImpl.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsAnalysisRoiAutoServiceImpl.java index c87a2866..74b181e8 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsAnalysisRoiAutoServiceImpl.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsAnalysisRoiAutoServiceImpl.java @@ -16,21 +16,11 @@ import java.util.List; @DS("ora") public class GardsAnalysisRoiAutoServiceImpl extends ServiceImpl implements IGardsAnalysisRoiAutoService { - @Override - public Integer getIdAnalysisAny(Integer sampleId) { + public List analysisRoi(Integer idAnalysis) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(GardsAnalysisRoi::getSampleId, sampleId); - List analysisRois = list(wrapper); - return analysisRois.stream().findAny().orElse(new GardsAnalysisRoi()) - .getIdAnalysis(); - } - - @Override - public List analysisRoi(Integer sampleId) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(GardsAnalysisRoi::getSampleId, sampleId); - wrapper.orderByAsc(GardsAnalysisRoi::getIdAnalysis); + wrapper.eq(GardsAnalysisRoi::getIdAnalysis, idAnalysis); + wrapper.orderByAsc(GardsAnalysisRoi::getRoiNum); return list(wrapper); } } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/SelfStationUtil.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/SelfStationUtil.java index 62670a25..459260d9 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/SelfStationUtil.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/SelfStationUtil.java @@ -11,6 +11,11 @@ import lombok.extern.slf4j.Slf4j; import org.jeecg.common.cache.SelfCache; import org.jeecg.modules.base.abstracts.AbstractLogOrReport; 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.native_jni.CalValuesHandler; import org.jeecg.modules.native_jni.EnergySpectrumHandler; @@ -27,6 +32,7 @@ import java.io.PrintWriter; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; +import java.util.stream.Collectors; @Component @Slf4j @@ -1104,4 +1110,434 @@ public class SelfStationUtil extends AbstractLogOrReport { } } + public List 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 result = new ArrayList<>(); + //对分析后的内容进行数据获取 + List channelsSpectrums = betaDataFile.getRoiChannelsSpectrumList(); + List roiChannelsSpectrumsSample = channelsSpectrums.stream().filter(item -> item.getDataType().equalsIgnoreCase(DataTypeAbbr.SAMPLEPHD.getType())).collect(Collectors.toList()); + List roiChannelsSpectrumsGas = channelsSpectrums.stream().filter(item -> item.getDataType().equalsIgnoreCase(DataTypeAbbr.GASBKPHD.getType())).collect(Collectors.toList()); + List roiChannelsSpectrumsDet = channelsSpectrums.stream().filter(item -> item.getDataType().equalsIgnoreCase(DataTypeAbbr.DETBKPHD.getType())).collect(Collectors.toList()); + List resultsSpectrums = betaDataFile.getRoiResultsSpectrumList(); + List xeResultsSpectrums = betaDataFile.getXeResultsSpectrumList(); + for (int i=0; i gammaCalibrationParamList = betaDataFile.getGammaCalibrationSpectrumList(); + List gammaCalibrationSpectrumEList = betaDataFile.getGammaCalibrationSpectrumEList(); + for (int i=0; i betaCalibrationParamList = betaDataFile.getBetaCalibrationSpectrumList(); + List betaCalibrationSpectrumEList = betaDataFile.getBetaCalibrationSpectrumEList(); + for (int i=0; i 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); + } } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SpectrumAnalysisMapper.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SpectrumAnalysisMapper.java index 68c335d1..d294af8f 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SpectrumAnalysisMapper.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SpectrumAnalysisMapper.java @@ -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.original.GardsSampleData; 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.vo.*; @@ -39,6 +40,8 @@ public interface SpectrumAnalysisMapper { String viewARR(@Param(value = "sampleId") Integer sampleId); + GardsAnalyses viewARRSelf(@Param(value = "sampleId") Integer sampleId); + String viewRRR(@Param(value = "sampleId") Integer sampleId); GardsSampleDataSpectrum getSampleData(@Param(value = "sampleId") Integer sampleId); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml index d0ce75eb..3571a11b 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml @@ -230,6 +230,10 @@ SELECT REPORT_PAHT FROM RNAUTO.GARDS_ANALYSES where SAMPLE_ID = #{sampleId} + + diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISelfStationService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISelfStationService.java index 3fde6491..903ddb0e 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISelfStationService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISelfStationService.java @@ -132,4 +132,8 @@ public interface ISelfStationService { Result viewSpectrum(String fileName, HttpServletRequest request); Result saveToDB(String fileName, HttpServletRequest request); + + Result viewARR(Integer sampleId, HttpServletResponse response); + + Result viewRRR(RRRLogInfo rrrLogInfo, HttpServletRequest request); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SelfStationServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SelfStationServiceImpl.java index 17b07b7e..7eb47704 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SelfStationServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SelfStationServiceImpl.java @@ -17,7 +17,9 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.math3.fitting.WeightedObservedPoints; import org.jeecg.common.api.vo.Result; import org.jeecg.common.cache.SelfCache; +import org.jeecg.common.constant.Prompt; import org.jeecg.common.constant.StringConstant; +import org.jeecg.common.constant.enums.FileTypeEnum; import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.properties.SpectrumPathProperties; 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.GardsNuclLinesLib; 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.entity.GardsSampleDataSpectrum; import org.jeecg.modules.entity.GardsXeResultsSpectrum; @@ -110,6 +114,8 @@ public class SelfStationServiceImpl implements ISelfStationService { private IGardsCalibrationSpectrumService calibrationSpectrumService; @Autowired private IGardsAnalysesSpectrumService analysesSpectrumService; + @Autowired + private IGardsAnalysisRoiAutoService analysisRoiAutoService; @Override @@ -5023,6 +5029,63 @@ public class SelfStationServiceImpl implements ISelfStationService { return result; } + @Override + @DS("ora") + public Result viewARR(Integer sampleId, HttpServletResponse response) { + GardsAnalyses analyses = spectrumAnalysisMapper.viewARRSelf(sampleId); + Map> 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 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> result = new HashMap<>(); + Cache 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 reportContent1 = gammaFileUtil.GetReportContent(phd1, userName, "log"); + List reportContent2 = gammaFileUtil.GetReportContent(phd2, userName, "log"); + List reportContent3 = gammaFileUtil.GetReportContent(phd3, userName, "log"); + List 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 public boolean SaveSampleToDB(PHDFile phd, String input_file_name) { boolean bRet = false; diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumFileServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumFileServiceImpl.java index 404a97d5..f284f432 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumFileServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumFileServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -189,12 +190,14 @@ public class SpectrumFileServiceImpl implements ISpectrumFileService { // if (!exist) return Result.OK(page); List 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(); if (StrUtil.isNotBlank(name)){ String[] names = name.split(comma); ftpFiles = ftpFiles.stream() .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()); } for (File ftpFile : ftpFiles) {