feat:自建台站增加用户核素库配置接口

This commit is contained in:
nieziyan 2024-07-18 09:06:49 +08:00
parent 16a1407216
commit 3c02c89ae5
9 changed files with 349 additions and 23 deletions

View File

@ -102,12 +102,12 @@ public class EnergySpectrumStruct {
/*
* 坐标: 经度值
* */
public double longitude;
public double lon;
/*
* 坐标: 纬度值
* */
public double latitude;
public double lat;
/************************* Collection Block ******************/

View File

@ -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);
}
}

View File

@ -8,8 +8,12 @@ import java.util.List;
public interface SysDefaultNuclideSpectrumMapper extends BaseMapper<SysDefaultNuclide> {
List<String> findNuclidesByUserName(@Param(value = "userName") String userName, @Param(value = "systemType") String systemType);
List<String> 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);
}

View File

@ -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}
</select>
@ -15,7 +15,7 @@
<delete id="deleteNuclidesByUserName">
delete from
sys_default_nuclide
where use_type = 3
where use_type = #{useType}
and nuclide_type = #{systemType}
and create_by = #{userName}
</delete>

View File

@ -67,4 +67,9 @@ public interface ISelfStationService {
Result fitting(Double paramA, Double paramB, Double paramC, List<SeriseData> 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<String> userLibraryName, String fileName, HttpServletRequest request);
}

View File

@ -7,8 +7,8 @@ import java.util.List;
public interface ISysDefaultNuclideSpectrumService extends IService<SysDefaultNuclide> {
List<String> findNuclidesByUserName(String userName, String systemType);
List<String> findNuclidesByUserName(String userName, String systemType, Integer useType);
boolean saveNuclidesByUserName(List<String> userLibraryName, String userName, String systemType);
boolean saveNuclidesByUserName(List<String> userLibraryName, String userName, String systemType, Integer useType);
}

View File

@ -212,9 +212,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
// 查询当前用户关联的核素信息
List<String> 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<String, NuclideLines> nuclideMap = new HashMap<>();
@ -623,9 +623,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
// 查询当前用户关联的核素信息
List<String> 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<String, NuclideLines> 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<String> 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<String, NuclideLines> nuclideMap = new HashMap<>();
for (Map.Entry<String, NuclideLines> entry:allNuclideMap.entrySet()) {

View File

@ -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<String, NuclideLines> allNuclideMap = (Map<String, NuclideLines>) redisUtil.get("AllNuclideMap");
// 查询当前用户关联的核素信息
List<String> 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<String, NuclideLines> nuclideMap = new HashMap<>();
for (Map.Entry<String, NuclideLines> 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<String, NuclideLines> allNuclideMap = (Map<String, NuclideLines>) redisUtil.get("AllNuclideMap");
// 查询当前用户关联的核素信息
List<String> 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<String, NuclideLines> nuclideMap = new HashMap<>();
for (Map.Entry<String, NuclideLines> 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<String, NuclideLines> nuclideLinesMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phdOne.getHeader().getSystem_type());
Map<String, NuclideLines> nuclideLinesMap = (Map<String, NuclideLines>) 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<String, NuclideLines> nuclideLinesMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phdOne.getHeader().getSystem_type());
Map<String, NuclideLines> nuclideLinesMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phdOne.getHeader().getSystem_type()+"-self");
try {
Map<String, Object> 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<String, Object> map = new HashMap<>();
String userName = JwtUtil.getUserNameByToken(request);
Cache<String, SelfStationData> 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<String> 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<String, NuclideLines> nuclideMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+systemType+"-self");
//判断缓存的核素信息是否为空
if (CollectionUtils.isNotEmpty(nuclideMap)) {
//遍历核素信息
for (Map.Entry<String, NuclideLines> entry:nuclideMap.entrySet()) {
//获取核素的关联信息
NuclideLines nuclideLines = entry.getValue();
//获取核素关联的全部能量信息
List<Double> venergy = nuclideLines.getVenergy();
//遍历能量
for (int i=0; i<venergy.size(); i++) {
//如果有一个能量在范围内 则将核素名称存入返回结果数组并结束当前核素名称的循环
if (venergy.get(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<String>)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<GardsNuclLinesLib> nuclLinesLibs = InitNuclideLine(editEnergy, err, nuclideName);
map.put("nuclLinesLibs", nuclLinesLibs);
Map<String, String> nuclideInfo = InitNuclideInfo(nuclideName);
map.put("nuclideInfo", nuclideInfo);
Map<String, Object> daughter = InitParentAndDaughter(nuclideName);
map.put("daughter", daughter);
result.setSuccess(true);
result.setResult(map);
return result;
}
public List<GardsNuclLinesLib> 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<GardsNuclLinesLib> 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<String, String> InitNuclideInfo(String name) {
Map<String, String> 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<String, Object> InitParentAndDaughter(String name) {
Map<String, Object> map = new HashMap<>();
GardsNuclLib parentAndDaughter = spectrumAnalysisMapper.getParentAndDaughter(name);
List<String> 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<TableDaughter> 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<String, List<String>> map = new HashMap<>();
String userName = JwtUtil.getUserNameByToken(request);
Cache<String, SelfStationData> 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<String> nuclides = spectrumAnalysisMapper.getNuclideNames("CONFIGURATION.GARDS_NUCL_LIB");
//redis中获取缓存的用户关注核素信息
List<String> userNuclides = (List<String>)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<String> userLibraryName, String fileName, HttpServletRequest request) {
Result result = new Result();
String userName = JwtUtil.getUserNameByToken(request);
Cache<String, SelfStationData> 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<String, NuclideLines> allNuclideMap = (Map<String, NuclideLines>) redisUtil.get("AllNuclideMap");
// 查询当前用户关联的核素信息
List<String> userLib = new LinkedList<>();
// 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的
userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, systemType, 5);
if (CollectionUtils.isEmpty(userLib)) {
userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", systemType, 5);
}
Map<String, NuclideLines> nuclideMap = new HashMap<>();
for (Map.Entry<String, NuclideLines> 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<String, Object> gammaAnalyse(PHDFile phd, Map<String, NuclideLines> nuclideLinesMap,
Map<String, String> colorMap) throws RuntimeException{

View File

@ -20,20 +20,20 @@ public class SysDefaultNuclideSpectrumServiceImpl extends ServiceImpl<SysDefault
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public List<String> findNuclidesByUserName(String userName, String systemType) {
public List<String> findNuclidesByUserName(String userName, String systemType, Integer useType) {
//查询当前用户的核素信息
List<String> nuclides = this.baseMapper.findNuclidesByUserName(userName, systemType);
List<String> 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<String> userLibraryName, String userName, String systemType) {
public boolean saveNuclidesByUserName(List<String> userLibraryName, String userName, String systemType, Integer useType) {
//删除当前用户名当前使用类型下所有的数据
this.baseMapper.deleteNuclidesByUserName(userName, systemType);
this.baseMapper.deleteNuclidesByUserName(userName, systemType, useType);
//删除后重新插入本次数据
List<SysDefaultNuclide> defaultNuclideList = new LinkedList<>();
for (String nuclideName: userLibraryName) {
@ -42,7 +42,7 @@ public class SysDefaultNuclideSpectrumServiceImpl extends ServiceImpl<SysDefault
continue;
}
nuclide.setNuclideName(nuclideName);
nuclide.setUseType(3);
nuclide.setUseType(useType);
nuclide.setNuclideType(systemType);
nuclide.setCreateBy(userName);
defaultNuclideList.add(nuclide);