diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/native_jni/struct/EnergySpectrumStruct.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/native_jni/struct/EnergySpectrumStruct.java index ec50dd3c..0c3661d4 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/native_jni/struct/EnergySpectrumStruct.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/native_jni/struct/EnergySpectrumStruct.java @@ -102,12 +102,12 @@ public class EnergySpectrumStruct { /* * 坐标: 经度值 * */ - public double longitude; + public double lon; /* * 坐标: 纬度值 * */ - public double latitude; + public double lat; /************************* Collection Block ******************/ diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/SelfStationController.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/SelfStationController.java index 88591869..19e1e0c1 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/SelfStationController.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/SelfStationController.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiOperation; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.vo.ChangeData; import org.jeecg.modules.entity.vo.FittingBody; +import org.jeecg.modules.entity.vo.UserLibraryInfo; import org.jeecg.modules.service.ISelfStationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -184,5 +185,21 @@ public class SelfStationController { return selfStationService.fitting(fittingBody.getParamA(), fittingBody.getParamB(), fittingBody.getParamC(), fittingBody.getTempPoints(), fittingBody.getCount(), fittingBody.getSampleFileName(), fittingBody.getTabName(), fittingBody.isFittingBtn(), request); } + @GetMapping("NuclideLibrary") + @ApiOperation(value = "查看Nuclide Library页面数据", notes = "查看Nuclide Library页面数据") + public Result NuclideLibrary(Integer sampleId, String fileName, String editEnergy, double err, String libraryName, String nuclideName, HttpServletRequest request) { + return selfStationService.NuclideLibrary(sampleId, fileName, editEnergy, err, libraryName, nuclideName, request); + } + @GetMapping("configUserLibrary") + @ApiOperation(value = "查看Config Nuclide Library页面数据", notes = "查看Config Nuclide Library页面数据") + public Result configUserLibrary(Integer sampleId, String fileName, HttpServletRequest request) { + return selfStationService.configUserLibrary(sampleId, fileName, request); + } + + @PostMapping("saveUserLibrary") + @ApiOperation(value = "Config User Library页面save按钮", notes = "Config User Library页面save按钮") + public Result saveUserLibrary(@RequestBody UserLibraryInfo userLibraryInfo, HttpServletRequest request) { + return selfStationService.saveUserLibrary(userLibraryInfo.getUserLibraryName(), userLibraryInfo.getFileName(), request); + } } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SysDefaultNuclideSpectrumMapper.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SysDefaultNuclideSpectrumMapper.java index 783aec41..199f3e5c 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SysDefaultNuclideSpectrumMapper.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SysDefaultNuclideSpectrumMapper.java @@ -8,8 +8,12 @@ import java.util.List; public interface SysDefaultNuclideSpectrumMapper extends BaseMapper { - List findNuclidesByUserName(@Param(value = "userName") String userName, @Param(value = "systemType") String systemType); + List findNuclidesByUserName(@Param(value = "userName") String userName, + @Param(value = "systemType") String systemType, + @Param("useType") Integer useType); - void deleteNuclidesByUserName(@Param(value = "userName") String userName, @Param(value = "systemType") String systemType); + void deleteNuclidesByUserName(@Param(value = "userName") String userName, + @Param(value = "systemType") String systemType, + @Param("useType") Integer useType); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SysDefaultNuclideSpectrumMapper.xml b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SysDefaultNuclideSpectrumMapper.xml index 766d47b0..69f838b5 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SysDefaultNuclideSpectrumMapper.xml +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SysDefaultNuclideSpectrumMapper.xml @@ -7,7 +7,7 @@ nuclide_name from sys_default_nuclide - where use_type = 3 + where use_type = #{useType} and nuclide_type = #{systemType} and create_by = #{userName} @@ -15,7 +15,7 @@ delete from sys_default_nuclide - where use_type = 3 + where use_type = #{useType} and nuclide_type = #{systemType} and create_by = #{userName} diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISelfStationService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISelfStationService.java index 9f28d12a..911e91de 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISelfStationService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISelfStationService.java @@ -67,4 +67,9 @@ public interface ISelfStationService { Result fitting(Double paramA, Double paramB, Double paramC, List tempPointsArray, Integer count, String sampleFileName, String tabName, boolean fittingBtn, HttpServletRequest request); + Result NuclideLibrary(Integer sampleId, String fileName, String editEnergy, double err, String libraryName, String nuclideName, HttpServletRequest request); + + Result configUserLibrary(Integer sampleId, String fileName, HttpServletRequest request); + + Result saveUserLibrary(List userLibraryName, String fileName, HttpServletRequest request); } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISysDefaultNuclideSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISysDefaultNuclideSpectrumService.java index 481138e9..146a9537 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISysDefaultNuclideSpectrumService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISysDefaultNuclideSpectrumService.java @@ -7,8 +7,8 @@ import java.util.List; public interface ISysDefaultNuclideSpectrumService extends IService { - List findNuclidesByUserName(String userName, String systemType); + List findNuclidesByUserName(String userName, String systemType, Integer useType); - boolean saveNuclidesByUserName(List userLibraryName, String userName, String systemType); + boolean saveNuclidesByUserName(List userLibraryName, String userName, String systemType, Integer useType); } 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 42f90b0b..55761b08 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 @@ -212,9 +212,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 - userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, phd.getHeader().getSystem_type().toUpperCase()); + userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, phd.getHeader().getSystem_type().toUpperCase(), 3); if (CollectionUtils.isEmpty(userLib)) { - userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); + userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase(), 3); } userLib = userLib.stream().sorted().collect(Collectors.toList()); Map nuclideMap = new HashMap<>(); @@ -623,9 +623,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 - userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, phd.getHeader().getSystem_type().toUpperCase()); + userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, phd.getHeader().getSystem_type().toUpperCase(), 3); if (CollectionUtils.isEmpty(userLib)) { - userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); + userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase(), 3); } userLib = userLib.stream().sorted().collect(Collectors.toList()); Map nuclideMap = new HashMap<>(); @@ -3825,7 +3825,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi return result; } userLibraryName = userLibraryName.stream().distinct().collect(Collectors.toList()); - boolean save = defaultNuclideSpectrumService.saveNuclidesByUserName(userLibraryName, userName, phd.getHeader().getSystem_type().toUpperCase()); + boolean save = defaultNuclideSpectrumService.saveNuclidesByUserName(userLibraryName, userName, phd.getHeader().getSystem_type().toUpperCase(), 3); if (save) { result.success("Modified successfully!"); // 重新计算峰值 @@ -3833,9 +3833,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 - userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, phd.getHeader().getSystem_type().toUpperCase()); + userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, phd.getHeader().getSystem_type().toUpperCase(), 3); if (CollectionUtils.isEmpty(userLib)) { - userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); + userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase(), 3); } Map nuclideMap = new HashMap<>(); for (Map.Entry entry:allNuclideMap.entrySet()) { diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SelfStationServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SelfStationServiceImpl.java index b57101ae..fb3158af 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SelfStationServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SelfStationServiceImpl.java @@ -1,6 +1,8 @@ package org.jeecg.modules.service.impl; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringUtils; @@ -8,11 +10,14 @@ import com.google.common.cache.Cache; import com.google.common.collect.Maps; import org.apache.commons.io.FileUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.cache.LocalCache; import org.jeecg.common.cache.SelfCache; import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.util.*; +import org.jeecg.modules.base.entity.configuration.GardsNuclLib; +import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib; import org.jeecg.modules.base.entity.original.GardsSampleData; import org.jeecg.modules.entity.vo.*; import org.jeecg.modules.mapper.SpectrumAnalysisMapper; @@ -20,6 +25,7 @@ import org.jeecg.modules.native_jni.CalValuesHandler; import org.jeecg.modules.native_jni.EnergySpectrumHandler; import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct; import org.jeecg.modules.service.ISelfStationService; +import org.jeecg.modules.service.ISysDefaultNuclideSpectrumService; import org.jeecg.modules.service.ISysUserColorService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,6 +35,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; +import java.text.DecimalFormat; +import java.text.NumberFormat; import java.util.*; import java.util.stream.Collectors; @@ -53,6 +61,10 @@ public class SelfStationServiceImpl implements ISelfStationService { private SelfCache selfStationCache; @Autowired private SpectrumAnalysisMapper spectrumAnalysisMapper; + @Autowired + private LocalCache localCache; + @Autowired + private ISysDefaultNuclideSpectrumService defaultNuclideSpectrumService; @Override public void initValue(String dbName, Integer sampleId, String analyst, String sampleFileName, String detFileName, @@ -141,6 +153,30 @@ public class SelfStationServiceImpl implements ISelfStationService { resultMap.put("det", map); } } + if (ObjectUtil.isNotNull(selfStationData.getSampleStruct())){ + String systemType = selfStationData.getSampleStruct().getSystem_type(); + if (!redisUtil.hasKey(userName+StringPool.DASH+systemType + "-self") + || !redisUtil.hasKey(userName+StringPool.DASH+systemType+"-list-self")) { + //读取缓存的全部核素信息 + Map allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); + // 查询当前用户关联的核素信息 + List userLib = new LinkedList<>(); + // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 + userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, systemType, 5); + if (CollectionUtils.isEmpty(userLib)) { + userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", systemType, 5); + } + userLib = userLib.stream().sorted().collect(Collectors.toList()); + Map nuclideMap = new HashMap<>(); + for (Map.Entry entry:allNuclideMap.entrySet()) { + if (userLib.contains(entry.getKey())) { + nuclideMap.put(entry.getKey(), entry.getValue()); + } + } + redisUtil.set(userName+StringPool.DASH+systemType+"-list-self", userLib); + redisUtil.set(userName+StringPool.DASH+systemType+"-self", nuclideMap); + } + } } else { if (Objects.nonNull(sample)) { //返回结果map @@ -226,6 +262,30 @@ public class SelfStationServiceImpl implements ISelfStationService { resultMap.put("qc", map); } } + if (ObjectUtil.isNotNull(selfStationData.getSampleStruct())){ + String systemType = selfStationData.getSampleStruct().getSystem_type(); + if (!redisUtil.hasKey(userName+StringPool.DASH+systemType + "-self") + || !redisUtil.hasKey(userName+StringPool.DASH+systemType+"-list-self")) { + //读取缓存的全部核素信息 + Map allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); + // 查询当前用户关联的核素信息 + List userLib = new LinkedList<>(); + // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 + userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, systemType, 5); + if (CollectionUtils.isEmpty(userLib)) { + userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", systemType, 5); + } + userLib = userLib.stream().sorted().collect(Collectors.toList()); + Map nuclideMap = new HashMap<>(); + for (Map.Entry entry:allNuclideMap.entrySet()) { + if (userLib.contains(entry.getKey())) { + nuclideMap.put(entry.getKey(), entry.getValue()); + } + } + redisUtil.set(userName+StringPool.DASH+systemType+"-list-self", userLib); + redisUtil.set(userName+StringPool.DASH+systemType+"-self", nuclideMap); + } + } } else { if (StringUtils.isNotBlank(sampleFileName)) { //返回结果map @@ -1682,7 +1742,7 @@ public class SelfStationServiceImpl implements ISelfStationService { "2. You didn't change any setting or calibration."; result.error500(warning); } else if (flag == -1) { - Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phdOne.getHeader().getSystem_type()); + Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phdOne.getHeader().getSystem_type()+"-self"); //分析时将phd的核素map重置 phdOne.setPhdNuclideMap(nuclideLinesMap); //重新计算核素的活度浓度 @@ -1699,7 +1759,7 @@ public class SelfStationServiceImpl implements ISelfStationService { "\t3.Test QC again."; result.error500(warning); } else { - Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phdOne.getHeader().getSystem_type()); + Map nuclideLinesMap = (Map) redisUtil.get(userName+StringPool.DASH+phdOne.getHeader().getSystem_type()+"-self"); try { Map gammaResult = Maps.newHashMap(); @@ -1925,6 +1985,246 @@ public class SelfStationServiceImpl implements ISelfStationService { return result; } + @Override + @DS("ora") + public Result NuclideLibrary(Integer sampleId, String fileName, String editEnergy, double err, String libraryName, String nuclideName, HttpServletRequest request) { + Result result = new Result(); + Map map = new HashMap<>(); + String userName = JwtUtil.getUserNameByToken(request); + Cache selfCache = selfStationCache.getSelfCache(); + SelfStationData selfStationData = selfCache.getIfPresent(fileName + StringPool.DASH + userName); + if (Objects.isNull(selfStationData)) { + result.error500("Please select the parse file first!"); + return result; + } + String systemType = selfStationData.getSampleStruct().getSystem_type(); + List nuclides = new LinkedList<>(); + // 判断传入的数据是否都不为空 + if (org.apache.commons.lang3.StringUtils.isNotBlank(editEnergy) && Objects.nonNull(err)) { + double editEnergyDou = Double.valueOf(editEnergy); + double min = editEnergyDou - err; + double max = editEnergyDou + err; + if (libraryName.equals("UserLibrary")) { + //获取缓存的核素信息 + Map nuclideMap = (Map) redisUtil.get(userName+StringPool.DASH+systemType+"-self"); + //判断缓存的核素信息是否为空 + if (CollectionUtils.isNotEmpty(nuclideMap)) { + //遍历核素信息 + for (Map.Entry entry:nuclideMap.entrySet()) { + //获取核素的关联信息 + NuclideLines nuclideLines = entry.getValue(); + //获取核素关联的全部能量信息 + List venergy = nuclideLines.getVenergy(); + //遍历能量 + for (int i=0; i min && venergy.get(i) < max) { + nuclides.add(entry.getKey()); + break; + } + } + } + } + } else if (libraryName.equals("FULLLibrary")) { + nuclides = spectrumAnalysisMapper.getFULLNuclideNames(min, max); + } else if (libraryName.equals("RelevantLibrary")) { + nuclides = spectrumAnalysisMapper.getRelevantNuclideNames(min, max); + } + } else { + if (libraryName.equals("UserLibrary")) { + //redis中获取缓存的用户关注核素信息 + nuclides = (List)redisUtil.get(userName+StringPool.DASH+systemType+"-list-self"); + } else if (libraryName.equals("FULLLibrary")) { + nuclides = spectrumAnalysisMapper.getNuclideNames("CONFIGURATION.GARDS_NUCL_LIB"); + } else if (libraryName.equals("RelevantLibrary")) { + nuclides = spectrumAnalysisMapper.getNuclideNames("CONFIGURATION.GARDS_RELEVANT_NUCLIDE"); + } + } + map.put("nuclides", nuclides); + if (org.apache.commons.lang3.StringUtils.isBlank(nuclideName)) { + nuclideName = nuclides.get(0); + } + List nuclLinesLibs = InitNuclideLine(editEnergy, err, nuclideName); + map.put("nuclLinesLibs", nuclLinesLibs); + Map nuclideInfo = InitNuclideInfo(nuclideName); + map.put("nuclideInfo", nuclideInfo); + Map daughter = InitParentAndDaughter(nuclideName); + map.put("daughter", daughter); + result.setSuccess(true); + result.setResult(map); + return result; + } + + public List InitNuclideLine(String editEnergy, double err, String name) { + Double min = null; + Double max = null; + if (org.apache.commons.lang3.StringUtils.isNotBlank(editEnergy) && Objects.nonNull(err)) { + double editEnergyDou = Double.valueOf(editEnergy); + min = editEnergyDou - err; + max = editEnergyDou + err; + } + List nuclideLines = spectrumAnalysisMapper.getNuclideLine(min, max, name); + nuclideLines.stream().forEach(item -> { + if (Objects.nonNull(item.getYield())) { + item.setYield(Double.valueOf(String.format("%.3f", item.getYield()))); + } + if (Objects.nonNull(item.getYieldUncert())) { + item.setYieldUncert(Double.valueOf(String.format("%.3f", item.getYieldUncert()))); + } + }); + return nuclideLines; + } + + public Map InitNuclideInfo(String name) { + Map map = new HashMap<>(); + GardsNuclLib nuclideInfo = spectrumAnalysisMapper.getNuclideInfo(name); + if (Objects.nonNull(nuclideInfo)) { + Long numLines = nuclideInfo.getNumLines(); + map.put("lab_lines", numLines.toString()); + if (Objects.isNull(nuclideInfo.getHalflife())) { + map.put("lab_halfLife", ""); + } else { + String units = "D"; + double halflife = nuclideInfo.getHalflife().doubleValue(); + if (halflife >= 1000) { + halflife = halflife / 365.25; + units = "A"; + } else if (halflife < 0.1 && halflife >= 1.0 / 1440.0) { + halflife = halflife * 1440.0; + units = "M"; + } else if (halflife <= 1.0 / 1440.0 && halflife > 0.0) { + halflife = halflife * 86400.0; + units = "S"; + } + char flag = 'f'; + if (halflife >= 1000) { + flag = 'e'; + } + if (flag == 'f') { + map.put("lab_halfLife", String.format("%.3f", halflife) + units); + } else if (flag == 'e') { + NumberFormat numberFormat = new DecimalFormat("0.###E0"); + String formatNum = numberFormat.format(halflife); + map.put("lab_halfLife", formatNum + units); + } + } + if (Objects.isNull(nuclideInfo.getHalflifeErr())) { + map.put("lab_halfLifeErr", ""); + } else { + map.put("lab_halfLifeErr", String.format("%.3f", nuclideInfo.getHalflifeErr().doubleValue()) + "%"); + } + } + return map; + } + + public Map InitParentAndDaughter(String name) { + Map map = new HashMap<>(); + GardsNuclLib parentAndDaughter = spectrumAnalysisMapper.getParentAndDaughter(name); + List parentList = new LinkedList<>(); + if (Objects.nonNull(parentAndDaughter)) { + parentList.add(parentAndDaughter.getParents1()); + parentList.add(parentAndDaughter.getParents2()); + parentList.add(parentAndDaughter.getParents3()); + parentList.add(parentAndDaughter.getParents4()); + parentList.add(parentAndDaughter.getParents5()); + parentList.add(parentAndDaughter.getParents6()); + map.put("list_parent", parentList); + List daughterList = new LinkedList<>(); + TableDaughter tableDaughter1 = new TableDaughter(); + tableDaughter1.setDaughters(parentAndDaughter.getDaughters1()); + tableDaughter1.setBranchingratios(String.format("%.2f", parentAndDaughter.getBranchingratios1().doubleValue()) + "%"); + tableDaughter1.setDaughtersstable(parentAndDaughter.getDaughtersstable1().intValue() == 1 ? "Stable" : "Unstable"); + daughterList.add(tableDaughter1); + TableDaughter tableDaughter2 = new TableDaughter(); + tableDaughter2.setDaughters(parentAndDaughter.getDaughters2()); + tableDaughter2.setBranchingratios(String.format("%.2f", parentAndDaughter.getBranchingratios2().doubleValue()) + "%"); + tableDaughter2.setDaughtersstable(parentAndDaughter.getDaughtersstable2().intValue() == 1 ? "Stable" : "Unstable"); + daughterList.add(tableDaughter2); + TableDaughter tableDaughter3 = new TableDaughter(); + tableDaughter3.setDaughters(parentAndDaughter.getDaughters3()); + tableDaughter3.setBranchingratios(String.format("%.2f", parentAndDaughter.getBranchingratios3().doubleValue()) + "%"); + tableDaughter3.setDaughtersstable(parentAndDaughter.getDaughtersstable3().intValue() == 1 ? "Stable" : "Unstable"); + daughterList.add(tableDaughter3); + TableDaughter tableDaughter4 = new TableDaughter(); + tableDaughter4.setDaughters(parentAndDaughter.getDaughters4()); + tableDaughter4.setBranchingratios(String.format("%.2f", parentAndDaughter.getBranchingratios4().doubleValue()) + "%"); + tableDaughter4.setDaughtersstable(parentAndDaughter.getDaughtersstable4().intValue() == 1 ? "Stable" : "Unstable"); + daughterList.add(tableDaughter4); + TableDaughter tableDaughter5 = new TableDaughter(); + tableDaughter5.setDaughters(parentAndDaughter.getDaughters5()); + tableDaughter5.setBranchingratios(String.format("%.2f", parentAndDaughter.getBranchingratios5().doubleValue()) + "%"); + tableDaughter5.setDaughtersstable(parentAndDaughter.getDaughtersstable5().intValue() == 1 ? "Stable" : "Unstable"); + daughterList.add(tableDaughter5); + map.put("table_daughter", daughterList); + } + return map; + } + + @Override + @DS("ora") + public Result configUserLibrary(Integer sampleId, String fileName, HttpServletRequest request) { + Result result = new Result(); + Map> map = new HashMap<>(); + String userName = JwtUtil.getUserNameByToken(request); + Cache selfCache = selfStationCache.getSelfCache(); + SelfStationData selfStationData = selfCache.getIfPresent(fileName + StringPool.DASH + userName); + if (Objects.isNull(selfStationData)) { + result.error500("Please select the parse file first!"); + return result; + } + String systemType = selfStationData.getSampleStruct().getSystem_type(); + List nuclides = spectrumAnalysisMapper.getNuclideNames("CONFIGURATION.GARDS_NUCL_LIB"); + //redis中获取缓存的用户关注核素信息 + List userNuclides = (List)redisUtil.get(userName+StringPool.DASH+systemType+"-list-self"); + map.put("AllNuclides", nuclides); + map.put("UserNuclides", userNuclides); + result.setSuccess(true); + result.setResult(map); + return result; + } + + @Override + public Result saveUserLibrary(List userLibraryName, String fileName, HttpServletRequest request) { + Result result = new Result(); + String userName = JwtUtil.getUserNameByToken(request); + Cache selfCache = selfStationCache.getSelfCache(); + SelfStationData selfStationData = selfCache.getIfPresent(fileName + StringPool.DASH + userName); + if (Objects.isNull(selfStationData)) { + result.error500("Please select the parse file first!"); + return result; + } + String systemType = selfStationData.getSampleStruct().getSystem_type(); + if (CollectionUtils.isEmpty(userLibraryName)) { + result.error500("The user custom nuclide library can't be null!"); + return result; + } + userLibraryName = userLibraryName.stream().distinct().collect(Collectors.toList()); + boolean save = defaultNuclideSpectrumService.saveNuclidesByUserName(userLibraryName, userName, systemType, 5); + if (save) { + result.success("Modified successfully!"); + // 重新计算峰值 + Map allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); + // 查询当前用户关联的核素信息 + List userLib = new LinkedList<>(); + // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 + userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, systemType, 5); + if (CollectionUtils.isEmpty(userLib)) { + userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", systemType, 5); + } + Map nuclideMap = new HashMap<>(); + for (Map.Entry entry:allNuclideMap.entrySet()) { + if (userLib.contains(entry.getKey())) { + nuclideMap.put(entry.getKey(), entry.getValue()); + } + } + redisUtil.set(userName+StringPool.DASH+systemType+"-list-self", userLib); + redisUtil.set(userName+StringPool.DASH+systemType+"-self", nuclideMap); + } else { + result.success("Modification failure!"); + } + return result; + } + private Map gammaAnalyse(PHDFile phd, Map nuclideLinesMap, Map colorMap) throws RuntimeException{ diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SysDefaultNuclideSpectrumServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SysDefaultNuclideSpectrumServiceImpl.java index 0a1dca78..7e550c8e 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SysDefaultNuclideSpectrumServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SysDefaultNuclideSpectrumServiceImpl.java @@ -20,20 +20,20 @@ public class SysDefaultNuclideSpectrumServiceImpl extends ServiceImpl findNuclidesByUserName(String userName, String systemType) { + public List findNuclidesByUserName(String userName, String systemType, Integer useType) { //查询当前用户的核素信息 - List nuclides = this.baseMapper.findNuclidesByUserName(userName, systemType); + List nuclides = this.baseMapper.findNuclidesByUserName(userName, systemType, useType); if (CollectionUtils.isEmpty(nuclides)){ - nuclides = this.baseMapper.findNuclidesByUserName("admin", systemType); + nuclides = this.baseMapper.findNuclidesByUserName("admin", systemType, useType); } return nuclides; } @Override @Transactional(propagation = Propagation.REQUIRES_NEW) - public boolean saveNuclidesByUserName(List userLibraryName, String userName, String systemType) { + public boolean saveNuclidesByUserName(List userLibraryName, String userName, String systemType, Integer useType) { //删除当前用户名,当前使用类型下所有的数据 - this.baseMapper.deleteNuclidesByUserName(userName, systemType); + this.baseMapper.deleteNuclidesByUserName(userName, systemType, useType); //删除后重新插入本次数据 List defaultNuclideList = new LinkedList<>(); for (String nuclideName: userLibraryName) { @@ -42,7 +42,7 @@ public class SysDefaultNuclideSpectrumServiceImpl extends ServiceImpl