diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/QCResult.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/QCResult.java index 459b4a3e..c2128f21 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/QCResult.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/QCResult.java @@ -31,8 +31,16 @@ public class QCResult implements Serializable { private String xe133MDCStatus; + private String gasBgEvaluationMetrics; + + private String gasBgValue; + private boolean gasBgValueAndStatus; + private String detBgEvaluationMetrics; + + private String detBgValue; + private boolean detBgValueAndStatus; } 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 96e974fc..53128de3 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 @@ -40,8 +40,10 @@ import javax.xml.parsers.ParserConfigurationException; import java.io.*; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; +import java.util.stream.Collectors; @Component @Slf4j @@ -1566,7 +1568,7 @@ public class GammaFileUtil extends AbstractLogOrReport { double sum_found = 0; // 所有匹配的γ射线能量处效率乘以分支比的和 int mainPeakIdx = -1; // 记录核素主γ峰的索引下标 for (int i=0, j=0; i= 510 && phd.getVPeak().get(j).energy <= 512) { continue; // 峰中心道能量为511的峰不进行核素识别 } @@ -1604,11 +1606,8 @@ public class GammaFileUtil extends AbstractLogOrReport { } if(mainPeakIdx < 0) continue; } - if (Objects.isNull(phd.getMapNucActMda().get(iter.getKey()))) { - Map mapNucActMda = phd.getMapNucActMda(); - mapNucActMda.put(iter.getKey(), new NuclideActMda()); - } - NuclideActMda ActMda = phd.getMapNucActMda().get(iter.getKey()); + + NuclideActMda ActMda = new NuclideActMda(); boolean bActBigger = CalculateMDCs(phd, ActMda, mainPeakIdx, lambda, maxFoundYield, 1.0); if(rate > 0.8 || bActBigger) { @@ -3610,29 +3609,36 @@ public class GammaFileUtil extends AbstractLogOrReport { halflife /= 3600; units = 'H'; } - tableNuclideActivity.setHalfLife(halflife+StringPool.SPACE+units); - tableNuclideActivity.setEnergy(nuc.getVEnergy().get(nuc.getCalculateIdx()).toString()); - tableNuclideActivity.setYield(String.valueOf(nuc.getVYield().get(nuc.getCalculateIdx())*100)); + tableNuclideActivity.setHalfLife(NumberFormatUtil.numberFormat(String.valueOf(halflife))+StringPool.SPACE+units); + tableNuclideActivity.setEnergy(NumberFormatUtil.numberFormat(String.valueOf(nuc.getVEnergy().get(nuc.getCalculateIdx())))); + tableNuclideActivity.setYield(NumberFormatUtil.numberFormat(String.valueOf(nuc.getVYield().get(nuc.getCalculateIdx())*100))); - String str_effi = (nuc.getEfficiency() <= 0 ? "null" : String.valueOf(nuc.getEfficiency())); + String str_effi = (nuc.getEfficiency() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getEfficiency()))); tableNuclideActivity.setEfficiency(str_effi); - String str_act = (nuc.getActivity() <= 0 ? "null" : String.valueOf(nuc.getActivity())); + String str_act = (nuc.getActivity() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getActivity()))); tableNuclideActivity.setActivity(str_act); - String str_act_err = (nuc.getActivity() <= 0 ? "null" : String.valueOf(nuc.getAct_err() / nuc.getActivity() * 100)); + String str_act_err = (nuc.getActivity() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getAct_err() / nuc.getActivity() * 100))); tableNuclideActivity.setActErr(str_act_err); - String str_mda = (nuc.getMda() <= 0 ? "null" : String.valueOf(nuc.getMda())); + String str_mda = (nuc.getMda() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getMda()))); tableNuclideActivity.setMda(str_mda); - - String str_con = (nuc.getConcentration() <= 0 ? "null" : String.valueOf(nuc.getConcentration())); + if (nuc.getConcentration() > 1000000) { + DecimalFormat decimalFormat = new DecimalFormat("0.###E0"); + nuc.setConcentration(Double.valueOf(decimalFormat.format(nuc.getConcentration()))); + } + String str_con = (nuc.getConcentration() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getConcentration()))); tableNuclideActivity.setConc(str_con); - - String str_mdc = (nuc.getMdc() <= 0 ? "null" : String.valueOf(nuc.getMdc())); + if (nuc.getMdc() > 1000000) { + DecimalFormat decimalFormat = new DecimalFormat("0.###E0"); + nuc.setConcentration(Double.valueOf(decimalFormat.format(nuc.getMdc()))); + } + String str_mdc = (nuc.getMdc() <= 0 ? "null" : NumberFormatUtil.numberFormat(String.valueOf(nuc.getMdc()))); tableNuclideActivity.setMdc(str_mdc); nuclideActivityList.add(tableNuclideActivity); } + nuclideActivityList = nuclideActivityList.stream().sorted(Comparator.comparing(TableNuclideActivity::getNuclide)).collect(Collectors.toList()); map.put("table", nuclideActivityList); return map; } @@ -4274,7 +4280,7 @@ public class GammaFileUtil extends AbstractLogOrReport { for(int i=0; i nuclides = new LinkedList<>(); - // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 - nuclides = defaultNuclideSpectrumService.findNuclidesByUserName(userName, systemType); - if (CollectionUtils.isEmpty(nuclides)) { - nuclides = defaultNuclideSpectrumService.findNuclidesByUserName("admin", systemType); - } - Map nuclideLinesMap = GetNuclideLines(nuclides); + Map nuclideLinesMap = (Map) redisUtil.get(fileName+"-"+userName);//GetNuclideLines(nuclides); // 解析获取临时文件信息 File tmpFile = gammaFileUtil.analyzeFile(ftpUtil.getFtpRootPath() + spectrumPathProperties.getUploadPath() + StringPool.SLASH + userName, fileName); ObjectMapper mapper = new ObjectMapper(); @@ -377,16 +370,16 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); phd.setUsedTotEPara(value); } - if (entry.getKey().equalsIgnoreCase("mapNucActMda")) { - HashMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), HashMap.class); - Map value = new HashMap<>(); - for (Map.Entry objectEntry : jsonMap.entrySet()) { - String key = objectEntry.getKey(); - NuclideActMda entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), NuclideActMda.class); - value.put(key, entryValue); - } - phd.setMapNucActMda(value); - } +// if (entry.getKey().equalsIgnoreCase("mapNucActMda")) { +// HashMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), HashMap.class); +// Map value = new HashMap<>(); +// for (Map.Entry objectEntry : jsonMap.entrySet()) { +// String key = objectEntry.getKey(); +// NuclideActMda entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), NuclideActMda.class); +// value.put(key, entryValue); +// } +// phd.setMapNucActMda(value); +// } } BeanUtils.copyProperties(phd.getSetting(), phd.getUsedSetting()); @@ -398,6 +391,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi peak.recoilDeltaChan = "1"; } } + // 重新分析各峰值对应的核素信息 + gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap); gammaFileUtil.RunQC(phd); result.setResult(phd); } catch (JsonProcessingException e) { @@ -1454,33 +1449,36 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi PeakInfo info = phd.getVPeak().get(curRow); //获取当前选中的峰值信息的能量值 double energy = info.energy; - //遍历核素信息 - for (String nuclideName : info.nuclides) { - //从缓存信息中获取核素名称 - NuclideLines nuclideLines = nuclideMap.get(nuclideName); - //获取最大活度的核素位置 - int maxYeildIdx = nuclideLines.maxYeildIdx; - //获取最大活度对应的核素能量值 - Double maxEnergy = nuclideLines.getVenergy().get(maxYeildIdx); - //判断当前选中的峰值信息的能量值 是否在 最大活度对应的核素能量值公差范围内 - if (energy >= maxEnergy-0.5 && energy <= maxEnergy+0.5) { - //则需要删除所有关联的核素信息并 从MapNucAct中移除相关核素内容 - for (PeakInfo peakInfo: phd.getVPeak()) { - //如果峰的核素名称中包含当前删除的核素 - if (peakInfo.nuclides.contains(nuclideName)) { - peakInfo.nuclides.remove(nuclideName); + if (CollectionUtils.isNotEmpty(info.nuclides)) { + //遍历核素信息 + for (int i=0; i= maxEnergy-0.5 && energy <= maxEnergy+0.5) { + //则需要删除所有关联的核素信息并 从MapNucAct中移除相关核素内容 + for (PeakInfo peakInfo: phd.getVPeak()) { + //如果峰的核素名称中包含当前删除的核素 + if (peakInfo.nuclides.contains(nuclideName)) { + peakInfo.nuclides.remove(nuclideName); + } } + //从核素相关map中移除核素信息 + phd.getMapNucActMda().remove(nuclideName); + //移除核素信息 + nuclideMap.remove(nuclideName); } - //从核素相关map中移除核素信息 - phd.getMapNucActMda().remove(nuclideName); - //移除核素信息 - nuclideMap.remove(nuclideName); } } - //重新计算核素活度浓度 - gammaFileUtil.NuclidesIdent(phd, nuclideMap); //将当前行从峰数组中移除 phd.getVPeak().remove(curRow); + //重新计算核素活度浓度 + gammaFileUtil.NuclidesIdent(phd, nuclideMap); //重新分析数据 gammaFileUtil.PeaksChanged(phd); for (int i = 0; i < phd.getVPeak().size(); i++) { @@ -1841,6 +1839,28 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi long span = phd.getSpec().getG_energy_span(); List nuclideTableList = spectrumAnalysisMapper.getNuclideTable(name, span); if (CollectionUtils.isNotEmpty(nuclideTableList)) { + nuclideTableList.stream().forEach(item-> { + if (Objects.nonNull(item.getEnergy())) { + item.setEnergy(Double.valueOf(String.format("%.3f", item.getEnergy()))); + } else { + item.setEnergy(Double.valueOf(String.format("%.3f", 0.0))); + } + if (Objects.nonNull(item.getEnergyUncert())) { + item.setEnergyUncert(Double.valueOf(String.format("%.3f", item.getEnergyUncert()))); + } else { + item.setEnergyUncert(Double.valueOf(String.format("%.3f", 0.0))); + } + if (Objects.nonNull(item.getYield())) { + item.setYield(Double.valueOf(String.format("%.3f", item.getYield()))); + } else { + item.setYield(Double.valueOf(String.format("%.3f", 0.0))); + } + if (Objects.nonNull(item.getYieldUncert())) { + item.setYieldUncert(Double.valueOf(String.format("%.3f", item.getYieldUncert()))); + } else { + item.setYieldUncert(Double.valueOf(String.format("%.3f", 0.0))); + } + }); map.put("table", nuclideTableList); gammaFileUtil.InitChart(nuclideTableList, phd, map, colorMap); } @@ -3521,16 +3541,18 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi result.error500("Please select the parse file first!"); return result; } - String temp = phd.getOriTotalCmt().trim(); - if (StringUtils.isNotBlank(temp)) { - comments += "Comments From Original Spectrum:\n" + temp; - } - if (Objects.nonNull(sampleId)) { - CommentData commentData = spectrumAnalysisMapper.viewComment(sampleId); - if (Objects.nonNull(commentData)) { - temp = commentData.getComment() == null ? "" : commentData.getComment().trim(); - if (StringUtils.isNotBlank(temp)) { - comments += "\n\nComments From " + commentData.getAnalyst() + "\n:" + temp; + if (StringUtils.isNotBlank(phd.getOriTotalCmt())) { + String temp = phd.getOriTotalCmt().trim(); + if (StringUtils.isNotBlank(temp)) { + comments += "Comments From Original Spectrum:\n" + temp; + } + if (Objects.nonNull(sampleId)) { + CommentData commentData = spectrumAnalysisMapper.viewComment(sampleId); + if (Objects.nonNull(commentData)) { + temp = commentData.getComment() == null ? "" : commentData.getComment().trim(); + if (StringUtils.isNotBlank(temp)) { + comments += "\n\nComments From " + commentData.getAnalyst() + "\n:" + temp; + } } } } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index b5b626cc..a0919225 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -429,6 +429,9 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { xeData.setColor("green"); xeData.setNidFlag(1); } + xeData.setMdc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getMdc()).substring(0, String.valueOf(xeData.getMdc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getMdc()))); + xeData.setConc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getConc()).substring(0, String.valueOf(xeData.getConc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getConc()))); + xeData.setConcErr(Double.valueOf(String.format("%."+((6 - String.valueOf(xeData.getConcErr()).substring(0, String.valueOf(xeData.getConcErr()).lastIndexOf(StringPool.DOT)).length()))+"f", xeData.getConcErr()))); } } resultMap.put("XeData", xeResultsSpectrumList); @@ -513,6 +516,9 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { xeData.setColor("green"); xeData.setNidFlag(1); } + xeData.setMdc(Double.valueOf(String.format("%.6f", xeData.getMdc()))); + xeData.setConc(Double.valueOf(String.format("%.6f", xeData.getConc()))); + xeData.setConcErr(Double.valueOf(String.format("%.6f", xeData.getConcErr()))); } } if (CollectionUtils.isNotEmpty(sampleBoundary)) { @@ -1511,15 +1517,23 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { // String gasMeasurementID = gasSourceData.measurement_id; if (gasMeasurementID.equals(sampleSourceData.gas_bk_measurement_id)){ + qcResult.setGasBgValue("Match"); + qcResult.setGasBgEvaluationMetrics("Match"); qcResult.setGasBgValueAndStatus(true); }else { + qcResult.setGasBgValue(""); + qcResult.setGasBgEvaluationMetrics(""); qcResult.setGasBgValueAndStatus(false); } // String detMeasurementID = detSourceData.measurement_id; if (detMeasurementID.equals(sampleSourceData.detector_bk_measurement_id)){ + qcResult.setDetBgValue("Match"); + qcResult.setDetBgEvaluationMetrics("Match"); qcResult.setDetBgValueAndStatus(true); }else { + qcResult.setDetBgValue(""); + qcResult.setDetBgEvaluationMetrics(""); qcResult.setDetBgValueAndStatus(false); } } @@ -2840,6 +2854,23 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { newLineSeries.add(seriseData); } map.put("newLineSeries", newLineSeries); + List seriseDataList = new LinkedList<>(); + List tableWidgets = new LinkedList<>(); + for (int i=0; i fittingParaToUi = EnergySpectrumHandler.GetFileFittingPara(ys, xs); List fittingParaToUiStr = new LinkedList<>(); @@ -2862,6 +2893,7 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { fittingParaStr.add(String.valueOf(paramA)); fittingParaStr.add(String.valueOf(paramB)); fittingParaStr.add(String.valueOf(paramC)); + map.put("CToE", fittingParaStr); List xs = new LinkedList<>(); for (int i=0; i analyseResult = BetaGammaAnalyzeCurrentProcess(analyseData, sampleFilePath, gasFilePath, detFilePath, qcFilePath, userName); + if (CollectionUtils.isNotEmpty(analyseResult)){ + for (GardsXeResultsSpectrum xeData:analyseResult) { + Double conc = xeData.getConc(); + Double mdc = xeData.getMdc(); + if (conc < 0){ + xeData.setColor("red"); + xeData.setNidFlag(0); + } else if (0 mdc) { + xeData.setColor("green"); + xeData.setNidFlag(1); + } + xeData.setMdc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getMdc()).substring(0, String.valueOf(xeData.getMdc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getMdc()))); + xeData.setConc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getConc()).substring(0, String.valueOf(xeData.getConc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getConc()))); + xeData.setConcErr(Double.valueOf(String.format("%."+((6 - String.valueOf(xeData.getConcErr()).substring(0, String.valueOf(xeData.getConcErr()).lastIndexOf(StringPool.DOT)).length()))+"f", xeData.getConcErr()))); + } + } map.put("xeData", analyseResult); map.put("bProcessed", true); map.put("savedAnalysisResult", true); @@ -3045,6 +3096,25 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { } else { String path = ftpUtil.getFtpRootPath() + spectrumPathProperties.getUploadPath() + StringPool.SLASH + userName; List analyseResult = BetaGammaAnalyzeCurrentProcess(analyseData, path, path, path, path, userName); + if (CollectionUtils.isNotEmpty(analyseResult)){ + for (GardsXeResultsSpectrum xeData:analyseResult) { + Double conc = xeData.getConc(); + Double mdc = xeData.getMdc(); + if (conc < 0){ + xeData.setColor("red"); + xeData.setNidFlag(0); + } else if (0 mdc) { + xeData.setColor("green"); + xeData.setNidFlag(1); + } + xeData.setMdc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getMdc()).substring(0, String.valueOf(xeData.getMdc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getMdc()))); + xeData.setConc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getConc()).substring(0, String.valueOf(xeData.getConc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getConc()))); + xeData.setConcErr(Double.valueOf(String.format("%."+((6 - String.valueOf(xeData.getConcErr()).substring(0, String.valueOf(xeData.getConcErr()).lastIndexOf(StringPool.DOT)).length()))+"f", xeData.getConcErr()))); + } + } map.put("XeData", analyseResult); map.put("bProcessed", true); map.put("savedAnalysisResult", true); @@ -3107,6 +3177,25 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { loadDataList.add(m_loadData); } List analyseResultList = BetaGammaAnalyzeAllProcess(loadDataList, analyseData, userName, currentFileName, currentQCFileName); + if (CollectionUtils.isNotEmpty(analyseResultList)){ + for (GardsXeResultsSpectrum xeData:analyseResultList) { + Double conc = xeData.getConc(); + Double mdc = xeData.getMdc(); + if (conc < 0){ + xeData.setColor("red"); + xeData.setNidFlag(0); + } else if (0 mdc) { + xeData.setColor("green"); + xeData.setNidFlag(1); + } + xeData.setMdc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getMdc()).substring(0, String.valueOf(xeData.getMdc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getMdc()))); + xeData.setConc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getConc()).substring(0, String.valueOf(xeData.getConc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getConc()))); + xeData.setConcErr(Double.valueOf(String.format("%."+((6 - String.valueOf(xeData.getConcErr()).substring(0, String.valueOf(xeData.getConcErr()).lastIndexOf(StringPool.DOT)).length()))+"f", xeData.getConcErr()))); + } + } map.put("XeData", analyseResultList); map.put("bProcessed", true); map.put("savedAnalysisResult", true); @@ -3667,6 +3756,9 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { xeData.setColor("green"); xeData.setNidFlag(1); } + xeData.setMdc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getMdc()).substring(0, String.valueOf(xeData.getMdc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getMdc()))); + xeData.setConc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getConc()).substring(0, String.valueOf(xeData.getConc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getConc()))); + xeData.setConcErr(Double.valueOf(String.format("%."+((6 - String.valueOf(xeData.getConcErr()).substring(0, String.valueOf(xeData.getConcErr()).lastIndexOf(StringPool.DOT)).length()))+"f", xeData.getConcErr()))); } } //更新分析后的缓存信息 @@ -3808,6 +3900,9 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { xeData.setColor("green"); xeData.setNidFlag(1); } + xeData.setMdc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getMdc()).substring(0, String.valueOf(xeData.getMdc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getMdc()))); + xeData.setConc(Double.valueOf(String.format("%."+(6 - String.valueOf(xeData.getConc()).substring(0, String.valueOf(xeData.getConc()).lastIndexOf(StringPool.DOT)).length())+"f", xeData.getConc()))); + xeData.setConcErr(Double.valueOf(String.format("%."+((6 - String.valueOf(xeData.getConcErr()).substring(0, String.valueOf(xeData.getConcErr()).lastIndexOf(StringPool.DOT)).length()))+"f", xeData.getConcErr()))); } } //更新分析后的缓存信息