人工交互模块gamma部分删除核素因为删除其他主峰导致删除的非主峰核素重新计算活度浓度问题修改
人工交互模块gamma部分缓存实体类新增加字段缓存核素信息 人工交互模块gamma部分初始化方法修改
This commit is contained in:
parent
05b6e83608
commit
6abe41c743
|
@ -175,6 +175,8 @@ public class PHDFile implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Integer efficiencyCurRow;
|
private Integer efficiencyCurRow;
|
||||||
|
|
||||||
|
private Map<String, NuclideLines> phdNuclideMap;
|
||||||
|
|
||||||
public PHDFile() {
|
public PHDFile() {
|
||||||
userId = "";
|
userId = "";
|
||||||
xmlFilePath = "";
|
xmlFilePath = "";
|
||||||
|
@ -243,6 +245,7 @@ public class PHDFile implements Serializable {
|
||||||
efficiencyEnergy = new LinkedList<>();
|
efficiencyEnergy = new LinkedList<>();
|
||||||
efficiencyParam = new LinkedList<>();
|
efficiencyParam = new LinkedList<>();
|
||||||
efficiencyCurRow = 0;
|
efficiencyCurRow = 0;
|
||||||
|
phdNuclideMap = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,121 +158,11 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
@Override
|
@Override
|
||||||
public Result initValue(Integer sampleId, String dbName, String analyst, String samfileName, HttpServletRequest request) {
|
public Result initValue(Integer sampleId, String dbName, String analyst, String samfileName, HttpServletRequest request) {
|
||||||
Result result = new Result();
|
Result result = new Result();
|
||||||
//获取用户名
|
|
||||||
String userName = JwtUtil.getUserNameByToken(request);
|
|
||||||
Cache<String, PHDFile> phdCache = localCache.getPHDCache();
|
|
||||||
PHDFile phd = new PHDFile();
|
|
||||||
// 读取文件内容
|
|
||||||
String key = "";
|
|
||||||
if (Objects.nonNull(sampleId) && StringUtils.isNotBlank(dbName)) {
|
if (Objects.nonNull(sampleId) && StringUtils.isNotBlank(dbName)) {
|
||||||
// 根据sampleId获取sample文件路径
|
result = this.gammaByDB(dbName, sampleId, analyst, request);
|
||||||
String sampleFilePath = spectrumAnalysisMapper.getSampleFilePath(sampleId);
|
|
||||||
if (StringUtils.isBlank(sampleFilePath)) {
|
|
||||||
result.error500("Sample file does not exist!");
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
String pathName = ftpUtil.getFtpRootPath() + spectrumPathProperties.getSaveFilePath() + StringPool.SLASH + sampleFilePath.substring(0, sampleFilePath.lastIndexOf(StringPool.SLASH));
|
|
||||||
String fileName = sampleFilePath.substring(sampleFilePath.lastIndexOf(StringPool.SLASH) + 1);
|
|
||||||
// 读取文件内容
|
|
||||||
// 调用加载文件的方法 传入文件路径,文件名称,全局变量phd,响应结果result
|
|
||||||
boolean flag = gammaFileUtil.loadFile(pathName, fileName, phd, "BetaGamma", result);
|
|
||||||
// 如果文件加载失败 返回失败原因
|
|
||||||
if (!flag) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
// 加载phd数据所需的lc,scac,baseline数据
|
|
||||||
if (dbName.equals("auto")) {
|
|
||||||
gammaFileUtil.SetBaseInfo(phd, "RNAUTO");
|
|
||||||
} else if (dbName.equals("man")) {
|
|
||||||
gammaFileUtil.SetBaseInfo(phd, analyst);
|
|
||||||
}
|
|
||||||
// 从数据库中读取phd其他相关信息
|
|
||||||
boolean bRet = getResultFromDB(dbName, analyst, sampleId, phd, result);
|
|
||||||
if (!redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list")) {
|
|
||||||
//读取缓存的全部核素信息
|
|
||||||
Map<String, NuclideLines> allNuclideMap = (Map<String, NuclideLines>) redisUtil.get("AllNuclideMap");
|
|
||||||
// 查询当前用户关联的核素信息
|
|
||||||
List<String> userLib = new LinkedList<>();
|
|
||||||
// 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的
|
|
||||||
userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, phd.getHeader().getSystem_type().toUpperCase());
|
|
||||||
if (CollectionUtils.isEmpty(userLib)) {
|
|
||||||
userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase());
|
|
||||||
}
|
|
||||||
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+phd.getHeader().getSystem_type()+"-list", userLib);
|
|
||||||
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap);
|
|
||||||
}
|
|
||||||
// 判断数据库信息是否读取正常
|
|
||||||
if (!bRet) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
//读取redis缓存的计算mdc信息
|
|
||||||
Map<String, CalMDCInfo> mdcInfoMap = (Map<String, CalMDCInfo>) redisUtil.get("mdcInfoMap-"+phd.getHeader().getSystem_type());
|
|
||||||
//如果是数据库加载 判断如果mdc计算结果是空的 就加入新的 否则使用数据库加载的mdc数据
|
|
||||||
if (CollectionUtils.isEmpty(phd.getMdcInfoMap())) {
|
|
||||||
if (CollectionUtils.isNotEmpty(mdcInfoMap)) {
|
|
||||||
phd.setMdcInfoMap(mdcInfoMap);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (CollectionUtils.isNotEmpty(mdcInfoMap)) {
|
|
||||||
Map<String, CalMDCInfo> infoMap = phd.getMdcInfoMap();
|
|
||||||
for (Map.Entry<String, CalMDCInfo> entry:infoMap.entrySet()) {
|
|
||||||
String nuclName = entry.getKey();
|
|
||||||
CalMDCInfo info = mdcInfoMap.get(nuclName);
|
|
||||||
if (Objects.nonNull(info)) {
|
|
||||||
CalMDCInfo mdcInfo = entry.getValue();
|
|
||||||
mdcInfo.setHalflife(info.getHalflife());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gammaFileUtil.Qcstate(phd);
|
|
||||||
key = fileName + StringPool.DASH + userName;
|
|
||||||
} else {
|
} else {
|
||||||
String pathName = ftpUtil.getFtpRootPath() + spectrumPathProperties.getUploadPath() + StringPool.SLASH + userName;
|
result = this.gammaByFile(samfileName, request);
|
||||||
String fileName = samfileName;
|
|
||||||
// 加载文件内容
|
|
||||||
boolean bRet = gammaFileUtil.loadFile(pathName, fileName, phd, "BetaGamma", result);
|
|
||||||
if (!bRet) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
if (!redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list")) {
|
|
||||||
//读取缓存的全部核素信息
|
|
||||||
Map<String, NuclideLines> allNuclideMap = (Map<String, NuclideLines>) redisUtil.get("AllNuclideMap");
|
|
||||||
// 查询当前用户关联的核素信息
|
|
||||||
List<String> userLib = new LinkedList<>();
|
|
||||||
// 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的
|
|
||||||
userLib = defaultNuclideSpectrumService.findNuclidesByUserName(userName, phd.getHeader().getSystem_type().toUpperCase());
|
|
||||||
if (CollectionUtils.isEmpty(userLib)) {
|
|
||||||
userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase());
|
|
||||||
}
|
|
||||||
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+phd.getHeader().getSystem_type()+"-list", userLib);
|
|
||||||
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap);
|
|
||||||
}
|
|
||||||
//读取redis缓存的计算mdc信息
|
|
||||||
Map<String, CalMDCInfo> mdcInfoMap = (Map<String, CalMDCInfo>) redisUtil.get("mdcInfoMap-"+phd.getHeader().getSystem_type());
|
|
||||||
if (CollectionUtils.isNotEmpty(mdcInfoMap)) {
|
|
||||||
phd.setMdcInfoMap(mdcInfoMap);
|
|
||||||
}
|
|
||||||
key = fileName + StringPool.DASH + userName;
|
|
||||||
}
|
}
|
||||||
phdCache.put(key, phd);
|
|
||||||
localCache.setPHDCache(phdCache);
|
|
||||||
result.setSuccess(true);
|
|
||||||
result.setResult(phd);
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -547,6 +437,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list", userLib);
|
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list", userLib);
|
||||||
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap);
|
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap);
|
||||||
}
|
}
|
||||||
|
//缓存phd谱的核素信息
|
||||||
|
Map<String, NuclideLines> phdNuclideMap = (Map<String, NuclideLines>) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type());
|
||||||
|
phd.setPhdNuclideMap(phdNuclideMap);
|
||||||
// 判断数据库信息是否读取正常
|
// 判断数据库信息是否读取正常
|
||||||
if (!bRet) {
|
if (!bRet) {
|
||||||
return result;
|
return result;
|
||||||
|
@ -951,6 +844,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list", userLib);
|
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list", userLib);
|
||||||
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap);
|
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap);
|
||||||
}
|
}
|
||||||
|
//缓存phd谱的核素信息
|
||||||
|
Map<String, NuclideLines> phdNuclideMap = (Map<String, NuclideLines>) redisUtil.get(userName + StringPool.DASH + phd.getHeader().getSystem_type());
|
||||||
|
phd.setPhdNuclideMap(phdNuclideMap);
|
||||||
//读取redis缓存的计算mdc信息
|
//读取redis缓存的计算mdc信息
|
||||||
Map<String, CalMDCInfo> mdcInfoMap = (Map<String, CalMDCInfo>) redisUtil.get("mdcInfoMap-"+phd.getHeader().getSystem_type());
|
Map<String, CalMDCInfo> mdcInfoMap = (Map<String, CalMDCInfo>) redisUtil.get("mdcInfoMap-"+phd.getHeader().getSystem_type());
|
||||||
if (CollectionUtils.isNotEmpty(mdcInfoMap)) {
|
if (CollectionUtils.isNotEmpty(mdcInfoMap)) {
|
||||||
|
@ -1335,6 +1231,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
result.error500(warning);
|
result.error500(warning);
|
||||||
} else if (flag == -1) {
|
} else if (flag == -1) {
|
||||||
Map<String, NuclideLines> nuclideLinesMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type());
|
Map<String, NuclideLines> nuclideLinesMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type());
|
||||||
|
//分析时将phd的核素map重置
|
||||||
|
phd.setPhdNuclideMap(nuclideLinesMap);
|
||||||
|
//重新计算核素的活度浓度
|
||||||
gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap);
|
gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap);
|
||||||
gammaFileUtil.RunQC(phd);
|
gammaFileUtil.RunQC(phd);
|
||||||
phd.setEfficiencyParam(phd.getUsedEffiPara().getP());
|
phd.setEfficiencyParam(phd.getUsedEffiPara().getP());
|
||||||
|
@ -1350,6 +1249,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
result.error500(warning);
|
result.error500(warning);
|
||||||
} else {
|
} else {
|
||||||
Map<String, NuclideLines> nuclideLinesMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type());
|
Map<String, NuclideLines> nuclideLinesMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type());
|
||||||
|
//分析时将phd的核素map重置
|
||||||
|
phd.setPhdNuclideMap(nuclideLinesMap);
|
||||||
|
//调用分析算法
|
||||||
gammaFileUtil.AnalyseSpectrum(phd, nuclideLinesMap);
|
gammaFileUtil.AnalyseSpectrum(phd, nuclideLinesMap);
|
||||||
// 重新分析各峰值对应的核素信息
|
// 重新分析各峰值对应的核素信息
|
||||||
// gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap);
|
// gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap);
|
||||||
|
@ -1738,7 +1640,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
//获取缓存的核素信息
|
//获取缓存的核素信息
|
||||||
Map<String, NuclideLines> nuclideMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type());
|
Map<String, NuclideLines> nuclideMap = phd.getPhdNuclideMap();
|
||||||
//获取颜色信息
|
//获取颜色信息
|
||||||
Map<String, String> colorMap = sysUserColorService.initColor(userName);
|
Map<String, String> colorMap = sysUserColorService.initColor(userName);
|
||||||
//声明一个结果的map
|
//声明一个结果的map
|
||||||
|
@ -2007,6 +1909,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
phd.getVPeak().get(curRow).nuclides.add(nuclideName);
|
phd.getVPeak().get(curRow).nuclides.add(nuclideName);
|
||||||
// 查询当前用户所关心的核素名称
|
// 查询当前用户所关心的核素名称
|
||||||
Map<String, NuclideLines> mapNucLines = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type());
|
Map<String, NuclideLines> mapNucLines = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type());
|
||||||
|
//用户当前缓存的核素信息
|
||||||
|
Map<String, NuclideLines> phdNuclideMap = phd.getPhdNuclideMap();
|
||||||
// 查询出核素信息
|
// 查询出核素信息
|
||||||
NuclideLines it_line = mapNucLines.get(nuclideName);
|
NuclideLines it_line = mapNucLines.get(nuclideName);
|
||||||
// 如果核素信息不存在返回
|
// 如果核素信息不存在返回
|
||||||
|
@ -2025,6 +1929,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
map.put("identify", list_identify);
|
map.put("identify", list_identify);
|
||||||
List<PeakInfo> vPeak = gammaFileUtil.InitPeakTable(phd.getVPeak());
|
List<PeakInfo> vPeak = gammaFileUtil.InitPeakTable(phd.getVPeak());
|
||||||
map.put("table", vPeak);
|
map.put("table", vPeak);
|
||||||
|
//如果当前缓存的谱核素信息不包含当前核素
|
||||||
|
if (Objects.isNull(phdNuclideMap.get(nuclideName))) {
|
||||||
|
//将redis缓存的谱核素信息 存入到缓存map中
|
||||||
|
phdNuclideMap.put(nuclideName, it_line);
|
||||||
|
phd.setPhdNuclideMap(phdNuclideMap);
|
||||||
|
}
|
||||||
result.setSuccess(true);
|
result.setSuccess(true);
|
||||||
result.setResult(map);
|
result.setResult(map);
|
||||||
return result;
|
return result;
|
||||||
|
@ -2043,7 +1953,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
Map<String, NuclideLines> nuclideMap = (Map<String, NuclideLines>) redisUtil.get(userName+StringPool.DASH+phd.getHeader().getSystem_type());
|
Map<String, NuclideLines> nuclideMap = phd.getPhdNuclideMap();
|
||||||
//判断当前选择的核素名称是否包含在当前Peak的核素列表中
|
//判断当前选择的核素名称是否包含在当前Peak的核素列表中
|
||||||
int index = list_identify.indexOf(nuclideName);
|
int index = list_identify.indexOf(nuclideName);
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
|
@ -2089,6 +1999,13 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
List<PeakInfo> vPeak = gammaFileUtil.InitPeakTable(phd.getVPeak());
|
List<PeakInfo> vPeak = gammaFileUtil.InitPeakTable(phd.getVPeak());
|
||||||
// 处理核素MDA、MDC
|
// 处理核素MDA、MDC
|
||||||
gammaFileUtil.ReCalcMdaMdc(phd, nuclideName, curRow + 1);
|
gammaFileUtil.ReCalcMdaMdc(phd, nuclideName, curRow + 1);
|
||||||
|
// 谱的峰信息通过stream流过滤出包含当前核素名称的峰信息
|
||||||
|
List<PeakInfo> peakInfoList = phd.getVPeak().stream().filter(item -> item.nuclides.indexOf(nuclideName) >= 0).collect(Collectors.toList());
|
||||||
|
//过滤结果小于等于0 则说明当前核素在峰值中不存在了 需要从缓存的核素信息map中移除核素
|
||||||
|
if (peakInfoList.size() <= 0) {
|
||||||
|
//移除核素信息
|
||||||
|
nuclideMap.remove(nuclideName);
|
||||||
|
}
|
||||||
map.put("identify", list_identify);
|
map.put("identify", list_identify);
|
||||||
map.put("table", vPeak);
|
map.put("table", vPeak);
|
||||||
}
|
}
|
||||||
|
@ -4145,6 +4062,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi
|
||||||
}
|
}
|
||||||
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list", userLib);
|
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list", userLib);
|
||||||
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap);
|
redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap);
|
||||||
|
phd.setPhdNuclideMap(nuclideMap);
|
||||||
} else {
|
} else {
|
||||||
result.success("Modification failure!");
|
result.success("Modification failure!");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user