人工交互,自动处理启动时查询全核素信息方法修改

This commit is contained in:
qiaoqinzheng 2024-01-12 15:56:16 +08:00
parent 63576edde8
commit 16f59f0273
3 changed files with 29 additions and 36 deletions

View File

@ -18,10 +18,8 @@ public interface GardsNuclLibMapper extends BaseMapper<GardsNuclLib> {
List<GardsNuclLib> getNucliLib(); List<GardsNuclLib> getNucliLib();
List<String> findNuclidesAnalysis(); List<HalfData> findNuclidesAnalysis();
List<NuclideLine> getNuclideLines(@Param("name") String name); List<NuclideLine> getNuclideLines();
HalfData getOneHalf(@Param("name") String name);
} }

View File

@ -26,27 +26,19 @@
select a.NAME, a.num_lines, a.halflife, a.halflife_err from CONFIGURATION.GARDS_NUCL_LIB a select a.NAME, a.num_lines, a.halflife, a.halflife_err from CONFIGURATION.GARDS_NUCL_LIB a
</select> </select>
<select id="findNuclidesAnalysis" resultType="java.lang.String"> <select id="findNuclidesAnalysis" resultType="org.jeecg.modules.entity.vo.HalfData">
select NAME from CONFIGURATION.GARDS_NUCL_LIB select NAME as name, HALFLIFE as half from CONFIGURATION.GARDS_NUCL_LIB
</select> </select>
<select id="getNuclideLines" resultType="org.jeecg.modules.entity.vo.NuclideLine"> <select id="getNuclideLines" resultType="org.jeecg.modules.entity.vo.NuclideLine">
SELECT FULLNAME as fullName, SELECT NAME as name,
FULLNAME as fullName,
ENERGY as energy, ENERGY as energy,
ENERGY_UNCERT as energyUncert, ENERGY_UNCERT as energyUncert,
YIELD as yield, YIELD as yield,
YIELD_UNCERT as yieldUncert, YIELD_UNCERT as yieldUncert,
KEY_FLAG as keyFlag KEY_FLAG as keyFlag
from CONFIGURATION.GARDS_NUCL_LINES_LIB WHERE NAME = #{name} ORDER BY ENERGY from CONFIGURATION.GARDS_NUCL_LINES_LIB ORDER BY NAME,ENERGY
</select>
<select id="getOneHalf" resultType="org.jeecg.modules.entity.vo.HalfData">
SELECT
NAME as name,
HALFLIFE as half
FROM
CONFIGURATION.GARDS_NUCL_LIB
WHERE NAME = #{name}
</select> </select>
</mapper> </mapper>

View File

@ -60,38 +60,41 @@ public class GardsNuclLibServiceImpl extends ServiceImpl<GardsNuclLibMapper, Gar
@Override @Override
public void getNuclideMap() { public void getNuclideMap() {
List<String> nuclideLibs = this.baseMapper.findNuclidesAnalysis(); Map<String, NuclideLines> nuclideMap = GetNuclideLines();
Map<String, NuclideLines> nuclideMap = GetNuclideLines(nuclideLibs);
redisUtil.set("AllNuclideMap", nuclideMap); redisUtil.set("AllNuclideMap", nuclideMap);
} }
public Map<String, NuclideLines> GetNuclideLines(List<String> nuclideList) { public Map<String, NuclideLines> GetNuclideLines() {
List<HalfData> nuclideList = this.baseMapper.findNuclidesAnalysis();
Map<String, NuclideLines> mapLines = new HashMap<>(); Map<String, NuclideLines> mapLines = new HashMap<>();
if (nuclideList.size() < 1) { if (nuclideList.size() < 1) {
return mapLines; return mapLines;
} }
for (String name : nuclideList) { List<NuclideLine> nuclideLineList = this.baseMapper.getNuclideLines();
NuclideLines nlines = new NuclideLines(); for (HalfData half : nuclideList) {
List<NuclideLine> nuclideLineList = this.baseMapper.getNuclideLines(name); String name = half.getName();
for (int j = 0; j < nuclideLineList.size(); j++) { NuclideLines nlines = null;
nlines.getFullNames().add(nuclideLineList.get(j).getFullName()); //判断map里是否存在当前名称的核素信息
nlines.getVenergy().add(nuclideLineList.get(j).getEnergy()); if (Objects.isNull(mapLines.get(name))) {
nlines.getVuncertE().add(nuclideLineList.get(j).getEnergyUncert()); nlines = new NuclideLines();
nlines.getVyield().add(nuclideLineList.get(j).getYield() / 100); nlines.setHalflife(half.getHalf() == null ? 0 : half.getHalf() * 86400);// 将天转换成秒
nlines.getVuncertY().add(nuclideLineList.get(j).getYieldUncert()); } else {
if (Objects.nonNull(nuclideLineList.get(j).getKeyFlag()) && nuclideLineList.get(j).getKeyFlag().intValue() > 0) { nlines = mapLines.get(name);
}
List<NuclideLine> filterList = nuclideLineList.stream().filter(item -> item.getName().equals(name)).collect(Collectors.toList());
for (int j = 0; j < filterList.size(); j++) {
nlines.getFullNames().add(filterList.get(j).getFullName());
nlines.getVenergy().add(filterList.get(j).getEnergy());
nlines.getVuncertE().add(filterList.get(j).getEnergyUncert());
nlines.getVyield().add(filterList.get(j).getYield() / 100);
nlines.getVuncertY().add(filterList.get(j).getYieldUncert());
if (Objects.nonNull(filterList.get(j).getKeyFlag()) && filterList.get(j).getKeyFlag().intValue() > 0) {
nlines.key_flag = j; nlines.key_flag = j;
nlines.maxYeildIdx = j; nlines.maxYeildIdx = j;
} }
} }
mapLines.put(name, nlines); mapLines.put(name, nlines);
} }
for (String name:nuclideList) {
HalfData half = this.baseMapper.getOneHalf(name);
NuclideLines nuclideLines = mapLines.get(half.getName());
nuclideLines.setHalflife(half.getHalf() == null ? 0 : half.getHalf() * 86400);// 将天转换成秒
mapLines.put(half.getName(), nuclideLines);
}
return mapLines; return mapLines;
} }