fix:gamma交互工具解决删除核素时重新识别核素会把之前删除的核素识别出来的问题

This commit is contained in:
xiaoguangbin 2024-12-03 11:46:18 +08:00
parent f97e68c00e
commit 926aa9fe10
3 changed files with 36 additions and 6 deletions
jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo
jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util
jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl

View File

@ -2,8 +2,10 @@ package org.jeecg.modules.entity.vo;
import java.io.Serializable;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class PeakInfo implements Serializable {
@ -61,11 +63,17 @@ public class PeakInfo implements Serializable {
public List<String> nuclides;
/**
* 记录peak中被删除的核素interactiveTool
*/
public Map<Double, List<String>> deletedNuclideMap;
public PeakInfo(){
nuclides = new LinkedList<>();
comments = "";
recoilBetaChan = "nan";
recoilDeltaChan = "nan";
deletedNuclideMap = new HashMap<>();
}
}

View File

@ -40,7 +40,6 @@ 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;
@ -1695,8 +1694,14 @@ public class GammaFileUtil extends AbstractLogOrReport {
for(int ii=0; ii<vFit.size(); ii++) {
if(vFit.get(ii) >= 0) {
// 向峰信息表中添加识别到的核素
PeakInfo peakInfo = phd.getVPeak().get(vFit.get(ii));
Map<Double, List<String>> deletedNuclideMap = peakInfo.deletedNuclideMap;
if(vFit.get(ii) != peakIdx) {
phd.getVPeak().get(vFit.get(ii)).nuclides.add(iter.getKey());
if(deletedNuclideMap.get(peakInfo.energy) != null
&& deletedNuclideMap.get(peakInfo.energy).contains(iter.getKey())){
continue;
}
peakInfo.nuclides.add(iter.getKey());
peakIdx = vFit.get(ii);
}
// 添加匹配的γ射线的信息
@ -4180,6 +4185,7 @@ public class GammaFileUtil extends AbstractLogOrReport {
for (int i=0, j=0; i<vEnergy.size(); i++) {
for(; j<vPeakIdx.size(); j++) {
double energy = phd.getVPeak().get(vPeakIdx.get(j)).energy;
List<PeakInfo> vPeak = phd.getVPeak();
if(vEnergy.get(i) < energy - energyWidth) {
break;
} else if(vEnergy.get(i) <= energy + energyWidth) {

View File

@ -25,10 +25,8 @@ import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.cache.LocalCache;
import org.jeecg.common.constant.DateConstant;
import org.jeecg.common.constant.RedisConstant;
import org.jeecg.common.properties.ParameterProperties;
import org.jeecg.common.properties.SpectrumPathProperties;
import org.jeecg.common.properties.TaskProperties;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.*;
@ -44,7 +42,6 @@ import org.jeecg.modules.base.enums.*;
import org.jeecg.modules.entity.vo.*;
import org.jeecg.modules.entity.*;
import org.jeecg.modules.mapper.SpectrumAnalysisMapper;
import org.jeecg.modules.native_jni.AnalysisProcess;
import org.jeecg.modules.native_jni.CalValuesHandler;
import org.jeecg.modules.native_jni.struct.CalValuesOut;
import org.jeecg.modules.service.*;
@ -1686,10 +1683,16 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
// 用户当前的核素信息新增核素名称
list_identify.add(nuclideName);
// 根据要进行修改的列的数据下标 操作Vpeak数据
List<String> peakNuclides = phd.getVPeak().get(curRow).nuclides;
PeakInfo peakInfo = phd.getVPeak().get(curRow);
List<String> peakNuclides = peakInfo.nuclides;
if (peakNuclides.indexOf(nuclideName) < 0 ) {
peakNuclides.add(nuclideName);
}
// todo 添加核素需要把deletedNuclideMap中对应的核素删除
List<String> deletedNuclide = peakInfo.deletedNuclideMap.get(peakInfo.energy);
if (null != deletedNuclide) {
deletedNuclide.remove(nuclideName);
}
// 查询当前用户所关心的核素名称
Map<String, NuclideLines> mapNucLines = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type());
//用户当前缓存的核素信息
@ -1761,6 +1764,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
//如果峰的核素名称中包含当前删除的核素
if (peakInfo.nuclides.contains(nuclideName)) {
peakInfo.nuclides.remove(nuclideName);
List<String> deletedNuclide = peakInfo.deletedNuclideMap.get(energy);
if (null == deletedNuclide) {
deletedNuclide = new ArrayList<>();
}
deletedNuclide.add(nuclideName);
peakInfo.deletedNuclideMap.put(peakInfo.energy, deletedNuclide);
}
}
//从核素相关map中移除核素信息
@ -1779,8 +1788,15 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
// 更新峰信息列表和表格
// 根据核素名称获取对应的下标并从list_identifyphd.getVPeak()移除
list_identify.remove(index);
PeakInfo peakInfo = phd.getVPeak().get(curRow);
int peakNuclIndex = phd.getVPeak().get(curRow).nuclides.indexOf(nuclideName);
phd.getVPeak().get(curRow).nuclides.remove(peakNuclIndex);
List<String> deletedNuclide = peakInfo.deletedNuclideMap.get(energy);
if (null == deletedNuclide) {
deletedNuclide = new ArrayList<>();
}
deletedNuclide.add(nuclideName);
peakInfo.deletedNuclideMap.put(peakInfo.energy, deletedNuclide);
List<PeakInfo> vPeak = gammaFileUtil.InitPeakTable(phd.getVPeak());
// 处理核素MDAMDC
gammaFileUtil.ReCalcMdaMdc(phd, nuclideName, curRow + 1);