diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesServiceImpl.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesServiceImpl.java index 4f695572..9d4aa087 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesServiceImpl.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesServiceImpl.java @@ -35,10 +35,11 @@ public class GardsAnalysesServiceImpl extends ServiceImpl thresholds = spectrumServiceQuotes.getGardsThresholdService().findThresholdResults(this.sampleData.getStationId().toString()); + + //样品分级 + category = spectrumServiceQuotes.getSampleGradingService().processAutoTypeB(getSampleInfo(), thresholds); + } catch (Exception e) { + } + + //存储基础数据 - this.analyses = spectrumServiceQuotes.getAnalysesService().create(this.sampleData.getSampleId(),this.detSampleData, - this.gasSampleData,this.startAnalysisTime,this.endAnalysisTime,logFileRelativePath,arrFileRelativePath); + this.analyses = spectrumServiceQuotes.getAnalysesService().create(this.sampleData.getSampleId(), this.detSampleData, + this.gasSampleData, this.startAnalysisTime, this.endAnalysisTime, logFileRelativePath, arrFileRelativePath, category); //调用原始数据dll获取gas、det谱数据入库,sample已有数据直接入库 //存储sample谱B_Energy和G_Energy块数据 - spectrumServiceQuotes.getGardsCalibrationPairsService().createB_EnergyRecord(sampleData.getSampleId(),analyses.getIdAnalysis(),this.sampleStruct); - spectrumServiceQuotes.getGardsCalibrationPairsService().createG_EnergyRecord(sampleData.getSampleId(),analyses.getIdAnalysis(),this.sampleStruct); + spectrumServiceQuotes.getGardsCalibrationPairsService().createB_EnergyRecord(sampleData.getSampleId(), analyses.getIdAnalysis(), this.sampleStruct); + spectrumServiceQuotes.getGardsCalibrationPairsService().createG_EnergyRecord(sampleData.getSampleId(), analyses.getIdAnalysis(), this.sampleStruct); //存储det谱B_Energy和G_Energy块数据 - spectrumServiceQuotes.getGardsCalibrationPairsService().createB_EnergyRecord(detSampleData.getSampleId(),analyses.getIdAnalysis(),this.detStruct); - spectrumServiceQuotes.getGardsCalibrationPairsService().createG_EnergyRecord(detSampleData.getSampleId(),analyses.getIdAnalysis(),this.detStruct); + spectrumServiceQuotes.getGardsCalibrationPairsService().createB_EnergyRecord(detSampleData.getSampleId(), analyses.getIdAnalysis(), this.detStruct); + spectrumServiceQuotes.getGardsCalibrationPairsService().createG_EnergyRecord(detSampleData.getSampleId(), analyses.getIdAnalysis(), this.detStruct); //存储gas谱B_Energy和G_Energy块数据 - spectrumServiceQuotes.getGardsCalibrationPairsService().createB_EnergyRecord(gasSampleData.getSampleId(),analyses.getIdAnalysis(),this.gasStruct); - spectrumServiceQuotes.getGardsCalibrationPairsService().createG_EnergyRecord(gasSampleData.getSampleId(),analyses.getIdAnalysis(),this.gasStruct); + spectrumServiceQuotes.getGardsCalibrationPairsService().createB_EnergyRecord(gasSampleData.getSampleId(), analyses.getIdAnalysis(), this.gasStruct); + spectrumServiceQuotes.getGardsCalibrationPairsService().createG_EnergyRecord(gasSampleData.getSampleId(), analyses.getIdAnalysis(), this.gasStruct); //存储gards_calibration表数据sample、det、gas谱B_Energy和G_Energy块数据 - spectrumServiceQuotes.getGardsCalibrationService().create(this.analyseResult,sampleData.getSampleId(),gasSampleData.getSampleId(),detSampleData.getSampleId(),analyses.getIdAnalysis()); + spectrumServiceQuotes.getGardsCalibrationService().create(this.analyseResult, sampleData.getSampleId(), gasSampleData.getSampleId(), detSampleData.getSampleId(), analyses.getIdAnalysis()); //gards_roi_channels数据表,存储sample、det、gas谱数据 - spectrumServiceQuotes.getRoiChannelsService().create(this.analyseResult,sampleData.getSampleId(),gasSampleData.getSampleId(),detSampleData.getSampleId(),analyses.getIdAnalysis()); + spectrumServiceQuotes.getRoiChannelsService().create(this.analyseResult, sampleData.getSampleId(), gasSampleData.getSampleId(), detSampleData.getSampleId(), analyses.getIdAnalysis()); //gards_Xe_results数据表XE_131m、XE_133、XE_133m、XE_135数据 - spectrumServiceQuotes.getXeResultsService().create(this.analyseResult,sampleData.getSampleId(),analyses.getIdAnalysis()); + spectrumServiceQuotes.getXeResultsService().create(this.analyseResult, sampleData.getSampleId(), analyses.getIdAnalysis()); //gards_ roi_results数据表 - spectrumServiceQuotes.getRoiResultsService().create(this.analyseResult,sampleData.getSampleId(),analyses.getIdAnalysis()); + spectrumServiceQuotes.getRoiResultsService().create(this.analyseResult, sampleData.getSampleId(), analyses.getIdAnalysis()); //提交事务 spectrumServiceQuotes.getTransactionManager().commit(transactionStatus); - }catch (Exception e){ + } catch (Exception e) { //设置分析数据存储失败标记 this.parsingProcessLog.setAnalysisDataStoreFlag(false); //回滚事务 spectrumServiceQuotes.getTransactionManager().rollback(transactionStatus); throw e; - }finally { + } finally { DataSourceSwitcher.clearDataSource(); } } @@ -331,10 +352,20 @@ public class Sample_B_Analysis implements BlockConstant { /** * 分析成功数据发送到Redis */ - private void pushToRedis(){ + private void pushToRedis() { + Info info = getSampleInfo(); + spectrumServiceQuotes.getRedisStreamUtil().pushAnalysis(info); + //把分析结果信息存储到redis + spectrumServiceQuotes.getRedisStreamUtil().addMessage(autoKey, info); + } + + @NotNull + private Info getSampleInfo() { Info info = new Info(); info.setStationId(this.sampleData.getStationId().toString()); info.setSampleId(this.sampleData.getSampleId().toString()); + info.setIdAnalysis(this.analyses.getIdAnalysis().toString()); + info.setSampleType(this.sampleData.getSampleType()); info.setSampleName(this.phdFileName); final Instant instant = this.sampleData.getCollectStart().toInstant(); final LocalDateTime collectTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); @@ -342,17 +373,17 @@ public class Sample_B_Analysis implements BlockConstant { info.setDatasource(DSType.ARMDARR.getType()); info.setFullOrPrel(this.sampleData.getSpectralQualifie()); info.setBetaOrGamma(SpectrumType.BETA.getType()); - Map nuclides = Maps.newHashMap(); - nuclides.put(XE_131m,String.valueOf(analyseResult.Xe131m_con)); - nuclides.put(XE_133,String.valueOf(analyseResult.Xe133_con)); - nuclides.put(XE_133m,String.valueOf(analyseResult.Xe133m_con)); - nuclides.put(XE_135,String.valueOf(analyseResult.Xe135_con)); + Map nuclides = Maps.newHashMap(); + nuclides.put(XE_131m, String.valueOf(analyseResult.Xe131m_con)); + nuclides.put(XE_133, String.valueOf(analyseResult.Xe133_con)); + nuclides.put(XE_133m, String.valueOf(analyseResult.Xe133m_con)); + nuclides.put(XE_135, String.valueOf(analyseResult.Xe135_con)); info.setNuclides(nuclides); info.setAnalyst(CommonConstant.REPORT_PREFIX_AUTO); - spectrumServiceQuotes.getRedisStreamUtil().pushAnalysis(info); + return info; } - public Sample_B_Analysis.B_AnalysisReport getReport(){ + public Sample_B_Analysis.B_AnalysisReport getReport() { return new Sample_B_Analysis.B_AnalysisReport(); } @@ -360,7 +391,7 @@ public class Sample_B_Analysis implements BlockConstant { /** * B谱分析报告 */ - private class B_AnalysisReport extends AbstractAutoLogOrReport{ + private class B_AnalysisReport extends AbstractAutoLogOrReport { /** * 模版内容 */ @@ -407,26 +438,26 @@ public class Sample_B_Analysis implements BlockConstant { /** * 处理报告头 */ - private void handleReportHeader(){ + private void handleReportHeader() { String header_1 = "%-64s CNL06 GENERATED REPORT"; String header_2 = "%-63s AUTO RADIONUCLIDE REPORT"; String header_3 = "%-65s (Noble Gas Version) "; String createDateLine = "%-58s Creation Date %s"; final String createDate = DateUtils.formatDate(new Date(), "yyyy/MM/dd-HH:mm:ss"); - reportContent.append(super.rowFormat(header_1,StringConstant.SPACE)); + reportContent.append(super.rowFormat(header_1, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(header_2,StringConstant.SPACE)); + reportContent.append(super.rowFormat(header_2, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(header_3,StringConstant.SPACE)); + reportContent.append(super.rowFormat(header_3, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(createDateLine,StringConstant.SPACE,createDate)); + reportContent.append(super.rowFormat(createDateLine, StringConstant.SPACE, createDate)); reportContent.append(System.lineSeparator()).append(System.lineSeparator()); } /** * 处理#FILE INFORMATION 模块 */ - private void handleFileInfoMation(){ + private void handleFileInfoMation() { String fileBlock = "#FILE INFORMATION"; String sampleMeasId = " SampleMeasID:%-36s %s"; String gasMeasId = " GASBKMeasID:%-37s %s"; @@ -435,22 +466,22 @@ public class Sample_B_Analysis implements BlockConstant { String detectorType = " Detector Type:%-35s %s"; reportContent.append(fileBlock); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(sampleMeasId,StringConstant.SPACE,sampleStruct.measurement_id)); + reportContent.append(super.rowFormat(sampleMeasId, StringConstant.SPACE, sampleStruct.measurement_id)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(gasMeasId,StringConstant.SPACE,sampleStruct.gas_bk_measurement_id)); + reportContent.append(super.rowFormat(gasMeasId, StringConstant.SPACE, sampleStruct.gas_bk_measurement_id)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(detMeasId,StringConstant.SPACE,sampleStruct.detector_bk_measurement_id)); + reportContent.append(super.rowFormat(detMeasId, StringConstant.SPACE, sampleStruct.detector_bk_measurement_id)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(srId,StringConstant.SPACE,sampleStruct.sample_ref_id)); + reportContent.append(super.rowFormat(srId, StringConstant.SPACE, sampleStruct.sample_ref_id)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(detectorType,StringConstant.SPACE,"3D b-g")); + reportContent.append(super.rowFormat(detectorType, StringConstant.SPACE, "3D b-g")); reportContent.append(System.lineSeparator()).append(System.lineSeparator()); } /** * 处理#COLLECTION INFORMATION 模块 */ - private void handleCollectionInfoMation(){ + private void handleCollectionInfoMation() { String collectionInfoBlock = "#COLLECTION INFORMATION"; String stationId = " Station ID:%-38s %s"; String detectorId = " Detector ID:%-37s %s"; @@ -462,51 +493,51 @@ public class Sample_B_Analysis implements BlockConstant { String xeVolume = " Xe Volume[cm3]:%-34s %s"; reportContent.append(collectionInfoBlock); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(stationId,StringConstant.SPACE,sampleStruct.site_code)); + reportContent.append(super.rowFormat(stationId, StringConstant.SPACE, sampleStruct.site_code)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(detectorId,StringConstant.SPACE,sampleStruct.detector_code)); + reportContent.append(super.rowFormat(detectorId, StringConstant.SPACE, sampleStruct.detector_code)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(sampleId,StringConstant.SPACE,sampleData.getSampleId().toString())); + reportContent.append(super.rowFormat(sampleId, StringConstant.SPACE, sampleData.getSampleId().toString())); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(collectionStart,StringConstant.SPACE,sampleStruct.collection_start_date+StringConstant.SPACE+sampleStruct.collection_start_time)); + reportContent.append(super.rowFormat(collectionStart, StringConstant.SPACE, sampleStruct.collection_start_date + StringConstant.SPACE + sampleStruct.collection_start_time)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(collectionStop,StringConstant.SPACE,sampleStruct.collection_stop_date+StringConstant.SPACE+sampleStruct.collection_stop_time)); + reportContent.append(super.rowFormat(collectionStop, StringConstant.SPACE, sampleStruct.collection_stop_date + StringConstant.SPACE + sampleStruct.collection_stop_time)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(collectionTime,StringConstant.SPACE,String.valueOf((sampleData.getCollectStop().getTime()-sampleData.getCollectStart().getTime())/1000))); + reportContent.append(super.rowFormat(collectionTime, StringConstant.SPACE, String.valueOf((sampleData.getCollectStop().getTime() - sampleData.getCollectStart().getTime()) / 1000))); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(airVolume,StringConstant.SPACE,String.valueOf(sampleStruct.air_volume))); + reportContent.append(super.rowFormat(airVolume, StringConstant.SPACE, String.valueOf(sampleStruct.air_volume))); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(xeVolume,StringConstant.SPACE,String.valueOf(sampleStruct.sample_volume_of_Xe))); + reportContent.append(super.rowFormat(xeVolume, StringConstant.SPACE, String.valueOf(sampleStruct.sample_volume_of_Xe))); reportContent.append(System.lineSeparator()).append(System.lineSeparator()); } /** * 处理#ACQUISITION INFORMATION 模块 */ - private void handleAcquistionInfoMation(){ + private void handleAcquistionInfoMation() { String acqInfoBlock = "#ACQUISITION INFORMATION"; String acquisitionStart = " Acquisition Start:%-31s %s"; String acqRealTime = " Acq Real Time(s):%-32s %s"; String acqLiveTime = " Acq Live Time(s):%-32s %s"; reportContent.append(acqInfoBlock); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(acquisitionStart,StringConstant.SPACE,sampleStruct.acquisition_start_date+StringConstant.SPACE+sampleStruct.acquisition_start_time)); + reportContent.append(super.rowFormat(acquisitionStart, StringConstant.SPACE, sampleStruct.acquisition_start_date + StringConstant.SPACE + sampleStruct.acquisition_start_time)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(acqRealTime,StringConstant.SPACE,String.valueOf(sampleStruct.acquisition_real_time))); + reportContent.append(super.rowFormat(acqRealTime, StringConstant.SPACE, String.valueOf(sampleStruct.acquisition_real_time))); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(acqLiveTime,StringConstant.SPACE,String.valueOf(sampleStruct.acquisition_live_time))); + reportContent.append(super.rowFormat(acqLiveTime, StringConstant.SPACE, String.valueOf(sampleStruct.acquisition_live_time))); reportContent.append(System.lineSeparator()).append(System.lineSeparator()); } /** * 处理#SOFTWARE 模块 */ - private void handleSoftware(){ + private void handleSoftware() { String softwareBlock = "#SOFTWARE"; String version = " version:%-42s %s"; reportContent.append(softwareBlock); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(version,StringConstant.SPACE,spectrumServiceQuotes.getSoftwareProperties().getSwVersion())); + reportContent.append(super.rowFormat(version, StringConstant.SPACE, spectrumServiceQuotes.getSoftwareProperties().getSwVersion())); reportContent.append(System.lineSeparator()).append(System.lineSeparator()); } @@ -518,18 +549,18 @@ public class Sample_B_Analysis implements BlockConstant { String rowTitle = " Beta %-45s Gamma"; String rowValue = " %-50s %s"; - String beta_ch = CH_Contant+this.calibration(analyseResult.s_b_fitting_type,analyseResult.s_b_fitting_e_c); - String gamma_ch = CH_Contant+this.calibration(analyseResult.s_g_fitting_type,analyseResult.s_g_fitting_e_c); - String beta_e = E_Contant+super.calibration(analyseResult.s_b_fitting_type,analyseResult.s_b_fitting_c_e); - String gamma_e = E_Contant+super.calibration(analyseResult.s_g_fitting_type,analyseResult.s_g_fitting_c_e); + String beta_ch = CH_Contant + this.calibration(analyseResult.s_b_fitting_type, analyseResult.s_b_fitting_e_c); + String gamma_ch = CH_Contant + this.calibration(analyseResult.s_g_fitting_type, analyseResult.s_g_fitting_e_c); + String beta_e = E_Contant + super.calibration(analyseResult.s_b_fitting_type, analyseResult.s_b_fitting_c_e); + String gamma_e = E_Contant + super.calibration(analyseResult.s_g_fitting_type, analyseResult.s_g_fitting_c_e); - reportContent.append(super.rowFormat(sampleCalibrationBlock,sampleData.getSampleId().toString())); + reportContent.append(super.rowFormat(sampleCalibrationBlock, sampleData.getSampleId().toString())); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowTitle,StringConstant.SPACE)); + reportContent.append(super.rowFormat(rowTitle, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowValue,beta_ch,gamma_ch)); + reportContent.append(super.rowFormat(rowValue, beta_ch, gamma_ch)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowValue,beta_e,gamma_e)); + reportContent.append(super.rowFormat(rowValue, beta_e, gamma_e)); reportContent.append(System.lineSeparator()).append(System.lineSeparator()); } @@ -546,17 +577,17 @@ public class Sample_B_Analysis implements BlockConstant { List g_chan_start = analyseResult.S_ROI_G_Boundary_start; List g_chan_stop = analyseResult.S_ROI_G_Boundary_stop; - reportContent.append(super.rowFormat(sampleLimitsBlock,sampleData.getSampleId().toString())); + reportContent.append(super.rowFormat(sampleLimitsBlock, sampleData.getSampleId().toString())); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowTitle,StringConstant.SPACE,StringConstant.SPACE)); + reportContent.append(super.rowFormat(rowTitle, StringConstant.SPACE, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - for(int i=0;i g_chan_start = analyseResult.D_ROI_G_Boundary_start; List g_chan_stop = analyseResult.D_ROI_G_Boundary_stop; - reportContent.append(super.rowFormat(detLimitsBlock,detSampleData.getSampleId().toString())); + reportContent.append(super.rowFormat(detLimitsBlock, detSampleData.getSampleId().toString())); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowTitle,StringConstant.SPACE,StringConstant.SPACE)); + reportContent.append(super.rowFormat(rowTitle, StringConstant.SPACE, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - for(int i=0;i g_chan_start = analyseResult.G_ROI_G_Boundary_start; List g_chan_stop = analyseResult.G_ROI_G_Boundary_stop; - reportContent.append(super.rowFormat(gasLimitsBlock,gasSampleData.getSampleId().toString())); + reportContent.append(super.rowFormat(gasLimitsBlock, gasSampleData.getSampleId().toString())); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowTitle,StringConstant.SPACE,StringConstant.SPACE)); + reportContent.append(super.rowFormat(rowTitle, StringConstant.SPACE, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - for(int i=0;i roi = analyseResult.ROI.stream().map(Object::toString).collect(Collectors.toList()); - List s_roi_cts = analyseResult.s_roi_cts.stream().map(v->NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); - List g_roi_cts = analyseResult.g_roi_cts.stream().map(v->NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); - List d_roi_cts = analyseResult.d_roi_cts.stream().map(v->NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); + List s_roi_cts = analyseResult.s_roi_cts.stream().map(v -> NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); + List g_roi_cts = analyseResult.g_roi_cts.stream().map(v -> NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); + List d_roi_cts = analyseResult.d_roi_cts.stream().map(v -> NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); reportContent.append(grossCountsBlock); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowTitle,StringConstant.SPACE,StringConstant.SPACE,StringConstant.SPACE)); + reportContent.append(super.rowFormat(rowTitle, StringConstant.SPACE, StringConstant.SPACE, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - for (int i=0;i roi = analyseResult.ROI; + List roi = analyseResult.ROI; List roi_net_count = analyseResult.ROI_net_coutns; List roi_net_count_err = analyseResult.ROI_net_coutns_err; //此参数需第一位补0 - analyseResult.LC_CTS.add(0,0D); - List lc = analyseResult.LC_CTS.stream().map(v->NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); + analyseResult.LC_CTS.add(0, 0D); + List lc = analyseResult.LC_CTS.stream().map(v -> NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); reportContent.append(netCountsBlock); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowTitle,StringConstant.SPACE,StringConstant.SPACE)); + reportContent.append(super.rowFormat(rowTitle, StringConstant.SPACE, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - for (int i=0;i roi = analyseResult.ROI.stream().map(Object::toString).collect(Collectors.toList()); List con = analyseResult.ROI_con_uncer; List conErr = analyseResult.ROI_con_uncer_err; - analyseResult.LC.add(0,0.0D); - analyseResult.MDC.add(0,0.0D); - List lc = analyseResult.LC.stream().map(v->NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); - List mdc = analyseResult.MDC.stream().map(v->NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); + analyseResult.LC.add(0, 0.0D); + analyseResult.MDC.add(0, 0.0D); + List lc = analyseResult.LC.stream().map(v -> NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); + List mdc = analyseResult.MDC.stream().map(v -> NumberFormatUtil.numberFormat(String.valueOf(v))).collect(Collectors.toList()); reportContent.append(grossCountsBlock); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowTitle,StringConstant.SPACE,StringConstant.SPACE,StringConstant.SPACE)); + reportContent.append(super.rowFormat(rowTitle, StringConstant.SPACE, StringConstant.SPACE, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - for (int i=0;ianalyseResult.MDC_Xe135?"1":"0"; - String xe_131m_nid_flag = analyseResult.Xe131m_con>analyseResult.MDC_Xe131m?"1":"0"; - String xe_133m_nid_flag = analyseResult.Xe133m_con>analyseResult.MDC_Xe133m?"1":"0"; - String xe_133_nid_flag = analyseResult.Xe133_con>analyseResult.MDC_Xe133?"1":"0"; + String xe_135_nid_flag = analyseResult.Xe135_con > analyseResult.MDC_Xe135 ? "1" : "0"; + String xe_131m_nid_flag = analyseResult.Xe131m_con > analyseResult.MDC_Xe131m ? "1" : "0"; + String xe_133m_nid_flag = analyseResult.Xe133m_con > analyseResult.MDC_Xe133m ? "1" : "0"; + String xe_133_nid_flag = analyseResult.Xe133_con > analyseResult.MDC_Xe133 ? "1" : "0"; reportContent.append(resultSummaryBlock); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowTitle,StringConstant.SPACE,StringConstant.SPACE,StringConstant.SPACE,StringConstant.SPACE)); + reportContent.append(super.rowFormat(rowTitle, StringConstant.SPACE, StringConstant.SPACE, StringConstant.SPACE, StringConstant.SPACE)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowValue,XE_135,xe_135_conc,xe_135_uncertainty,xe_135_mdc,xe_135_nid_flag)); + reportContent.append(super.rowFormat(rowValue, XE_135, xe_135_conc, xe_135_uncertainty, xe_135_mdc, xe_135_nid_flag)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowValue,XE_131m,xe_131m_conc,xe_131m_uncertainty,xe_131m_mdc,xe_131m_nid_flag)); + reportContent.append(super.rowFormat(rowValue, XE_131m, xe_131m_conc, xe_131m_uncertainty, xe_131m_mdc, xe_131m_nid_flag)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowValue,XE_133m,xe_133m_conc,xe_133m_uncertainty,xe_133m_mdc,xe_133m_nid_flag)); + reportContent.append(super.rowFormat(rowValue, XE_133m, xe_133m_conc, xe_133m_uncertainty, xe_133m_mdc, xe_133m_nid_flag)); reportContent.append(System.lineSeparator()); - reportContent.append(super.rowFormat(rowValue,XE_133,xe_133_conc,xe_133_uncertainty,xe_133_mdc,xe_133_nid_flag)); + reportContent.append(super.rowFormat(rowValue, XE_133, xe_133_conc, xe_133_uncertainty, xe_133_mdc, xe_133_nid_flag)); reportContent.append(System.lineSeparator()).append(System.lineSeparator()); } @@ -810,7 +841,7 @@ public class Sample_B_Analysis implements BlockConstant { finalReportPath.append(arrFilePath); finalReportPath.append(File.separator); finalReportPath.append(arrFileName); - FileOperation.saveOrAppendFile(finalReportPath.toString(),reportContent.toString(),false); + FileOperation.saveOrAppendFile(finalReportPath.toString(), reportContent.toString(), false); } } } diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java index b3bbe087..185ec361 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java @@ -30,7 +30,6 @@ import org.jeecg.modules.base.enums.SpectrumType; import org.jeecg.modules.config.datasource.DataSourceSwitcher; import org.jeecg.modules.eneity.event.SpectrumErrorEvent; import org.jeecg.modules.entity.vo.*; -import org.jeecg.modules.enums.ErrorType; import org.jeecg.modules.exception.AnalySpectrumException; import org.jeecg.modules.exception.GAnalyseException; import org.jeecg.modules.file.FileOperation; @@ -47,7 +46,6 @@ import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; -import java.sql.SQLIntegrityConstraintViolationException; import java.text.ParseException; import java.time.Instant; import java.time.LocalDateTime; @@ -59,168 +57,205 @@ import java.util.*; @Slf4j public class Sample_G_Analysis { - private final Map fieldMap = fieldMap(); + private final Map fieldMap = fieldMap(); + //样品级别消费组 + private final String autoKey = RedisConstant.AUTO_CAT; + private AbstractS_D_Q_G_SpectrumHandler spectrumHandler; - private AbstractS_D_Q_G_SpectrumHandler spectrumHandler; + // Sample谱原始数据 + private GardsSampleData sampleData; - // Sample谱原始数据 - private GardsSampleData sampleData; + // 分析所需Service + private SpectrumServiceQuotes serviceQuotes; - // 分析所需Service - private SpectrumServiceQuotes serviceQuotes; + // Sample谱结构体数据 + private EnergySpectrumStruct energySpectrumStruct; - // Sample谱结构体数据 - private EnergySpectrumStruct energySpectrumStruct; + // 能谱文件存储路径属性 + private SpectrumPathProperties spectrumPathProperties; - // 能谱文件存储路径属性 - private SpectrumPathProperties spectrumPathProperties; + private ParameterProperties parameterProperties; - private ParameterProperties parameterProperties; + private RedisUtil redisUtil; - private RedisUtil redisUtil; - - private FTPUtil ftpUtil; - - /** - * 系统类型 - */ - private String systemType; - - /** - * 数据类型 - */ - private String dataType; - - /** - * 样品谱地址 - */ - private String sampleInputFilename; - - /** - * 样品谱名称 - */ - private String sampleFilename; - - /** - * 日志文件路径 - */ - private String logFilePath; - /** - * 日志文件名称 - */ - private String logFileName; - /** - * 报告文件路径 - */ - private String arrFilePath; - /** - * 报告文件名称 - */ - private String arrFileName; - - public Sample_G_Analysis(AbstractS_D_Q_G_SpectrumHandler spectrumHandler, EnergySpectrumStruct energySpectrumStruct,SpectrumServiceQuotes serviceQuotes, - GardsSampleData sampleData) { - this.spectrumHandler = spectrumHandler; - this.sampleData = sampleData; - this.serviceQuotes = serviceQuotes; - this.energySpectrumStruct = energySpectrumStruct; - this.systemType = energySpectrumStruct.system_type; - this.dataType = energySpectrumStruct.data_type; - this.sampleInputFilename = sampleData.getInputFileName(); - this.sampleFilename = StringUtils.substring(sampleData.getInputFileName(), - sampleData.getInputFileName().lastIndexOf((StringConstant.SLASH))+1); - } - - public void analysis() throws GAnalyseException, AnalySpectrumException{ - log.info("Gamma自动处理分析--Start"); - PHDFile phdFile = new PHDFile(); - try { - /* 准备Gamma分析需要的数据 */ - GStoreMiddleProcessData middleData = new GStoreMiddleProcessData(); - Integer sampleId = sampleData.getSampleId(); - - // 获取配置文件 - GammaFileUtil gammaFileUtil = ApplicationContextUtil.getContext().getBean(GammaFileUtil.class); - parameterProperties = ApplicationContextUtil.getContext().getBean(ParameterProperties.class); - - phdFile.setXmlFilePath(parameterProperties.getFilePath()); - // 解析PHD文件 - spectrumPathProperties = SpringContextUtils.getBean(SpectrumPathProperties.class); - ftpUtil = SpringContextUtils.getBean(FTPUtil.class); - //获取PHD文件的路径以及文件名称信息 - String sampleFilePathName = spectrumHandler.spectrumFile.getAbsolutePath().replace("\\", StringPool.SLASH); - String pathName = sampleFilePathName.substring(0, sampleFilePathName.lastIndexOf(StringPool.SLASH)); - String fileName = sampleFilePathName.substring(sampleFilePathName.lastIndexOf(StringPool.SLASH)+1); - - // 获取数据库 Gamma 默认参数 - getSettingFromDB(phdFile); - - // 解析能谱文件 - boolean flag = gammaFileUtil.loadFile(pathName, fileName, phdFile, "AUTO", new Result()); - - // 文件路径 - middleData.setAnalyses_save_filePath(this.sampleInputFilename); - // 读取文件内容并附值 - this.setPHDFile(phdFile, this.energySpectrumStruct); - phdFile.getSetting().setRefTime_act(DateUtils.parseDate(phdFile.getAcq().getAcquisition_start_date()+" "+phdFile.getAcq().getAcquisition_start_time())); - phdFile.getSetting().setRefTime_conc(DateUtils.parseDate(phdFile.getCollect().getCollection_start_date()+" "+phdFile.getCollect().getCollection_start_time())); - // 根据能谱的系统类型传入不同的核素参数 - Map nuclideLibs = new HashMap<>(); - if (this.systemType.equals(SpectrumSystemType.P.name())) { - nuclideLibs = this.getNuclideLinesP(); - } - if (this.systemType.equals(SpectrumSystemType.G.name())) { - nuclideLibs = this.getNuclideLinesG(); - } - //读取参数内容 - readMDCParameter(phdFile); - // 执行分析业务代码 - boolean analyFlag = gammaFileUtil.GetMiddleData(phdFile, CommonConstant.REPORT_PREFIX_AUTO, nuclideLibs, middleData, MiddleDataType.Auto.getType(), ""); - - if (analyFlag) { - // 数据插入数据库 - this.storageDataToDatabase(phdFile, middleData, phdFile.getQcItems()); - - // 生成日志文件 - writeLog(middleData.getAnalyses_LogPath(), middleData); - - // 生成报告文件 - String reportContent = gammaFileUtil.GetReportContent(middleData); - String reportPath = StringUtils.substringBeforeLast(middleData.getAnalyses_ReportPath(), StringPool.SLASH); - String reportName = StringUtils.substringAfterLast(middleData.getAnalyses_ReportPath(), StringPool.SLASH) + ".txt"; - String savePath = spectrumPathProperties.getRootPath() + spectrumPathProperties.getSaveFilePath() + File.separator + reportPath + - File.separator + reportName; - // 保存文件 - FileOperation.saveOrAppendFile(savePath, reportContent, false); - //发送数据到redis - middleData.setSample_id(String.valueOf(sampleId)); - pushToRedis(middleData); - } else { - ErrorLogManager.getInstance().write(new SpectrumErrorEvent(new Date(), phdFile.getAnalyMessage(), this.sampleFilename)); - throw new AnalySpectrumException(phdFile.getAnalyMessage()); - } - } catch (Exception e){ - e.printStackTrace(); - log.error("Sample_G_Analysis", e); - if (e instanceof DuplicateKeyException) { - throw new GAnalyseException("Sample Analyse Error at "+DateUtils.formatDate(new Date(),"yyyy-MM-dd HH:mm:ss"), true); - } else if (e instanceof AnalySpectrumException) { - throw new AnalySpectrumException(e.getMessage()); - } else { - throw new GAnalyseException("Sample Analyse Error at "+DateUtils.formatDate(new Date(),"yyyy-MM-dd HH:mm:ss")); - } - } - log.info("Gamma自动处理分析--End"); - } + private FTPUtil ftpUtil; /** - * 读取计算MDC参数文件方法 + * 系统类型 + */ + private String systemType; + + /** + * 数据类型 + */ + private String dataType; + + /** + * 样品谱地址 + */ + private String sampleInputFilename; + + /** + * 样品谱名称 + */ + private String sampleFilename; + + /** + * 日志文件路径 + */ + private String logFilePath; + /** + * 日志文件名称 + */ + private String logFileName; + /** + * 报告文件路径 + */ + private String arrFilePath; + /** + * 报告文件名称 + */ + private String arrFileName; + + public Sample_G_Analysis(AbstractS_D_Q_G_SpectrumHandler spectrumHandler, EnergySpectrumStruct energySpectrumStruct, SpectrumServiceQuotes serviceQuotes, + GardsSampleData sampleData) { + this.spectrumHandler = spectrumHandler; + this.sampleData = sampleData; + this.serviceQuotes = serviceQuotes; + this.energySpectrumStruct = energySpectrumStruct; + this.systemType = energySpectrumStruct.system_type; + this.dataType = energySpectrumStruct.data_type; + this.sampleInputFilename = sampleData.getInputFileName(); + this.sampleFilename = StringUtils.substring(sampleData.getInputFileName(), + sampleData.getInputFileName().lastIndexOf((StringConstant.SLASH)) + 1); + } + + public void analysis() throws GAnalyseException, AnalySpectrumException { + log.info("Gamma自动处理分析--Start"); + PHDFile phdFile = new PHDFile(); + try { + /* 准备Gamma分析需要的数据 */ + GStoreMiddleProcessData middleData = new GStoreMiddleProcessData(); + Integer sampleId = sampleData.getSampleId(); + middleData.setSample_id(String.valueOf(sampleId)); + // 获取配置文件 + GammaFileUtil gammaFileUtil = ApplicationContextUtil.getContext().getBean(GammaFileUtil.class); + parameterProperties = ApplicationContextUtil.getContext().getBean(ParameterProperties.class); + + phdFile.setXmlFilePath(parameterProperties.getFilePath()); + // 解析PHD文件 + spectrumPathProperties = SpringContextUtils.getBean(SpectrumPathProperties.class); + ftpUtil = SpringContextUtils.getBean(FTPUtil.class); + //获取PHD文件的路径以及文件名称信息 + String sampleFilePathName = spectrumHandler.spectrumFile.getAbsolutePath().replace("\\", StringPool.SLASH); + String pathName = sampleFilePathName.substring(0, sampleFilePathName.lastIndexOf(StringPool.SLASH)); + String fileName = sampleFilePathName.substring(sampleFilePathName.lastIndexOf(StringPool.SLASH) + 1); + + // 获取数据库 Gamma 默认参数 + getSettingFromDB(phdFile); + + // 解析能谱文件 + boolean flag = gammaFileUtil.loadFile(pathName, fileName, phdFile, "AUTO", new Result()); + + // 文件路径 + middleData.setAnalyses_save_filePath(this.sampleInputFilename); + // 读取文件内容并附值 + this.setPHDFile(phdFile, this.energySpectrumStruct); + phdFile.getSetting().setRefTime_act(DateUtils.parseDate(phdFile.getAcq().getAcquisition_start_date() + " " + phdFile.getAcq().getAcquisition_start_time())); + phdFile.getSetting().setRefTime_conc(DateUtils.parseDate(phdFile.getCollect().getCollection_start_date() + " " + phdFile.getCollect().getCollection_start_time())); + // 根据能谱的系统类型传入不同的核素参数 + Map nuclideLibs = new HashMap<>(); + if (this.systemType.equals(SpectrumSystemType.P.name())) { + nuclideLibs = this.getNuclideLinesP(); + } + if (this.systemType.equals(SpectrumSystemType.G.name())) { + nuclideLibs = this.getNuclideLinesG(); + } + //读取参数内容 + readMDCParameter(phdFile); + // 执行分析业务代码 + boolean analyFlag = gammaFileUtil.GetMiddleData(phdFile, CommonConstant.REPORT_PREFIX_AUTO, nuclideLibs, middleData, MiddleDataType.Auto.getType(), ""); + + if (analyFlag) { + Info info = getSampleInfo(middleData); + //TODO 获取样品级别 + try { + //获取阈值结果 + List thresholds = serviceQuotes.getGardsThresholdService().findThresholdResults(this.sampleData.getStationId().toString()); + //样品分级 + Integer category = serviceQuotes.getSampleGradingService().processAutoTypeP(info, thresholds); + middleData.setAnalyses_category(category); + } catch (Exception e) { + + } + // 数据插入数据库 + this.storageDataToDatabase(phdFile, middleData, phdFile.getQcItems()); + + // 生成日志文件 + writeLog(middleData.getAnalyses_LogPath(), middleData); + + // 生成报告文件 + String reportContent = gammaFileUtil.GetReportContent(middleData); + String reportPath = StringUtils.substringBeforeLast(middleData.getAnalyses_ReportPath(), StringPool.SLASH); + String reportName = StringUtils.substringAfterLast(middleData.getAnalyses_ReportPath(), StringPool.SLASH) + ".txt"; + String savePath = spectrumPathProperties.getRootPath() + spectrumPathProperties.getSaveFilePath() + File.separator + reportPath + + File.separator + reportName; + // 保存文件 + FileOperation.saveOrAppendFile(savePath, reportContent, false); + //发送数据到redis + pushToRedis(info); + } else { + ErrorLogManager.getInstance().write(new SpectrumErrorEvent(new Date(), phdFile.getAnalyMessage(), this.sampleFilename)); + throw new AnalySpectrumException(phdFile.getAnalyMessage()); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("Sample_G_Analysis", e); + if (e instanceof DuplicateKeyException) { + throw new GAnalyseException("Sample Analyse Error at " + DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"), true); + } else if (e instanceof AnalySpectrumException) { + throw new AnalySpectrumException(e.getMessage()); + } else { + throw new GAnalyseException("Sample Analyse Error at " + DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss")); + } + } + log.info("Gamma自动处理分析--End"); + } + + private Info getSampleInfo(GStoreMiddleProcessData middleData) { + try { + Info info = new Info(); + info.setStationId(this.sampleData.getStationId().toString()); + info.setSampleId(middleData.sample_id); + info.setSampleType(middleData.getSample_Type()); + info.setIdAnalysis(middleData.getIdAnalysis()); + info.setSampleName(middleData.analyses_save_filePath.substring(middleData.analyses_save_filePath.lastIndexOf(StringPool.SLASH) + 1)); + final Instant instant = DateUtils.parseDate(middleData.sample_collection_start).toInstant(); + final LocalDateTime collectTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); + info.setCollectionDate(collectTime); + info.setDatasource(DSType.ARMDARR.getType()); + info.setFullOrPrel(this.sampleData.getSpectralQualifie()); + info.setBetaOrGamma(SpectrumType.GAMMA.getType()); + Map nuclides = Maps.newHashMap(); + for (int i = 0; i < middleData.nucl_ided_Nuclidename.size(); i++) { + nuclides.put(middleData.nucl_ided_Nuclidename.get(i), middleData.nucl_ided_Concentration.get(i)); + } + info.setNuclides(nuclides); + info.setAnalyst(middleData.analyses_analyst); + return info; + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + /** + * 读取计算MDC参数文件方法 */ public void readMDCParameter(PHDFile phd) { //存储文件结果用的map Map mdcInfoMap = new TreeMap<>(); //配置文件路径 - String filePath = parameterProperties.getFilePath()+ File.separator + "MDCParameter.xml"; + String filePath = parameterProperties.getFilePath() + File.separator + "MDCParameter.xml"; try { //创建一个文档解析器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); @@ -228,7 +263,7 @@ public class Sample_G_Analysis { DocumentBuilder documentBuilder = factory.newDocumentBuilder(); //读取xml文件生成一个文档 Document document = documentBuilder.parse(filePath); - if (Objects.nonNull(document)){ + if (Objects.nonNull(document)) { //获取文档的根元素 Element element = document.getDocumentElement(); //获取根元素的子节点 @@ -236,14 +271,14 @@ public class Sample_G_Analysis { //判断文件内的节点是否大于0 if (Objects.nonNull(docChildNodes) && docChildNodes.getLength() > 0) { //遍历文件节点读取内容 - for (int i=0; i 0) { //遍历子节点信息 - for (int j=0; j< childNodes.getLength(); j++) { + for (int j = 0; j < childNodes.getLength(); j++) { //获取子节点信息 Node childNode = childNodes.item(j); //判断节点名称是否是item @@ -254,7 +289,7 @@ public class Sample_G_Analysis { if (Objects.nonNull(attributes)) { CalMDCInfo info = new CalMDCInfo(); //遍历属性信息 - for (int k=0; k qcItems) { + //如果数据已经存储,不在重复存储 + final Integer idAnalysis = serviceQuotes.getAnalysesService().getIdAnalysis(this.sampleData.getSampleId()); + if (Objects.nonNull(idAnalysis)) { + middleData.setIdAnalysis(String.valueOf(idAnalysis)); +// log.warn("{} file analysis data has been stored",new File(this.sampleTempFilePath).getName()); + return; + } + DataSourceSwitcher.switchToOracle(); + final TransactionStatus transactionStatus = serviceQuotes.getTransactionManager().getTransaction(serviceQuotes.getTransactionDefinition()); try { - Info info = new Info(); - info.setStationId(this.sampleData.getStationId().toString()); - info.setSampleId(middleData.sample_id); - info.setSampleName(middleData.analyses_save_filePath.substring(middleData.analyses_save_filePath.lastIndexOf(StringPool.SLASH)+1)); - final Instant instant = DateUtils.parseDate(middleData.sample_collection_start).toInstant(); - final LocalDateTime collectTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); - info.setCollectionDate(collectTime); - info.setDatasource(DSType.ARMDARR.getType()); - info.setFullOrPrel(this.sampleData.getSpectralQualifie()); - info.setBetaOrGamma(SpectrumType.GAMMA.getType()); - Map nuclides = Maps.newHashMap(); - for (int i=0; i INSERT INTO RNAUTO.GARDS_ANALYSES + saveAnalysis(middleData, sampleId); + // 获取分析结果ID ==> SELECT IDANALYSIS + Integer IdAnalysis = getIdAnalysis(sampleId); + middleData.setIdAnalysis(String.valueOf(idAnalysis)); + // 修改保存结果状态 ==> UPDATE ORIGINAL.GARDS_SAMPLE_DATA +// serviceQuotes.getSampleDataService().updateStatus(null,null); + /* GARDS_CALIBRATION_PAIRS 数据表保存 */ + saveCalibrationPairs(middleData, sampleId, IdAnalysis); + /* GARDS_CALIBRATION 数据表保存 */ + saveCalibration(middleData, sampleId, IdAnalysis); + /* Gards_Peaks 数据表保存 */ + savePeaks(middleData, sampleId, IdAnalysis); + /* Gards_Nucl_Lines_Ided 数据表保存 */ + saveNuclLinesIded(middleData, sampleId, IdAnalysis); + /* Gards_Nucl_Ided 数据表保存 */ + saveNuclIded(middleData, sampleId, IdAnalysis); + /* Gards_Qc_Check 数据表保存 */ + saveQcCheck(middleData, sampleId, IdAnalysis, qcItems); + /* GARDS_MDC 数据表保存 */ + saveMDC(sampleId, IdAnalysis, phdFile.getMdcInfoMap()); + //提交事务 + serviceQuotes.getTransactionManager().commit(transactionStatus); + } catch (Exception e) { + //设置分析数据存储失败标记 +// this.parsingProcessLog.setAnalysisDataStoreFlag(false); + //回滚事务 + serviceQuotes.getTransactionManager().rollback(transactionStatus); + throw e; + } finally { + DataSourceSwitcher.clearDataSource(); } } - private void storageDataToDatabase(PHDFile phdFile, GStoreMiddleProcessData middleData, Map qcItems){ - //如果数据已经存储,不在重复存储 - final Integer idAnalysis = serviceQuotes.getAnalysesService().getIdAnalysis(this.sampleData.getSampleId()); - if(Objects.nonNull(idAnalysis)){ -// log.warn("{} file analysis data has been stored",new File(this.sampleTempFilePath).getName()); - return; - } - DataSourceSwitcher.switchToOracle(); - final TransactionStatus transactionStatus = serviceQuotes.getTransactionManager().getTransaction(serviceQuotes.getTransactionDefinition()); - try { - Integer sampleId = this.sampleData.getSampleId(); - // 保存分析结果 ==> INSERT INTO RNAUTO.GARDS_ANALYSES - saveAnalysis(middleData, sampleId); - // 获取分析结果ID ==> SELECT IDANALYSIS - Integer IdAnalysis = getIdAnalysis(sampleId); - // 修改保存结果状态 ==> UPDATE ORIGINAL.GARDS_SAMPLE_DATA -// serviceQuotes.getSampleDataService().updateStatus(null,null); - /* GARDS_CALIBRATION_PAIRS 数据表保存 */ - saveCalibrationPairs(middleData, sampleId, IdAnalysis); - /* GARDS_CALIBRATION 数据表保存 */ - saveCalibration(middleData, sampleId, IdAnalysis); - /* Gards_Peaks 数据表保存 */ - savePeaks(middleData, sampleId, IdAnalysis); - /* Gards_Nucl_Lines_Ided 数据表保存 */ - saveNuclLinesIded(middleData, sampleId, IdAnalysis); - /* Gards_Nucl_Ided 数据表保存 */ - saveNuclIded(middleData, sampleId, IdAnalysis); - /* Gards_Qc_Check 数据表保存 */ - saveQcCheck(middleData, sampleId, IdAnalysis, qcItems); - /* GARDS_MDC 数据表保存 */ - saveMDC(sampleId, IdAnalysis, phdFile.getMdcInfoMap()); - //提交事务 - serviceQuotes.getTransactionManager().commit(transactionStatus); - } catch (Exception e) { - //设置分析数据存储失败标记 -// this.parsingProcessLog.setAnalysisDataStoreFlag(false); - //回滚事务 - serviceQuotes.getTransactionManager().rollback(transactionStatus); - throw e; - } finally { - DataSourceSwitcher.clearDataSource(); - } - } + /** + * 生成日志文件 + * + * @param logFilePath + * @param middleData + */ + private void writeLog(String logFilePath, GStoreMiddleProcessData middleData) { + logFilePath = spectrumPathProperties.getRootPath() + spectrumPathProperties.getLogPath() + File.separator + logFilePath; + String sampleId = middleData.getSample_id(); + MyLogFormatUtil myLogFormatUtil = new MyLogFormatUtil(); + List writes = new LinkedList<>(); - /** - * 生成日志文件 - * @param logFilePath - * @param middleData - */ - private void writeLog(String logFilePath, GStoreMiddleProcessData middleData) { - logFilePath = spectrumPathProperties.getRootPath() + spectrumPathProperties.getLogPath() + File.separator + logFilePath; - String sampleId = middleData.getSample_id(); - MyLogFormatUtil myLogFormatUtil = new MyLogFormatUtil(); - List writes = new LinkedList<>(); + // 自动处理分析开始 + String analyseBegin = MyLogFormatUtil.analyseResultsBegin.replace("%1", "date"); + writes.add(MyLogFormatUtil.getTitleFormat(analyseBegin, MyLogFormatUtil.FILE_TITLE_FLAG)); - // 自动处理分析开始 - String analyseBegin = MyLogFormatUtil.analyseResultsBegin.replace("%1", "date"); - writes.add(MyLogFormatUtil.getTitleFormat(analyseBegin, MyLogFormatUtil.FILE_TITLE_FLAG)); + /* Read calibration data */ + writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.titleCalibration)); - /* Read calibration data */ - writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.titleCalibration)); + List data = new ArrayList<>(); + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.SetSampleGEnergyChannel.replace("%1", sampleId))); - List data = new ArrayList<>(); - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.SetSampleGEnergyChannel.replace("%1", sampleId))); + AttributeItemVo item = null; + item = new AttributeItemVo("Channel", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_E_xValue(), 3)); + data.add(item); + item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_E_yValue(), 3)); + data.add(item); + item = new AttributeItemVo("Error", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_E_uncYValue(), 3)); + data.add(item); + writes.addAll(MyLogFormatUtil.getBlockContext(data)); - AttributeItemVo item = null; - item = new AttributeItemVo("Channel", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_E_xValue(), 3)); - data.add(item); - item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_E_yValue(),3)); - data.add(item); - item = new AttributeItemVo("Error", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_E_uncYValue(), 3)); - data.add(item); - writes.addAll(MyLogFormatUtil.getBlockContext(data)); + // Reading gamma Efficiency pairs(sampleID: %1) + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GSetSampleEfficiencyChannel.replace("%1", sampleId))); + data.clear(); + item = new AttributeItemVo("Channel", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_EF_xValue(), 3)); + data.add(item); + item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_EF_yValue(), 3)); + data.add(item); + item = new AttributeItemVo("Error", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_EF_uncYValue(), 3)); + data.add(item); + writes.addAll(MyLogFormatUtil.getBlockContext(data)); - // Reading gamma Efficiency pairs(sampleID: %1) - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GSetSampleEfficiencyChannel.replace("%1", sampleId))); - data.clear(); - item = new AttributeItemVo("Channel", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_EF_xValue(), 3)); - data.add(item); - item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_EF_yValue(), 3)); - data.add(item); - item = new AttributeItemVo("Error", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_EF_uncYValue(), 3)); - data.add(item); - writes.addAll(MyLogFormatUtil.getBlockContext(data)); + // Reading gamma Resolution pairs(sampleID: %1) + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GSetSampleResolutionChannel.replace("%1", sampleId))); + data.clear(); + item = new AttributeItemVo("Channel", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_R_xValue(), 3)); + data.add(item); + item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_R_yValue(), 3)); + data.add(item); + item = new AttributeItemVo("Error", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_R_uncYValue(), 3)); + data.add(item); + writes.addAll(MyLogFormatUtil.getBlockContext(data)); - // Reading gamma Resolution pairs(sampleID: %1) - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GSetSampleResolutionChannel.replace("%1", sampleId))); - data.clear(); - item = new AttributeItemVo("Channel", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_R_xValue(), 3)); - data.add(item); - item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_R_yValue(),3)); - data.add(item); - item = new AttributeItemVo("Error", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_R_uncYValue(),3)); - data.add(item); - writes.addAll(MyLogFormatUtil.getBlockContext(data)); + // Reading gamma TotalEfficiency pairs(sampleID: %1) + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GSetSampleTotalEfficiencyChannel.replace("%1", sampleId))); + data.clear(); + item = new AttributeItemVo("Channel", middleData.getCalibration_pairs_S_T_xValue()); + data.add(item); + item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_T_yValue(), 3)); + data.add(item); + item = new AttributeItemVo("Error", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_T_uncYValue(), 3)); + data.add(item); + writes.addAll(MyLogFormatUtil.getBlockContext(data)); - // Reading gamma TotalEfficiency pairs(sampleID: %1) - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GSetSampleTotalEfficiencyChannel.replace("%1", sampleId))); - data.clear(); - item = new AttributeItemVo("Channel", middleData.getCalibration_pairs_S_T_xValue()); - data.add(item); - item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_T_yValue(), 3)); - data.add(item); - item = new AttributeItemVo("Error", MyLogFormatUtil.getValuePoint(middleData.getCalibration_pairs_S_T_uncYValue(), 3)); - data.add(item); - writes.addAll(MyLogFormatUtil.getBlockContext(data)); + // Reading sample information + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.sampleInfo)); + Map infoMap = new LinkedHashMap<>(); + infoMap.put("Collection Start", middleData.sample_collection_start); + infoMap.put("Collection Stop", middleData.sample_collection_stop); + infoMap.put("Sampling Time[h]", middleData.sample_time); + infoMap.put("Sample Quantity[m3]", middleData.sample_quantity); + infoMap.put("Decay Time[h]", middleData.sample_decay_time); + infoMap.put("Acquisition Start", middleData.sample_acquisiton_start); + infoMap.put("Acquisition Stop", middleData.sample_acquistion_stop); + infoMap.put("Acquisition Time[s]", middleData.sample_acquistion_time); + writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); - // Reading sample information - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.sampleInfo)); - Map infoMap = new LinkedHashMap<>(); - infoMap.put("Collection Start", middleData.sample_collection_start); - infoMap.put("Collection Stop", middleData.sample_collection_stop); - infoMap.put("Sampling Time[h]", middleData.sample_time); - infoMap.put("Sample Quantity[m3]", middleData.sample_quantity); - infoMap.put("Decay Time[h]", middleData.sample_decay_time); - infoMap.put("Acquisition Start", middleData.sample_acquisiton_start); - infoMap.put("Acquisition Stop", middleData.sample_acquistion_stop); - infoMap.put("Acquisition Time[s]", middleData.sample_acquistion_time); - writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); + // Read calibration finished + writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.titleCalibrationIdEnd)); - // Read calibration finished - writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.titleCalibrationIdEnd)); + /* Starting Calibration */ + writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.GTitleCalibration)); - /* Starting Calibration */ - writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.GTitleCalibration)); + // Energy Calibration [%1 ] + if (middleData.calibration_pairs_E_idCalPoint.size() > 0) { + infoMap = new LinkedHashMap<>(); + infoMap.put("Energy Calibration [%1 ]".replace("%1", middleData.calibration_pairs_R_Input), ""); + infoMap.put("Function", middleData.calibration_E_functionTypeDef); + infoMap.put("E", middleData.calibration_E_functionDef); + infoMap.put("P", middleData.calibration_E_coeff_string); + infoMap.put("Err", middleData.calibration_E_uncoeff_string); + infoMap.put("Data", middleData.calibration_pairs_E_Input); + writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); + } - // Energy Calibration [%1 ] - if(middleData.calibration_pairs_E_idCalPoint.size()>0) { - infoMap = new LinkedHashMap<>(); - infoMap.put("Energy Calibration [%1 ]".replace("%1", middleData.calibration_pairs_R_Input), ""); - infoMap.put("Function", middleData.calibration_E_functionTypeDef); - infoMap.put("E", middleData.calibration_E_functionDef); - infoMap.put("P", middleData.calibration_E_coeff_string); - infoMap.put("Err", middleData.calibration_E_uncoeff_string); - infoMap.put("Data", middleData.calibration_pairs_E_Input); - writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); - } + // Resolution Calibration [%1 ] + if (middleData.calibration_pairs_R_idCalPoint.size() > 0) { + infoMap = new LinkedHashMap<>(); + infoMap.put("Resolution Calibration [%1 ]".replace("%1", middleData.calibration_pairs_R_Input), ""); + infoMap.put("Function", middleData.calibration_R_functionTypeDef); + infoMap.put("E", middleData.calibration_R_functionDef); + infoMap.put("P", middleData.calibration_R_coeff_string); + infoMap.put("Err", middleData.calibration_R_uncoeff_string); + infoMap.put("Data", middleData.calibration_pairs_R_Input); + writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); + } - // Resolution Calibration [%1 ] - if(middleData.calibration_pairs_R_idCalPoint.size()>0) { - infoMap = new LinkedHashMap<>(); - infoMap.put("Resolution Calibration [%1 ]".replace("%1", middleData.calibration_pairs_R_Input) , ""); - infoMap.put("Function", middleData.calibration_R_functionTypeDef); - infoMap.put("E", middleData.calibration_R_functionDef); - infoMap.put("P", middleData.calibration_R_coeff_string); - infoMap.put("Err", middleData.calibration_R_uncoeff_string); - infoMap.put("Data", middleData.calibration_pairs_R_Input); - writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); - } + // Efficiency Calibration [PHD ] + if (middleData.calibration_pairs_EF_idCalPoint.size() > 0) { + infoMap = new LinkedHashMap<>(); + infoMap.put("Efficiency Calibration [%1 ]".replace("%1", middleData.calibration_pairs_EF_Input), ""); + infoMap.put("Function", middleData.calibration_pairs_EF_Input); + infoMap.put("E", middleData.calibration_EF_functionTypeDef); + infoMap.put("P", middleData.calibration_EF_functionDef); + infoMap.put("Err", middleData.calibration_EF_coeff_string); + infoMap.put("Data", middleData.calibration_EF_uncoeff_string); + writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); + } - // Efficiency Calibration [PHD ] - if(middleData.calibration_pairs_EF_idCalPoint.size()>0) { - infoMap = new LinkedHashMap<>(); - infoMap.put("Efficiency Calibration [%1 ]".replace("%1", middleData.calibration_pairs_EF_Input), ""); - infoMap.put("Function", middleData.calibration_pairs_EF_Input); - infoMap.put("E", middleData.calibration_EF_functionTypeDef); - infoMap.put("P", middleData.calibration_EF_functionDef); - infoMap.put("Err", middleData.calibration_EF_coeff_string); - infoMap.put("Data", middleData.calibration_EF_uncoeff_string); - writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); - } + if (middleData.calibration_pairs_T_idCalPoint.size() > 0) { + infoMap = new LinkedHashMap<>(); + infoMap.put("Tot_efficiency Calibration [%1 ]".replace("%1", middleData.calibration_pairs_T_Input), ""); + infoMap.put("Function", middleData.calibration_pairs_T_Input); + infoMap.put("E", middleData.calibration_T_functionTypeDef); + infoMap.put("P", middleData.calibration_T_functionDef); + infoMap.put("Err", middleData.calibration_T_coeff_string); + infoMap.put("Data", middleData.calibration_T_uncoeff_string); + writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); - if(middleData.calibration_pairs_T_idCalPoint.size()>0) { - infoMap = new LinkedHashMap<>(); - infoMap.put("Tot_efficiency Calibration [%1 ]".replace("%1", middleData.calibration_pairs_T_Input), ""); - infoMap.put("Function", middleData.calibration_pairs_T_Input); - infoMap.put("E", middleData.calibration_T_functionTypeDef); - infoMap.put("P", middleData.calibration_T_functionDef); - infoMap.put("Err", middleData.calibration_T_coeff_string); - infoMap.put("Data", middleData.calibration_T_uncoeff_string); - writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); + } + // Calibration Finished + writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.GTitleCalibrationEnd)); - } - // Calibration Finished - writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.GTitleCalibrationEnd)); + /* Starting Spectrum Analysis */ + writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.GTitleSpectrum)); - /* Starting Spectrum Analysis */ - writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.GTitleSpectrum)); + // PROCESSING PARAMETERS..... + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetPROCESSING)); - // PROCESSING PARAMETERS..... - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetPROCESSING)); + infoMap = new LinkedHashMap<>(); + infoMap.put("ECutAnalysis_Low", middleData.setting_specSetup.getECutAnalysis_Low()); + infoMap.put("ECutAnalysis_High", middleData.setting_specSetup.getECutAnalysis_High()); + infoMap.put("EnergyTolerance", middleData.setting_specSetup.getEnergyTolerance()); + infoMap.put("BaseImprovePSS", middleData.setting_specSetup.getBaseImprovePSS()); + infoMap.put("PSS_low", middleData.setting_specSetup.getPss_low()); + infoMap.put("k_back", middleData.setting_specSetup.getK_back()); + infoMap.put("k_alpha", middleData.setting_specSetup.getK_alpha()); + infoMap.put("k_beta", middleData.setting_specSetup.getK_beta()); + infoMap.put("RiskLevelK", middleData.setting_specSetup.getRiskLevelK()); + infoMap.put("refTime_act", middleData.setting_specSetup.getRefTime_act()); + infoMap.put("refTime_conc", middleData.setting_specSetup.getRefTime_conc()); + writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); - infoMap = new LinkedHashMap<>(); - infoMap.put("ECutAnalysis_Low", middleData.setting_specSetup.getECutAnalysis_Low()); - infoMap.put("ECutAnalysis_High", middleData.setting_specSetup.getECutAnalysis_High()); - infoMap.put("EnergyTolerance", middleData.setting_specSetup.getEnergyTolerance()); - infoMap.put("BaseImprovePSS", middleData.setting_specSetup.getBaseImprovePSS()); - infoMap.put("PSS_low", middleData.setting_specSetup.getPss_low()); - infoMap.put("k_back", middleData.setting_specSetup.getK_back()); - infoMap.put("k_alpha", middleData.setting_specSetup.getK_alpha()); - infoMap.put("k_beta", middleData.setting_specSetup.getK_beta()); - infoMap.put("RiskLevelK", middleData.setting_specSetup.getRiskLevelK()); - infoMap.put("refTime_act", middleData.setting_specSetup.getRefTime_act()); - infoMap.put("refTime_conc", middleData.setting_specSetup.getRefTime_conc()); - writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); + // CALIBRATION PARAMETERS..... + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetCALIBRATION)); + infoMap = new LinkedHashMap<>(); + infoMap.put("CalibrationPSS_low", middleData.setting_specSetup.getCalibrationPSS_low()); + infoMap.put("CalibrationPSS_high", middleData.setting_specSetup.getCalibrationPSS_high()); + infoMap.put("bUpdateCal", middleData.setting_specSetup.isBUpdateCal()); + infoMap.put("KeepCalPeakSearchPeaks", middleData.setting_specSetup.isKeepCalPeakSearchPeaks()); + writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); - // CALIBRATION PARAMETERS..... - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetCALIBRATION)); - infoMap = new LinkedHashMap<>(); - infoMap.put("CalibrationPSS_low", middleData.setting_specSetup.getCalibrationPSS_low()); - infoMap.put("CalibrationPSS_high", middleData.setting_specSetup.getCalibrationPSS_high()); - infoMap.put("bUpdateCal", middleData.setting_specSetup.isBUpdateCal()); - infoMap.put("KeepCalPeakSearchPeaks", middleData.setting_specSetup.isKeepCalPeakSearchPeaks()); - writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); + // Nuclide Identified..... + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetPeakSearchResult)); + infoMap = new LinkedHashMap<>(); + int idPeakSize = middleData.peaks_idPeak.size(); + double peaksUsed = 0; + for (int m = 0; m < middleData.peaks_Nuclide_name.size(); m++) { + if (!middleData.peaks_Nuclide_name.get(m).isEmpty()) { + peaksUsed++; + } + } - // Nuclide Identified..... - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetPeakSearchResult)); - infoMap = new LinkedHashMap<>(); - int idPeakSize = middleData.peaks_idPeak.size(); - double peaksUsed = 0; - for(int m=0;m(); + item = new AttributeItemVo("PeakID", middleData.getPeaks_idPeak()); + data.add(item); + item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Energy(), 3)); + data.add(item); + item = new AttributeItemVo("Centroid", MyLogFormatUtil.getValuePoint(middleData.getPeaks_peakCentroid(), 3)); + data.add(item); + item = new AttributeItemVo("FWHM", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Fwhm(), 3)); + data.add(item); + item = new AttributeItemVo("NetArea", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Area(), 3)); + data.add(item); + List percentData = MyLogFormatUtil.getPercent(middleData.getPeaks_areaErr(), middleData.getPeaks_Area()); + item = new AttributeItemVo("NAErr%", MyLogFormatUtil.getValuePoint(percentData, 3)); + data.add(item); + item = new AttributeItemVo("Signif", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Significance(), 3)); + data.add(item); + item = new AttributeItemVo("Sensit", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Sensitivity(), 3)); + data.add(item); + item = new AttributeItemVo("Nuclide", middleData.getPeaks_Nuclide_name()); + data.add(item); + writes.addAll(MyLogFormatUtil.getBlock(MyLogFormatUtil.GSetSampleEfficiencyChannel, sampleId, data)); - data = new ArrayList<>(); - item = new AttributeItemVo("PeakID", middleData.getPeaks_idPeak()); - data.add(item); - item = new AttributeItemVo("Energy", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Energy(), 3)); - data.add(item); - item = new AttributeItemVo("Centroid", MyLogFormatUtil.getValuePoint(middleData.getPeaks_peakCentroid(), 3)); - data.add(item); - item = new AttributeItemVo("FWHM", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Fwhm(), 3)); - data.add(item); - item = new AttributeItemVo("NetArea", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Area(), 3)); - data.add(item); - List percentData = MyLogFormatUtil.getPercent(middleData.getPeaks_areaErr(), middleData.getPeaks_Area()); - item = new AttributeItemVo("NAErr%", MyLogFormatUtil.getValuePoint(percentData, 3)); - data.add(item); - item = new AttributeItemVo("Signif", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Significance(), 3)); - data.add(item); - item = new AttributeItemVo("Sensit", MyLogFormatUtil.getValuePoint(middleData.getPeaks_Sensitivity(), 3)); - data.add(item); - item = new AttributeItemVo("Nuclide", middleData.getPeaks_Nuclide_name()); - data.add(item); - writes.addAll(MyLogFormatUtil.getBlock(MyLogFormatUtil.GSetSampleEfficiencyChannel, sampleId, data)); + // Nuclide Identified..... + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetPeakSearchResult)); + StringBuilder qsNuclidesName = new StringBuilder(); + for (int m = 0; m < middleData.nucl_ided_Nuclidename.size() - 1; m++) { + qsNuclidesName.append(middleData.nucl_ided_Nuclidename.get(m)).append(","); + } + if (middleData.nucl_ided_Nuclidename.size() > 1) { + qsNuclidesName.append(middleData.nucl_ided_Nuclidename.get(middleData.nucl_ided_Nuclidename.size() - 1)); + } + infoMap = new LinkedHashMap<>(); + infoMap.put("Nuclides Identified", qsNuclidesName.toString()); + infoMap.put("Keyline Activities for Nuclides with defined Reference Line", ""); + infoMap.put("Activity Reference Time", middleData.getSample_acquisiton_start()); + infoMap.put("Concentration Reference Time", middleData.getSample_collection_start()); + writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); - // Nuclide Identified..... - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetPeakSearchResult)); - StringBuilder qsNuclidesName = new StringBuilder(); - for(int m = 0; m < middleData.nucl_ided_Nuclidename.size() -1; m++) - { - qsNuclidesName.append(middleData.nucl_ided_Nuclidename.get(m)).append(","); - } - if(middleData.nucl_ided_Nuclidename.size() > 1) - { - qsNuclidesName.append(middleData.nucl_ided_Nuclidename.get(middleData.nucl_ided_Nuclidename.size() - 1)); - } - infoMap = new LinkedHashMap<>(); - infoMap.put("Nuclides Identified", qsNuclidesName.toString()); - infoMap.put("Keyline Activities for Nuclides with defined Reference Line", ""); - infoMap.put("Activity Reference Time", middleData.getSample_acquisiton_start()); - infoMap.put("Concentration Reference Time", middleData.getSample_collection_start()); - writes.addAll(MyLogFormatUtil.getBlockContext(infoMap)); + data = new ArrayList<>(); + item = new AttributeItemVo("Nuclide", middleData.getNucl_ided_Nuclidename()); + data.add(item); + item = new AttributeItemVo("Halflife", middleData.getNucl_ided_Halflife()); + data.add(item); + item = new AttributeItemVo("Activity", + MyLogFormatUtil.getValuePoint(middleData.getNucl_ided_activ_key(), 3), "bq"); + data.add(item); + List ideaPercent = MyLogFormatUtil.getPercent(middleData.getNucl_ided_activ_key_err(), middleData.getNucl_ided_activ_key()); + item = new AttributeItemVo("RelErr", ideaPercent, "%"); + data.add(item); + item = new AttributeItemVo("Conc", middleData.getNucl_ided_Concentration(), "uBq/m^3"); + data.add(item); + item = new AttributeItemVo("MDC", middleData.getNucl_ided_MDC(), "uBq/m^3"); + data.add(item); + writes.addAll(MyLogFormatUtil.getBlockContext(data)); - data = new ArrayList<>(); - item = new AttributeItemVo("Nuclide", middleData.getNucl_ided_Nuclidename()); - data.add(item); - item = new AttributeItemVo("Halflife", middleData.getNucl_ided_Halflife()); - data.add(item); - item = new AttributeItemVo("Activity", - MyLogFormatUtil.getValuePoint(middleData.getNucl_ided_activ_key(), 3), "bq"); - data.add(item); - List ideaPercent = MyLogFormatUtil.getPercent(middleData.getNucl_ided_activ_key_err(), middleData.getNucl_ided_activ_key()); - item = new AttributeItemVo("RelErr", ideaPercent, "%"); - data.add(item); - item = new AttributeItemVo("Conc", middleData.getNucl_ided_Concentration(), "uBq/m^3"); - data.add(item); - item = new AttributeItemVo("MDC", middleData.getNucl_ided_MDC(), "uBq/m^3"); - data.add(item); - writes.addAll(MyLogFormatUtil.getBlockContext(data)); + data = new ArrayList<>(); + item = new AttributeItemVo("Name", middleData.getQC_CHECK_QC_NAME()); + data.add(item); + item = new AttributeItemVo("Pass/Fail", MyLogFormatUtil.getPass(middleData.getQC_CHECK_QC_RESULT())); + data.add(item); + item = new AttributeItemVo("Value", MyLogFormatUtil.getValuePoint(middleData.getQC_CHECK_QC_VALUE(), 3)); + data.add(item); + item = new AttributeItemVo("Test", middleData.getQC_CHECK_QC_STANDARD()); + data.add(item); + writes.addAll(MyLogFormatUtil.getBlockContext(data)); + // Starting Data Quality..... + writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetDataQuality)); - data = new ArrayList<>(); - item = new AttributeItemVo("Name", middleData.getQC_CHECK_QC_NAME()); - data.add(item); - item = new AttributeItemVo("Pass/Fail", MyLogFormatUtil.getPass(middleData.getQC_CHECK_QC_RESULT())); - data.add(item); - item = new AttributeItemVo("Value", MyLogFormatUtil.getValuePoint(middleData.getQC_CHECK_QC_VALUE(), 3)); - data.add(item); - item = new AttributeItemVo("Test", middleData.getQC_CHECK_QC_STANDARD()); - data.add(item); - writes.addAll(MyLogFormatUtil.getBlockContext(data)); - // Starting Data Quality..... - writes.add(MyLogFormatUtil.getHeaderFormat(MyLogFormatUtil.GGetDataQuality)); - - // Spectrum Analysis Finished - writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.GTitleSpectrumEnd)); - // todo Data store successfully ..... - // todo Instance status successfully set to: P..... - // todo Error info: data has NULL INF..... + // Spectrum Analysis Finished + writes.add(MyLogFormatUtil.getTitleFormat(MyLogFormatUtil.GTitleSpectrumEnd)); + // todo Data store successfully ..... + // todo Instance status successfully set to: P..... + // todo Error info: data has NULL INF..... - // Sample Analyse Successfully at %1 - String analyseEnd = MyLogFormatUtil.analyseResultsEnd.replace("%1", "date"); - writes.add(MyLogFormatUtil.getTitleFormat(analyseEnd)); + // Sample Analyse Successfully at %1 + String analyseEnd = MyLogFormatUtil.analyseResultsEnd.replace("%1", "date"); + writes.add(MyLogFormatUtil.getTitleFormat(analyseEnd)); - // 保存文件 - try { - FileOperation.saveFile(logFilePath, writes); - } catch (IOException e) { - e.printStackTrace(); - } - } + // 保存文件 + try { + FileOperation.saveFile(logFilePath, writes); + } catch (IOException e) { + e.printStackTrace(); + } + } - public void saveAnalysis(GStoreMiddleProcessData middleData,Integer sampleId){ - GardsAnalyses analysis = toAnalysis(middleData); - analysis.setSampleId(sampleId); - serviceQuotes.getAnalysesService().save(analysis); - } + public void saveAnalysis(GStoreMiddleProcessData middleData, Integer sampleId) { + GardsAnalyses analysis = toAnalysis(middleData); + analysis.setSampleId(sampleId); + serviceQuotes.getAnalysesService().save(analysis); + } - public Integer getIdAnalysis(Integer sampleId){ - return serviceQuotes.getAnalysesService().getIdAnalysis(sampleId); - } + public Integer getIdAnalysis(Integer sampleId) { + return serviceQuotes.getAnalysesService().getIdAnalysis(sampleId); + } - public void saveCalibrationPairs(GStoreMiddleProcessData middleData, - Integer sampleId, Integer IdAnalysis){ - String pairsSampleType = middleData.getCalibration_pairs_sample_type(); - GardsCalibrationPairs pairs = new GardsCalibrationPairs(); - // GARDS_CALIBRATION_PAIRS (Energy) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION_PAIRS - String base_E_Paris = "calibration_pairs_E_idCalPoint"; - PairsEDto pairsEDto = new PairsEDto(); - BeanUtil.copyProperties(middleData,pairsEDto); - List pairsE = Lists.newArrayList(); - if (pairsEDto.getCalibration_pairs_E_idCalPoint().size() > 0) { - pairsE = mapFields(pairsEDto, pairs, base_E_Paris, fieldMap); - String pairsECaltype = middleData.getCalibration_pairs_E_Caltype(); - String pairsEInput = middleData.getCalibration_pairs_E_Input(); - for (GardsCalibrationPairs onePairs : pairsE) { - onePairs.setSampleId(sampleId); - onePairs.setIdAnalysis(IdAnalysis); - onePairs.setSampleType(pairsSampleType); - onePairs.setCaltype(pairsECaltype); - onePairs.setInput(pairsEInput); - } - } - // GARDS_CALIBRATION_PAIRS (Efficiency) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION_PAIRS - String base_EF_Paris = "calibration_pairs_EF_idCalPoint"; - PairsEFDto pairsEFDto = new PairsEFDto(); - BeanUtil.copyProperties(middleData,pairsEFDto); - List pairsEF = Lists.newArrayList(); - if (pairsEFDto.getCalibration_pairs_EF_idCalPoint().size() > 0) { - pairsEF = mapFields(pairsEFDto, pairs, base_EF_Paris, fieldMap); - String pairsEFCaltype = middleData.getCalibration_pairs_EF_Caltype(); - String pairsEFInput = middleData.getCalibration_pairs_EF_Input(); - for (GardsCalibrationPairs onePairs : pairsEF) { - onePairs.setSampleId(sampleId); - onePairs.setIdAnalysis(IdAnalysis); - onePairs.setSampleType(pairsSampleType); - onePairs.setCaltype(pairsEFCaltype); - onePairs.setInput(pairsEFInput); - } - } - // GARDS_CALIBRATION_PAIRS (Resolution) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION_PAIRS - String base_R_Paris = "calibration_pairs_R_idCalPoint"; - PairsRDto pairsRDto = new PairsRDto(); - BeanUtil.copyProperties(middleData,pairsRDto); - List pairsR = Lists.newArrayList(); - if (pairsRDto.getCalibration_pairs_R_idCalPoint().size() > 0) { - pairsR = mapFields(pairsRDto, pairs, base_R_Paris, fieldMap); - String pairsRCaltype = middleData.getCalibration_pairs_R_Caltype(); - String pairsRInput = middleData.getCalibration_pairs_R_Input(); - for (GardsCalibrationPairs onePairs : pairsR) { - onePairs.setSampleId(sampleId); - onePairs.setIdAnalysis(IdAnalysis); - onePairs.setSampleType(pairsSampleType); - onePairs.setCaltype(pairsRCaltype); - onePairs.setInput(pairsRInput); - } - } - // GARDS_CALIBRATION_PAIRS (TotalEfficiency) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION_PAIRS - String base_T_Paris = "calibration_pairs_T_idCalPoint"; - PairsTDto pairsTDto = new PairsTDto(); - BeanUtil.copyProperties(middleData,pairsTDto); - List pairsT = Lists.newArrayList(); - if (pairsTDto.getCalibration_pairs_T_idCalPoint().size() > 0) { - pairsT = mapFields(pairsTDto, pairs, base_T_Paris, fieldMap); - String pairsTCaltype = middleData.getCalibration_pairs_T_Caltype(); - String pairsTInput = middleData.getCalibration_pairs_T_Input(); - for (GardsCalibrationPairs onePairs : pairsT) { - onePairs.setSampleId(sampleId); - onePairs.setIdAnalysis(IdAnalysis); - onePairs.setSampleType(pairsSampleType); - onePairs.setCaltype(pairsTCaltype); - onePairs.setInput(pairsTInput); - } - } - // GARDS_CALIBRATION_PAIRS 汇总保存 - List allPairs = new ArrayList<>(); - allPairs.addAll(pairsE);allPairs.addAll(pairsEF); - allPairs.addAll(pairsR);allPairs.addAll(pairsT); - serviceQuotes.getGardsCalibrationPairsService().saveBatch(allPairs); - } - public void saveCalibration(GStoreMiddleProcessData middleData, - Integer sampleId, Integer IdAnalysis){ - String calibrationSampleType = middleData.getCalibration_sample_type(); - List pairsEIdCalPoint = middleData.getCalibration_pairs_E_idCalPoint(); - List pairsEFIdCalPoint = middleData.getCalibration_pairs_EF_idCalPoint(); - List pairsRIdCalPoint = middleData.getCalibration_pairs_R_idCalPoint(); - List pairsTIdCalPoint = middleData.getCalibration_pairs_T_idCalPoint(); - List calibrations = new ArrayList<>(); - // GARDS_CALIBRATION (E) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION - if (CollUtil.isNotEmpty(pairsEIdCalPoint)){ - GardsCalibration calibration = new GardsCalibration(); - calibration.setSampleId(sampleId); - calibration.setIdAnalysis(IdAnalysis); - calibration.setSampleType(calibrationSampleType); - calibration.setCalType(middleData.getCalibration_E_Caltype()); - calibration.setFunction((int)middleData.getCalibration_E_function()); - calibration.setFunctionDef(middleData.getCalibration_E_functionDef()); - calibration.setStartOfRange((int)middleData.getCalibration_E_startOfRange()); - calibration.setEndOfRange((int)middleData.getCalibration_E_endOfRange()); - calibration.setCoeffString(middleData.getCalibration_E_coeff_string()); - calibration.setModdate(new Date()); - calibrations.add(calibration); - } - // GARDS_CALIBRATION (EF) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION - if (CollUtil.isNotEmpty(pairsEFIdCalPoint)){ - GardsCalibration calibration = new GardsCalibration(); - calibration.setSampleId(sampleId); - calibration.setIdAnalysis(IdAnalysis); - calibration.setSampleType(calibrationSampleType); - String efCaltype = middleData.getCalibration_EF_Caltype(); - double efFunction = middleData.getCalibration_EF_function(); - String efFunctionDef = middleData.getCalibration_EF_functionDef(); - double efStartOfRange = middleData.getCalibration_EF_startOfRange(); - double efEndOfRange = middleData.getCalibration_EF_endOfRange(); - String efCoeffString = middleData.getCalibration_EF_coeff_string(); - calibration.setCalType(efCaltype); - calibration.setFunction((int)efFunction); - calibration.setFunctionDef(efFunctionDef); - calibration.setStartOfRange((int)efStartOfRange); - calibration.setEndOfRange((int)efEndOfRange); - calibration.setCoeffString(efCoeffString); - calibration.setModdate(new Date()); - calibrations.add(calibration); - } - // GARDS_CALIBRATION (R) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION - if (CollUtil.isNotEmpty(pairsRIdCalPoint)){ - GardsCalibration calibration = new GardsCalibration(); - calibration.setSampleId(sampleId); - calibration.setIdAnalysis(IdAnalysis); - calibration.setSampleType(calibrationSampleType); - String rCaltype = middleData.getCalibration_R_Caltype(); - double rFunction = middleData.getCalibration_R_function(); - String rFunctionDef = middleData.getCalibration_R_functionDef(); - double rStartOfRange = middleData.getCalibration_R_startOfRange(); - double rEndOfRange = middleData.getCalibration_R_endOfRange(); - String rCoeffString = middleData.getCalibration_R_coeff_string(); - calibration.setCalType(rCaltype); - calibration.setFunction((int)rFunction); - calibration.setFunctionDef(rFunctionDef); - calibration.setStartOfRange((int)rStartOfRange); - calibration.setEndOfRange((int)rEndOfRange); - calibration.setCoeffString(rCoeffString); - calibration.setModdate(new Date()); - calibrations.add(calibration); - } - // GARDS_CALIBRATION (T) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION - if (CollUtil.isNotEmpty(pairsTIdCalPoint)){ - GardsCalibration calibration = new GardsCalibration(); - calibration.setSampleId(sampleId); - calibration.setIdAnalysis(IdAnalysis); - calibration.setSampleType(calibrationSampleType); - String tCaltype = middleData.getCalibration_T_Caltype(); - double tFunction = middleData.getCalibration_T_function(); - String tFunctionDef = middleData.getCalibration_T_functionDef(); - double tStartOfRange = middleData.getCalibration_T_startOfRange(); - double tEndOfRange = middleData.getCalibration_T_endOfRange(); - String tCoeffString = middleData.getCalibration_T_coeff_string(); - calibration.setCalType(tCaltype); - calibration.setFunction((int)middleData.getCalibration_T_function()); - calibration.setFunctionDef(tFunctionDef); - calibration.setStartOfRange((int)tStartOfRange); - calibration.setEndOfRange((int)tEndOfRange); - calibration.setCoeffString(tCoeffString); - calibration.setModdate(new Date()); - calibrations.add(calibration); - } - if (calibrations.size() > 0) { - serviceQuotes.getGardsCalibrationService().createBatch(calibrations); - } - } + public void saveCalibrationPairs(GStoreMiddleProcessData middleData, + Integer sampleId, Integer IdAnalysis) { + String pairsSampleType = middleData.getCalibration_pairs_sample_type(); + GardsCalibrationPairs pairs = new GardsCalibrationPairs(); + // GARDS_CALIBRATION_PAIRS (Energy) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION_PAIRS + String base_E_Paris = "calibration_pairs_E_idCalPoint"; + PairsEDto pairsEDto = new PairsEDto(); + BeanUtil.copyProperties(middleData, pairsEDto); + List pairsE = Lists.newArrayList(); + if (pairsEDto.getCalibration_pairs_E_idCalPoint().size() > 0) { + pairsE = mapFields(pairsEDto, pairs, base_E_Paris, fieldMap); + String pairsECaltype = middleData.getCalibration_pairs_E_Caltype(); + String pairsEInput = middleData.getCalibration_pairs_E_Input(); + for (GardsCalibrationPairs onePairs : pairsE) { + onePairs.setSampleId(sampleId); + onePairs.setIdAnalysis(IdAnalysis); + onePairs.setSampleType(pairsSampleType); + onePairs.setCaltype(pairsECaltype); + onePairs.setInput(pairsEInput); + } + } + // GARDS_CALIBRATION_PAIRS (Efficiency) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION_PAIRS + String base_EF_Paris = "calibration_pairs_EF_idCalPoint"; + PairsEFDto pairsEFDto = new PairsEFDto(); + BeanUtil.copyProperties(middleData, pairsEFDto); + List pairsEF = Lists.newArrayList(); + if (pairsEFDto.getCalibration_pairs_EF_idCalPoint().size() > 0) { + pairsEF = mapFields(pairsEFDto, pairs, base_EF_Paris, fieldMap); + String pairsEFCaltype = middleData.getCalibration_pairs_EF_Caltype(); + String pairsEFInput = middleData.getCalibration_pairs_EF_Input(); + for (GardsCalibrationPairs onePairs : pairsEF) { + onePairs.setSampleId(sampleId); + onePairs.setIdAnalysis(IdAnalysis); + onePairs.setSampleType(pairsSampleType); + onePairs.setCaltype(pairsEFCaltype); + onePairs.setInput(pairsEFInput); + } + } + // GARDS_CALIBRATION_PAIRS (Resolution) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION_PAIRS + String base_R_Paris = "calibration_pairs_R_idCalPoint"; + PairsRDto pairsRDto = new PairsRDto(); + BeanUtil.copyProperties(middleData, pairsRDto); + List pairsR = Lists.newArrayList(); + if (pairsRDto.getCalibration_pairs_R_idCalPoint().size() > 0) { + pairsR = mapFields(pairsRDto, pairs, base_R_Paris, fieldMap); + String pairsRCaltype = middleData.getCalibration_pairs_R_Caltype(); + String pairsRInput = middleData.getCalibration_pairs_R_Input(); + for (GardsCalibrationPairs onePairs : pairsR) { + onePairs.setSampleId(sampleId); + onePairs.setIdAnalysis(IdAnalysis); + onePairs.setSampleType(pairsSampleType); + onePairs.setCaltype(pairsRCaltype); + onePairs.setInput(pairsRInput); + } + } + // GARDS_CALIBRATION_PAIRS (TotalEfficiency) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION_PAIRS + String base_T_Paris = "calibration_pairs_T_idCalPoint"; + PairsTDto pairsTDto = new PairsTDto(); + BeanUtil.copyProperties(middleData, pairsTDto); + List pairsT = Lists.newArrayList(); + if (pairsTDto.getCalibration_pairs_T_idCalPoint().size() > 0) { + pairsT = mapFields(pairsTDto, pairs, base_T_Paris, fieldMap); + String pairsTCaltype = middleData.getCalibration_pairs_T_Caltype(); + String pairsTInput = middleData.getCalibration_pairs_T_Input(); + for (GardsCalibrationPairs onePairs : pairsT) { + onePairs.setSampleId(sampleId); + onePairs.setIdAnalysis(IdAnalysis); + onePairs.setSampleType(pairsSampleType); + onePairs.setCaltype(pairsTCaltype); + onePairs.setInput(pairsTInput); + } + } + // GARDS_CALIBRATION_PAIRS 汇总保存 + List allPairs = new ArrayList<>(); + allPairs.addAll(pairsE); + allPairs.addAll(pairsEF); + allPairs.addAll(pairsR); + allPairs.addAll(pairsT); + serviceQuotes.getGardsCalibrationPairsService().saveBatch(allPairs); + } - public void savePeaks(GStoreMiddleProcessData middleData,Integer sampleId, Integer IdAnalysis){ - // Gards_Peaks数据表 ==> INSERT INTO RNAUTO.GARDS_PEAKS - String base_P_IdPeak = "peaks_idPeak"; - GardsPeaksDto gardsPeaksDto = new GardsPeaksDto(); - BeanUtil.copyProperties(middleData,gardsPeaksDto); - GardsPeaks gardsPeaks = new GardsPeaks(); - if (gardsPeaksDto.getPeaks_idPeak().size() > 0) { - List peaks = mapFields(gardsPeaksDto, gardsPeaks, base_P_IdPeak, fieldMap); - peaks.forEach(ided -> { - ided.setSampleId(sampleId); - ided.setIdAnalysis(IdAnalysis); - }); - serviceQuotes.getGardsPeaksAutoService().saveBatch(peaks); - } - } + public void saveCalibration(GStoreMiddleProcessData middleData, + Integer sampleId, Integer IdAnalysis) { + String calibrationSampleType = middleData.getCalibration_sample_type(); + List pairsEIdCalPoint = middleData.getCalibration_pairs_E_idCalPoint(); + List pairsEFIdCalPoint = middleData.getCalibration_pairs_EF_idCalPoint(); + List pairsRIdCalPoint = middleData.getCalibration_pairs_R_idCalPoint(); + List pairsTIdCalPoint = middleData.getCalibration_pairs_T_idCalPoint(); + List calibrations = new ArrayList<>(); + // GARDS_CALIBRATION (E) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION + if (CollUtil.isNotEmpty(pairsEIdCalPoint)) { + GardsCalibration calibration = new GardsCalibration(); + calibration.setSampleId(sampleId); + calibration.setIdAnalysis(IdAnalysis); + calibration.setSampleType(calibrationSampleType); + calibration.setCalType(middleData.getCalibration_E_Caltype()); + calibration.setFunction((int) middleData.getCalibration_E_function()); + calibration.setFunctionDef(middleData.getCalibration_E_functionDef()); + calibration.setStartOfRange((int) middleData.getCalibration_E_startOfRange()); + calibration.setEndOfRange((int) middleData.getCalibration_E_endOfRange()); + calibration.setCoeffString(middleData.getCalibration_E_coeff_string()); + calibration.setModdate(new Date()); + calibrations.add(calibration); + } + // GARDS_CALIBRATION (EF) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION + if (CollUtil.isNotEmpty(pairsEFIdCalPoint)) { + GardsCalibration calibration = new GardsCalibration(); + calibration.setSampleId(sampleId); + calibration.setIdAnalysis(IdAnalysis); + calibration.setSampleType(calibrationSampleType); + String efCaltype = middleData.getCalibration_EF_Caltype(); + double efFunction = middleData.getCalibration_EF_function(); + String efFunctionDef = middleData.getCalibration_EF_functionDef(); + double efStartOfRange = middleData.getCalibration_EF_startOfRange(); + double efEndOfRange = middleData.getCalibration_EF_endOfRange(); + String efCoeffString = middleData.getCalibration_EF_coeff_string(); + calibration.setCalType(efCaltype); + calibration.setFunction((int) efFunction); + calibration.setFunctionDef(efFunctionDef); + calibration.setStartOfRange((int) efStartOfRange); + calibration.setEndOfRange((int) efEndOfRange); + calibration.setCoeffString(efCoeffString); + calibration.setModdate(new Date()); + calibrations.add(calibration); + } + // GARDS_CALIBRATION (R) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION + if (CollUtil.isNotEmpty(pairsRIdCalPoint)) { + GardsCalibration calibration = new GardsCalibration(); + calibration.setSampleId(sampleId); + calibration.setIdAnalysis(IdAnalysis); + calibration.setSampleType(calibrationSampleType); + String rCaltype = middleData.getCalibration_R_Caltype(); + double rFunction = middleData.getCalibration_R_function(); + String rFunctionDef = middleData.getCalibration_R_functionDef(); + double rStartOfRange = middleData.getCalibration_R_startOfRange(); + double rEndOfRange = middleData.getCalibration_R_endOfRange(); + String rCoeffString = middleData.getCalibration_R_coeff_string(); + calibration.setCalType(rCaltype); + calibration.setFunction((int) rFunction); + calibration.setFunctionDef(rFunctionDef); + calibration.setStartOfRange((int) rStartOfRange); + calibration.setEndOfRange((int) rEndOfRange); + calibration.setCoeffString(rCoeffString); + calibration.setModdate(new Date()); + calibrations.add(calibration); + } + // GARDS_CALIBRATION (T) ==> INSERT INTO RNAUTO.GARDS_CALIBRATION + if (CollUtil.isNotEmpty(pairsTIdCalPoint)) { + GardsCalibration calibration = new GardsCalibration(); + calibration.setSampleId(sampleId); + calibration.setIdAnalysis(IdAnalysis); + calibration.setSampleType(calibrationSampleType); + String tCaltype = middleData.getCalibration_T_Caltype(); + double tFunction = middleData.getCalibration_T_function(); + String tFunctionDef = middleData.getCalibration_T_functionDef(); + double tStartOfRange = middleData.getCalibration_T_startOfRange(); + double tEndOfRange = middleData.getCalibration_T_endOfRange(); + String tCoeffString = middleData.getCalibration_T_coeff_string(); + calibration.setCalType(tCaltype); + calibration.setFunction((int) middleData.getCalibration_T_function()); + calibration.setFunctionDef(tFunctionDef); + calibration.setStartOfRange((int) tStartOfRange); + calibration.setEndOfRange((int) tEndOfRange); + calibration.setCoeffString(tCoeffString); + calibration.setModdate(new Date()); + calibrations.add(calibration); + } + if (calibrations.size() > 0) { + serviceQuotes.getGardsCalibrationService().createBatch(calibrations); + } + } - public void saveNuclLinesIded(GStoreMiddleProcessData middleData, - Integer sampleId, Integer IdAnalysis){ - // Gards_Nucl_Lines_Ided数据表 ==> INSERT INTO RNAUTO.GARDS_NUCL_LINES_IDED - Map nuclLinesIdedData = middleData.getNucl_lines_ided_data(); - String base_IdPeak = "idPeak"; - List allNuclLinesIdeds = new ArrayList<>(); - for (Map.Entry entry : nuclLinesIdedData.entrySet()) { - String nuclideName = entry.getKey(); - GStoreMiddleProcessDataNuclLinesIded nuclLinesIded = entry.getValue(); - GardsNuclLinesIded gardsNuclLinesIded = new GardsNuclLinesIded(); - List gardsNuclLinesIdeds = mapFields(nuclLinesIded, gardsNuclLinesIded, base_IdPeak, fieldMap); - if (CollUtil.isNotEmpty(gardsNuclLinesIdeds)){ - for (GardsNuclLinesIded ided : gardsNuclLinesIdeds) { - ided.setSampleId(sampleId); - ided.setIdAnalysis(IdAnalysis); - ided.setNuclideName(nuclideName); - } - allNuclLinesIdeds.addAll(gardsNuclLinesIdeds); - } - } - serviceQuotes.getGardsNuclLinesIdedAutoService().saveBatch(allNuclLinesIdeds); - } + public void savePeaks(GStoreMiddleProcessData middleData, Integer sampleId, Integer IdAnalysis) { + // Gards_Peaks数据表 ==> INSERT INTO RNAUTO.GARDS_PEAKS + String base_P_IdPeak = "peaks_idPeak"; + GardsPeaksDto gardsPeaksDto = new GardsPeaksDto(); + BeanUtil.copyProperties(middleData, gardsPeaksDto); + GardsPeaks gardsPeaks = new GardsPeaks(); + if (gardsPeaksDto.getPeaks_idPeak().size() > 0) { + List peaks = mapFields(gardsPeaksDto, gardsPeaks, base_P_IdPeak, fieldMap); + peaks.forEach(ided -> { + ided.setSampleId(sampleId); + ided.setIdAnalysis(IdAnalysis); + }); + serviceQuotes.getGardsPeaksAutoService().saveBatch(peaks); + } + } - public void saveNuclIded(GStoreMiddleProcessData middleData, - Integer sampleId, Integer IdAnalysis){ - // Gards_Nucl_Ided数据表 ==> INSERT INTO RNAUTO.GARDS_NUCL_IDED - GardsNuclIdedDto gardsNuclIdedDto = new GardsNuclIdedDto(); - GardsNuclIded gardsNuclIded = new GardsNuclIded(); - BeanUtil.copyProperties(middleData,gardsNuclIdedDto); - if (!gardsNuclIdedDto.getNucl_ided_Nuclidename().isEmpty()) { - String base_NuclideName = "nucl_ided_Nuclidename"; - List gardsNuclIdeds = - mapFields(gardsNuclIdedDto, gardsNuclIded, base_NuclideName, fieldMap); - for (GardsNuclIded ided : gardsNuclIdeds) { - ided.setSampleId(sampleId); - ided.setIdAnalysis(IdAnalysis); - } - serviceQuotes.getGardsNuclIdedAutoService().saveBatch(gardsNuclIdeds); - } - // serviceQuotes.get - } + public void saveNuclLinesIded(GStoreMiddleProcessData middleData, + Integer sampleId, Integer IdAnalysis) { + // Gards_Nucl_Lines_Ided数据表 ==> INSERT INTO RNAUTO.GARDS_NUCL_LINES_IDED + Map nuclLinesIdedData = middleData.getNucl_lines_ided_data(); + String base_IdPeak = "idPeak"; + List allNuclLinesIdeds = new ArrayList<>(); + for (Map.Entry entry : nuclLinesIdedData.entrySet()) { + String nuclideName = entry.getKey(); + GStoreMiddleProcessDataNuclLinesIded nuclLinesIded = entry.getValue(); + GardsNuclLinesIded gardsNuclLinesIded = new GardsNuclLinesIded(); + List gardsNuclLinesIdeds = mapFields(nuclLinesIded, gardsNuclLinesIded, base_IdPeak, fieldMap); + if (CollUtil.isNotEmpty(gardsNuclLinesIdeds)) { + for (GardsNuclLinesIded ided : gardsNuclLinesIdeds) { + ided.setSampleId(sampleId); + ided.setIdAnalysis(IdAnalysis); + ided.setNuclideName(nuclideName); + } + allNuclLinesIdeds.addAll(gardsNuclLinesIdeds); + } + } + serviceQuotes.getGardsNuclLinesIdedAutoService().saveBatch(allNuclLinesIdeds); + } - public void saveQcCheck(GStoreMiddleProcessData middleData, - Integer sampleId, Integer IdAnalysis,Map qcItems){ - // Gards_Qc_Check数据表 ==> INSERT INTO RNAUTO.GARDS_QC_CHECK - if (MapUtil.isNotEmpty(qcItems)){ - String base_QC = String.valueOf(qcItems.size()); - QcCheckDto qcCheckDto = new QcCheckDto(); - BeanUtil.copyProperties(middleData,qcCheckDto); - if (!qcItems.isEmpty()) { - GardsQcCheck gardsQcCheck = new GardsQcCheck(); - List gardsQcChecks = mapFields(qcCheckDto, gardsQcCheck,base_QC,fieldMap); - for (GardsQcCheck qcCheck : gardsQcChecks) { - qcCheck.setSampleId(sampleId); - qcCheck.setIdanalysis(IdAnalysis); - } - serviceQuotes.getGardsQcCheckAutoService().saveBatch(gardsQcChecks); - } - } - } + public void saveNuclIded(GStoreMiddleProcessData middleData, + Integer sampleId, Integer IdAnalysis) { + // Gards_Nucl_Ided数据表 ==> INSERT INTO RNAUTO.GARDS_NUCL_IDED + GardsNuclIdedDto gardsNuclIdedDto = new GardsNuclIdedDto(); + GardsNuclIded gardsNuclIded = new GardsNuclIded(); + BeanUtil.copyProperties(middleData, gardsNuclIdedDto); + if (!gardsNuclIdedDto.getNucl_ided_Nuclidename().isEmpty()) { + String base_NuclideName = "nucl_ided_Nuclidename"; + List gardsNuclIdeds = + mapFields(gardsNuclIdedDto, gardsNuclIded, base_NuclideName, fieldMap); + for (GardsNuclIded ided : gardsNuclIdeds) { + ided.setSampleId(sampleId); + ided.setIdAnalysis(IdAnalysis); + } + serviceQuotes.getGardsNuclIdedAutoService().saveBatch(gardsNuclIdeds); + } + // serviceQuotes.get + } - public void saveMDC(Integer sampleId, Integer IdAnalysis, Map mdcInfoMap) { - List mdcList = new LinkedList<>(); - if (CollectionUtils.isNotEmpty(mdcInfoMap)) { - for (CalMDCInfo mdcInfo :mdcInfoMap.values()) { - if (Objects.nonNull(mdcInfo.getEnergy()) && Objects.nonNull(mdcInfo.getYield()) && Objects.nonNull(mdcInfo.getEfficiency())) { - GardsMDC mdc = new GardsMDC(); - mdc.setIdAnalysis(IdAnalysis); - mdc.setSampleId(sampleId); - mdc.setNuclideName(mdcInfo.getNuclideName()); - mdc.setEnergy(mdcInfo.getEnergy()); - mdc.setYield(mdcInfo.getYield()); - mdc.setEfficiency(mdcInfo.getEfficiency()); - if (Objects.nonNull(mdcInfo.getMdc()) && Double.isFinite(mdcInfo.getMdc())) { - mdc.setMdc(String.valueOf(mdcInfo.getMdc())); - } else { - mdc.setMdc(null); - } - mdc.setMdcErr(null); - mdcList.add(mdc); - } - } - } - if (CollectionUtils.isNotEmpty(mdcList)) { - serviceQuotes.getGardsMDCAutoService().saveBatch(mdcList); - } - } + public void saveQcCheck(GStoreMiddleProcessData middleData, + Integer sampleId, Integer IdAnalysis, Map qcItems) { + // Gards_Qc_Check数据表 ==> INSERT INTO RNAUTO.GARDS_QC_CHECK + if (MapUtil.isNotEmpty(qcItems)) { + String base_QC = String.valueOf(qcItems.size()); + QcCheckDto qcCheckDto = new QcCheckDto(); + BeanUtil.copyProperties(middleData, qcCheckDto); + if (!qcItems.isEmpty()) { + GardsQcCheck gardsQcCheck = new GardsQcCheck(); + List gardsQcChecks = mapFields(qcCheckDto, gardsQcCheck, base_QC, fieldMap); + for (GardsQcCheck qcCheck : gardsQcChecks) { + qcCheck.setSampleId(sampleId); + qcCheck.setIdanalysis(IdAnalysis); + } + serviceQuotes.getGardsQcCheckAutoService().saveBatch(gardsQcChecks); + } + } + } - public Map getNuclideLinesG() { - redisUtil = ApplicationContextUtil.getContext().getBean(RedisUtil.class); - Object nuclideLibs = redisUtil.get(RedisConstant.NUCLIDE_LINES_LIB + "G"); - return Objects.isNull(nuclideLibs) ? Maps.newHashMap() : (Map) nuclideLibs; - } + public void saveMDC(Integer sampleId, Integer IdAnalysis, Map mdcInfoMap) { + List mdcList = new LinkedList<>(); + if (CollectionUtils.isNotEmpty(mdcInfoMap)) { + for (CalMDCInfo mdcInfo : mdcInfoMap.values()) { + if (Objects.nonNull(mdcInfo.getEnergy()) && Objects.nonNull(mdcInfo.getYield()) && Objects.nonNull(mdcInfo.getEfficiency())) { + GardsMDC mdc = new GardsMDC(); + mdc.setIdAnalysis(IdAnalysis); + mdc.setSampleId(sampleId); + mdc.setNuclideName(mdcInfo.getNuclideName()); + mdc.setEnergy(mdcInfo.getEnergy()); + mdc.setYield(mdcInfo.getYield()); + mdc.setEfficiency(mdcInfo.getEfficiency()); + if (Objects.nonNull(mdcInfo.getMdc()) && Double.isFinite(mdcInfo.getMdc())) { + mdc.setMdc(String.valueOf(mdcInfo.getMdc())); + } else { + mdc.setMdc(null); + } + mdc.setMdcErr(null); + mdcList.add(mdc); + } + } + } + if (CollectionUtils.isNotEmpty(mdcList)) { + serviceQuotes.getGardsMDCAutoService().saveBatch(mdcList); + } + } - public Map getNuclideLinesP(){ - redisUtil = ApplicationContextUtil.getContext().getBean(RedisUtil.class); - Object nuclideLibs = redisUtil.get(RedisConstant.NUCLIDE_LINES_LIB + "P"); - return Objects.isNull(nuclideLibs) ? Maps.newHashMap() : (Map) nuclideLibs; - } + public Map getNuclideLinesG() { + redisUtil = ApplicationContextUtil.getContext().getBean(RedisUtil.class); + Object nuclideLibs = redisUtil.get(RedisConstant.NUCLIDE_LINES_LIB + "G"); + return Objects.isNull(nuclideLibs) ? Maps.newHashMap() : (Map) nuclideLibs; + } - public Map fieldMap(){ - Map fieldMap = new HashMap<>(); - // Gards_Nucl_Lines_Ided - fieldMap.put("nuclideFullname","nuclidefullname"); - fieldMap.put("Energy","energy"); - fieldMap.put("Abundance","abundance"); - fieldMap.put("Activity","activity"); - fieldMap.put("Effic","effic"); - fieldMap.put("uncEffic","unEffic"); - fieldMap.put("Mda","mda"); - fieldMap.put("key_flag","keyFlag"); - fieldMap.put("csc_ratio","cscRatio"); - fieldMap.put("csc_ratio_err","cscRatioErr"); - fieldMap.put("csc_mod_flag","cscModFlag"); - fieldMap.put("MDC","mdc"); - fieldMap.put("Concentration","concentration"); - // Gards_Nucl_Ided - fieldMap.put("nucl_ided_Nuclidename","nuclideName"); - fieldMap.put("nucl_ided_Type","type"); - fieldMap.put("nucl_ided_Halflife","halflife"); - fieldMap.put("nucl_ided_ave_activ","aveActiv"); - fieldMap.put("nucl_ided_ave_activ_err","aveActivErr"); - fieldMap.put("nucl_ided_activ_key","activKey"); - fieldMap.put("nucl_ided_activ_key_err","activKeyErr"); - fieldMap.put("nucl_ided_mda","mda"); - fieldMap.put("nucl_ided_mda_err","mdaErr"); - fieldMap.put("nucl_ided_nid_flag","nidFlag"); - fieldMap.put("nucl_ided_csc_ratio","cscRatio"); - fieldMap.put("nucl_ided_csc_ratio_err","cscRatioErr"); - fieldMap.put("nucl_ided_csc_mod_flag","cscModFlag"); - fieldMap.put("nucl_ided_MDC","mdc"); - fieldMap.put("nucl_ided_Concentration","concentration"); - fieldMap.put("nucl_ided_Key_Energy","keyEnergy"); - fieldMap.put("nucl_ided_Key_Yield","keyYield"); - // Gards_Qc_Check - fieldMap.put("QC_CHECK_QC_NAME","qcName"); - fieldMap.put("QC_CHECK_QC_VALUE","qcValue"); - fieldMap.put("QC_CHECK_QC_STANDARD","qcStandard"); - fieldMap.put("QC_CHECK_QC_RESULT","qcResult"); - // Gards_Peaks - fieldMap.put("peaks_idPeak", "idPeak"); - fieldMap.put("peaks_peakCentroid", "centroidChannel"); - fieldMap.put("peaks_uncpeakCentroid", "uncCentroidChannel"); - fieldMap.put("peaks_Energy", "energy"); - fieldMap.put("peaks_uncEnergy", "uncEnergy"); - fieldMap.put("peaks_Area", "area"); - fieldMap.put("peaks_areaErr", "uncArea"); - fieldMap.put("peaks_netCountRate", "netCountRate"); - fieldMap.put("peaks_uncNetCountRate", "uncNetCountRate"); - fieldMap.put("peaks_Efficiency", "efficiency"); - fieldMap.put("peaks_Uncefficiency", "uncefficiency"); - fieldMap.put("peaks_Fwhm", "fwhm"); - fieldMap.put("peaks_Fwhmc", "fwtm"); - fieldMap.put("peaks_Significance", "significance"); - fieldMap.put("peaks_Sensitivity", "sensitivity"); - fieldMap.put("peaks_multiIndex", "mulitiIndex"); - fieldMap.put("peaks_ROIstart", "roiStart"); - fieldMap.put("peaks_ROIend", "roiEnd"); - fieldMap.put("peaks_tail", "tail"); - fieldMap.put("peaks_tailAlpha", "tailAlpha"); - fieldMap.put("peaks_upperTail", "upperTail"); - fieldMap.put("peaks_upperTailAlpha", "upperTailAlpha"); - fieldMap.put("peaks_BWWidthChan", "bwwidthchan"); - fieldMap.put("peaks_recoilDeltaChan", "recoildeltachan"); - fieldMap.put("peaks_stepRatio", "stepraio"); - fieldMap.put("peaks_backgroundArea", "backgroundarea"); - fieldMap.put("peaks_meanBackCount", "meanbackcount"); - fieldMap.put("peaks_Lc", "lc"); - fieldMap.put("peaks_Ld", "ld"); - // GARDS_CALIBRATION_PAIRS - fieldMap.put("calibration_pairs_E_idCalPoint","idCalPoint"); - fieldMap.put("calibration_pairs_E_xValue","xValue"); - fieldMap.put("calibration_pairs_E_yValue","yValue"); - fieldMap.put("calibration_pairs_E_uncYValue","uncYValue"); - fieldMap.put("calibration_pairs_EF_idCalPoint","idCalPoint"); - fieldMap.put("calibration_pairs_EF_xValue","xValue"); - fieldMap.put("calibration_pairs_EF_yValue","yValue"); - fieldMap.put("calibration_pairs_EF_uncYValue","uncYValue"); - fieldMap.put("calibration_pairs_R_idCalPoint","idCalPoint"); - fieldMap.put("calibration_pairs_R_xValue","xValue"); - fieldMap.put("calibration_pairs_R_yValue","yValue"); - fieldMap.put("calibration_pairs_R_uncYValue","uncYValue"); - fieldMap.put("calibration_pairs_T_idCalPoint","idCalPoint"); - fieldMap.put("calibration_pairs_T_xValue","xValue"); - fieldMap.put("calibration_pairs_T_yValue","yValue"); - fieldMap.put("calibration_pairs_T_uncYValue","uncYValue"); - return fieldMap; - } + public Map getNuclideLinesP() { + redisUtil = ApplicationContextUtil.getContext().getBean(RedisUtil.class); + Object nuclideLibs = redisUtil.get(RedisConstant.NUCLIDE_LINES_LIB + "P"); + return Objects.isNull(nuclideLibs) ? Maps.newHashMap() : (Map) nuclideLibs; + } - public PHDFile getSettingFromDB(PHDFile phdFile){ - Map mapSetting = serviceQuotes.getGammaDefaultParamsService() - .mapSetting(); - SpecSetup setting = phdFile.getSetting(); - String BaseImprovePSS = mapSetting.get(Setting.BASEIMPROVEPSS); - if (StrUtil.isNotBlank(BaseImprovePSS)) - setting.setBaseImprovePSS(Double.parseDouble(BaseImprovePSS)); - String CalibrationPSS_low = mapSetting.get(Setting.CALIBRATIONPSS_LOW); - if (StrUtil.isNotBlank(CalibrationPSS_low)) - setting.setCalibrationPSS_low(Double.parseDouble(CalibrationPSS_low)); - String CalibrationPSS_high = mapSetting.get(Setting.CALIBRATIONPSS_HIGH); - if (StrUtil.isNotBlank(CalibrationPSS_high)) - setting.setCalibrationPSS_high(Double.parseDouble(CalibrationPSS_high)); - String ECutAnalysis_High = mapSetting.get(Setting.ECUTANALYSIS_HIGH); - if (StrUtil.isNotBlank(ECutAnalysis_High)){ - setting.setECutAnalysis_High(Double.parseDouble(ECutAnalysis_High)); - }else { - setting.setECutAnalysis_High(Double.POSITIVE_INFINITY); - } - String systemType = energySpectrumStruct.system_type; - if (StrUtil.equals(systemType, SpectrumSystemType.P.name())){ - String ECutAnalysis_Low = mapSetting.get(Setting.ECUTANALYSIS_LOW_P); - if (StrUtil.isNotBlank(ECutAnalysis_Low)) - setting.setECutAnalysis_Low(Double.parseDouble(ECutAnalysis_Low)); - String bUpdateCal_P = mapSetting.get(Setting.BUPDATECAL_P); - setting.setBUpdateCal(StrUtil.equals(bUpdateCal_P, "1")); - }else { - String ECutAnalysis_Low = mapSetting.get(Setting.ECUTANALYSIS_LOW_G); - if (StrUtil.isNotBlank(ECutAnalysis_Low)) - setting.setECutAnalysis_Low(Double.parseDouble(ECutAnalysis_Low)); - String bUpdateCal_G = mapSetting.get(Setting.BUPDATECAL_G); - setting.setBUpdateCal(StrUtil.equals(bUpdateCal_G, "1")); - } - String EnergyTolerance = mapSetting.get(Setting.ENERGYTOLERANCE); - if (StrUtil.isNotBlank(EnergyTolerance)) - setting.setEnergyTolerance(Double.parseDouble(EnergyTolerance)); - String KeepCalPeakSearchPeaks = mapSetting.get(Setting.KEEPCALPEAKSERCHPEAKS); - setting.setKeepCalPeakSearchPeaks(StrUtil.equals(KeepCalPeakSearchPeaks,"1")); - String k_alpha = mapSetting.get(Setting.K_ALPHA); - if (StrUtil.isNotBlank(k_alpha)) - setting.setK_alpha(Double.parseDouble(k_alpha)); - String k_back = mapSetting.get(Setting.K_BACK); - if (StrUtil.isNotBlank(k_back)) - setting.setK_back(Double.parseDouble(k_back)); - String k_beta = mapSetting.get(Setting.K_BETA); - if (StrUtil.isNotBlank(k_beta)) - setting.setK_beta(Double.parseDouble(k_beta)); - String PSS_low = mapSetting.get(Setting.PSS_LOW); - if (StrUtil.isNotBlank(PSS_low)) - setting.setPss_low(Double.parseDouble(PSS_low)); - String RiskLevelK = mapSetting.get(Setting.RISKLEVELK); - if (StrUtil.isNotBlank(RiskLevelK)) - setting.setRiskLevelK(Double.parseDouble(RiskLevelK)); - return phdFile; - } + public Map fieldMap() { + Map fieldMap = new HashMap<>(); + // Gards_Nucl_Lines_Ided + fieldMap.put("nuclideFullname", "nuclidefullname"); + fieldMap.put("Energy", "energy"); + fieldMap.put("Abundance", "abundance"); + fieldMap.put("Activity", "activity"); + fieldMap.put("Effic", "effic"); + fieldMap.put("uncEffic", "unEffic"); + fieldMap.put("Mda", "mda"); + fieldMap.put("key_flag", "keyFlag"); + fieldMap.put("csc_ratio", "cscRatio"); + fieldMap.put("csc_ratio_err", "cscRatioErr"); + fieldMap.put("csc_mod_flag", "cscModFlag"); + fieldMap.put("MDC", "mdc"); + fieldMap.put("Concentration", "concentration"); + // Gards_Nucl_Ided + fieldMap.put("nucl_ided_Nuclidename", "nuclideName"); + fieldMap.put("nucl_ided_Type", "type"); + fieldMap.put("nucl_ided_Halflife", "halflife"); + fieldMap.put("nucl_ided_ave_activ", "aveActiv"); + fieldMap.put("nucl_ided_ave_activ_err", "aveActivErr"); + fieldMap.put("nucl_ided_activ_key", "activKey"); + fieldMap.put("nucl_ided_activ_key_err", "activKeyErr"); + fieldMap.put("nucl_ided_mda", "mda"); + fieldMap.put("nucl_ided_mda_err", "mdaErr"); + fieldMap.put("nucl_ided_nid_flag", "nidFlag"); + fieldMap.put("nucl_ided_csc_ratio", "cscRatio"); + fieldMap.put("nucl_ided_csc_ratio_err", "cscRatioErr"); + fieldMap.put("nucl_ided_csc_mod_flag", "cscModFlag"); + fieldMap.put("nucl_ided_MDC", "mdc"); + fieldMap.put("nucl_ided_Concentration", "concentration"); + fieldMap.put("nucl_ided_Key_Energy", "keyEnergy"); + fieldMap.put("nucl_ided_Key_Yield", "keyYield"); + // Gards_Qc_Check + fieldMap.put("QC_CHECK_QC_NAME", "qcName"); + fieldMap.put("QC_CHECK_QC_VALUE", "qcValue"); + fieldMap.put("QC_CHECK_QC_STANDARD", "qcStandard"); + fieldMap.put("QC_CHECK_QC_RESULT", "qcResult"); + // Gards_Peaks + fieldMap.put("peaks_idPeak", "idPeak"); + fieldMap.put("peaks_peakCentroid", "centroidChannel"); + fieldMap.put("peaks_uncpeakCentroid", "uncCentroidChannel"); + fieldMap.put("peaks_Energy", "energy"); + fieldMap.put("peaks_uncEnergy", "uncEnergy"); + fieldMap.put("peaks_Area", "area"); + fieldMap.put("peaks_areaErr", "uncArea"); + fieldMap.put("peaks_netCountRate", "netCountRate"); + fieldMap.put("peaks_uncNetCountRate", "uncNetCountRate"); + fieldMap.put("peaks_Efficiency", "efficiency"); + fieldMap.put("peaks_Uncefficiency", "uncefficiency"); + fieldMap.put("peaks_Fwhm", "fwhm"); + fieldMap.put("peaks_Fwhmc", "fwtm"); + fieldMap.put("peaks_Significance", "significance"); + fieldMap.put("peaks_Sensitivity", "sensitivity"); + fieldMap.put("peaks_multiIndex", "mulitiIndex"); + fieldMap.put("peaks_ROIstart", "roiStart"); + fieldMap.put("peaks_ROIend", "roiEnd"); + fieldMap.put("peaks_tail", "tail"); + fieldMap.put("peaks_tailAlpha", "tailAlpha"); + fieldMap.put("peaks_upperTail", "upperTail"); + fieldMap.put("peaks_upperTailAlpha", "upperTailAlpha"); + fieldMap.put("peaks_BWWidthChan", "bwwidthchan"); + fieldMap.put("peaks_recoilDeltaChan", "recoildeltachan"); + fieldMap.put("peaks_stepRatio", "stepraio"); + fieldMap.put("peaks_backgroundArea", "backgroundarea"); + fieldMap.put("peaks_meanBackCount", "meanbackcount"); + fieldMap.put("peaks_Lc", "lc"); + fieldMap.put("peaks_Ld", "ld"); + // GARDS_CALIBRATION_PAIRS + fieldMap.put("calibration_pairs_E_idCalPoint", "idCalPoint"); + fieldMap.put("calibration_pairs_E_xValue", "xValue"); + fieldMap.put("calibration_pairs_E_yValue", "yValue"); + fieldMap.put("calibration_pairs_E_uncYValue", "uncYValue"); + fieldMap.put("calibration_pairs_EF_idCalPoint", "idCalPoint"); + fieldMap.put("calibration_pairs_EF_xValue", "xValue"); + fieldMap.put("calibration_pairs_EF_yValue", "yValue"); + fieldMap.put("calibration_pairs_EF_uncYValue", "uncYValue"); + fieldMap.put("calibration_pairs_R_idCalPoint", "idCalPoint"); + fieldMap.put("calibration_pairs_R_xValue", "xValue"); + fieldMap.put("calibration_pairs_R_yValue", "yValue"); + fieldMap.put("calibration_pairs_R_uncYValue", "uncYValue"); + fieldMap.put("calibration_pairs_T_idCalPoint", "idCalPoint"); + fieldMap.put("calibration_pairs_T_xValue", "xValue"); + fieldMap.put("calibration_pairs_T_yValue", "yValue"); + fieldMap.put("calibration_pairs_T_uncYValue", "uncYValue"); + return fieldMap; + } - private GardsAnalyses toAnalysis(GStoreMiddleProcessData middleData){ - GardsAnalyses gardsAnalyses = new GardsAnalyses(); - String dateTime = DateConstant.DATE_BIAS_TIME; - String analysisBegin = middleData.getAnalyses_analysisBegin(); - Date analysis_Begin = DateUtil.parse(analysisBegin, dateTime) - .toJdkDate(); - gardsAnalyses.setAnalysisBegin(analysis_Begin); - String analysisEnd = middleData.getAnalyses_analysisEnd(); - Date analysis_End = DateUtil.parse(analysisEnd, dateTime) - .toJdkDate(); - gardsAnalyses.setAnalysisEnd(analysis_End); - gardsAnalyses.setType(middleData.getAnalyses_type()); - gardsAnalyses.setSoftware(middleData.getAnalyses_software()); - gardsAnalyses.setSwVersion(middleData.getAnalyses_swVersion()); - gardsAnalyses.setAnalyst(middleData.getAnalyses_analyst()); - gardsAnalyses.setComments(middleData.getAnalyses_comments()); - gardsAnalyses.setSearchStartChannel((int)middleData.getAnalyses_searchStartChannel()); - gardsAnalyses.setSearchEndChannel((int)middleData.getAnalyses_searchEndChannel()); - gardsAnalyses.setSearchThreshold(middleData.getAnalyses_searchThreshold()); - gardsAnalyses.setNumberOfPeaks((int) middleData.getAnalyses_numberOfPeaks()); - gardsAnalyses.setTotalCounts((float) middleData.getAnalyses_totalCounts()); - gardsAnalyses.setBaselinePath(middleData.getAnalyses_baseline_filePath()); - gardsAnalyses.setLcPath(middleData.getAnalyses_lc_filePath()); - gardsAnalyses.setScacPath(middleData.getAnalyses_scac_filePath()); - gardsAnalyses.setLogPath(middleData.getAnalyses_LogPath()); - gardsAnalyses.setReportPath(middleData.getAnalyses_ReportPath()); - return gardsAnalyses; - } + public PHDFile getSettingFromDB(PHDFile phdFile) { + Map mapSetting = serviceQuotes.getGammaDefaultParamsService() + .mapSetting(); + SpecSetup setting = phdFile.getSetting(); + String BaseImprovePSS = mapSetting.get(Setting.BASEIMPROVEPSS); + if (StrUtil.isNotBlank(BaseImprovePSS)) + setting.setBaseImprovePSS(Double.parseDouble(BaseImprovePSS)); + String CalibrationPSS_low = mapSetting.get(Setting.CALIBRATIONPSS_LOW); + if (StrUtil.isNotBlank(CalibrationPSS_low)) + setting.setCalibrationPSS_low(Double.parseDouble(CalibrationPSS_low)); + String CalibrationPSS_high = mapSetting.get(Setting.CALIBRATIONPSS_HIGH); + if (StrUtil.isNotBlank(CalibrationPSS_high)) + setting.setCalibrationPSS_high(Double.parseDouble(CalibrationPSS_high)); + String ECutAnalysis_High = mapSetting.get(Setting.ECUTANALYSIS_HIGH); + if (StrUtil.isNotBlank(ECutAnalysis_High)) { + setting.setECutAnalysis_High(Double.parseDouble(ECutAnalysis_High)); + } else { + setting.setECutAnalysis_High(Double.POSITIVE_INFINITY); + } + String systemType = energySpectrumStruct.system_type; + if (StrUtil.equals(systemType, SpectrumSystemType.P.name())) { + String ECutAnalysis_Low = mapSetting.get(Setting.ECUTANALYSIS_LOW_P); + if (StrUtil.isNotBlank(ECutAnalysis_Low)) + setting.setECutAnalysis_Low(Double.parseDouble(ECutAnalysis_Low)); + String bUpdateCal_P = mapSetting.get(Setting.BUPDATECAL_P); + setting.setBUpdateCal(StrUtil.equals(bUpdateCal_P, "1")); + } else { + String ECutAnalysis_Low = mapSetting.get(Setting.ECUTANALYSIS_LOW_G); + if (StrUtil.isNotBlank(ECutAnalysis_Low)) + setting.setECutAnalysis_Low(Double.parseDouble(ECutAnalysis_Low)); + String bUpdateCal_G = mapSetting.get(Setting.BUPDATECAL_G); + setting.setBUpdateCal(StrUtil.equals(bUpdateCal_G, "1")); + } + String EnergyTolerance = mapSetting.get(Setting.ENERGYTOLERANCE); + if (StrUtil.isNotBlank(EnergyTolerance)) + setting.setEnergyTolerance(Double.parseDouble(EnergyTolerance)); + String KeepCalPeakSearchPeaks = mapSetting.get(Setting.KEEPCALPEAKSERCHPEAKS); + setting.setKeepCalPeakSearchPeaks(StrUtil.equals(KeepCalPeakSearchPeaks, "1")); + String k_alpha = mapSetting.get(Setting.K_ALPHA); + if (StrUtil.isNotBlank(k_alpha)) + setting.setK_alpha(Double.parseDouble(k_alpha)); + String k_back = mapSetting.get(Setting.K_BACK); + if (StrUtil.isNotBlank(k_back)) + setting.setK_back(Double.parseDouble(k_back)); + String k_beta = mapSetting.get(Setting.K_BETA); + if (StrUtil.isNotBlank(k_beta)) + setting.setK_beta(Double.parseDouble(k_beta)); + String PSS_low = mapSetting.get(Setting.PSS_LOW); + if (StrUtil.isNotBlank(PSS_low)) + setting.setPss_low(Double.parseDouble(PSS_low)); + String RiskLevelK = mapSetting.get(Setting.RISKLEVELK); + if (StrUtil.isNotBlank(RiskLevelK)) + setting.setRiskLevelK(Double.parseDouble(RiskLevelK)); + return phdFile; + } + + private GardsAnalyses toAnalysis(GStoreMiddleProcessData middleData) { + GardsAnalyses gardsAnalyses = new GardsAnalyses(); + String dateTime = DateConstant.DATE_BIAS_TIME; + String analysisBegin = middleData.getAnalyses_analysisBegin(); + Date analysis_Begin = DateUtil.parse(analysisBegin, dateTime) + .toJdkDate(); + gardsAnalyses.setAnalysisBegin(analysis_Begin); + String analysisEnd = middleData.getAnalyses_analysisEnd(); + Date analysis_End = DateUtil.parse(analysisEnd, dateTime) + .toJdkDate(); + gardsAnalyses.setAnalysisEnd(analysis_End); + gardsAnalyses.setType(middleData.getAnalyses_type()); + gardsAnalyses.setSoftware(middleData.getAnalyses_software()); + gardsAnalyses.setSwVersion(middleData.getAnalyses_swVersion()); + gardsAnalyses.setAnalyst(middleData.getAnalyses_analyst()); + gardsAnalyses.setComments(middleData.getAnalyses_comments()); + gardsAnalyses.setSearchStartChannel((int) middleData.getAnalyses_searchStartChannel()); + gardsAnalyses.setSearchEndChannel((int) middleData.getAnalyses_searchEndChannel()); + gardsAnalyses.setSearchThreshold(middleData.getAnalyses_searchThreshold()); + gardsAnalyses.setNumberOfPeaks((int) middleData.getAnalyses_numberOfPeaks()); + gardsAnalyses.setTotalCounts((float) middleData.getAnalyses_totalCounts()); + gardsAnalyses.setBaselinePath(middleData.getAnalyses_baseline_filePath()); + gardsAnalyses.setLcPath(middleData.getAnalyses_lc_filePath()); + gardsAnalyses.setScacPath(middleData.getAnalyses_scac_filePath()); + gardsAnalyses.setLogPath(middleData.getAnalyses_LogPath()); + gardsAnalyses.setReportPath(middleData.getAnalyses_ReportPath()); + gardsAnalyses.setCategory((int)middleData.analyses_category); + return gardsAnalyses; + } /* public List mapFields(T1 source, T2 tartget, String baseLine, Map fieldMap) { try { @@ -1157,102 +1177,102 @@ public class Sample_G_Analysis { } }*/ - public List mapFields(T1 source, T2 tartget, String baseLine, Map fieldMap) { - try { - List result = new ArrayList<>(); - Class sourceClass = source.getClass(); - boolean isNumber = NumberUtil.isNumber(baseLine); - int total; - if (isNumber){ - total = Integer.parseInt(baseLine); - }else { - Field declaredField = sourceClass.getDeclaredField(baseLine); - declaredField.setAccessible(true); - List baseList = (List) declaredField.get(source); - if (CollUtil.isEmpty(baseList)) - return result; - total = baseList.size(); - } - Class tartgetClass = (Class) tartget.getClass(); - Field[] sourceFields = sourceClass.getDeclaredFields(); - for (int i = 0; i < total; i++) { - tartget = tartgetClass.newInstance(); - for (Field sourceField : sourceFields) { - try { - sourceField.setAccessible(true); - List sourceList = (List) sourceField.get(source); - if (CollUtil.isEmpty(sourceList)) - continue; - if (sourceList.size() <= i) - continue; - String value = sourceList.get(i); - if (StrUtil.isNotBlank(value)){ - String sourceFieldName = sourceField.getName(); - String targetFieldName = fieldMap.get(sourceFieldName); - targetFieldName = StrUtil.isBlank(targetFieldName) ? sourceFieldName : targetFieldName; - Field tartgetField = tartgetClass.getDeclaredField(targetFieldName); - tartgetField.setAccessible(true); - Class type = tartgetField.getType(); - if (type == String.class) { - tartgetField.set(tartget, value); - } else if (type == Integer.class || type == int.class) { - // 避免类似0.000的String值转Integer时NumberFormatException - tartgetField.set(tartget, Double.valueOf(value).intValue()); - } else if (type == Double.class || type == double.class) { - tartgetField.set(tartget, Double.valueOf(value)); - } else if (type == Boolean.class || type == boolean.class) { - tartgetField.set(tartget, Boolean.valueOf(value)); - } - } - }catch (Exception e){ - log.error("Sample_G_Analysis.mapFields()值映射异常: {}", e.getMessage()); - } - } - result.add(tartget); - } - return result; - } catch (Exception e) { - e.printStackTrace(); - return new ArrayList<>(); - } - } + public List mapFields(T1 source, T2 tartget, String baseLine, Map fieldMap) { + try { + List result = new ArrayList<>(); + Class sourceClass = source.getClass(); + boolean isNumber = NumberUtil.isNumber(baseLine); + int total; + if (isNumber) { + total = Integer.parseInt(baseLine); + } else { + Field declaredField = sourceClass.getDeclaredField(baseLine); + declaredField.setAccessible(true); + List baseList = (List) declaredField.get(source); + if (CollUtil.isEmpty(baseList)) + return result; + total = baseList.size(); + } + Class tartgetClass = (Class) tartget.getClass(); + Field[] sourceFields = sourceClass.getDeclaredFields(); + for (int i = 0; i < total; i++) { + tartget = tartgetClass.newInstance(); + for (Field sourceField : sourceFields) { + try { + sourceField.setAccessible(true); + List sourceList = (List) sourceField.get(source); + if (CollUtil.isEmpty(sourceList)) + continue; + if (sourceList.size() <= i) + continue; + String value = sourceList.get(i); + if (StrUtil.isNotBlank(value)) { + String sourceFieldName = sourceField.getName(); + String targetFieldName = fieldMap.get(sourceFieldName); + targetFieldName = StrUtil.isBlank(targetFieldName) ? sourceFieldName : targetFieldName; + Field tartgetField = tartgetClass.getDeclaredField(targetFieldName); + tartgetField.setAccessible(true); + Class type = tartgetField.getType(); + if (type == String.class) { + tartgetField.set(tartget, value); + } else if (type == Integer.class || type == int.class) { + // 避免类似0.000的String值转Integer时NumberFormatException + tartgetField.set(tartget, Double.valueOf(value).intValue()); + } else if (type == Double.class || type == double.class) { + tartgetField.set(tartget, Double.valueOf(value)); + } else if (type == Boolean.class || type == boolean.class) { + tartgetField.set(tartget, Boolean.valueOf(value)); + } + } + } catch (Exception e) { + log.error("Sample_G_Analysis.mapFields()值映射异常: {}", e.getMessage()); + } + } + result.add(tartget); + } + return result; + } catch (Exception e) { + e.printStackTrace(); + return new ArrayList<>(); + } + } - private void setPHDFile(PHDFile phdFile, EnergySpectrumStruct spectrumStruct) { - HeaderBlock headerBlock = new HeaderBlock(); - BeanUtil.copyProperties(spectrumStruct, headerBlock); - phdFile.setHeader(headerBlock); + private void setPHDFile(PHDFile phdFile, EnergySpectrumStruct spectrumStruct) { + HeaderBlock headerBlock = new HeaderBlock(); + BeanUtil.copyProperties(spectrumStruct, headerBlock); + phdFile.setHeader(headerBlock); - CollectionBlock collectionBlock = new CollectionBlock(); - BeanUtil.copyProperties(spectrumStruct, collectionBlock); - phdFile.setCollect(collectionBlock); + CollectionBlock collectionBlock = new CollectionBlock(); + BeanUtil.copyProperties(spectrumStruct, collectionBlock); + phdFile.setCollect(collectionBlock); - // MessageInfo - MessageInfo messageInfo = new MessageInfo(); - BeanUtil.copyProperties(spectrumStruct, messageInfo); - phdFile.setMsgInfo(messageInfo); - // AcquisitionBlock - AcquisitionBlock acquisitionBlock = new AcquisitionBlock(); - BeanUtil.copyProperties(spectrumStruct, acquisitionBlock); - phdFile.setAcq(acquisitionBlock); - // GSpectrumBlock - GSpectrumBlock gSpectrumBlock = new GSpectrumBlock(); - BeanUtil.copyProperties(spectrumStruct, gSpectrumBlock); - phdFile.setSpec(gSpectrumBlock); - // ProcessingBlock - ProcessingBlock processingBlock = new ProcessingBlock(); - BeanUtil.copyProperties(spectrumStruct, processingBlock); - phdFile.setProcess(processingBlock); - // CalibrationBlock - CalibrationBlock calibrationBlock = new CalibrationBlock(); - BeanUtil.copyProperties(spectrumStruct, calibrationBlock); - phdFile.setCalibration(calibrationBlock); - // SampleBlock - SampleBlock sampleBlock = new SampleBlock(); - BeanUtil.copyProperties(spectrumStruct, sampleBlock); - phdFile.setSampleBlock(sampleBlock); - // CertificateBlock - CertificateBlock certificateBlock = new CertificateBlock(); - BeanUtil.copyProperties(spectrumStruct, certificateBlock); - phdFile.setCertificate(certificateBlock); - } + // MessageInfo + MessageInfo messageInfo = new MessageInfo(); + BeanUtil.copyProperties(spectrumStruct, messageInfo); + phdFile.setMsgInfo(messageInfo); + // AcquisitionBlock + AcquisitionBlock acquisitionBlock = new AcquisitionBlock(); + BeanUtil.copyProperties(spectrumStruct, acquisitionBlock); + phdFile.setAcq(acquisitionBlock); + // GSpectrumBlock + GSpectrumBlock gSpectrumBlock = new GSpectrumBlock(); + BeanUtil.copyProperties(spectrumStruct, gSpectrumBlock); + phdFile.setSpec(gSpectrumBlock); + // ProcessingBlock + ProcessingBlock processingBlock = new ProcessingBlock(); + BeanUtil.copyProperties(spectrumStruct, processingBlock); + phdFile.setProcess(processingBlock); + // CalibrationBlock + CalibrationBlock calibrationBlock = new CalibrationBlock(); + BeanUtil.copyProperties(spectrumStruct, calibrationBlock); + phdFile.setCalibration(calibrationBlock); + // SampleBlock + SampleBlock sampleBlock = new SampleBlock(); + BeanUtil.copyProperties(spectrumStruct, sampleBlock); + phdFile.setSampleBlock(sampleBlock); + // CertificateBlock + CertificateBlock certificateBlock = new CertificateBlock(); + BeanUtil.copyProperties(spectrumStruct, certificateBlock); + phdFile.setCertificate(certificateBlock); + } } 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 9c695b34..948cde1e 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 @@ -534,7 +534,7 @@ public class GammaFileUtil extends AbstractLogOrReport { Map qcItems = new TreeMap<>(); //调用方法 读取文件信息 判断QC数据 //if (!ReadQCLimit(qcItems, vMdcInfoMap, Be7Value, phd.getHeader().getSystem_type().toUpperCase())) { - // String WARNING = "Read QC Flags from SystemManager.xml Failed!"; + // String WARNING = "Read QC Flags from SystemManager.xml Failed!"; //} String stationCode = phd.getHeader().getSite_code(); GardsStations stationInfo = getStationInfo(stationCode); @@ -542,7 +542,11 @@ public class GammaFileUtil extends AbstractLogOrReport { if (!ReadQCLimitByStationType(qcItems, vMdcInfoMap, Be7Value, stationType, stationCode)) { String WARNING = "Read QC Flags from SystemManager.xml Failed!"; } - + if (qcItems.isEmpty()) { + if (!ReadQCLimit(qcItems, vMdcInfoMap, Be7Value, phd.getHeader().getSystem_type().toUpperCase())) { + String WARNING = "Read QC Flags from SystemManager.xml Failed!"; + } + } //判断map是否为空 if (CollectionUtils.isNotEmpty(vMdcInfoMap)) { //根据键值按顺序向数组中插入数据 @@ -768,7 +772,7 @@ public class GammaFileUtil extends AbstractLogOrReport { public boolean ReadQCLimit(Map qcItems, Map vMdcInfoMap, List Be7Value, String systemType) { try { - String filePath = parameterProperties.getFilePath() + File.separator + "SystemManager.xml"; + String filePath = parameterProperties.getFilePath() + File.separator + "parameter.xml"; //创建一个文档解析器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //创建文档解析器 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 2ac5ab90..5f4ce97f 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 @@ -519,6 +519,7 @@ NUMBEROFPEAKS numberOfPeaks, BASELINE_PATH baselinePath, LC_PATH lcPath, + CATEGORY category, SCAC_PATH scacPath FROM ${dbName} diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java index 55ae44f0..a7225a24 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java @@ -27,6 +27,7 @@ import org.jeecg.common.api.QueryRequest; import org.jeecg.common.api.vo.Result; import org.jeecg.common.cache.LocalCache; import org.jeecg.common.constant.DateConstant; +import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.common.system.util.JwtUtil; @@ -39,8 +40,10 @@ import org.jeecg.modules.base.dto.NuclideActMdaDto; import org.jeecg.modules.base.dto.PeakInfoDto; import org.jeecg.modules.base.entity.configuration.GardsNuclLib; import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib; +import org.jeecg.modules.base.entity.rnman.GardsThresholdResult; import org.jeecg.modules.base.entity.rnman.GardsAnalySetting; import org.jeecg.modules.base.enums.*; +import org.jeecg.modules.base.service.ISampleGradingService; import org.jeecg.modules.entity.vo.*; import org.jeecg.modules.entity.*; import org.jeecg.modules.mapper.SpectrumAnalysisMapper; @@ -86,7 +89,7 @@ import static org.jeecg.modules.base.enums.ExportTemplate.*; @Service(value = "gammaService") @DS("ora") public class GammaServiceImpl extends AbstractLogOrReport implements IGammaService { - + private final String manKey = RedisConstant.CATEGORY; @Autowired private LocalCache localCache; @Autowired @@ -156,6 +159,13 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi @Autowired private IDataService dataService; + /// 样品等级服务 + @Autowired + private ISampleGradingService sampleGradingService; + // 获取阈值信息 + @Autowired + private IRnManGardsThresholdService gardsThresholdService; + @Override public void initValue(Integer sampleId, String dbName, String analyst, String samfileName, HttpServletRequest request) { if (Objects.nonNull(sampleId) && StringUtils.isNotBlank(dbName)) { @@ -203,7 +213,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } // 从数据库中读取phd其他相关信息 boolean bRet = getResultFromDB(dbName, analyst, sampleId, phd, result); - if (!redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list")) { + if (!redisUtil.hasKey(userName + StringPool.DASH + phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName + StringPool.DASH + phd.getHeader().getSystem_type() + "-list")) { //读取缓存的全部核素信息 Map allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); // 查询当前用户关联的核素信息 @@ -215,13 +225,13 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } userLib = userLib.stream().sorted().collect(Collectors.toList()); Map nuclideMap = new HashMap<>(); - for (Map.Entry entry:allNuclideMap.entrySet()) { + for (Map.Entry entry : allNuclideMap.entrySet()) { if (userLib.contains(entry.getKey())) { nuclideMap.put(entry.getKey(), entry.getValue()); } } - redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list", userLib); - redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); + redisUtil.set(userName + StringPool.DASH + phd.getHeader().getSystem_type() + "-list", userLib); + redisUtil.set(userName + StringPool.DASH + phd.getHeader().getSystem_type(), nuclideMap); } //缓存phd谱的核素信息 Map phdNuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); @@ -231,7 +241,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi return result; } //读取redis缓存的计算mdc信息 - Map mdcInfoMap = (Map) redisUtil.get("mdcInfoMap-"+phd.getHeader().getSystem_type()); + Map mdcInfoMap = (Map) redisUtil.get("mdcInfoMap-" + phd.getHeader().getSystem_type()); //如果是数据库加载 判断如果mdc计算结果是空的 就加入新的 否则使用数据库加载的mdc数据 if (CollectionUtils.isEmpty(phd.getMdcInfoMap())) { if (CollectionUtils.isNotEmpty(mdcInfoMap)) { @@ -240,7 +250,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } else { if (CollectionUtils.isNotEmpty(mdcInfoMap)) { Map infoMap = phd.getMdcInfoMap(); - for (Map.Entry entry:infoMap.entrySet()) { + for (Map.Entry entry : infoMap.entrySet()) { String nuclName = entry.getKey(); CalMDCInfo info = mdcInfoMap.get(nuclName); if (Objects.nonNull(info)) { @@ -332,6 +342,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi phd.setBaseline_path(spectrumPathProperties.getSaveFilePath() + StringPool.SLASH + analysis.getBaselinePath()); phd.setLc_path(spectrumPathProperties.getSaveFilePath() + StringPool.SLASH + analysis.getLcPath()); phd.setScac_path(spectrumPathProperties.getSaveFilePath() + StringPool.SLASH + analysis.getScacPath()); + if (analysis.getCategory()!=null){ + phd.setCategory(analysis.getCategory().toString()); + } peakNum = analysis.getNumberOfPeaks(); phd.setTotalCmt(analysis.getComments()); phd.getBaseCtrls().setRg_low(analysis.getSearchStartChannel()); @@ -538,7 +551,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi for (GardsQcCheckSpectrum qcCheckSpectrum : qcChecks) { String str_key = qcCheckSpectrum.getQcName(); QcCheckItem qcCheckItem = new QcCheckItem(); - qcCheckItem.setValue(qcCheckSpectrum.getQcValue() == null?0.0:qcCheckSpectrum.getQcValue()); + qcCheckItem.setValue(qcCheckSpectrum.getQcValue() == null ? 0.0 : qcCheckSpectrum.getQcValue()); qcCheckItem.setBPass(qcCheckSpectrum.getQcResult() == 1); qcCheckItem.setStandard(qcCheckSpectrum.getQcStandard()); phd.getQcItems().put(str_key, qcCheckItem); @@ -555,7 +568,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi GardsAnalySetting analySetting = spectrumAnalysisMapper.getAnalySetting(analysis.getIdAnalysis()); if (Objects.nonNull(analySetting)) { phd.getUsedSetting().setECutAnalysis_Low(analySetting.getEcutanalysisLow()); - phd.getUsedSetting().setECutAnalysis_High((Objects.nonNull(analySetting.getEcutanalysisHigh())?(analySetting.getEcutanalysisHigh() <= phd.getUsedSetting().getECutAnalysis_Low()?-9999:analySetting.getEcutanalysisHigh()):-9999)); + phd.getUsedSetting().setECutAnalysis_High((Objects.nonNull(analySetting.getEcutanalysisHigh()) ? (analySetting.getEcutanalysisHigh() <= phd.getUsedSetting().getECutAnalysis_Low() ? -9999 : analySetting.getEcutanalysisHigh()) : -9999)); phd.getUsedSetting().setEnergyTolerance(analySetting.getEnergytolerance()); phd.getUsedSetting().setCalibrationPSS_high(analySetting.getCalibrationpssHigh()); phd.getUsedSetting().setCalibrationPSS_low(analySetting.getCalibrationpssLow()); @@ -610,7 +623,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi if (!bRet) { return result; } - if (!redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list")) { + if (!redisUtil.hasKey(userName + StringPool.DASH + phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName + StringPool.DASH + phd.getHeader().getSystem_type() + "-list")) { //读取缓存的全部核素信息 Map allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); // 查询当前用户关联的核素信息 @@ -622,19 +635,19 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } userLib = userLib.stream().sorted().collect(Collectors.toList()); Map nuclideMap = new HashMap<>(); - for (Map.Entry entry:allNuclideMap.entrySet()) { + for (Map.Entry entry : allNuclideMap.entrySet()) { if (userLib.contains(entry.getKey())) { nuclideMap.put(entry.getKey(), entry.getValue()); } } - redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list", userLib); - redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); + redisUtil.set(userName + StringPool.DASH + phd.getHeader().getSystem_type() + "-list", userLib); + redisUtil.set(userName + StringPool.DASH + phd.getHeader().getSystem_type(), nuclideMap); } //缓存phd谱的核素信息 Map phdNuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); phd.setPhdNuclideMap(phdNuclideMap); //读取redis缓存的计算mdc信息 - Map mdcInfoMap = (Map) redisUtil.get("mdcInfoMap-"+phd.getHeader().getSystem_type()); + Map mdcInfoMap = (Map) redisUtil.get("mdcInfoMap-" + phd.getHeader().getSystem_type()); if (CollectionUtils.isNotEmpty(mdcInfoMap)) { phd.setMdcInfoMap(mdcInfoMap); } @@ -679,7 +692,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi @Override public Result loadSampleData(QueryRequest queryRequest, GardsSampleDataSpectrum gardsSampleData, String[] menuTypes, boolean AllUsers, boolean CollectStopB, boolean AcqStartB, Date startDate, Date endDate, HttpServletRequest request) { Result result = new Result(); - if (Objects.isNull(startDate)){ + if (Objects.isNull(startDate)) { result.error500("The start time cannot be empty"); return result; } @@ -690,7 +703,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; List menuTypeList = Arrays.asList(menuTypes); - if (CollectionUtils.isEmpty(menuTypeList)){ + if (CollectionUtils.isEmpty(menuTypeList)) { result.error500("The spectrum type cannot be empty"); return result; } @@ -700,9 +713,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi return result; } List userStations = new LinkedList<>(); - if (Objects.nonNull(AllUsers) && !AllUsers){ + if (Objects.nonNull(AllUsers) && !AllUsers) { String userName = JwtUtil.getUserNameByToken(request); - if (StringUtils.isBlank(userName)){ + if (StringUtils.isBlank(userName)) { result.error500("Description Failed to obtain the current login user information!"); return result; } @@ -933,7 +946,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String fileName = configureData.getFileName(); Cache phdCache = localCache.getPHDCache(); if (configureData.isApplyAll()) { - for (String key: phdCache.asMap().keySet()) { + for (String key : phdCache.asMap().keySet()) { PHDFile phd = phdCache.getIfPresent(key); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); @@ -1006,7 +1019,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi "2. You didn't change any setting or calibration."; result.error500(warning); } else if (flag == -1) { - Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideLinesMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); //分析时将phd的核素map重置 phd.setPhdNuclideMap(nuclideLinesMap); //重新计算核素的活度浓度 @@ -1024,7 +1037,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi "\t3.Test QC again."; result.error500(warning); } else { - Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideLinesMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); //分析时将phd的核素map重置 phd.setPhdNuclideMap(nuclideLinesMap); //调用分析算法 @@ -1218,8 +1231,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi peak.upperTailAlpha = structInsertOutput.upperTailAlpha.get(j); peak.efficiency = structInsertOutput.efficiency.get(j); peak.BWWidthChan = 0; - peak.recoilBetaChan = Objects.isNull(structInsertOutput.recoilBetaChan.get(j))?"nan":String.valueOf(structInsertOutput.recoilBetaChan.get(j)); - peak.recoilDeltaChan = Objects.isNull(structInsertOutput.recoilDeltaChan.get(j))?"nan":String.valueOf(structInsertOutput.recoilDeltaChan.get(j)); + peak.recoilBetaChan = Objects.isNull(structInsertOutput.recoilBetaChan.get(j)) ? "nan" : String.valueOf(structInsertOutput.recoilBetaChan.get(j)); + peak.recoilDeltaChan = Objects.isNull(structInsertOutput.recoilDeltaChan.get(j)) ? "nan" : String.valueOf(structInsertOutput.recoilDeltaChan.get(j)); newPeaks.add(a, peak); } } @@ -1306,7 +1319,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map nuclideLinesMap = phd.getPhdNuclideMap();//(Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); if (flag.equalsIgnoreCase("insert")) {// 如果传递的flag标识 是 Insert则进行峰值的插入 //重新赋值index - for (int k=0; k entry : parseMap.entrySet()) { if (entry.getKey().equalsIgnoreCase("vPeak")) { List value = JSON.parseArray(JSON.toJSONString(entry.getValue()), PeakInfo.class); - for (PeakInfo info:value) { + for (PeakInfo info : value) { if (info.significance == -9999) { info.significance = Double.POSITIVE_INFINITY; } @@ -1439,7 +1452,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi double energy = info.energy; if (CollectionUtils.isNotEmpty(info.nuclides)) { //遍历核素信息 - for (int i=0; i= maxEnergy-0.5 && energy <= maxEnergy+0.5) { + if (energy >= maxEnergy - 0.5 && energy <= maxEnergy + 0.5) { //则需要删除所有关联的核素信息并 从MapNucAct中移除相关核素内容 - for (PeakInfo peakInfo: phd.getVPeak()) { + for (PeakInfo peakInfo : phd.getVPeak()) { //如果峰的核素名称中包含当前删除的核素 if (peakInfo.nuclides.contains(nuclideName)) { peakInfo.nuclides.remove(nuclideName); @@ -1555,7 +1568,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi int index = gammaFileUtil.FindNearPeak(phd.getVPeak(), channel, false); //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); Map nuclCoincidenceSumMap = (Map) redisUtil.get("nuclCoincidenceSumMap"); //计算核素范围的最小能量值 double min = energy - phd.getSetting().getEnergyTolerance(); @@ -1566,14 +1579,14 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi //判断缓存的核素信息是否为空 if (CollectionUtils.isNotEmpty(nuclideMap)) { //遍历核素信息 - for (Map.Entry entry:nuclideMap.entrySet()) { + for (Map.Entry entry : nuclideMap.entrySet()) { //获取核素的关联信息 NuclideLines nuclideLines = entry.getValue(); //获取核素关联的全部能量信息 List venergy = nuclideLines.getVenergy(); List fullNames = nuclideLines.getFullNames(); //遍历能量 - for (int i=0; i min && venergy.get(i) < max) { list_possible.add(fullNames.get(i)); @@ -1583,14 +1596,14 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } if (phd.getHeader().getSystem_type().equals("P")) { if (CollectionUtils.isNotEmpty(nuclCoincidenceSumMap)) { - for (Map.Entry entry:nuclCoincidenceSumMap.entrySet()) { + for (Map.Entry entry : nuclCoincidenceSumMap.entrySet()) { //获取核素的关联信息 NuclideLines nuclideLines = entry.getValue(); //获取核素关联的全部能量信息 List venergy = nuclideLines.getVenergy(); List fullNames = nuclideLines.getFullNames(); //遍历能量 - for (int i=0; i min && venergy.get(i) < max) { list_possible.add(fullNames.get(i)); @@ -1627,7 +1640,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi int index = gammaFileUtil.FindNearPeak(phd.getVPeak(), channel, false); //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); //计算核素范围的最小能量值 double min = phd.getVPeak().get(index).energy - phd.getSetting().getEnergyTolerance(); //计算核素范围的最大能量值 @@ -1637,13 +1650,13 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi //判断缓存的核素信息是否为空 if (CollectionUtils.isNotEmpty(nuclideMap)) { //遍历核素信息 - for (Map.Entry entry:nuclideMap.entrySet()) { + for (Map.Entry entry : nuclideMap.entrySet()) { //获取核素的关联信息 NuclideLines nuclideLines = entry.getValue(); //获取核素关联的全部能量信息 List venergy = nuclideLines.getVenergy(); //遍历能量 - for (int i=0; i min && venergy.get(i) < max) { list_possible.add(entry.getKey()); @@ -1689,7 +1702,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 根据要进行修改的列的数据下标 操作Vpeak数据 PeakInfo peakInfo = phd.getVPeak().get(curRow); List peakNuclides = peakInfo.nuclides; - if (peakNuclides.indexOf(nuclideName) < 0 ) { + if (peakNuclides.indexOf(nuclideName) < 0) { peakNuclides.add(nuclideName); } // todo 添加核素需要把deletedNuclideMap中对应的核素删除 @@ -1698,7 +1711,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi deletedNuclide.remove(nuclideName); } // 查询当前用户所关心的核素名称 - Map mapNucLines = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map mapNucLines = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); //用户当前缓存的核素信息 Map phdNuclideMap = phd.getPhdNuclideMap(); // 查询出核素信息 @@ -1762,9 +1775,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi //获取当前选中的峰值信息的能量值 double energy = phd.getVPeak().get(curRow).energy; //判断当前选中的峰值信息的能量值 是否在 最大活度对应的核素能量值公差范围内 - if (energy >= maxEnergy-0.5 && energy <= maxEnergy+0.5) { + if (energy >= maxEnergy - 0.5 && energy <= maxEnergy + 0.5) { //则需要删除所有关联的核素信息并 从MapNucAct中移除相关核素内容 - for (PeakInfo peakInfo: phd.getVPeak()) { + for (PeakInfo peakInfo : phd.getVPeak()) { //如果峰的核素名称中包含当前删除的核素 if (peakInfo.nuclides.contains(nuclideName)) { peakInfo.nuclides.remove(nuclideName); @@ -1908,7 +1921,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi return result; } Map colorMap = sysUserColorService.initColor(userName); - double value = gammaFileUtil.GetEnergyByFloatChan(phd, channel.intValue()-1); + double value = gammaFileUtil.GetEnergyByFloatChan(phd, channel.intValue() - 1); BigDecimal bigDecimal = BigDecimal.valueOf(value); bigDecimal = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP); map.put("energy", bigDecimal); @@ -1917,18 +1930,18 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi double min = bigDecimal.doubleValue() - 0.5; double max = bigDecimal.doubleValue() + 0.5; //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); Map nuclCoincidenceSumMap = (Map) redisUtil.get("nuclCoincidenceSumMap"); //判断缓存的核素信息是否为空 if (CollectionUtils.isNotEmpty(nuclideMap)) { //遍历核素信息 - for (Map.Entry entry:nuclideMap.entrySet()) { + for (Map.Entry entry : nuclideMap.entrySet()) { //获取核素的关联信息 NuclideLines nuclideLines = entry.getValue(); //获取核素关联的全部能量信息 List venergy = nuclideLines.getVenergy(); //遍历能量 - for (int i=0; i min && venergy.get(i) < max) { nuclideList.add(entry.getKey()); @@ -1940,13 +1953,13 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi if (phd.getHeader().getSystem_type().equals("P")) { if (CollectionUtils.isNotEmpty(nuclCoincidenceSumMap)) { //遍历核素信息 - for (Map.Entry entry:nuclCoincidenceSumMap.entrySet()) { + for (Map.Entry entry : nuclCoincidenceSumMap.entrySet()) { //获取核素的关联信息 NuclideLines nuclideLines = entry.getValue(); //获取核素关联的全部能量信息 List venergy = nuclideLines.getVenergy(); //遍历能量 - for (int i=0; i min && venergy.get(i) < max) { nuclideList.add(entry.getKey()); @@ -1999,17 +2012,17 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi double min = bigDecimal.doubleValue() - 0.5; double max = bigDecimal.doubleValue() + 0.5; //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); //判断缓存的核素信息是否为空 if (CollectionUtils.isNotEmpty(nuclideMap)) { //遍历核素信息 - for (Map.Entry entry:nuclideMap.entrySet()) { + for (Map.Entry entry : nuclideMap.entrySet()) { //获取核素的关联信息 NuclideLines nuclideLines = entry.getValue(); //获取核素关联的全部能量信息 List venergy = nuclideLines.getVenergy(); //遍历能量 - for (int i=0; i min && venergy.get(i) < max) { nuclideList.add(entry.getKey()); @@ -2045,16 +2058,16 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi //获取当前核素名称的核素集合 NuclideLines lines = nuclideMap.get(name); List nuclideTableList = new LinkedList<>();//spectrumAnalysisMapper.getNuclideTable(name, span); - for (int i=0; i= 30 && lines.venergy.get(i) <= span) { GardsNuclLinesLib nuclLinesLib = new GardsNuclLinesLib(); nuclLinesLib.setFullName(lines.fullNames.get(i)); nuclLinesLib.setEnergy(Double.valueOf(String.format("%.3f", lines.venergy.get(i)))); - nuclLinesLib.setEnergyUncert(Objects.nonNull(lines.vuncertE.get(i))?Double.valueOf(String.format("%.3f", lines.vuncertE.get(i))):0.0); - nuclLinesLib.setYield(Objects.nonNull(lines.vyield.get(i))?Double.valueOf(String.format("%.3f", lines.vyield.get(i)*100)):0.0); - nuclLinesLib.setYieldUncert(Objects.nonNull(lines.vuncertY.get(i))?Double.valueOf(String.format("%.3f", lines.vuncertY.get(i))):0.0); + nuclLinesLib.setEnergyUncert(Objects.nonNull(lines.vuncertE.get(i)) ? Double.valueOf(String.format("%.3f", lines.vuncertE.get(i))) : 0.0); + nuclLinesLib.setYield(Objects.nonNull(lines.vyield.get(i)) ? Double.valueOf(String.format("%.3f", lines.vyield.get(i) * 100)) : 0.0); + nuclLinesLib.setYieldUncert(Objects.nonNull(lines.vuncertY.get(i)) ? Double.valueOf(String.format("%.3f", lines.vuncertY.get(i))) : 0.0); nuclideTableList.add(nuclLinesLib); } } @@ -2116,7 +2129,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map colorMap = sysUserColorService.initColor(userName); //获取缓存的核素信息 Map nuclideLinesMap = new HashMap<>(); - Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); Map nuclCoincidenceSumMap = (Map) redisUtil.get("nuclCoincidenceSumMap"); if (phd.getHeader().getSystem_type().equals("P")) { NuclideLines newNuclideLines = new NuclideLines(); @@ -2126,7 +2139,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi List vYield = new LinkedList<>(); List vYieldUncert = new LinkedList<>(); if (CollectionUtils.isNotEmpty(nuclideMap)) { - for (Map.Entry entry:nuclideMap.entrySet()) { + for (Map.Entry entry : nuclideMap.entrySet()) { NuclideLines nuclideLines = entry.getValue(); if (nuclideLines.fullNames.contains(nuclideName)) { nuclideName = entry.getKey(); @@ -2134,7 +2147,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } } if (CollectionUtils.isNotEmpty(nuclCoincidenceSumMap)) { - for (Map.Entry entry:nuclCoincidenceSumMap.entrySet()) { + for (Map.Entry entry : nuclCoincidenceSumMap.entrySet()) { NuclideLines nuclideLines = entry.getValue(); if (nuclideLines.fullNames.contains(nuclideName)) { nuclideName = entry.getKey(); @@ -2185,9 +2198,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } Map colorMap = sysUserColorService.initColor(userName); //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); if (CollectionUtils.isNotEmpty(nuclideMap)) { - for (Map.Entry entry:nuclideMap.entrySet()) { + for (Map.Entry entry : nuclideMap.entrySet()) { NuclideLines nuclideLines = entry.getValue(); if (nuclideLines.fullNames.contains(nuclideName)) { nuclideName = entry.getKey(); @@ -2196,7 +2209,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } Map nuclCoincidenceSumMap = (Map) redisUtil.get("nuclCoincidenceSumMap"); if (phd.getHeader().getSystem_type().equals("P") && CollectionUtils.isNotEmpty(nuclCoincidenceSumMap)) { - for (Map.Entry entry:nuclCoincidenceSumMap.entrySet()) { + for (Map.Entry entry : nuclCoincidenceSumMap.entrySet()) { NuclideLines nuclideLines = entry.getValue(); if (nuclideLines.fullNames.contains(nuclideName)) { nuclideName = entry.getKey(); @@ -2229,17 +2242,17 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi double min = bigDecimal.doubleValue() - tolerance; double max = bigDecimal.doubleValue() + tolerance; //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); //判断缓存的核素信息是否为空 if (CollectionUtils.isNotEmpty(nuclideMap)) { //遍历核素信息 - for (Map.Entry entry:nuclideMap.entrySet()) { + for (Map.Entry entry : nuclideMap.entrySet()) { //获取核素的关联信息 NuclideLines nuclideLines = entry.getValue(); //获取核素关联的全部能量信息 List venergy = nuclideLines.getVenergy(); //遍历能量 - for (int i=0; i min && venergy.get(i) < max) { nuclideList.add(entry.getKey()); @@ -2601,8 +2614,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi data.setPeakEffi(null); } } else { - effi = Math.exp( coeffData.Effciency1 * ener + coeffData.Effciency2 + coeffData.Effciency3 / ener + coeffData.Effciency4 / Math.pow(ener, 2) + coeffData.Effciency5 / Math.pow(ener, 3) + coeffData.Effciency6 / Math.pow(ener, 4) ); - totE = Math.exp( coeffData.totalEf1 * ener + coeffData.totalEf2 + coeffData.totalEf3 / ener + coeffData.totalEf4 / Math.pow(ener, 2) + coeffData.totalEf5 / Math.pow(ener, 3) + coeffData.totalEf6 / Math.pow(ener, 4) ); + effi = Math.exp(coeffData.Effciency1 * ener + coeffData.Effciency2 + coeffData.Effciency3 / ener + coeffData.Effciency4 / Math.pow(ener, 2) + coeffData.Effciency5 / Math.pow(ener, 3) + coeffData.Effciency6 / Math.pow(ener, 4)); + totE = Math.exp(coeffData.totalEf1 * ener + coeffData.totalEf2 + coeffData.totalEf3 / ener + coeffData.totalEf4 / Math.pow(ener, 2) + coeffData.totalEf5 / Math.pow(ener, 3) + coeffData.totalEf6 / Math.pow(ener, 4)); data.setTotalEffi(Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(totE)))); data.setPeakEffi(Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(effi)))); } @@ -3648,17 +3661,17 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi double max = editEnergyDou + err; if (libraryName.equals("UserLibrary")) { //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type()); //判断缓存的核素信息是否为空 if (CollectionUtils.isNotEmpty(nuclideMap)) { //遍历核素信息 - for (Map.Entry entry:nuclideMap.entrySet()) { + for (Map.Entry entry : nuclideMap.entrySet()) { //获取核素的关联信息 NuclideLines nuclideLines = entry.getValue(); //获取核素关联的全部能量信息 List venergy = nuclideLines.getVenergy(); //遍历能量 - for (int i=0; i min && venergy.get(i) < max) { nuclides.add(entry.getKey()); @@ -3675,7 +3688,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } else { if (libraryName.equals("UserLibrary")) { //redis中获取缓存的用户关注核素信息 - nuclides = (List)redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list"); + nuclides = (List) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type() + "-list"); } else if (libraryName.equals("FULLLibrary")) { nuclides = spectrumAnalysisMapper.getNuclideNames("CONFIGURATION.GARDS_NUCL_LIB"); } else if (libraryName.equals("RelevantLibrary")) { @@ -3815,7 +3828,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } List nuclides = spectrumAnalysisMapper.getNuclideNames("CONFIGURATION.GARDS_NUCL_LIB"); //redis中获取缓存的用户关注核素信息 - List userNuclides = (List)redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list"); + List userNuclides = (List) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type() + "-list"); map.put("AllNuclides", nuclides); map.put("UserNuclides", userNuclides); result.setSuccess(true); @@ -3851,13 +3864,13 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); } Map nuclideMap = new HashMap<>(); - for (Map.Entry entry:allNuclideMap.entrySet()) { + for (Map.Entry entry : allNuclideMap.entrySet()) { if (userLib.contains(entry.getKey())) { nuclideMap.put(entry.getKey(), entry.getValue()); } } - redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list", userLib); - redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); + redisUtil.set(userName + StringPool.DASH + phd.getHeader().getSystem_type() + "-list", userLib); + redisUtil.set(userName + StringPool.DASH + phd.getHeader().getSystem_type(), nuclideMap); phd.setPhdNuclideMap(nuclideMap); } else { result.success("Modification failure!"); @@ -4133,7 +4146,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } String spectrum = gammaFileUtil.makeUpSpectrum(phd); map.put("Spectrum", spectrum); - if(StringUtils.isNotBlank(phd.getTmpFilePath())) { + if (StringUtils.isNotBlank(phd.getTmpFilePath())) { List lines = gammaFileUtil.readLine(phd.getTmpFilePath()); map.put("phdSpectrum", lines); } @@ -4384,7 +4397,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi tablePeak.setNetCountRate(rate); tablePeak.setNcRateErr(area_err); tablePeak.setLc(NumberFormatUtil.numberFormat(String.valueOf(peak.lc))); - tablePeak.setSignificance(Double.isFinite(peak.significance)?NumberFormatUtil.numberFormat(String.valueOf(peak.significance)):(Double.isInfinite(peak.significance)?"inf":"nan")); + tablePeak.setSignificance(Double.isFinite(peak.significance) ? NumberFormatUtil.numberFormat(String.valueOf(peak.significance)) : (Double.isInfinite(peak.significance) ? "inf" : "nan")); peakFitList.add(tablePeak); } map.put("peakFit", peakFitList); @@ -4442,7 +4455,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi tableResult.setActErr(act_err); tableResult.setFactor1(NumberFormatUtil.numberFormat(coverage_factor)); tableResult.setConfidence1(NumberFormatUtil.numberFormat(level_confidence)); - tableResult.setConc(Objects.isNull(nuc.getConcentration())?null:NumberFormatUtil.numberFormat(String.valueOf(nuc.getConcentration() / 1000))); + tableResult.setConc(Objects.isNull(nuc.getConcentration()) ? null : NumberFormatUtil.numberFormat(String.valueOf(nuc.getConcentration() / 1000))); tableResult.setConcErr(act_err); tableResult.setFactor2(NumberFormatUtil.numberFormat(coverage_factor)); tableResult.setConfidence2(NumberFormatUtil.numberFormat(level_confidence)); @@ -4564,24 +4577,24 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi List mdcInfoList = new LinkedList<>(); Map mdcInfoMap = phd.getMdcInfoMap(); if (CollectionUtils.isNotEmpty(mdcInfoMap) && phd.isBAnalyed()) { - for (String key:mdcInfoMap.keySet()) { + for (String key : mdcInfoMap.keySet()) { CalMDCInfo mdcInfo = mdcInfoMap.get(key); CalMDCInfo calMDCInfo = new CalMDCInfo(); calMDCInfo.setNuclideName(mdcInfo.getNuclideName()); if (Objects.nonNull(mdcInfo.getMdc()) && Double.isFinite(mdcInfo.getMdc())) { - calMDCInfo.setMdc( Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(mdcInfo.getMdc()))) ); + calMDCInfo.setMdc(Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(mdcInfo.getMdc())))); } if (Objects.nonNull(mdcInfo.getEnergy()) && Double.isFinite(mdcInfo.getEnergy())) { - calMDCInfo.setEnergy( Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(mdcInfo.getEnergy()))) ); + calMDCInfo.setEnergy(Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(mdcInfo.getEnergy())))); } if (Objects.nonNull(mdcInfo.getEfficiency()) && Double.isFinite(mdcInfo.getEfficiency())) { - calMDCInfo.setEfficiency( Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(mdcInfo.getEfficiency()))) ); + calMDCInfo.setEfficiency(Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(mdcInfo.getEfficiency())))); } if (Objects.nonNull(mdcInfo.getYield()) && Double.isFinite(mdcInfo.getYield())) { - calMDCInfo.setYield( Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(mdcInfo.getYield()))) ); + calMDCInfo.setYield(Double.parseDouble(NumberFormatUtil.numberFormat(String.valueOf(mdcInfo.getYield())))); } if (Objects.nonNull(mdcInfo.getHalflife()) && Double.isFinite(mdcInfo.getHalflife())) { - calMDCInfo.setHalflifeView(mdcInfo.getHalflife()+"D"); + calMDCInfo.setHalflifeView(mdcInfo.getHalflife() + "D"); } mdcInfoList.add(calMDCInfo); } @@ -4721,17 +4734,17 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String mSaveFileName = nameMap.get("saveFile"); String dateTimeSubdir = ""; int pos = mSaveFileName.indexOf('-'); - if(-1 == pos) { + if (-1 == pos) { - } else if(fileName.length() >= pos+7) { - dateTimeSubdir+=StringPool.SLASH+fileName.substring(pos+1,pos+5); - dateTimeSubdir+=StringPool.SLASH+fileName.substring(pos+5,pos+7); + } else if (fileName.length() >= pos + 7) { + dateTimeSubdir += StringPool.SLASH + fileName.substring(pos + 1, pos + 5); + dateTimeSubdir += StringPool.SLASH + fileName.substring(pos + 5, pos + 7); } //判断当前分析员是否有过历史分析当前文件 - Integer isExist = spectrumAnalysisMapper.SampleIsExist(sysTemSubdir+ dateTypeSubdir + dateTimeSubdir + StringPool.SLASH + mSaveFileName, userName); + Integer isExist = spectrumAnalysisMapper.SampleIsExist(sysTemSubdir + dateTypeSubdir + dateTimeSubdir + StringPool.SLASH + mSaveFileName, userName); // 如果用户没有权限操作 则查看当前用户是否是高级分析员/管理员 if (!bAnalysisResultWriteAuthority && Objects.isNull(isExist)) { - result.error500("You have no permission to save "+phd.getHeader().getSite_code()+" results to DB!"); + result.error500("You have no permission to save " + phd.getHeader().getSite_code() + " results to DB!"); return result; } // 如果有权限则开始保存数据库操作 @@ -4765,6 +4778,22 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi if (comments.length() > 1024) { comments = comments.substring(0, 1024); } + middleData.setSample_stationID(String.valueOf(stationId)); + middleData.setSample_id(String.valueOf(phd.getId_sample())); + Info info = getSampleInfo(middleData, phd); + + //TODO 获取样品级别 + try { + //获取阈值结果 + List thresholds = gardsThresholdService.findThresholdResults(stationId.toString()); + //样品分级 + Integer category = sampleGradingService.processTypeP(info, thresholds); + middleData.setAnalyses_category(category); + } catch (Exception e) { + + } + + // 判断idAnalysis是否为空 if (StringUtils.isBlank(idAnalysis)) { // 向 RNMAN.GARDS_ANALYSES 表插入数据 @@ -4840,12 +4869,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // } // } { - String logFileName = middleData.analyses_absolute_LogPath.substring(middleData.analyses_absolute_LogPath.lastIndexOf(StringPool.SLASH)+1); + String logFileName = middleData.analyses_absolute_LogPath.substring(middleData.analyses_absolute_LogPath.lastIndexOf(StringPool.SLASH) + 1); File logFile = new File(logFileName); try { FileUtil.writeString(gammaFileUtil.GetLogContent(middleData), logFile, "UTF-8"); FileInputStream in = new FileInputStream(logFile); - ftpUtil.saveFile(spectrumPathProperties.getRootPath()+middleData.analyses_absolute_LogPath, in); + ftpUtil.saveFile(spectrumPathProperties.getRootPath() + middleData.analyses_absolute_LogPath, in); } catch (FileNotFoundException e) { throw new RuntimeException(e); } finally { @@ -4853,12 +4882,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } } { - String rptFileName = middleData.analyses_absolute_ReportPath.substring(middleData.analyses_absolute_ReportPath.lastIndexOf(StringPool.SLASH)+1)+".txt"; + String rptFileName = middleData.analyses_absolute_ReportPath.substring(middleData.analyses_absolute_ReportPath.lastIndexOf(StringPool.SLASH) + 1) + ".txt"; File rptFile = new File(rptFileName); try { FileUtil.writeString(gammaFileUtil.GetReportContent(middleData), rptFile, "UTF-8"); FileInputStream in = new FileInputStream(rptFile); - ftpUtil.saveFile(spectrumPathProperties.getRootPath()+middleData.analyses_absolute_ReportPath+".txt", in); + ftpUtil.saveFile(spectrumPathProperties.getRootPath() + middleData.analyses_absolute_ReportPath + ".txt", in); } catch (FileNotFoundException e) { throw new RuntimeException(e); } finally { @@ -4881,9 +4910,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi List detailedInfo = gammaFileUtil.DetailedInfo(phd.getId_sample(), phd); map.put("DetailedInformation", detailedInfo); //发送数据到redis - middleData.setSample_stationID(String.valueOf(stationId)); - middleData.setSample_id(String.valueOf(phd.getId_sample())); - pushToRedis(middleData, phd); + pushToRedis(info); result.setSuccess(true); result.setResult(map); return result; @@ -4892,25 +4919,33 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi /** * 分析成功数据发送到Redis */ - private void pushToRedis(GStoreMiddleProcessData middleData, PHDFile phd){ + private void pushToRedis(Info info) { + + redisStreamUtil.pushAnalysis(info); + redisStreamUtil.addMessage(manKey, info); + } + + private Info getSampleInfo(GStoreMiddleProcessData middleData, PHDFile phd) { try { Info info = new Info(); info.setStationId(middleData.sample_stationID); info.setSampleId(middleData.sample_id); - info.setSampleName(middleData.analyses_save_filePath.substring(middleData.analyses_save_filePath.lastIndexOf(StringPool.SLASH)+1)); + info.setIdAnalysis(middleData.IdAnalysis); + info.setSampleType(middleData.sample_Type); + info.setSampleName(middleData.analyses_save_filePath.substring(middleData.analyses_save_filePath.lastIndexOf(StringPool.SLASH) + 1)); final Instant instant = DateUtils.parseDate(middleData.sample_collection_start).toInstant(); final LocalDateTime collectTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); info.setCollectionDate(collectTime); info.setDatasource(DSType.ARMDRRR.getType()); info.setFullOrPrel(phd.getHeader().getSpectrum_quantity()); info.setBetaOrGamma(SpectrumType.GAMMA.getType()); - Map nuclides = Maps.newHashMap(); - for (int i=0; i nuclides = Maps.newHashMap(); + for (int i = 0; i < middleData.nucl_ided_Nuclidename.size(); i++) { nuclides.put(middleData.nucl_ided_Nuclidename.get(i), middleData.nucl_ided_Concentration.get(i)); } info.setNuclides(nuclides); info.setAnalyst(middleData.analyses_analyst); - redisStreamUtil.pushAnalysis(info); + return info; } catch (ParseException e) { throw new RuntimeException(e); } @@ -5002,7 +5037,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String fwhm = NumberFormatUtil.numberFormat(String.valueOf(peakInfo.fwhm)); String area = NumberFormatUtil.numberFormat(String.valueOf(peakInfo.area)); String areaErr = NumberFormatUtil.numberFormat(String.valueOf(peakInfo.areaErr)); - String signif = Double.isFinite(peakInfo.significance)?NumberFormatUtil.numberFormat(String.valueOf(peakInfo.significance)):(Double.isInfinite(peakInfo.significance)?"inf":"nan"); + String signif = Double.isFinite(peakInfo.significance) ? NumberFormatUtil.numberFormat(String.valueOf(peakInfo.significance)) : (Double.isInfinite(peakInfo.significance) ? "inf" : "nan"); String sensit = NumberFormatUtil.numberFormat(String.valueOf(peakInfo.sensitivity)); String nuclide = StringUtils.join(peakInfo.nuclides, StringPool.SEMICOLON); strBuild.append(rowFormat(title2, peakId, energy, peakCentroid, multiIndex, fwhm, area, areaErr, signif, sensit, nuclide)); @@ -5113,7 +5148,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String dataType = phd.getMsgInfo().getData_type().substring(0, 1); String format = ".txt"; String txtFileName = String.format("%s-%s_%s_%s_RESULT%s", detectorCode, date, time, dataType, format); - if (StrUtil.isNotBlank(fileName)){ + if (StrUtil.isNotBlank(fileName)) { if (StrUtil.contains(fileName, ".PHD")) txtFileName = StrUtil.replace(fileName, ".PHD", ".txt"); } @@ -5255,7 +5290,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String dataType = phd.getMsgInfo().getData_type().substring(0, 1); String format = ".xls"; String xlsFileName = String.format("%s-%s_%s_%s_RESULT%s", detectorCode, date, time, dataType, format); - if (StrUtil.isNotBlank(fileName)){ + if (StrUtil.isNotBlank(fileName)) { if (StrUtil.contains(fileName, ".PHD")) xlsFileName = StrUtil.replace(fileName, ".PHD", ".xls"); } @@ -5338,7 +5373,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi stopWatch.start(); String iecValue = fileFtransitUtil.WriteIEC(datas); stopWatch.stop(); - log.info("{}处理耗时为:{}毫秒",ImsName,stopWatch.getTime(TimeUnit.MILLISECONDS)); + log.info("{}处理耗时为:{}毫秒", ImsName, stopWatch.getTime(TimeUnit.MILLISECONDS)); // 设置响应类型 response.setContentType("application/octet-stream"); // 解决中文不能生成文件 @@ -5388,7 +5423,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi stopWatch.start(); String imsValue = fileFtransitUtil.WriteIMS(datas); stopWatch.stop(); - log.info("{}处理耗时为:{}毫秒",IecName,stopWatch.getTime(TimeUnit.MILLISECONDS)); + log.info("{}处理耗时为:{}毫秒", IecName, stopWatch.getTime(TimeUnit.MILLISECONDS)); // 设置响应类型 response.setContentType("application/octet-stream"); // 解决中文不能生成文件 @@ -5432,11 +5467,11 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi stopWatch.start(); String imsValue = fileFtransitUtil.WriteIMS(datas); stopWatch.stop(); - log.info("{}处理耗时为:{}毫秒",SpcName,stopWatch.getTime(TimeUnit.MILLISECONDS)); + log.info("{}处理耗时为:{}毫秒", SpcName, stopWatch.getTime(TimeUnit.MILLISECONDS)); String suffix = nameStandUtil.GetSuffix(datas.getData_type(), datas.getQuantity(), String.valueOf(datas.getAcq_live())); - String ImsName = datas.getDetector()+StringPool.DASH+datas.getAcq_date().replace(StringPool.SLASH, StringPool.EMPTY)+StringPool.UNDERSCORE+ - datas.getAcq_time().substring(0, 5).replace(StringPool.COLON, StringPool.EMPTY)+ suffix; + String ImsName = datas.getDetector() + StringPool.DASH + datas.getAcq_date().replace(StringPool.SLASH, StringPool.EMPTY) + StringPool.UNDERSCORE + + datas.getAcq_time().substring(0, 5).replace(StringPool.COLON, StringPool.EMPTY) + suffix; // 设置响应类型 response.setContentType("application/octet-stream"); // 解决中文不能生成文件 @@ -5484,7 +5519,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi stopWatch.start(); fileFtransitUtil.WriteSPC(spcFile, datas); stopWatch.stop(); - log.info("{}处理耗时为:{}毫秒",ImsName,stopWatch.getTime(TimeUnit.MILLISECONDS)); + log.info("{}处理耗时为:{}毫秒", ImsName, stopWatch.getTime(TimeUnit.MILLISECONDS)); // 获取文件输入流 spcInputStream = new FileInputStream(spcFile); @@ -5533,7 +5568,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi stopWatch.start(); String iecValue = fileFtransitUtil.WriteIEC(datas); stopWatch.stop(); - log.info("{}处理耗时为:{}毫秒",SpcName,stopWatch.getTime(TimeUnit.MILLISECONDS)); + log.info("{}处理耗时为:{}毫秒", SpcName, stopWatch.getTime(TimeUnit.MILLISECONDS)); // 设置响应类型 response.setContentType("application/octet-stream"); @@ -5582,7 +5617,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi stopWatch.start(); fileFtransitUtil.WriteSPC(spcFile, datas); stopWatch.stop(); - log.info("{}处理耗时为:{}毫秒",IecName,stopWatch.getTime(TimeUnit.MILLISECONDS)); + log.info("{}处理耗时为:{}毫秒", IecName, stopWatch.getTime(TimeUnit.MILLISECONDS)); // 获取文件输入流 spcInputStream = new FileInputStream(spcFile); @@ -5613,11 +5648,11 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } /** - * 读取计算MDC参数文件方法 + * 读取计算MDC参数文件方法 */ public void readMDCParameter() { //配置文件路径 - String filePath = parameterProperties.getFilePath()+ File.separator + "MDCParameter.xml"; + String filePath = parameterProperties.getFilePath() + File.separator + "MDCParameter.xml"; try { //创建一个文档解析器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); @@ -5625,7 +5660,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi DocumentBuilder documentBuilder = factory.newDocumentBuilder(); //读取xml文件生成一个文档 Document document = documentBuilder.parse(filePath); - if (Objects.nonNull(document)){ + if (Objects.nonNull(document)) { //获取文档的根元素 Element element = document.getDocumentElement(); //获取根元素的子节点 @@ -5633,7 +5668,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi //判断文件内的节点是否大于0 if (Objects.nonNull(docChildNodes) && docChildNodes.getLength() > 0) { //遍历文件节点读取内容 - for (int i=0; i 0) { //遍历子节点信息 将核素信息封存到缓存中 - for (int j=0; j 0) { //遍历子节点信息 - for (int j=0; j thresholds = gardsThresholdService.findThresholdResults(stationId.toString()); + + Integer category = sampleGradingService.processTypeB(info, thresholds); + + //如果分析过就修改原记录--GARDS_ANALYSES GardsAnalysesSpectrum gardsAnalyses = new GardsAnalysesSpectrum(); gardsAnalyses.setSampleId(sampleId); @@ -4506,7 +4524,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements gardsAnalyses.setType(AnalysesType.REVIEWED.value); gardsAnalyses.setSoftware("BetaGammaAnalyser"); gardsAnalyses.setSwVersion("1.0.1"); - gardsAnalyses.setCategory(1); + gardsAnalyses.setCategory(category); gardsAnalyses.setComments(anlyseResultIn.getComment()); gardsAnalyses.setUsedgasphd(gasFilePathName); gardsAnalyses.setUseddetphd(detFilePathName); @@ -4520,7 +4538,6 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements } else {//如果没有分析过就新增--GARDS_ANALYSES spectrumAnalysisMapper.insertGardsAnalyses(gardsAnalyses); } - betaDataFile.setSampleId(String.valueOf(sampleId)); //查询analysisId根据sampleId 分析员名称--GARDS_ANALYSES GardsAnalysesSpectrum analysis = spectrumAnalysisMapper.getAnalysis("RNMAN.GARDS_ANALYSES", sampleId, userName); Integer idAnalysis = analysis.getIdAnalysis(); @@ -4672,7 +4689,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements map.put("qc", qcData); } //发送数据到redis - pushToRedis(betaDataFile, userName); + pushToRedis(info); result.setSuccess(true); result.setResult(map); return result; @@ -4866,11 +4883,17 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements /** * 分析成功数据发送到Redis */ - private void pushToRedis(BetaDataFile betaDataFile, String userName) { + private void pushToRedis(Info info) { + redisStreamUtil.pushAnalysis(info); + redisStreamUtil.addMessage(manKey, info); + } + + private Info getSampleInfo(BetaDataFile betaDataFile, String userName) { try { Info info = new Info(); info.setStationId(betaDataFile.getStationId()); info.setSampleId(betaDataFile.getSampleId()); + info.setSampleType(betaDataFile.getSampleStruct().system_type); info.setSampleName(betaDataFile.getSampleFileName()); final Instant instant = DateUtils.parseDate(betaDataFile.getSampleStruct().collection_start_date + StringPool.SPACE + betaDataFile.getSampleStruct().collection_start_time).toInstant(); final LocalDateTime collectTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); @@ -4893,7 +4916,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements } info.setNuclides(nuclides); info.setAnalyst(userName); - redisStreamUtil.pushAnalysis(info); + return info; } catch (ParseException e) { throw new RuntimeException(e); }