feat:自建台站增加用户核素库配置接口
This commit is contained in:
parent
16a1407216
commit
3c02c89ae5
|
@ -102,12 +102,12 @@ public class EnergySpectrumStruct {
|
|||
/*
|
||||
* 坐标: 经度值
|
||||
* */
|
||||
public double longitude;
|
||||
public double lon;
|
||||
|
||||
/*
|
||||
* 坐标: 纬度值
|
||||
* */
|
||||
public double latitude;
|
||||
public double lat;
|
||||
|
||||
/************************* Collection Block ******************/
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user