diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/NameStandUtil.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/NameStandUtil.java index 07b92660..778d06e3 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/NameStandUtil.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/NameStandUtil.java @@ -79,6 +79,12 @@ public class NameStandUtil { return path.toString(); } + public Map NameStandard(String dataType, String spectrumQuantity, Double acqusitionLiveTime, String sampleFileName, String measurementId) { + String suffix = GetSuffix(dataType, spectrumQuantity,String.valueOf(acqusitionLiveTime)); + Map fileNames = NameStandardByName(sampleFileName, measurementId,suffix); + return fileNames; + } + public Map NameStandard(PHDFile fileAnlyse) { String suffix = GetSuffix(fileAnlyse.getMsgInfo().getData_type(), fileAnlyse.getHeader().getSpectrum_quantity(),String.valueOf(fileAnlyse.getAcq().getAcquisition_live_time())); Map fileNames = NameStandardByName(fileAnlyse.getFilename(), fileAnlyse.getHeader().getMeasurement_id(),suffix); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/PHDFileUtil.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/PHDFileUtil.java index 84f78490..82dddbcd 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/PHDFileUtil.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/PHDFileUtil.java @@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.*; +import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; import java.util.stream.Collectors; @@ -628,44 +629,6 @@ public class PHDFileUtil extends AbstractLogOrReport { return rData; } -// public File analyzeFile(String path, String fileName) { -// //连接ftp -// FTPClient ftpClient = ftpUtil.LoginFTP(); -// InputStream inputStream = null; -// File file = null; -// try { -// //被动模式 -// ftpClient.enterLocalPassiveMode(); -// //设置文件类型--二进制文件 -// ftpClient.setFileType(FTP.BINARY_FILE_TYPE); -// // -// ftpClient.setControlEncoding("UTF-8"); -// ftpClient.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE); -// //切换文件路径 -// ftpClient.changeWorkingDirectory(path); -// inputStream = ftpClient.retrieveFileStream(fileName); -// if (Objects.nonNull(inputStream)){ -// file = File.createTempFile("betaGamma", null); -// //将ftp文件的输入流复制给临时文件 -// FileUtils.copyInputStreamToFile(inputStream, file); -// } -// } catch (IOException e) { -// throw new RuntimeException(e); -// } finally { -// try { -// if (Objects.nonNull(ftpClient)){ -// ftpClient.disconnect(); -// } -// if (Objects.nonNull(inputStream)){ -// inputStream.close(); -// } -// } catch (IOException e) { -// throw new RuntimeException(e); -// } -// } -// return file; -// } - public boolean analyzeSpectrum(File sampleTmp, File gasTmp, File detTmp, BgCalibratePara BgCalPara, Map map, BetaDataFile betaDataFile) { boolean bRet = true; //调用动态库解析文件 @@ -1987,6 +1950,449 @@ public class PHDFileUtil extends AbstractLogOrReport { } } + public String OutPutRnRpt(BetaDataFile betaDataFile) { + GardsCalibrationSpectrum gammaCalibrationParamS = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum gammaCalibrationParamG = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum gammaCalibrationParamD = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum gammaCalibrationParamES = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum gammaCalibrationParamEG = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum gammaCalibrationParamED = new GardsCalibrationSpectrum(); + + GardsCalibrationSpectrum betaCalibrationParamS = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum betaCalibrationParamG = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum betaCalibrationParamD = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum betaCalibrationParamES = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum betaCalibrationParamEG = new GardsCalibrationSpectrum(); + GardsCalibrationSpectrum betaCalibrationParamED = new GardsCalibrationSpectrum(); + + StringBuffer strBuffer = new StringBuffer(); + //对分析后的内容进行数据获取 + List channelsSpectrums = betaDataFile.getRoiChannelsSpectrumList(); + List roiChannelsSpectrumsSample = channelsSpectrums.stream().filter(item -> item.getDataType().equalsIgnoreCase("S")).collect(Collectors.toList()); + List roiChannelsSpectrumsGas = channelsSpectrums.stream().filter(item -> item.getDataType().equalsIgnoreCase("G")).collect(Collectors.toList()); + List roiChannelsSpectrumsDet = channelsSpectrums.stream().filter(item -> item.getDataType().equalsIgnoreCase("D")).collect(Collectors.toList()); + List resultsSpectrums = betaDataFile.getRoiResultsSpectrumList(); + List xeResultsSpectrums = betaDataFile.getXeResultsSpectrumList(); + //#SAMPLE: LIMITS PER ROI GAMMA + List gammaCalibrationParamList = betaDataFile.getGammaCalibrationSpectrumList(); + List gammaCalibrationSpectrumEList = betaDataFile.getGammaCalibrationSpectrumEList(); + for (int i=0; i betaCalibrationParamList = betaDataFile.getBetaCalibrationSpectrumList(); + List betaCalibrationSpectrumEList = betaDataFile.getBetaCalibrationSpectrumEList(); + for (int i=0; i viewXeData(List xeResultsSpectrumList) { List xeResultsViewList = new LinkedList<>(); if (CollectionUtils.isNotEmpty(xeResultsSpectrumList)) { @@ -2004,4 +2410,6 @@ public class PHDFileUtil extends AbstractLogOrReport { return xeResultsViewList; } + + } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsAnalysesManMapper.xml b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsAnalysesManMapper.xml index d913861a..5578527d 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsAnalysesManMapper.xml +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/GardsAnalysesManMapper.xml @@ -17,7 +17,9 @@ TOTALCOUNTS = #{analyses.totalCounts}, BASELINE_PATH = #{analyses.baselinePath}, LC_PATH = #{analyses.lcPath}, - SCAC_PATH = #{analyses.scacPath} + SCAC_PATH = #{analyses.scacPath}, + LOG_PATH = #{analyses.logPath}, + REPORT_PAHT = #{analyses.reportPath} WHERE IDANALYSIS = #{analyses.idAnalysis} diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml index 081eae55..d9203460 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml @@ -900,7 +900,9 @@ USEDGASPHD=#{gardsAnalyses.usedgasphd}, USEDDETPHD=#{gardsAnalyses.useddetphd}, USEDGASPHD_ID=#{gardsAnalyses.usedgasphdId}, - USEDDETPHD_ID=#{gardsAnalyses.useddetphdId} + USEDDETPHD_ID=#{gardsAnalyses.useddetphdId}, + LOG_PATH = #{gardsAnalyses.logPath}, + REPORT_PAHT = #{gardsAnalyses.reportPath} WHERE SAMPLE_ID=#{gardsAnalyses.sampleId} AND ANALYST=#{gardsAnalyses.analyst} @@ -921,7 +923,9 @@ USEDGASPHD, USEDDETPHD, USEDGASPHD_ID, - USEDDETPHD_ID) + USEDDETPHD_ID, + LOG_PATH, + REPORT_PAHT) VALUES(#{gardsAnalyses.sampleId}, to_date(#{gardsAnalyses.analysisBeginStr},'YYYY-MM-DD hh24:mi:ss'), to_date(#{gardsAnalyses.analysisEndStr},'YYYY-MM-DD hh24:mi:ss'), @@ -934,7 +938,9 @@ #{gardsAnalyses.usedgasphd}, #{gardsAnalyses.useddetphd}, #{gardsAnalyses.usedgasphdId}, - #{gardsAnalyses.useddetphdId}) + #{gardsAnalyses.useddetphdId}, + #{gardsAnalyses.logPath}, + #{gardsAnalyses.reportPath}) 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 55a945d6..8bc2f59d 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 @@ -3,6 +3,7 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReUtil; @@ -27,6 +28,7 @@ import org.jeecg.common.constant.DateConstant; import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.properties.SpectrumPathProperties; +import org.jeecg.common.properties.TaskProperties; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.*; @@ -187,6 +189,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 从数据库中读取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 allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 @@ -195,7 +199,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); } userLib = userLib.stream().sorted().collect(Collectors.toList()); - Map nuclideMap = GetNuclideLines(userLib); + 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+phd.getHeader().getSystem_type()+"-list", userLib); redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); } @@ -219,6 +228,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi return result; } if (!redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list")) { + //读取缓存的全部核素信息 + Map allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 @@ -227,7 +238,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); } userLib = userLib.stream().sorted().collect(Collectors.toList()); - Map nuclideMap = GetNuclideLinesLocal(userLib); + 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+phd.getHeader().getSystem_type()+"-list", userLib); redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); } @@ -497,6 +513,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi // 从数据库中读取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 allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 @@ -505,7 +523,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); } userLib = userLib.stream().sorted().collect(Collectors.toList()); - Map nuclideMap = GetNuclideLines(userLib); + 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+phd.getHeader().getSystem_type()+"-list", userLib); redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); } @@ -879,6 +902,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi return result; } if (!redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()) || !redisUtil.hasKey(userName+StringPool.DASH+phd.getHeader().getSystem_type()+"-list")) { + //读取缓存的全部核素信息 + Map allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 @@ -887,7 +912,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); } userLib = userLib.stream().sorted().collect(Collectors.toList()); - Map nuclideMap = GetNuclideLinesLocal(userLib); + 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+phd.getHeader().getSystem_type()+"-list", userLib); redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); } @@ -1317,85 +1347,6 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi return result; } - public Map GetNuclideLines(List nuclideList) { - Map mapLines = new HashMap<>(); - if (nuclideList.size() < 1) { - return mapLines; - } - for (String name : nuclideList) { - NuclideLines nlines = new NuclideLines(); - List nuclideLineList = spectrumAnalysisMapper.getNuclideLines(name); - for (int j = 0; j < nuclideLineList.size(); j++) { - nlines.getFullNames().add(nuclideLineList.get(j).getFullName()); - nlines.getVenergy().add(nuclideLineList.get(j).getEnergy()); - nlines.getVuncertE().add(nuclideLineList.get(j).getEnergyUncert()); - nlines.getVyield().add(nuclideLineList.get(j).getYield() / 100); - nlines.getVuncertY().add(nuclideLineList.get(j).getYieldUncert()); - if (Objects.nonNull(nuclideLineList.get(j).getKeyFlag()) && nuclideLineList.get(j).getKeyFlag().intValue() > 0) { - nlines.key_flag = j; - nlines.maxYeildIdx = j; - } - } - mapLines.put(name, nlines); - } - List halfs = spectrumAnalysisMapper.getHalf(nuclideList); - for (int m = 0; m < halfs.size(); m++) { - NuclideLines nuclideLines = mapLines.get(halfs.get(m).getName()); - nuclideLines.setHalflife(halfs.get(m).getHalf() == null ? 0 : halfs.get(m).getHalf() * 86400);// 将天转换成秒 - mapLines.put(halfs.get(m).getName(), nuclideLines); - } - return mapLines; - } - - public Map GetNuclideLinesLocal(List nuclideList) { - Map mapLines = new HashMap<>(); - if (nuclideList.size() < 1) { - return mapLines; - } - //需要查询的两个表的名称 - String table_lines = "lines"; - String table_lib = "libdata"; - // 建立数据库连接 - Connection conn = dbUtil.openDB(); - Statement statement = null; - try { - statement = conn.createStatement(); - for (String name : nuclideList) { - NuclideLines nlines = new NuclideLines(); - //根据核素名称查询相关核素信息 - String sql1 = "select fullname, energy, energy_uncert, yield, yield_uncert, key_flag from "+table_lines+" where name = '"+name+"' Order by energy"; - ResultSet resultSet = statement.executeQuery(sql1); - int j=0; - while (resultSet.next()) { - nlines.getFullNames().add(resultSet.getString("fullname")); - nlines.getVenergy().add(resultSet.getDouble("energy")); - nlines.getVuncertE().add(resultSet.getDouble("energy_uncert")); - nlines.getVyield().add(resultSet.getDouble("yield") / 100); - nlines.getVuncertY().add(resultSet.getDouble("yield_uncert")); - if (Objects.nonNull(resultSet.getInt("key_flag")) && resultSet.getInt("key_flag") > 0) { - nlines.key_flag = j; - nlines.maxYeildIdx = j; - } - ++j; - } - mapLines.put(name, nlines); - } - String names = "'" + String.join("','", nuclideList) + "'"; - String sql2 = "select name, halflife from "+table_lib+" where name in ("+names+")"; - ResultSet executeQuery = statement.executeQuery(sql2); - while (executeQuery.next()) { - NuclideLines nuclideLines = mapLines.get(executeQuery.getString("name")); - nuclideLines.setHalflife(Double.valueOf(executeQuery.getDouble("halflife")) == null ? 0 : executeQuery.getDouble("halflife") * 86400);// 将天转换成秒 - mapLines.put(executeQuery.getString("name"), nuclideLines); - } - } catch (SQLException e) { - throw new RuntimeException(e); - } finally { - dbUtil.close(statement, conn); - } - return mapLines; - } - @Override public Result InteractiveTool(Integer sampleId, String fileName, HttpServletRequest request) { Result result = new Result(); @@ -4149,6 +4100,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi boolean save = defaultNuclideSpectrumService.saveNuclidesByUserName(userLibraryName, userName, phd.getHeader().getSystem_type().toUpperCase()); if (save) { result.success("Modified successfully!"); + // 重新计算峰值 + Map allNuclideMap = (Map) redisUtil.get("AllNuclideMap"); // 查询当前用户关联的核素信息 List userLib = new LinkedList<>(); // 从postgreSql中获取当前用户关注的核素信息 如果当前用户没有 则返回管理员的 @@ -4156,7 +4109,12 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi if (CollectionUtils.isEmpty(userLib)) { userLib = defaultNuclideSpectrumService.findNuclidesByUserName("admin", phd.getHeader().getSystem_type().toUpperCase()); } - Map nuclideMap = GetNuclideLines(userLib); + 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+phd.getHeader().getSystem_type()+"-list", userLib); redisUtil.set(userName+StringPool.DASH+phd.getHeader().getSystem_type(), nuclideMap); } else { @@ -4977,7 +4935,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public Result saveToDB(String fileName, HttpServletRequest request) { Result result = new Result(); String userName = JwtUtil.getUserNameByToken(request); @@ -5088,6 +5046,39 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi mdcSpectrumService.saveMDCGamma(phd, idAnalysis); if (bRet) { phd.setStatus("R"); + //分析成功后存储日志文件和报告文件 + { + String logPathName = middleData.analyses_absolute_LogPath.substring(0, middleData.analyses_absolute_LogPath.lastIndexOf(StringPool.SLASH)); + String logFileName = middleData.analyses_absolute_LogPath.substring(middleData.analyses_absolute_LogPath.lastIndexOf(StringPool.SLASH)+1); + File logFile = new File(logFileName); + try { + FileUtil.writeString(gammaFileUtil.GetLogContent(middleData), logFile, "UTF-8"); + FileInputStream in = new FileInputStream(logFile); + ftpUtil.saveFile(logPathName, logFileName, in); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } finally { + if (Objects.nonNull(logFile)) { + logFile.delete(); + } + } + } + { + String rptPathName = middleData.analyses_absolute_ReportPath.substring(0, middleData.analyses_absolute_ReportPath.lastIndexOf(StringPool.SLASH)); + String rptFileName = middleData.analyses_absolute_ReportPath.substring(middleData.analyses_absolute_ReportPath.lastIndexOf(StringPool.SLASH)+1); + File rptFile = new File(rptFileName); + try { + FileUtil.writeString(gammaFileUtil.GetReportContent(middleData), rptFile, "UTF-8"); + FileInputStream in = new FileInputStream(rptFile); + ftpUtil.saveFile(rptPathName, rptFileName, in); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } finally { + if (Objects.nonNull(rptFile)) { + rptFile.delete(); + } + } + } List paths = new LinkedList<>(); paths.add(middleData.analyses_lc_filePath); paths.add(middleData.analyses_scac_filePath); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesSpectrumServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesSpectrumServiceImpl.java index 1d71bf85..d1543cef 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesSpectrumServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesSpectrumServiceImpl.java @@ -40,6 +40,8 @@ public class GardsAnalysesSpectrumServiceImpl extends ServiceImpl fileNames = phdFileUtil.FileNameByStandardForm(filePath, sampleFileName); + //匹配detFile + boolean detStatus = false; + String detaFileName = fileData.get("detaFileName"); + String detphd = phdFileUtil.GetMatchFile(detaFileName, fileNames, DataTypeAbbr.DETBKPHD.getType()); + if (StringUtils.isNotBlank(detphd)) { + detaFileName = detphd; + detStatus = true; + } + map.put("sampleFileName", sampleFileName); + map.put("gasFileName", ""); + map.put("detFileName", detaFileName); + map.put("detFileStatus", detStatus); + map.put("qcFileName", ""); + map.put("sampleSystemType", sampleSystemType); } } if (CollectionUtils.isNotEmpty(map)) { @@ -3771,7 +3791,7 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public Result saveToDB(BgDataAnlyseResultIn anlyseResultIn, HttpServletRequest request) { Result result = new Result(); Map map = new HashMap<>(); @@ -3885,6 +3905,22 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements result.error500("sampleFile save failed"); return result; } + //获取日志,报告文件存放路径 + EnergySpectrumStruct sampleStruct = betaDataFile.getSampleStruct(); + String dataType = sampleStruct.data_type; + String subDirSavePath = ""; + subDirSavePath+=nameStandUtil.GetSysTemSubdir(sampleStruct.system_type); + subDirSavePath+=nameStandUtil.GetDateTypeSubdir(dataType); + String path = nameStandUtil.SetFileDir(subDirSavePath, betaDataFile.getSampleFileName()); + Map fileNameMap = nameStandUtil.NameStandard(dataType, sampleStruct.spectrum_quantity, sampleStruct.acquisition_live_time, betaDataFile.getSampleFileName(), sampleStruct.measurement_id); + String logName = fileNameMap.get("log"); + String qsLogPath= path+StringPool.SLASH+userName+"_"+logName; + qsLogPath = qsLogPath.replace(StringPool.BACK_SLASH, StringPool.SLASH); + String rptName = fileNameMap.get("rpt"); + String qsReportPath="Arr"+StringPool.SLASH+path+StringPool.SLASH+userName+"_"+rptName; + qsReportPath = qsReportPath.replace(StringPool.BACK_SLASH, StringPool.SLASH); + String analyses_absolute_LogPath=spectrumPathProperties.getLogPath()+StringPool.SLASH+qsLogPath; + String analyses_absolute_ReportPath=spectrumPathProperties.getSaveFilePath()+StringPool.SLASH+qsReportPath; //根据文件名称查询对应的sampleId--- sampleFile gasFile detFile sampleId = spectrumAnalysisMapper.getSampleId(sampleFilePathName); gasId = spectrumAnalysisMapper.getSampleId(gasFilePathName); @@ -3904,6 +3940,8 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements gardsAnalyses.setUsedgasphdId(gasId); gardsAnalyses.setUseddetphdId(detId); gardsAnalyses.setAnalyst(anlyseResultIn.getUserName()); + gardsAnalyses.setLogPath(qsLogPath); + gardsAnalyses.setReportPath(qsReportPath); if (Objects.nonNull(isExist)){ spectrumAnalysisMapper.updateGardsAnalyses(gardsAnalyses); }else {//如果没有分析过就新增--GARDS_ANALYSES @@ -4012,6 +4050,40 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements File qcTmp = new File(betaDataFile.getQcTmpPath()); ftpUtil.saveFile(StringPool.SLASH + ftpUtil.getFtpRootPath() + spectrumPathProperties.getSaveFilePath() + StringPool.SLASH + qcFilePathName.substring(0, qcFilePathName.lastIndexOf(StringPool.SLASH)), anlyseResultIn.getQcFileName(), new FileInputStream(qcTmp)); } + //分析成功后存储日志文件和报告文件 + { + String logPathName = analyses_absolute_LogPath.substring(0, analyses_absolute_LogPath.lastIndexOf(StringPool.SLASH)); + String logFileName = analyses_absolute_LogPath.substring(analyses_absolute_LogPath.lastIndexOf(StringPool.SLASH)+1); + String logFilePath = parameterProperties.getLogFilePath() + File.separator + DateUtils.formatDate(new Date(), "yyyy-MM-dd") + File.separator + betaDataFile.getSampleFileName().replace("PHD", "log"); + File logFile = new File(logFilePath); + try { + FileInputStream in = new FileInputStream(logFile); + ftpUtil.saveFile(logPathName, logFileName, in); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } finally { + if (Objects.nonNull(logFile)) { + logFile.delete(); + } + } + } + { + String rptContent = phdFileUtil.OutPutRnRpt(betaDataFile); + String rptPathName = analyses_absolute_ReportPath.substring(0, analyses_absolute_ReportPath.lastIndexOf(StringPool.SLASH)); + String rptFileName = analyses_absolute_ReportPath.substring(analyses_absolute_ReportPath.lastIndexOf(StringPool.SLASH)+1); + File rptFile = new File(rptFileName); + try { + FileUtil.writeString(rptContent, rptFile, "UTF-8"); + FileInputStream in = new FileInputStream(rptFile); + ftpUtil.saveFile(rptPathName, rptFileName, in); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } finally { + if (Objects.nonNull(rptFile)) { + rptFile.delete(); + } + } + } } catch (FileNotFoundException e) { throw new RuntimeException(e); } @@ -5471,6 +5543,17 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements roiResultsSpectrumList.add(roiResults); } anlyseResultIn.setRoiResultsSpectrumList(roiResultsSpectrumList); + betaDataFile.getXeResultsSpectrumList().forEach(item -> { + if (item.getNuclideName().equals(XeNuclideName.XE_131m.getType())) { + item.setNidFlag(anlyseResultIn.getXe131mFlag()); + } else if (item.getNuclideName().equals(XeNuclideName.XE_133.getType())) { + item.setNidFlag(anlyseResultIn.getXe133Flag()); + } else if (item.getNuclideName().equals(XeNuclideName.XE_133m.getType())) { + item.setNidFlag(anlyseResultIn.getXe133mFlag()); + } else if (item.getNuclideName().equals(XeNuclideName.XE_135.getType())) { + item.setNidFlag(anlyseResultIn.getXe135Flag()); + } + }); } } } catch (Exception e) { @@ -5559,75 +5642,6 @@ public class SpectrumAnalysisServiceImpl extends AbstractLogOrReport implements return calibrationPairsList; } -// public void getROILimit(BgDataAnlyseResultIn anlyseResultIn) { -// File sampleTmp = null; -// try { -// //获取ftp文件路径下临时文件 -// sampleTmp = phdFileUtil.analyzeFile(anlyseResultIn.getSampleFilePath(), anlyseResultIn.getSampleFileName()); -// if (Objects.nonNull(sampleTmp)){ -// EnergySpectrumStruct sourceData = EnergySpectrumHandler.getSourceData(sampleTmp.getAbsolutePath()); -// List poiBX1 = sourceData.POI_B_x1; -// List poiBX2 = sourceData.POI_B_x2; -// List poiGY1 = sourceData.POI_G_y1; -// List poiGY2 = sourceData.POI_G_y2; -// //ROI Limit -// List report_limit_roi = new LinkedList<>(); -// for(int pos=1;pos<=poiBX1.size();pos++) { -// report_limit_roi.add(String.valueOf(pos)); -// } -// List beginB = new LinkedList<>(); -// for(int pos=1;pos<=poiBX1.size();pos++) { -// beginB.add(String.valueOf(poiBX1.get(pos))); -// } -// List endB = new LinkedList<>(); -// for(int pos=0;pos beginG = new LinkedList<>(); -// for(int pos=1;pos<=poiGY1.size();pos++) { -// beginG.add(String.valueOf(poiGY1.get(pos))); -// } -// List endG = new LinkedList<>(); -// for(int pos=0;pos ratio_id = sourceData.ratio_id; -// List ROI_num_highter_G_energy_ROI = sourceData.ROI_num_highter_G_energy_ROI; -// List ROI_num_lower_G_energy_ROI = sourceData.ROI_num_lower_G_energy_ROI; -// List count_ratio = sourceData.count_ratio; -// List count_ratio_uncertainty = sourceData.count_ratio_uncertainty; -// List countRatioList = new LinkedList<>(); -// for(int pos=0;pos countRatioUncertaintyList = new LinkedList<>(); -// for(int pos=0;pos bg_efficiency = sourceData.bg_efficiency; -// List nuclide_name = sourceData.nuclide_name; -// List ROI_number = sourceData.ROI_number; -// List uncertainty = sourceData.uncertainty; -// List efficiencyList = new LinkedList<>(); -// for(int pos=0;pos uncertaintyList = new LinkedList<>(); -// for(int pos=0;pos getCalibration(BgDataAnlyseResultIn anlyseResultIn, Integer sampleId, Integer gasId, Integer detId, Integer idAnalysis) { List calibrationSpectrumList = new LinkedList<>(); if (Objects.nonNull(sampleId)) {