diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/configuration/GardsNuclCoincidenceSum.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/configuration/GardsNuclCoincidenceSum.java new file mode 100644 index 00000000..03ad2a70 --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/configuration/GardsNuclCoincidenceSum.java @@ -0,0 +1,42 @@ +package org.jeecg.modules.base.entity.configuration; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +@Data +@TableName("CONFIGURATION.GARDS_NUCL_COINCIDENCE_SUM") +public class GardsNuclCoincidenceSum implements Serializable { + + @TableField(value = "NAME") + private String name; + + @TableField(value = "ENERGY") + private Double energy; + + @TableField(value = "ENERGY_UNCERT") + private Double energyUncert; + + @TableField(value = "YIELD") + private Double yield; + + @TableField(value = "YIELD_UNCERT") + private Double yieldUncert; + + @TableField(value = "NUCLIDE_ID") + private Integer nuclideId; + + @TableField(value = "FULLNAME") + private String fullName; + + @TableField(value = "MODDATE") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date moddate; + +} diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnauto/GardsMDC.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnauto/GardsMDC.java new file mode 100644 index 00000000..2dac8a62 --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnauto/GardsMDC.java @@ -0,0 +1,45 @@ +package org.jeecg.modules.base.entity.rnauto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +@Data +@TableName("RNAUTO.GARDS_MDC") +public class GardsMDC implements Serializable { + + @TableField(value = "SAMPLE_ID") + private Integer sampleId; + + @TableField(value = "IDANALYSIS") + private Integer idAnalysis; + + @TableField(value = "NUCLIDENAME") + private String nuclideName; + + @TableField(value = "ENERGY") + private Double energy; + + @TableField(value = "YIELD") + private Double yield; + + @TableField(value = "EFFICIENCY") + private Double efficiency; + + @TableField(value = "MDC") + private Double mdc; + + @TableField(value = "MDC_ERR") + private Double mdcErr; + + @TableField(value = "MODDATE") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date moddate; + +} diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnman/GardsMDC.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnman/GardsMDC.java new file mode 100644 index 00000000..72052994 --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/rnman/GardsMDC.java @@ -0,0 +1,45 @@ +package org.jeecg.modules.base.entity.rnman; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +@Data +@TableName("RNMAN.GARDS_MDC") +public class GardsMDC implements Serializable { + + @TableField(value = "SAMPLE_ID") + private Integer sampleId; + + @TableField(value = "IDANALYSIS") + private Integer idAnalysis; + + @TableField(value = "NUCLIDENAME") + private String nuclideName; + + @TableField(value = "ENERGY") + private Double energy; + + @TableField(value = "YIELD") + private Double yield; + + @TableField(value = "EFFICIENCY") + private Double efficiency; + + @TableField(value = "MDC") + private Double mdc; + + @TableField(value = "MDC_ERR") + private Double mdcErr; + + @TableField(value = "MODDATE") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date moddate; + +} diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/CalMDCInfo.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/CalMDCInfo.java new file mode 100644 index 00000000..4c9c1513 --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/CalMDCInfo.java @@ -0,0 +1,46 @@ +package org.jeecg.modules.entity.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class CalMDCInfo implements Serializable { + + /** + * 核素名称 + */ + private String nuclideName; + + /** + * 核素能量 + */ + private Double energy; + + /** + * 核素效率 + */ + private Double efficiency; + + /** + * 计算结果mdc + */ + private Double mdc; + + /** + * mdc偏差值 + */ + private Double mdcErr; + + /** + * 半衰期(单位-秒) + */ + private Double halflife; + + /** + * 分支比 + */ + private Double yield; + +} diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/PHDFile.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/PHDFile.java index c76523e5..4a969257 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/PHDFile.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/PHDFile.java @@ -155,6 +155,26 @@ public class PHDFile implements Serializable { // 核素活度浓度 private Map mapNucActMda; + /** + * 计算mdc值的map + */ + private Map mdcInfoMap; + + /** + * efficiency对应的公式能量 + */ + private List efficiencyEnergy; + + /** + * efficiency对应的公式参数 + */ + private List efficiencyParam; + + /** + * efficiency公式对应选中行 + */ + private Integer efficiencyCurRow; + public PHDFile() { userId = ""; xmlFilePath = ""; @@ -219,6 +239,10 @@ public class PHDFile implements Serializable { certificate = new CertificateBlock(); QcItems = new TreeMap<>(); mapNucActMda = new TreeMap<>(); + mdcInfoMap = new TreeMap<>(); + efficiencyEnergy = new LinkedList<>(); + efficiencyParam = new LinkedList<>(); + efficiencyCurRow = 0; } } 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 be865e00..11c1ca19 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 @@ -2083,7 +2083,7 @@ public class GammaFileUtil extends AbstractLogOrReport { map.put("AllData", datalist); } - public String UpdateEquationEfficiency(List m_vCurEnergy, ParameterInfo m_curParam, Integer funId) { + public String UpdateEquationEfficiency(List m_vCurEnergy, ParameterInfo m_curParam, Integer curRow, Integer funId) { String equation = ""; if(m_curParam.getP().size() > 2) { int p_size = m_curParam.getP().size()-1; @@ -2094,7 +2094,7 @@ public class GammaFileUtil extends AbstractLogOrReport { switch(funId) { case 1: // Interpolation: y=yi+(y(i+1)-yi)*(x-xi)/(x(i+1)-xi) for xi<=x= 4) { - int i = 0; + int i = curRow; if(i < 0 || i >= e_size) break; double y1, y0, x1, x0; @@ -2104,8 +2104,7 @@ public class GammaFileUtil extends AbstractLogOrReport { y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2+1)))); x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2+2)))); x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2)))); - } - else { + } else { y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2+1)))); y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2-1)))); x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(m_curParam.getP().get(i*2)))); @@ -4581,4 +4580,272 @@ public class GammaFileUtil extends AbstractLogOrReport { return shapes; } + public void getNuclideMDCValue(PHDFile phd, Map mdcInfoMap, Map nuclideLinesMap) { + //遍历峰核素信息 + for (Map.Entry entry: nuclideLinesMap.entrySet()) { + //获取核素名称 + String nuclideName = entry.getKey(); + NuclideLines nuclideLines = entry.getValue(); + CalMDCInfo mdcInfo = mdcInfoMap.get(nuclideName); + if (Objects.nonNull(mdcInfo)) { + calCulEfficiencyValue(phd, mdcInfo, nuclideLines); + //计算MDC数据 + List vMdcInfo = new LinkedList<>(); + vMdcInfo.add(mdcInfo.getEnergy()); + vMdcInfo.add(mdcInfo.getYield()); + vMdcInfo.add(mdcInfo.getHalflife()); + Double mdc = CalculateMDC(phd, vMdcInfo, 1.0); + mdcInfo.setMdc(mdc); + } + } + + } + + public void calCulEfficiencyValue(PHDFile phd, CalMDCInfo mdcInfo, NuclideLines nuclideLines) { + List efficiencies = new LinkedList<>(); + int funId = phd.getEfficiencyParam().get(0).intValue(); + int p_size = phd.getEfficiencyParam().size() - 1; + int e_size = phd.getEfficiencyEnergy().size(); + switch(funId) { + case 1: // Interpolation: y=yi+(y(i+1)-yi)*(x-xi)/(x(i+1)-xi) for xi<=x= 4) { + int i = phd.getEfficiencyCurRow(); + if(i < 0 || i >= e_size) break; + + double y1, y0, x1, x0; + if(i < e_size - 1) { + y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+3)))); + y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+1)))); + x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+2)))); + x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2)))); + } else { + y1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2+1)))); + y0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2-1)))); + x1 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2)))); + x0 = Double.valueOf(NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(i*2-2)))); + } + for (int j=0; j"+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(3)))+") * "+ +// "(1-exp(-("+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(4)))+" / E)"+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(5)))+"))"; + } + break; + case 6: // Polynomial in log(y) against log(x): log(y) = a0 + a1*log(x) +a2*log(x)^2+ a3*log(x)^3 + if(p_size >= 2) { + for (int j=0; j"+(i-1)+""; +// } + } + break; + case 8: // Polynomial in log(y) against log(1/x): log(y) = a0 + a1*log(c/x) + a2*log(c/x)^2 + a3*log(c/x)^3 + a4*log(c/x)^4 + if(p_size >= 3) { + for (int j=0; j"+(i-1)+""; +// } + } + break; + case 93: // HAE Efficiency (1-3): y=S*exp(-(E1/x)^k)*(1- exp(-(2*E3/(x-E3))^n)) + if(p_size == 5) { + for (int j=0; j"+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(3)))+") * "+ +// "(1 - exp(-(2 * "+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(4)))+" / (E - "+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(4)))+"))"+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(5)))+"))"; + } + break; + case 94: // HAE Efficiency (1-2): y=S*exp(-(E1/x)^k)*(1- exp(-b*(1/(x-E2))^m)) + if(p_size == 6) { + for (int j=0; j"+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(3)))+") * "+ +// "(1 - exp(-"+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(4)))+" * (1 / (E - "+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(5)))+"))"+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(6)))+")) * "+ +// "(1 - exp(-(2 * "+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(7)))+" / (E - "+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(7)))+"))"+NumberFormatUtil.numberFormat(String.valueOf(phd.getEfficiencyParam().get(8)))+"))"; + } + break; + } + //遍历获取到主峰对应的信息 + Double maxEff = efficiencies.stream().max(Comparator.comparing(Double::doubleValue)).get(); + //获取主峰对应的下标 + int maxIndex = efficiencies.indexOf(maxEff); + mdcInfo.setEnergy(nuclideLines.venergy.get(maxIndex)); + mdcInfo.setEfficiency(efficiencies.get(maxIndex) * 100 / nuclideLines.vyield.get(maxIndex)); + mdcInfo.setYield(nuclideLines.vyield.get(maxIndex)); + } + } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java index 27e01f3a..74fbe3eb 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java @@ -130,6 +130,12 @@ public class GammaController { return gammaService.fitPeak(left, right, fileName, request); } + @GetMapping("getGammaSelPosNuclide") + @ApiOperation(value = "gamma主页面选择channel加载对应核素信息接口", notes = "gamma主页面选择channel加载对应核素信息接口") + public Result getGammaSelPosNuclide(Integer sampleId, String fileName, int channel, HttpServletRequest request) { + return gammaService.getGammaSelPosNuclide(sampleId, fileName, channel, request); + } + @GetMapping("getSelPosNuclide") @ApiOperation(value = "InteractiveTool页面选择channel加载对应核素信息接口", notes = "InteractiveTool页面选择channel加载对应核素信息接口") public Result getSelPosNuclide(Integer sampleId, String fileName, int channel, HttpServletRequest request) { @@ -321,7 +327,7 @@ public class GammaController { @PostMapping("changeDataEfficiency") @ApiOperation(value = "修改Efficiency Calibration数据", notes = "修改Efficiency Calibration数据") public Result changeDataEfficiency(@RequestBody ChangeData changeData, HttpServletRequest request) { - return gammaService.changeDataEfficiency(changeData.getM_vCurEffi(), changeData.getM_vCurEnergy(), changeData.getM_vCurUncert(), changeData.getM_curParam(), changeData.getFuncId(), changeData.getSampleId(), changeData.getFileName(), changeData.getWidth(), request); + return gammaService.changeDataEfficiency(changeData.getM_vCurEffi(), changeData.getM_vCurEnergy(), changeData.getM_vCurUncert(), changeData.getM_curParam(), changeData.getFuncId(), changeData.getSampleId(), changeData.getFileName(), changeData.getWidth(), changeData.getCurRow(), request); } @PostMapping("applyDataEfficiency") diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/entity/vo/ChangeData.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/entity/vo/ChangeData.java index afefff41..174da5e7 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/entity/vo/ChangeData.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/entity/vo/ChangeData.java @@ -30,4 +30,6 @@ public class ChangeData implements Serializable { private Double width; + private Integer curRow; + } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsMDCSpectrumMapper.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsMDCSpectrumMapper.java new file mode 100644 index 00000000..6f856b55 --- /dev/null +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsMDCSpectrumMapper.java @@ -0,0 +1,7 @@ +package org.jeecg.modules.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.base.entity.rnman.GardsMDC; + +public interface GardsMDCSpectrumMapper extends BaseMapper { +} diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsNuclCoincidenceSumMapper.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsNuclCoincidenceSumMapper.java new file mode 100644 index 00000000..4f5f0ddb --- /dev/null +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/GardsNuclCoincidenceSumMapper.java @@ -0,0 +1,9 @@ +package org.jeecg.modules.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.jeecg.modules.base.entity.configuration.GardsNuclCoincidenceSum; + +@Mapper +public interface GardsNuclCoincidenceSumMapper extends BaseMapper { +} diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java index 6fc0fd34..99a78444 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java @@ -51,6 +51,8 @@ public interface IGammaService{ Result fitPeak(int left, int right, String fileName, HttpServletRequest request); + Result getGammaSelPosNuclide(Integer sampleId, String fileName, int channel, HttpServletRequest request); + Result getSelPosNuclide(Integer sampleId, String fileName, int channel, HttpServletRequest request); Result addNuclide(Integer curRow, String nuclideName, String fileName, List list_identify, HttpServletRequest request); @@ -113,7 +115,7 @@ public interface IGammaService{ Result EfficiencyCalibration(Integer sampleId, String fileName, String currentText, Double width, HttpServletRequest request); - Result changeDataEfficiency(List m_vCurEffi, List m_vCurEnergy, List m_vCurUncert, ParameterInfo m_curParam, Integer funcId, Integer sampleId, String fileName, Double width, HttpServletRequest request); + Result changeDataEfficiency(List m_vCurEffi, List m_vCurEnergy, List m_vCurUncert, ParameterInfo m_curParam, Integer funcId, Integer sampleId, String fileName, Double width, Integer curRow, HttpServletRequest request); Result applyDataEfficiency(List m_vCurEffi, List m_vCurEnergy, List m_vCurUncert, ParameterInfo m_curParam, String curCalName, Integer sampleId, String fileName, HttpServletRequest request); @@ -192,4 +194,6 @@ public interface IGammaService{ void SpcToIec(MultipartFile file, HttpServletResponse response); void IecToSpc(MultipartFile file, HttpServletResponse response); + + void readMDCParameter(); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsMDCSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsMDCSpectrumService.java new file mode 100644 index 00000000..a10e0553 --- /dev/null +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsMDCSpectrumService.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.base.entity.rnman.GardsMDC; +import org.jeecg.modules.entity.vo.PHDFile; + +public interface IGardsMDCSpectrumService extends IService { + + int saveMDCGamma(PHDFile phd, String idAnalysis); + +} diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsNuclCoincidenceSumSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsNuclCoincidenceSumSpectrumService.java new file mode 100644 index 00000000..d69a2b87 --- /dev/null +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsNuclCoincidenceSumSpectrumService.java @@ -0,0 +1,13 @@ +package org.jeecg.modules.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.base.entity.configuration.GardsNuclCoincidenceSum; +import org.jeecg.modules.entity.vo.NuclideLines; + +import java.util.Map; + +public interface IGardsNuclCoincidenceSumSpectrumService extends IService { + + void getNuclCoincidenceMap(); + +} 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 f7f9aab9..34be8d13 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 @@ -56,10 +56,15 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import org.w3c.dom.*; +import org.xml.sax.SAXException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import java.io.*; import java.math.BigDecimal; import java.net.URLEncoder; @@ -144,6 +149,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi @Autowired private IGardsAnalySettingSpectrumService analySettingSpectrumService; @Autowired + private IGardsMDCSpectrumService mdcSpectrumService; + @Autowired private RedisStreamUtil redisStreamUtil; @Autowired private ISysDictSpectrumService sysDictService; @@ -181,7 +188,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } // 从数据库中读取phd其他相关信息 boolean bRet = getResultFromDB(dbName, analyst, sampleId, phd, result); - if (!redisUtil.hasKey(userName+"-"+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+"-"+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")) { // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 @@ -191,15 +198,20 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } userLib = userLib.stream().sorted().collect(Collectors.toList()); Map nuclideMap = GetNuclideLines(userLib); - redisUtil.set(userName+"-"+phd.getHeader().getSystem_type()+"-list", userLib); - redisUtil.set(userName+"-"+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); } // 判断数据库信息是否读取正常 if (!bRet) { return result; } + //读取redis缓存的计算mdc信息 + Map mdcInfoMap = (Map) redisUtil.get("mdcInfoMap"); + if (CollectionUtils.isNotEmpty(mdcInfoMap)) { + phd.setMdcInfoMap(mdcInfoMap); + } gammaFileUtil.Qcstate(phd); - key = fileName + "-" + userName; + key = fileName + StringPool.DASH + userName; } else { String pathName = ftpUtil.getFtpRootPath() + spectrumPathProperties.getUploadPath() + StringPool.SLASH + userName; String fileName = samfileName; @@ -208,7 +220,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi if (!bRet) { return result; } - if (!redisUtil.hasKey(userName+"-"+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+"-"+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")) { // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 @@ -218,10 +230,15 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } userLib = userLib.stream().sorted().collect(Collectors.toList()); Map nuclideMap = GetNuclideLinesLocal(userLib); - redisUtil.set(userName+"-"+phd.getHeader().getSystem_type()+"-list", userLib); - redisUtil.set(userName+"-"+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); } - key = fileName + "-" + userName; + //读取redis缓存的计算mdc信息 + Map mdcInfoMap = (Map) redisUtil.get("mdcInfoMap"); + if (CollectionUtils.isNotEmpty(mdcInfoMap)) { + phd.setMdcInfoMap(mdcInfoMap); + } + key = fileName + StringPool.DASH + userName; } phdCache.put(key, phd); localCache.setPHDCache(phdCache); @@ -235,7 +252,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); phd.setUserId("1"); phd.setXmlFilePath(parameterProperties.getFilePath()); String systemType = fileName.substring(2, 3); @@ -243,7 +260,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi result.error500("Please select the parse file first!"); return result; } - Map nuclideLinesMap = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); // 解析获取临时文件信息 File tmpFile = gammaFileUtil.analyzeFile(ftpUtil.getFtpRootPath() + spectrumPathProperties.getUploadPath() + StringPool.SLASH + userName, fileName); ObjectMapper mapper = new ObjectMapper(); @@ -463,7 +480,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 切割数据库存储的文件路径获取文件名称 String fileName = sampleFilePath.substring(sampleFilePath.lastIndexOf(StringPool.SLASH) + 1); // 声明phd实体类 - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { phd = new PHDFile(); // 读取文件内容 @@ -481,7 +498,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } // 从数据库中读取phd其他相关信息 boolean bRet = getResultFromDB(dbName, analyst, sampleId, phd, result); - if (!redisUtil.hasKey(userName+"-"+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+"-"+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")) { // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 @@ -491,13 +508,18 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } userLib = userLib.stream().sorted().collect(Collectors.toList()); Map nuclideMap = GetNuclideLines(userLib); - redisUtil.set(userName+"-"+phd.getHeader().getSystem_type()+"-list", userLib); - redisUtil.set(userName+"-"+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); } // 判断数据库信息是否读取正常 if (!bRet) { return result; } + //读取redis缓存的计算mdc信息 + Map mdcInfoMap = (Map) redisUtil.get("mdcInfoMap"); + if (CollectionUtils.isNotEmpty(mdcInfoMap)) { + phd.setMdcInfoMap(mdcInfoMap); + } } // 获取当前角色配置的颜色信息 Map colorMap = sysUserColorService.initColor(userName); @@ -522,7 +544,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 更新页面折线图信息 gammaFileUtil.UpdateChart(phd, map, colorMap); // 将当前加载的phd信息加入到缓存中 文件名称作为缓存信息的key - phdCache.put(fileName + "-" + userName, phd); + phdCache.put(fileName + StringPool.DASH + userName, phd); localCache.setPHDCache(phdCache); result.setSuccess(true); result.setResult(map); @@ -839,7 +861,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String path = ftpUtil.getFtpRootPath() + spectrumPathProperties.getUploadPath() + StringPool.SLASH + userName; // 获取当前角色的颜色配置 Map colorMap = sysUserColorService.initColor(userName); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { phd = new PHDFile(); // 加载文件内容 @@ -847,7 +869,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi if (!bRet) { return result; } - if (!redisUtil.hasKey(userName+"-"+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+"-"+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")) { // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 @@ -857,8 +879,13 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } userLib = userLib.stream().sorted().collect(Collectors.toList()); Map nuclideMap = GetNuclideLinesLocal(userLib); - redisUtil.set(userName+"-"+phd.getHeader().getSystem_type()+"-list", userLib); - redisUtil.set(userName+"-"+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); + } + //读取redis缓存的计算mdc信息 + Map mdcInfoMap = (Map) redisUtil.get("mdcInfoMap"); + if (CollectionUtils.isNotEmpty(mdcInfoMap)) { + phd.setMdcInfoMap(mdcInfoMap); } } // 更新 ‘QC Flags’ 状态 @@ -880,7 +907,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi List differance = gammaFileUtil.Differance(phd, phd.getVPeak()); map.put("barChart", differance); gammaFileUtil.UpdateChart(phd, map, colorMap); - phdCache.put(fileName + "-" + userName, phd); + phdCache.put(fileName + StringPool.DASH + userName, phd); localCache.setPHDCache(phdCache); result.setSuccess(true); result.setResult(map); @@ -953,7 +980,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map colorMap = sysUserColorService.initColor(userName); // 获取缓存的phd数据 Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -991,7 +1018,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map colorMap = sysUserColorService.initColor(userName); // 获取缓存的phd数据 Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1024,7 +1051,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map colorMap = sysUserColorService.initColor(userName); // 获取缓存的phd数据 Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1079,7 +1106,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map colorMap = sysUserColorService.initColor(userName); // 获取缓存的phd数据 Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1124,7 +1151,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1186,10 +1213,10 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi phdSetting.setRefTime_act(configureData.getRefTime_act()); phdSetting.setRefTime_conc(configureData.getRefTime_conc()); } - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); map.put("checkBox_updateCal", phd.getSetting().isBUpdateCal()); } else { - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1220,7 +1247,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1238,19 +1265,41 @@ 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+"-"+phd.getHeader().getSystem_type()); + Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap); gammaFileUtil.RunQC(phd); + if (CollectionUtils.isEmpty(phd.getEfficiencyParam())) { + phd.setEfficiencyParam(phd.getUsedEffiPara().getP()); + } + if (CollectionUtils.isEmpty(phd.getEfficiencyEnergy())) { + phd.setEfficiencyEnergy(phd.getUsedEffiKD().getG_energy()); + } + if (Objects.isNull(phd.getEfficiencyCurRow())) { + phd.setEfficiencyCurRow(0); + } + // 重新计算峰值 + gammaFileUtil.getNuclideMDCValue(phd, phd.getMdcInfoMap(), nuclideLinesMap); String warning = "Finish three tasks:\n" + "\t1.Update efficiencies of all peaks;\n" + "\t2.Identify nuclides again;\n" + "\t3.Test QC again."; result.error500(warning); } else { - Map nuclideLinesMap = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); gammaFileUtil.AnalyseSpectrum(phd, nuclideLinesMap); // 重新分析各峰值对应的核素信息 // gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap); + if (CollectionUtils.isEmpty(phd.getEfficiencyParam())) { + phd.setEfficiencyParam(phd.getUsedEffiPara().getP()); + } + if (CollectionUtils.isEmpty(phd.getEfficiencyEnergy())) { + phd.setEfficiencyEnergy(phd.getUsedEffiKD().getG_energy()); + } + if (Objects.isNull(phd.getEfficiencyCurRow())) { + phd.setEfficiencyCurRow(0); + } + // 重新计算峰值 + gammaFileUtil.getNuclideMDCValue(phd, phd.getMdcInfoMap(), nuclideLinesMap); Map map = new HashMap<>(); gammaFileUtil.UpdateChart(phd, map, colorMap); // 更新 ‘QC Flags’ 状态 @@ -1354,7 +1403,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); Map map = new HashMap<>(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1406,7 +1455,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); Map map = new HashMap<>(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1567,7 +1616,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1592,7 +1641,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi HashMap map = new HashMap<>(); // 根据boolean 决定是否保留本次数据 如果保留则不需要操作vPeak 并重新拟合线 if (accept) { - Map nuclideLinesMap = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); if (flag.equalsIgnoreCase("insert")) {// 如果传递的flag标识 是 Insert则进行峰值的插入 //重新赋值index for (int k=0; k phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; } //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); //获取颜色信息 Map colorMap = sysUserColorService.initColor(userName); //声明一个结果的map @@ -1756,7 +1805,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi phd.getVPeak().remove(curRow); //重新计算核素活度浓度 gammaFileUtil.NuclidesIdent(phd, nuclideMap); - redisUtil.set(userName+"-"+phd.getHeader().getSystem_type(), nuclideMap); + redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); //重新分析数据 gammaFileUtil.PeaksChanged(phd); for (int i = 0; i < phd.getVPeak().size(); i++) { @@ -1781,7 +1830,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 获取用户名 String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1824,12 +1873,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } @Override - public Result getSelPosNuclide(Integer sampleId, String fileName, int channel, HttpServletRequest request) { + public Result getGammaSelPosNuclide(Integer sampleId, String fileName, int channel, HttpServletRequest request) { Result result = new Result(); Map map = new HashMap<>(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1840,7 +1889,79 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi int index = gammaFileUtil.FindNearPeak(phd.getVPeak(), channel, false); //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + Map nuclCoincidenceSumMap = (Map) redisUtil.get("nuclCoincidenceSumMap"); + //计算核素范围的最小能量值 + double min = phd.getVPeak().get(index).energy - phd.getSetting().getEnergyTolerance(); + //计算核素范围的最大能量值 + double max = phd.getVPeak().get(index).energy + phd.getSetting().getEnergyTolerance(); + //声明返回的数组内容 + List list_possible = new LinkedList<>(); + //判断缓存的核素信息是否为空 + if (CollectionUtils.isNotEmpty(nuclideMap)) { + //遍历核素信息 + 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)); + } + } + } + } + if (phd.getHeader().getSystem_type().equals("P")) { + if (CollectionUtils.isNotEmpty(nuclCoincidenceSumMap)) { + 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)); + } + } + } + } + } + // 用户当前已选中的核素名称 + List list_identify = phd.getVPeak().get(index).nuclides; + + map.put("index", index); + map.put("possible", list_possible); + map.put("identify", list_identify); + result.setSuccess(true); + result.setResult(map); + return result; + } + + @Override + public Result getSelPosNuclide(Integer sampleId, String fileName, int channel, HttpServletRequest request) { + Result result = new Result(); + Map map = new HashMap<>(); + String userName = JwtUtil.getUserNameByToken(request); + Cache phdCache = localCache.getPHDCache(); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); + if (Objects.isNull(phd)) { + result.error500("Please select the parse file first!"); + return result; + } + if (phd.getVPeak().size() < 1) { + return result; + } + int index = gammaFileUtil.FindNearPeak(phd.getVPeak(), channel, false); + + //获取缓存的核素信息 + Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); //计算核素范围的最小能量值 double min = phd.getVPeak().get(index).energy - phd.getSetting().getEnergyTolerance(); //计算核素范围的最大能量值 @@ -1858,7 +1979,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi //遍历能量 for (int i=0; i min && venergy.get(i) < max) { + if (Objects.nonNull(venergy.get(i)) && venergy.get(i) > min && venergy.get(i) < max) { list_possible.add(entry.getKey()); break; } @@ -1882,7 +2003,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map map = new HashMap<>(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -1901,7 +2022,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 根据要进行修改的列的数据下标 操作Vpeak数据 phd.getVPeak().get(curRow).nuclides.add(nuclideName); // 查询当前用户所关心的核素名称 - Map mapNucLines = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map mapNucLines = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); // 查询出核素信息 NuclideLines it_line = mapNucLines.get(nuclideName); // 如果核素信息不存在返回 @@ -1932,13 +2053,13 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); //缓存中获取缓存信息 Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; } Map map = new HashMap<>(); - Map nuclideMap = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); //判断当前选择的核素名称是否包含在当前Peak的核素列表中 int index = list_identify.indexOf(nuclideName); if (index >= 0) { @@ -1969,7 +2090,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi nuclideMap.remove(nuclideName); //重新计算核素活度浓度 gammaFileUtil.NuclidesIdent(phd, nuclideMap); - redisUtil.set(userName+"-"+phd.getHeader().getSystem_type(), nuclideMap); + redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); //从核素的选中列表中移除对应下标的核素信息 list_identify.remove(index); //重新初始化峰列表信息 @@ -1999,7 +2120,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2019,7 +2140,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); Map map = new HashMap<>(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2041,7 +2162,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2056,7 +2177,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2076,7 +2197,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map map = new HashMap<>(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2091,7 +2212,7 @@ 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+"-"+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); //判断缓存的核素信息是否为空 if (CollectionUtils.isNotEmpty(nuclideMap)) { //遍历核素信息 @@ -2210,14 +2331,14 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); Map map = new HashMap<>(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; } Map colorMap = sysUserColorService.initColor(userName); //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); InitTable(nuclideName, map, phd, colorMap, nuclideMap); result.setSuccess(true); result.setResult(map); @@ -2230,7 +2351,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map map = new HashMap<>(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2244,7 +2365,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi double min = bigDecimal.doubleValue() - tolerance; double max = bigDecimal.doubleValue() + tolerance; //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); //判断缓存的核素信息是否为空 if (CollectionUtils.isNotEmpty(nuclideMap)) { //遍历核素信息 @@ -2290,7 +2411,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 获取文件名称 String fileName = baseLineCtrls.getFileName(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2341,7 +2462,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 获取文件名称 String fileName = baseLineCtrls.getFileName(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2384,7 +2505,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi map.put("list_fission1", zeroTimeList); map.put("list_fission2", zeroTimeList); LocalDateTime now = LocalDateTime.now(); - map.put("Date", now.getYear() + "-" + now.getMonthValue() + "-" + now.getDayOfMonth()); + map.put("Date", now.getYear() + StringPool.DASH + now.getMonthValue() + StringPool.DASH + now.getDayOfMonth()); map.put("Time", now.getHour() + ":" + now.getMinute() + ":" + now.getSecond()); result.setSuccess(true); result.setResult(map); @@ -2804,7 +2925,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); Map map = new HashMap<>(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2858,7 +2979,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); Map map = new HashMap<>(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2919,7 +3040,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -2975,7 +3096,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(sampleFileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(sampleFileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first"); return result; @@ -3069,7 +3190,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3089,7 +3210,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); Map map = new HashMap<>(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3143,7 +3264,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); Map map = new HashMap<>(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3193,7 +3314,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3249,7 +3370,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(sampleFileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(sampleFileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first"); return result; @@ -3343,7 +3464,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3372,7 +3493,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi m_vFuncName.add("HAE Efficiency(1-2-3)"); // 95 map.put("function", m_vFuncName); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3409,7 +3530,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi efficiencyDataList.add(efficiencyData); } map.put("table", efficiencyDataList); - String equation = gammaFileUtil.UpdateEquationEfficiency(m_vCurEnergy, m_curParam, null); + String equation = gammaFileUtil.UpdateEquationEfficiency(m_vCurEnergy, m_curParam, 0, null); map.put("equation", equation); gammaFileUtil.UpdateChartEfficiency(m_vCurEnergy, m_curParam, m_vCurEffi, phd, width, map); map.put("ECutAnalysis_Low", phd.getSetting().getECutAnalysis_Low()); @@ -3421,23 +3542,29 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } @Override - public Result changeDataEfficiency(List m_vCurEffi, List m_vCurEnergy, List m_vCurUncert, ParameterInfo m_curParam, Integer funcId, Integer sampleId, String fileName, Double width, HttpServletRequest request) { + public Result changeDataEfficiency(List m_vCurEffi, List m_vCurEnergy, List m_vCurUncert, ParameterInfo m_curParam, Integer funcId, Integer sampleId, String fileName, Double width, Integer curRow, HttpServletRequest request) { Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Map map = new HashMap<>(); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; } - DataChangeEfficiency(m_vCurEffi, m_vCurEnergy, m_vCurUncert, m_curParam, funcId, phd, width, map); + //redis获取缓存的峰核素信息 + Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); + DataChangeEfficiency(m_vCurEffi, m_vCurEnergy, m_vCurUncert, m_curParam, funcId, phd, width, curRow, map); + //将本次计算公式的信息赋值给各对应参数用于计算MDC + phd.setEfficiencyParam(m_curParam.getP()); + phd.setEfficiencyCurRow(curRow); + phd.setEfficiencyEnergy(m_vCurEnergy); result.setSuccess(true); result.setResult(map); return result; } - public void DataChangeEfficiency(List m_vCurEffi, List m_vCurEnergy, List m_vCurUncert, ParameterInfo m_curParam, Integer funcId, PHDFile phd, Double width, Map map) { + public void DataChangeEfficiency(List m_vCurEffi, List m_vCurEnergy, List m_vCurUncert, ParameterInfo m_curParam, Integer funcId, PHDFile phd, Double width, Integer curRow, Map map) { m_curParam.setP(CalValuesHandler.calFitPara("Cal_Efficiency", funcId, m_vCurEnergy, m_vCurEffi, m_vCurUncert)); map.put("uncert", m_vCurUncert); map.put("param", m_curParam); @@ -3466,7 +3593,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String Warning = "Fit failed. Maybe:\n1. data's number are too little;\n2. %1 isn't suitable for the data."; } map.put("table", efficiencyDataList); - String equation = gammaFileUtil.UpdateEquationEfficiency(m_vCurEnergy, m_curParam, funcId); + String equation = gammaFileUtil.UpdateEquationEfficiency(m_vCurEnergy, m_curParam, curRow, funcId); map.put("equation", equation); gammaFileUtil.UpdateChartEfficiency(m_vCurEnergy, m_curParam, m_vCurEffi, phd, width, map); } @@ -3476,7 +3603,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3533,7 +3660,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(sampleFileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(sampleFileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first"); return result; @@ -3608,7 +3735,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi efficiencyDataList.add(efficiencyData); } map.put("table", efficiencyDataList); - String equation = gammaFileUtil.UpdateEquationEfficiency(m_vCurEnergy, m_curParam, null); + String equation = gammaFileUtil.UpdateEquationEfficiency(m_vCurEnergy, m_curParam, 0, null); map.put("equation", equation); gammaFileUtil.UpdateChartEfficiency(m_vCurEnergy, m_curParam, m_vCurEffi, phd, width, map); map.put("ECutAnalysis_Low", phd.getSetting().getECutAnalysis_Low()); @@ -3639,7 +3766,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3659,7 +3786,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map map = new HashMap<>(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3672,7 +3799,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi double max = editEnergyDou + err; if (libraryName.equals("UserLibrary")) { //获取缓存的核素信息 - Map nuclideMap = (Map) redisUtil.get(userName+"-"+phd.getHeader().getSystem_type()); + Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type()); //判断缓存的核素信息是否为空 if (CollectionUtils.isNotEmpty(nuclideMap)) { //遍历核素信息 @@ -3699,7 +3826,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } else { if (libraryName.equals("UserLibrary")) { //redis中获取缓存的用户关注核素信息 - nuclides = (List)redisUtil.get(userName+"-"+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")) { @@ -3832,14 +3959,14 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map> map = new HashMap<>(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; } List nuclides = spectrumAnalysisMapper.getNuclideNames("CONFIGURATION.GARDS_NUCL_LIB"); //redis中获取缓存的用户关注核素信息 - List userNuclides = (List)redisUtil.get(userName+"-"+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); @@ -3852,7 +3979,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3873,8 +4000,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); } Map nuclideMap = GetNuclideLines(userLib); - redisUtil.set(userName+"-"+phd.getHeader().getSystem_type()+"-list", userLib); - redisUtil.set(userName+"-"+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); } else { result.success("Modification failure!"); } @@ -3887,7 +4014,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String comments = ""; String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3917,7 +4044,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -3933,7 +4060,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result> result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4052,7 +4179,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4068,7 +4195,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi public void exportRRR(Integer sampleId, String fileName, HttpServletRequest request, HttpServletResponse response) { String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { return; } @@ -4099,7 +4226,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result> result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4135,7 +4262,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4151,7 +4278,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result> result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4209,7 +4336,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result> result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4246,7 +4373,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String standard = ""; List strList = Arrays.asList(iter.getValue().getStandard().split(StringPool.COMMA)); for (String str : strList) { - if (str.contains("-")) { + if (str.contains(StringPool.DASH)) { if (str.contains("(") || str.contains("[")) { standard += iter.getKey(); } @@ -4286,7 +4413,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4571,7 +4698,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4587,7 +4714,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4634,7 +4761,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); boolean bRet = false; Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { result.error500("Please select the parse file first!"); return result; @@ -4735,6 +4862,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi qcCheckSpectrumService.saveQcCheckGamma(middleData, phd, idAnalysis); // 向 RNMAN.GARDS_ANALY_SETTING 表写入 SpecSetup 分析参数设置 analySettingSpectrumService.saveAnalySettingGamma(phd, idAnalysis); + // 向 RNMAN.GARDS_MDC 表写入 MDC计算结果 + mdcSpectrumService.saveMDCGamma(phd, idAnalysis); if (bRet) { phd.setStatus("R"); List paths = new LinkedList<>(); @@ -4839,7 +4968,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi public void saveToTxt(String fileName, HttpServletRequest request, HttpServletResponse response) { String userName = JwtUtil.getUserNameByToken(request); Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { return; } @@ -5141,7 +5270,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi String userName = JwtUtil.getUserNameByToken(request); // 读取本地缓存的phd文件信息 Cache phdCache = localCache.getPHDCache(); - PHDFile phd = phdCache.getIfPresent(fileName + "-" + userName); + PHDFile phd = phdCache.getIfPresent(fileName + StringPool.DASH + userName); if (Objects.isNull(phd)) { return; } @@ -5453,4 +5582,67 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } } + /** + * 读取计算MDC参数文件方法 + */ + public void readMDCParameter() { + //存储文件结果用的map + Map mdcInfoMap = new TreeMap<>(); + //配置文件路径 + String filePath = parameterProperties.getFilePath()+ File.separator + "MDCParameter.xml"; + try { + //创建一个文档解析器工厂 + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + //创建文档解析器 + DocumentBuilder documentBuilder = factory.newDocumentBuilder(); + //读取xml文件生成一个文档 + Document document = documentBuilder.parse(filePath); + if (Objects.nonNull(document)){ + //获取文档的根元素 + Element element = document.getDocumentElement(); + //获取根元素的子节点 + NodeList docChildNodes = element.getChildNodes(); + //判断文件内的节点是否大于0 + if (Objects.nonNull(docChildNodes) && docChildNodes.getLength() > 0) { + //遍历文件节点读取内容 + for (int i=0; i implements IGardsMDCSpectrumService { + + + @Override + public int saveMDCGamma(PHDFile phd, String idAnalysis) { + Date nowDate = new Date(); + Map mdcInfoMap = phd.getMdcInfoMap(); + List mdcList = new LinkedList<>(); + if (CollectionUtils.isNotEmpty(mdcInfoMap)) { + for (CalMDCInfo mdcInfo :mdcInfoMap.values()) { + GardsMDC mdc = new GardsMDC(); + mdc.setIdAnalysis(Integer.valueOf(idAnalysis)); + mdc.setSampleId(Integer.valueOf(phd.getId_sample())); + mdc.setNuclideName(mdcInfo.getNuclideName()); + mdc.setEnergy(mdcInfo.getEnergy()); + mdc.setYield(mdcInfo.getYield()); + mdc.setEfficiency(mdcInfo.getEfficiency()); + mdc.setMdc(mdcInfo.getMdc()); + mdc.setMdcErr(null); + mdc.setModdate(nowDate); + mdcList.add(mdc); + } + } + if (CollectionUtils.isNotEmpty(mdcList)) { + this.saveBatch(mdcList); + } + return mdcList.size(); + } + +} diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsNuclCoincidenceSumSpectrumServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsNuclCoincidenceSumSpectrumServiceImpl.java new file mode 100644 index 00000000..64a07c17 --- /dev/null +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsNuclCoincidenceSumSpectrumServiceImpl.java @@ -0,0 +1,52 @@ +package org.jeecg.modules.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.util.RedisUtil; +import org.jeecg.modules.base.entity.configuration.GardsNuclCoincidenceSum; +import org.jeecg.modules.entity.vo.NuclideLines; +import org.jeecg.modules.mapper.GardsNuclCoincidenceSumMapper; +import org.jeecg.modules.service.IGardsNuclCoincidenceSumSpectrumService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service("nuclCoincidenceService") +@DS("ora") +public class GardsNuclCoincidenceSumSpectrumServiceImpl extends ServiceImpl implements IGardsNuclCoincidenceSumSpectrumService { + + @Autowired + private RedisUtil redisUtil; + + @Override + public void getNuclCoincidenceMap() { + Map nuclideLinesMap = new TreeMap<>(); + //查询数据库中已有的加和核素信息 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + List nuclCoincidenceSumList = this.baseMapper.selectList(queryWrapper); + //将核素信息的名称取出去重后生成对应的数组 + List nuclideNames = nuclCoincidenceSumList.stream().map(GardsNuclCoincidenceSum::getName).distinct().collect(Collectors.toList()); + //遍历核素名称 + for (String nuclideName:nuclideNames) { + List sumList = nuclCoincidenceSumList.stream().filter(item -> item.getName().equals(nuclideName)).collect(Collectors.toList()); + NuclideLines nuclideLines = new NuclideLines(); + for (GardsNuclCoincidenceSum coincidenceSum:sumList) { + nuclideLines.venergy.add(coincidenceSum.getEnergy()); + nuclideLines.vyield.add(coincidenceSum.getYield()); + nuclideLines.fullNames.add(coincidenceSum.getFullName()); + nuclideLines.vuncertE.add(coincidenceSum.getEnergyUncert()); + nuclideLines.vuncertY.add(coincidenceSum.getYieldUncert()); + } + nuclideLinesMap.put(nuclideName, nuclideLines); + } + redisUtil.set("nuclCoincidenceSumMap", nuclideLinesMap); + } + +} diff --git a/jeecg-server-cloud/armd-spectrum-analysis-start/src/main/java/org/jeecg/JeecgSpectrumAnalysisApplication.java b/jeecg-server-cloud/armd-spectrum-analysis-start/src/main/java/org/jeecg/JeecgSpectrumAnalysisApplication.java index 7bf5620d..b4add0cf 100644 --- a/jeecg-server-cloud/armd-spectrum-analysis-start/src/main/java/org/jeecg/JeecgSpectrumAnalysisApplication.java +++ b/jeecg-server-cloud/armd-spectrum-analysis-start/src/main/java/org/jeecg/JeecgSpectrumAnalysisApplication.java @@ -4,6 +4,8 @@ import lombok.extern.slf4j.Slf4j; import org.jeecg.common.cache.BetaCache; import org.jeecg.common.cache.LocalCache; import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.service.IGammaService; +import org.jeecg.modules.service.IGardsNuclCoincidenceSumSpectrumService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; @@ -27,6 +29,10 @@ public class JeecgSpectrumAnalysisApplication extends SpringBootServletInitializ private LocalCache localCache; @Autowired private BetaCache betaCache; + @Autowired + private IGammaService gammaService; + @Autowired + private IGardsNuclCoincidenceSumSpectrumService nuclCoincidenceSumSpectrumService; @Override @@ -56,5 +62,7 @@ public class JeecgSpectrumAnalysisApplication extends SpringBootServletInitializ //创建缓存 betaCache.initCache(); localCache.initCache(); + gammaService.readMDCParameter(); + nuclCoincidenceSumSpectrumService.getNuclCoincidenceMap(); } } \ No newline at end of file