修改自动处理程序gamma部分峰对应核素内容错误问题

修改自动处理程序gamma部分启动时缓存核素信息格式错误问题
修改自动处理程序gamma部分存储峰对应核素信息错误问题
This commit is contained in:
qiaoqinzheng 2023-11-21 16:14:24 +08:00
parent 39ef3f14c0
commit b3f9c7d3fb
7 changed files with 55 additions and 47 deletions

View File

@ -130,12 +130,12 @@ public class Sample_G_Analysis {
sampleFilePath.substring(0, sampleFilePath.lastIndexOf(StringPool.SLASH)); sampleFilePath.substring(0, sampleFilePath.lastIndexOf(StringPool.SLASH));
String fileName = sampleFilePath.substring(sampleFilePath.lastIndexOf(StringPool.SLASH)+1); String fileName = sampleFilePath.substring(sampleFilePath.lastIndexOf(StringPool.SLASH)+1);
// 解析能谱文件
boolean flag = gammaFileUtil.loadFile(pathName, fileName, phdFile, new Result());
// 获取数据库 Gamma 默认参数 // 获取数据库 Gamma 默认参数
getSettingFromDB(phdFile); getSettingFromDB(phdFile);
// 解析能谱文件
boolean flag = gammaFileUtil.loadFile(pathName, fileName, phdFile, new Result());
// 文件路径 // 文件路径
middleData.setAnalyses_save_filePath(this.sampleInputFilename); middleData.setAnalyses_save_filePath(this.sampleInputFilename);
// 读取文件内容并附值 // 读取文件内容并附值
@ -699,8 +699,7 @@ public class Sample_G_Analysis {
String nuclideName = entry.getKey(); String nuclideName = entry.getKey();
GStoreMiddleProcessDataNuclLinesIded nuclLinesIded = entry.getValue(); GStoreMiddleProcessDataNuclLinesIded nuclLinesIded = entry.getValue();
GardsNuclLinesIded gardsNuclLinesIded = new GardsNuclLinesIded(); GardsNuclLinesIded gardsNuclLinesIded = new GardsNuclLinesIded();
List<GardsNuclLinesIded> gardsNuclLinesIdeds = List<GardsNuclLinesIded> gardsNuclLinesIdeds = mapFields(nuclLinesIded, gardsNuclLinesIded, base_IdPeak, fieldMap);
mapFields(nuclLinesIded, gardsNuclLinesIded, base_IdPeak, fieldMap);
if (CollUtil.isNotEmpty(gardsNuclLinesIdeds)){ if (CollUtil.isNotEmpty(gardsNuclLinesIdeds)){
for (GardsNuclLinesIded ided : gardsNuclLinesIdeds) { for (GardsNuclLinesIded ided : gardsNuclLinesIdeds) {
ided.setSampleId(sampleId); ided.setSampleId(sampleId);

View File

@ -3476,8 +3476,8 @@ public class GammaFileUtil extends AbstractLogOrReport {
middleData.peaks_Nuclide_name = dvctNuclide_name; middleData.peaks_Nuclide_name = dvctNuclide_name;
} }
// gards_ nucl_lines_ided数据表 // gards_ nucl_lines_ided数据表
GStoreMiddleProcessDataNuclLinesIded nucl_lines_ided_data = new GStoreMiddleProcessDataNuclLinesIded();
for(Map.Entry<String, NuclideActMda> itor:fileAnlyse.getMapNucActMda().entrySet()) { for(Map.Entry<String, NuclideActMda> itor:fileAnlyse.getMapNucActMda().entrySet()) {
GStoreMiddleProcessDataNuclLinesIded nucl_lines_ided_data = new GStoreMiddleProcessDataNuclLinesIded();
List<String> svctNUCLIDEFULLNAME = new LinkedList<>(); List<String> svctNUCLIDEFULLNAME = new LinkedList<>();
List<String> dvctIDPEAK = new LinkedList<>(); List<String> dvctIDPEAK = new LinkedList<>();
List<Double> dvctENERGY = new LinkedList<>(); List<Double> dvctENERGY = new LinkedList<>();

View File

@ -4,8 +4,10 @@ import java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib; import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib;
import org.jeecg.modules.entity.vo.NuclideLine;
public interface GardsNuclLinesLibMapper extends BaseMapper<GardsNuclLinesLib> { public interface GardsNuclLinesLibMapper extends BaseMapper<GardsNuclLinesLib> {
List<NuclideLine> getNuclideLines(@Param(value = "name") String name);
} }

View File

@ -2,4 +2,14 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.mapper.GardsNuclLinesLibMapper"> <mapper namespace="org.jeecg.modules.mapper.GardsNuclLinesLibMapper">
<select id="getNuclideLines" resultType="org.jeecg.modules.entity.vo.NuclideLine">
SELECT FULLNAME as fullName,
ENERGY as energy,
ENERGY_UNCERT as energyUncert,
YIELD as yield,
YIELD_UNCERT as yieldUncert,
KEY_FLAG as keyFlag
from CONFIGURATION.GARDS_NUCL_LINES_LIB WHERE NAME = #{name} ORDER BY ENERGY
</select>
</mapper> </mapper>

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib; import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib;
import org.jeecg.modules.base.entity.postgre.SysDefaultNuclide; import org.jeecg.modules.base.entity.postgre.SysDefaultNuclide;
import org.jeecg.modules.entity.vo.NuclideLines;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -21,7 +22,7 @@ public interface ISysDefaultNuclideService extends IService<SysDefaultNuclide> {
Result<?> add(List<String> nuclideNames,String nuclideType,Integer useType); Result<?> add(List<String> nuclideNames,String nuclideType,Integer useType);
Map<String,List<GardsNuclLinesLib>> mapLines(String nuclideType); Map<String, NuclideLines> mapLines(String nuclideType);
void mapLines2Redis(); void mapLines2Redis();
} }

View File

@ -7,6 +7,8 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib; import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib;
import org.jeecg.modules.entity.vo.HalfData;
import org.jeecg.modules.entity.vo.NuclideLine;
import org.jeecg.modules.entity.vo.NuclideLines; import org.jeecg.modules.entity.vo.NuclideLines;
import org.jeecg.modules.mapper.GardsNuclLinesLibMapper; import org.jeecg.modules.mapper.GardsNuclLinesLibMapper;
import org.jeecg.modules.service.IGardsNuclLibService; import org.jeecg.modules.service.IGardsNuclLibService;
@ -16,9 +18,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@ -60,41 +60,37 @@ public class GardsNuclLinesLibServiceImpl extends ServiceImpl<GardsNuclLinesLibM
result = allNuclide.stream().collect(Collectors.groupingBy(GardsNuclLinesLib::getName)); result = allNuclide.stream().collect(Collectors.groupingBy(GardsNuclLinesLib::getName));
return result; return result;
} }
@Override @Override
public Map<String, NuclideLines> defaultLines(List<String> nuclideNames) { public Map<String, NuclideLines> defaultLines(List<String> nuclideNames) {
Map<String, NuclideLines> result = new HashMap<>(); Map<String, NuclideLines> mapLines = new HashMap<>();
LambdaQueryWrapper<GardsNuclLinesLib> wrapper = new LambdaQueryWrapper<>(); if (nuclideNames.size() < 1) {
wrapper.in(GardsNuclLinesLib::getName, nuclideNames); return mapLines;
// 获取GardsNuclLinesLib核素数据 }
List<GardsNuclLinesLib> allNuclide = list(wrapper);
Map<String, Double> halfLife = nuclLibService.halfLife(nuclideNames); Map<String, Double> halfLife = nuclLibService.halfLife(nuclideNames);
for (String name : nuclideNames) {
// 按照 QT源代码 处理数据 NuclideLines nlines = new NuclideLines();
for (int i = 0; i < allNuclide.size(); i++) { List<NuclideLine> nuclideLineList = this.baseMapper.getNuclideLines(name);
NuclideLines nuclideLines; for (int j = 0; j < nuclideLineList.size(); j++) {
GardsNuclLinesLib lib = allNuclide.get(i); nlines.getFullNames().add(nuclideLineList.get(j).getFullName());
nuclideLines = result.containsKey(lib.getName()) ? result.get(lib.getName()) : new NuclideLines(); nlines.getVenergy().add(nuclideLineList.get(j).getEnergy());
nlines.getVuncertE().add(nuclideLineList.get(j).getEnergyUncert());
nuclideLines.getFullNames().add(lib.getFullName()); nlines.getVyield().add(nuclideLineList.get(j).getYield() / 100);
nuclideLines.getVenergy().add(lib.getEnergy()); nlines.getVuncertY().add(nuclideLineList.get(j).getYieldUncert());
nuclideLines.getVuncertE().add(lib.getEnergyUncert()); if (Objects.nonNull(nuclideLineList.get(j).getKeyFlag()) && nuclideLineList.get(j).getKeyFlag().intValue() > 0) {
nuclideLines.getVyield().add(lib.getYield() / 100); nlines.key_flag = j;
nuclideLines.getVuncertY().add(lib.getYieldUncert()); nlines.maxYeildIdx = j;
}
int keyFlag = lib.getKeyFlag(); }
if (keyFlag > 0){ Double half = halfLife.get(name);
int index = nuclideNames.indexOf(lib.getName()); if (Objects.isNull(half)) {
nuclideLines.setKey_flag(index); half = 0.0;
nuclideLines.setMaxYeildIdx(index); } else {
} half = half * 86400;
}
String name = lib.getName(); nlines.setHalflife(half);
Double day = halfLife.get(name); mapLines.put(name, nlines);
if (ObjectUtil.isNotNull(day)) }
nuclideLines.setHalflife(day * 86400); return mapLines;
result.put(lib.getName(), nuclideLines);
}
return result;
} }
} }

View File

@ -80,14 +80,14 @@ public class SysDefaultNuclideServiceImpl extends ServiceImpl<SysDefaultNuclideM
} }
@Override @Override
public Map<String,List<GardsNuclLinesLib>> mapLines(String nuclideType) { public Map<String,NuclideLines> mapLines(String nuclideType) {
List<String> nuclideTypes = ListUtil.toList("G","P"); List<String> nuclideTypes = ListUtil.toList("G","P");
Map<String,List<GardsNuclLinesLib>> mapLines = MapUtil.newHashMap(); Map<String,NuclideLines> mapLines = MapUtil.newHashMap();
if (!nuclideTypes.contains(nuclideType)) if (!nuclideTypes.contains(nuclideType))
return mapLines; return mapLines;
String key = RedisConstant.NUCLIDE_LINES_LIB + nuclideType; String key = RedisConstant.NUCLIDE_LINES_LIB + nuclideType;
if (redisUtil.hasKey(key)) if (redisUtil.hasKey(key))
return (Map<String,List<GardsNuclLinesLib>>)redisUtil.get(key); return (Map<String,NuclideLines>)redisUtil.get(key);
LambdaQueryWrapper<SysDefaultNuclide> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysDefaultNuclide> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysDefaultNuclide::getUseType,1); wrapper.eq(SysDefaultNuclide::getUseType,1);
wrapper.eq(SysDefaultNuclide::getNuclideType,nuclideType); wrapper.eq(SysDefaultNuclide::getNuclideType,nuclideType);
@ -96,7 +96,7 @@ public class SysDefaultNuclideServiceImpl extends ServiceImpl<SysDefaultNuclideM
.map(SysDefaultNuclide::getNuclideName) .map(SysDefaultNuclide::getNuclideName)
.filter(StrUtil::isNotBlank) .filter(StrUtil::isNotBlank)
.collect(Collectors.toList()); .collect(Collectors.toList());
mapLines = nuclLinesLibService.mapLines(nuclideNames); mapLines = nuclLinesLibService.defaultLines(nuclideNames);
redisUtil.set(key,mapLines); redisUtil.set(key,mapLines);
return mapLines; return mapLines;
} }