SpectrumPathProperties新增用户上传文件路径

修改base.vo下实体类内容
新增GammaDataBase.db文件
新增查看当前用户是否有过当前台站的排班任务方法
新增DBUtil实现读取DB文件内容
新增gammaByFile接口,实现从本地读取文件内容
This commit is contained in:
qiaoqinzheng 2023-09-01 15:25:53 +08:00
parent b50cf9325b
commit a1c64c5f26
81 changed files with 4217 additions and 771 deletions

View File

@ -31,6 +31,11 @@ public class SpectrumPathProperties implements Serializable {
*/
private String logPath;
/**
* 用户上传文件路径
*/
private String uploadPath;
/**
* 能谱文件存储路径以能谱系统类型/能谱类型为key以存储路径为value
*/

View File

@ -37,6 +37,12 @@ public class AnalyseData implements Serializable {
private List<Integer> sampleIds;
public AnalyseData(){
sampleData = false;
GasBgData = false;
DetBgData = false;
QCData = false;
bGammaEnergyValid = false;
bBetaEnergyValid = false;
g_calibration_param = new CalibrationParam();
b_calibration_param = new CalibrationParam();
}

View File

@ -1,9 +1,47 @@
package org.jeecg.modules.base.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@Data
public class ConfigureData implements Serializable {
private Integer sampleId;
private String fileName;
private Double ECutAnalysis_Low;
private Double ECutAnalysis_High;
private Double EnergyTolerance;
private Double PSS_low;
private Double CalibrationPSS_low;
private Double CalibrationPSS_high;
private Double k_back;
private Double k_alpha;
private Double k_beta;
private Double BaseImprovePSS;
private Double RiskLevelK;
@DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")
@JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8")
private Date RefTime_act;
@DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")
@JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8")
private Date RefTime_conc;
}

View File

@ -7,12 +7,12 @@ import java.io.Serializable;
@Data
public class EfficiencyData implements Serializable {
private String Energy;
private String energy;
private String Efficiency;
private String efficiency;
private String Fit;
private String fit;
private String Delta;
private String delta;
}

View File

@ -9,10 +9,10 @@ public class EnergyData implements Serializable {
public String channel;
public String Energy;
public String energy;
public String Fit;
public String fit;
public String Delta;
public String delta;
}

View File

@ -182,7 +182,7 @@ public class GStoreMiddleProcessData implements Serializable {
public List<String> peaks_Nuclide_name; //文件名称
public List<String> peaks_comments;
// gards_ nucl_lines_ided数据表
private Map<String,GStoreMiddleProcessDataNuclLinesIded> nucl_lines_ided_data;
public Map<String,GStoreMiddleProcessDataNuclLinesIded> nucl_lines_ided_data;
//gards_ nucl_ided数据表
public List<String> nucl_ided_Nuclidename; // 核素名称
public List<String> nucl_ided_Type; //核素类型 未知

View File

@ -7,12 +7,12 @@ import java.io.Serializable;
@Data
public class ResolutionData implements Serializable {
private String Energy;
private String energy;
private String FWHM;
private String fwhm;
private String Fit;
private String fit;
private String Delta;
private String delta;
}

View File

@ -1,230 +0,0 @@
package org.jeecg.modules.base.vo;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
public class StructGStoreMiddleProcessData implements Serializable {
public boolean dbWriteFlag; //数据库存储标示 例如
public String dbWriteStatusFlag; //数据写入状态标示 例如 P U F
public String ErrorInfo; //错误信息
//gards_analyses数据表数据
public String IdAnalysis; //分析ID号
public String sample_id; //样品ID号
public String analyses_analysisBegin; //分析开始时
public String analyses_analysisEnd; //分析的结束时间
public String analyses_type; //Reviewed:交互 Auto自动
public String analyses_software; //使用的软件
public String analyses_swVersion; //软件版本号
public String analyses_analyst; //分析员名称
public String analyses_baseline_filePath; //基线数据路径
public String analyses_lc_filePath; //lc数据基线路径
public String analyses_scac_filePath; //scac数据路径
public String analyses_save_filePath; //原始文件存储文件名
public String analyses_baselineMethod; //基线计数方
public String analyses_peaksMethod; //寻峰方法描
public String analyses_nuclideMethod; //核素识别方
public String analyses_uncCalcMethod; //不确定度计
public String analyses_lcMethod; //Lc计算方法
public String analyses_LogPath; //日志路径
public String analyses_ReportPath; //报告路径
public String analyses_baseline_absolute_filePath; //基线数据绝对路径
public String analyses_lc_absolute_filePath; //lc数据基线绝对路径
public String analyses_scac_absolute_filePath; //scac数据绝对路径
public String analyses_save_absolute_filePath; //原始文件存储绝对文件名
public String analyses_absolute_LogPath; //日志绝对路径
public String analyses_absolute_ReportPath; //报告绝对路径
public double analyses_searchStartChannel; //寻峰起始道
public double analyses_searchEndChannel; //寻峰结束道
public double analyses_searchThreshold; //寻峰阈值
public double analyses_numberOfPeaks; //峰数目
public double analyses_totalCounts; //总计数 未知
public double analyses_category; //分级结果
public String analyses_comments; //注释
//gards_ calibration_pairs数据表
public String calibration_pairs_sample_type; //Ggamma探测器的数据#g_Bbeta探测器的数据,#b_
public String calibration_pairs_E_Caltype; //energy能量刻度
public String calibration_pairs_E_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具其它文件等
public List<String> calibration_pairs_E_idCalPoint; //刻度点ID号
public List<String> calibration_pairs_E_xValue; //
public List<String> calibration_pairs_E_yValue; //
public List<String> calibration_pairs_E_uncYValue; //
public String calibration_pairs_EF_Caltype; //Efficiency效率刻度
public String calibration_pairs_EF_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具其它文件等
public List<String> calibration_pairs_EF_idCalPoint; //刻度点ID号
public List<String> calibration_pairs_EF_xValue; //
public List<String> calibration_pairs_EF_yValue; //
public List<String> calibration_pairs_EF_uncYValue; //
public String calibration_pairs_R_Caltype; //Resolution分辨率刻度
public String calibration_pairs_R_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具其它文件等
public List<String> calibration_pairs_R_idCalPoint; //刻度点ID号
public List<String> calibration_pairs_R_xValue; //
public List<String> calibration_pairs_R_yValue; //
public List<String> calibration_pairs_R_uncYValue; //
public String calibration_pairs_T_Caltype; //TotalEfficiency总效率刻度
public String calibration_pairs_T_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具其它文件等
public List<String> calibration_pairs_T_idCalPoint; //刻度点ID号
public List<String> calibration_pairs_T_xValue; //
public List<String> calibration_pairs_T_yValue; //
public List<String> calibration_pairs_T_uncYValue; //
//原始谱 数据
public String calibration_pairs_S_E_Caltype; //energy能量刻度
public String calibration_pairs_S_E_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具其它文件等
public List<String> calibration_pairs_S_E_idCalPoint; //刻度点ID号
public List<String> calibration_pairs_S_E_xValue; //
public List<String> calibration_pairs_S_E_yValue; //
public List<String> calibration_pairs_S_E_uncYValue; //
public String calibration_pairs_S_EF_Caltype; //Efficiency效率刻度
public String calibration_pairs_S_EF_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具其它文件等
public List<String> calibration_pairs_S_EF_idCalPoint; //刻度点ID号
public List<String> calibration_pairs_S_EF_xValue; //
public List<String> calibration_pairs_S_EF_yValue; //
public List<String> calibration_pairs_S_EF_uncYValue; //
public String calibration_pairs_S_R_Caltype; //Resolution分辨率刻度
public String calibration_pairs_S_R_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具其它文件等
public List<String> calibration_pairs_S_R_idCalPoint; //刻度点ID号
public List<String> calibration_pairs_S_R_xValue; //
public List<String> calibration_pairs_S_R_yValue; //
public List<String> calibration_pairs_S_R_uncYValue; //
public String calibration_pairs_S_T_Caltype; //TotalEfficiency总效率刻度
public String calibration_pairs_S_T_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具其它文件等
public List<String> calibration_pairs_S_T_idCalPoint; //刻度点ID号
public List<String> calibration_pairs_S_T_xValue; //
public List<String> calibration_pairs_S_T_yValue; //
public List<String> calibration_pairs_S_T_uncYValue; //
//gards_ calibration 数据表
public String calibration_sample_type; //Ggamma探测器的数据#g_Bbeta探测器的数据,#b_
public String calibration_E_Caltype; //energy能量刻度
public double calibration_E_function; //拟合方程ID号统一定义
public String calibration_E_functionTypeDef; //函数类型描述
public String calibration_E_functionDef; //拟合方程描述
public double calibration_E_startOfRange; //拟合的起始值
public double calibration_E_endOfRange; //拟合的结束值
public String calibration_E_coeff_string; //拟合系数
public String calibration_E_uncoeff_string; //拟合系数1不确定度
public String calibration_EF_Caltype; //Efficiency效率刻度
public double calibration_EF_function; //拟合方程ID号统一定义
public String calibration_EF_functionTypeDef; //函数类型描述
public String calibration_EF_functionDef; //拟合方程描述
public double calibration_EF_startOfRange; //拟合的起始值
public double calibration_EF_endOfRange; //拟合的结束值
public String calibration_EF_coeff_string; //拟合系数
public String calibration_EF_uncoeff_string; //拟合系数1不确定度
public String calibration_R_Caltype; //Resolution分辨率刻度
public double calibration_R_function; //拟合方程ID号统一定义
public String calibration_R_functionTypeDef; //函数类型描述
public String calibration_R_functionDef; //拟合方程描述
public double calibration_R_startOfRange; //拟合的起始值
public double calibration_R_endOfRange; //拟合的结束值
public String calibration_R_coeff_string; //拟合系数
public String calibration_R_uncoeff_string; //拟合系数1不确定度
public String calibration_T_Caltype; //TotalEfficiency总效率刻度
public double calibration_T_function; //拟合方程ID号统一定义
public String calibration_T_functionTypeDef; //函数类型描述
public String calibration_T_functionDef; //拟合方程描述
public double calibration_T_startOfRange; //拟合的起始值
public double calibration_T_endOfRange; //拟合的结束值
public String calibration_T_coeff_string; //拟合系数
public String calibration_T_uncoeff_string; //拟合系数1不确定度
//gards_ peaks数据表
public List<String> peaks_idPeak; //峰序号
public List<String> peaks_peakCentroid; //峰中心道道址
public List<String> peaks_uncpeakCentroid; //峰中心道不确定度道址
public List<String> peaks_Energy; //峰中心道能量keV
public List<String> peaks_uncEnergy; //峰中心道能量不确定度keV
public List<String> peaks_Area; //峰面积计数已扣除基线面积但未扣除空白样品计数和探测器本底计数
public List<String> peaks_areaErr; //峰面积不确定度以计数为单位
public List<String> peaks_netCountRate; //峰的净计数率1/s=峰面积/活时间 未知
public List<String> peaks_uncNetCountRate; //峰的净计数率的不确定度1/s 未知
public List<String> peaks_Efficiency; //测量系统在峰能量处的绝对效率
public List<String> peaks_Uncefficiency; //测量系统在峰能量处的绝对效率的不确定度
public List<String> peaks_Fwhm; //峰的半高宽keV
public List<String> peaks_Fwhmc; //峰的半高宽Channel
public List<String> peaks_Significance; //峰的灵敏度
public List<String> peaks_Sensitivity; //重峰序号
public List<String> peaks_multiIndex; //峰的感兴趣区的起始道left
public List<String> peaks_ROIstart; //峰的感兴趣区的结束道right
public List<String> peaks_ROIend; //峰序号
public List<String> peaks_tail; //
public List<String> peaks_tailAlpha; //
public List<String> peaks_upperTail; //
public List<String> peaks_upperTailAlpha; //
public List<String> peaks_BWWidthChan; //
public List<String> peaks_recoilBetaChan;
public List<String> peaks_recoilDeltaChan; //
public List<String> peaks_stepRatio; //
public List<String> peaks_backgroundArea; //在峰区域下的基线面积计数
public List<String> peaks_meanBackCount; //基线面积/道数计数
public List<String> peaks_Lc; //峰的可探测线Lc
public List<String> peaks_Ld; //峰的可探测线Ld
public List<String> peaks_Nuclide_name; //文件名称
public List<String> peaks_comments;
// gards_ nucl_lines_ided数据表
public Map<String,StructGStoreMiddleProcessDataNuclLinesIded> nucl_lines_ided_data;
//gards_ nucl_ided数据表
public List<String> nucl_ided_Nuclidename; // 核素名称
public List<String> nucl_ided_Type; //核素类型 未知
public List<String> nucl_ided_Halflife; //核素半衰期
public List<String> nucl_ided_ave_activ; //平均活度值NULL
public List<String> nucl_ided_ave_activ_err; //平均活度值不确定度NULL
public List<String> nucl_ided_activ_key; //主射线活度值 未知
public List<String> nucl_ided_activ_key_err; //主射线活度值不确定度
public List<String> nucl_ided_mda; //核素的最小可探测活度
public List<String> nucl_ided_mda_err; //核素的最小可探测活度不确定度
public List<String> nucl_ided_nid_flag; //核素识别标志未知
public List<String> nucl_ided_csc_ratio; //符合相加校正因子无设为1
public List<String> nucl_ided_csc_ratio_err; //符合相加校正因子不确定度无设为0
public List<String> nucl_ided_csc_mod_flag; //活度是否经过符合相加校正0
public List<String> nucl_ided_MDC;
public List<String> nucl_ided_Concentration;
public List<String> nucl_ided_Key_Energy; //
public List<String> nucl_ided_Key_Yield; //
//GARDS_QC_CHECK
public List<String> QC_CHECK_QC_NAME;
public List<String> QC_CHECK_QC_VALUE;
public List<String> QC_CHECK_QC_STANDARD;
public List<String> QC_CHECK_QC_RESULT;
//sample information
public String sample_collection_start;
public String sample_collection_stop;
public String sample_time;
public String sample_quantity;
public String sample_decay_time;
public String sample_acquisiton_start;
public String sample_acquistion_stop;
public String sample_acquistion_time;
public String sample_Geometry;
public String sample_Avg_Flow_Rate;
public String sample_stationID; //
public String sample_detectID; //
public String sample_Type; //
public String Collection_Station_Comments;
public String NDC_Analysis_General_Comments;
//SpecSetup
public SpecSetup setting_specSetup;
}

View File

@ -1,28 +0,0 @@
package org.jeecg.modules.base.vo;
import java.io.Serializable;
import java.util.List;
public class StructGStoreMiddleProcessDataNuclLinesIded implements Serializable {
// gards_ nucl_lines_ided数据表
public List<String> nuclideFullname; //FullName
public List<String> idPeak; //峰序号
public List<String> Energy; //核素库中核素对应的能量keV
public List<String> uncEnergy; //核素库中核素对应峰的能量不确定度keV
public List<String> Abundance; //核素库中核素对应峰的发射几率
public List<String> uncAbundance; //核素库中核素对应峰的发射几率不确定度
public List<String> Activity; //利用该峰计算得到的活度
public List<String> uncActivity; //利用该峰计算得到的活度不确定度
public List<String> Effic; //该峰处的探测效率
public List<String> uncEffic; //该峰处的探测效率不确定度
public List<String> Mda; //利用该峰计算得到的最小可探测活度
public List<String> key_flag; //主射线标识01
public List<String> csc_ratio; //符合相加校正因子无设为1
public List<String> csc_ratio_err; //符合相加校正因子不确定度无设为0
public List<String> csc_mod_flag; //活度是否经过符合相加校正0 未知
public List<String> MDC;
public List<String> Concentration;
}

View File

@ -1,62 +1,60 @@
package org.jeecg.modules.base.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class StructInsertInput implements Serializable {
//-----------------input:------------------
List<Double> peakCentroid;
public List<Double> peakCentroid;
List<Double> fwhmc;
public List<Double> fwhmc;
List<Double> tail;
public List<Double> tail;
List<Double> tailAlpha;
public List<Double> tailAlpha;
List<Double> upperTail;
public List<Double> upperTail;
List<Double> upperTailAlpha;
public List<Double> upperTailAlpha;
List<Double> area;
public List<Double> area;
List<Double> stepRatio;
public List<Double> stepRatio;
List<Double> usedEnerPara;
public List<Double> usedEnerPara;
List<Double> usedResoPara;
public List<Double> usedResoPara;
List<Double> usedEffiPara;
public List<Double> usedEffiPara;
long num_g_channel;
public long num_g_channel;
long begin_channel;
public long begin_channel;
List<Double> XCtrl;
public List<Double> XCtrl;
List<Double> YCtrl;
public List<Double> YCtrl;
List<Double> YSlope;
public List<Double> YSlope;
int rg_low;
public int rg_low;
int rg_high;
public int rg_high;
List<Double> para_tail;
public List<Double> para_tail;
List<Double> para_tailAlpha;
public List<Double> para_tailAlpha;
List<Double> para_tailRight;
public List<Double> para_tailRight;
List<Double> para_tailRightAlpha;
public List<Double> para_tailRightAlpha;
List<Double> para_stepRatio;
public List<Double> para_stepRatio;
int curChan;
public int curChan;
List<Double> vCount;
public List<Double> vCount;
}

View File

@ -1,31 +1,48 @@
package org.jeecg.modules.base.vo;
import java.io.Serializable;
import java.util.List;
public class StructInsertOutput implements Serializable {
//-----------------output:------------------
List<Double> energy;
public List<Double> peakCentroid;
List<Double> sensitivity;
public List<Double> energy;
List<Double> fwhm;
public List<Double> area;
List<Double> efficiency;
public List<Double> sensitivity;
List<Double> BWWidthChan;
public List<Double> fwhm;
List<Double> recoilBetaChan;
public List<Double> fwhmc;
List<Double> recoilDeltaChan;
public List<Double> stepRatio;
List<Double> vIdx;
public List<Double> tail;
List<Double> vLeft;
public List<Double> tailAlpha;
List<Double> vRight;
public List<Double> upperTail;
List<Double> vCentroid;
public List<Double> upperTailAlpha;
public List<Double> efficiency;
public List<Double> BWWidthChan;
public List<Double> recoilBetaChan;
public List<Double> recoilDeltaChan;
public List<Double> vIdx;
public List<Double> vLeft;
public List<Double> vRight;
public List<Double> vCentroid;
}

View File

@ -35,6 +35,13 @@
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.34.0</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,51 @@
package org.jeecg.common.util;
import org.springframework.stereotype.Component;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
@Component
public class DBUtil implements Serializable {
public Connection openDB(){
Connection conn = null;
try {
//名字固定
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//sqlite3文件的绝对路径
String db = "D:\\workspace\\AnalysisSystemForRadionuclide\\AnalysisSystemForRadionuclide\\AnalysisSystemForRadionuclide\\jeecg-module-spectrum-analysis\\src\\main\\java\\org\\jeecg\\common\\db\\GammaDatabase.db";
try {
conn = DriverManager.getConnection("jdbc:sqlite:" + db);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
//返回state后面便可以调用使用state进行操作数据库
return conn;
}
/**
* 使用完一定要关闭连接 ***** 务必 切记 *****
* @param stat
* @param con
*/
public void close(Statement stat, Connection con){
try {
if(stat!=null)
stat.close();
if(con!=null)
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -12,8 +12,10 @@ import org.jeecg.common.properties.SpectrumPathProperties;
import org.jeecg.modules.base.entity.configuration.GardsNuclLib;
import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib;
import org.jeecg.modules.base.entity.rnman.GardsAnalySetting;
import org.jeecg.modules.base.enums.CalName;
import org.jeecg.modules.base.vo.*;
import org.jeecg.modules.entity.*;
import org.jeecg.modules.entity.vo.TablePeaks;
import org.jeecg.modules.mapper.SpectrumAnalysisMapper;
import org.jeecg.modules.native_jni.CalValuesHandler;
import org.jeecg.modules.native_jni.EnergySpectrumHandler;
@ -37,8 +39,6 @@ import java.text.ParseException;
import java.util.*;
import java.util.stream.Collectors;
import static sun.misc.DoubleConsts.NaN;
@Component
public class GammaFileUtil {
@ -53,18 +53,14 @@ public class GammaFileUtil {
@Autowired
private RedisUtil redisUtil;
public void loadFile(Integer sampleId, PHDFile phd, Result result){
//根据sampleId获取sample文件路径
String sampleFilePath = spectrumAnalysisMapper.getSampleFilePath(sampleId);
if (StringUtils.isBlank(sampleFilePath)){
result.error500("样品文件不存在!");
}
String pathName = sampleFilePath.substring(0, sampleFilePath.lastIndexOf(StringPool.SLASH));
String fileName = sampleFilePath.substring(sampleFilePath.lastIndexOf(StringPool.SLASH)+1);
public boolean loadFile(String pathName, String fileName, PHDFile phd, Result result){
phd.setFilepath(pathName);
phd.setFilename(fileName);
//连接ftp
FTPClient ftpClient = ftpUtil.LoginFTP();
if (Objects.isNull(ftpClient)){
result.error500("ftp连接失败");
return false;
}
//加载dll工具库
System.loadLibrary("ReadPHDFile");
@ -81,6 +77,7 @@ public class GammaFileUtil {
ftpFiles = ftpFiles.stream().filter(item-> item.getName().equals(fileName)).collect(Collectors.toList());
if (ftpFiles.size() == 0){
result.error500("ftp获取文件数据失败");
return false;
}
FTPFile ftpFile = ftpFiles.get(0);
if (Objects.nonNull(ftpFile)){
@ -208,7 +205,7 @@ public class GammaFileUtil {
gEnergyBlock.setCentroid_channel(struct.g_centroid_channel);
gEnergyBlock.setUncertainty(struct.g_uncertainty);
gEnergyBlock.setRecord_count(struct.g_record_count);
phd.getMapEnerKD().put("PHD", gEnergyBlock);
phd.getMapEnerKD().put(CalName.CalPHD.getType(), gEnergyBlock);
}
//g_Resolution
if (CollectionUtils.isNotEmpty(struct.g_r_energy) || CollectionUtils.isNotEmpty(struct.g_r_FWHM) || CollectionUtils.isNotEmpty(struct.g_r_uncertainty) || Objects.nonNull(struct.g_r_record_count)){
@ -217,7 +214,7 @@ public class GammaFileUtil {
gResolutionBlock.setFWHM(struct.g_r_FWHM);
gResolutionBlock.setUncertainty(struct.g_r_uncertainty);
gResolutionBlock.setRecord_count(struct.g_r_record_count);
phd.getMapResoKD().put("PHD", gResolutionBlock);
phd.getMapResoKD().put(CalName.CalPHD.getType(), gResolutionBlock);
}
//g_Efficiency
if (CollectionUtils.isNotEmpty(struct.g_e_energy) || CollectionUtils.isNotEmpty(struct.g_e_efficiency) || CollectionUtils.isNotEmpty(struct.g_e_uncertainty) || Objects.nonNull(struct.g_e_record_count)){
@ -226,7 +223,7 @@ public class GammaFileUtil {
gEfficiencyBlock.setEfficiency(struct.g_e_efficiency);
gEfficiencyBlock.setUncertainty(struct.g_e_uncertainty);
gEfficiencyBlock.setRecord_count(struct.g_e_record_count);
phd.getMapEffiKD().put("PHD", gEfficiencyBlock);
phd.getMapEffiKD().put(CalName.CalPHD.getType(), gEfficiencyBlock);
}
//TotalEff
if (CollectionUtils.isNotEmpty(struct.t_g_energy) || CollectionUtils.isNotEmpty(struct.total_efficiency) || CollectionUtils.isNotEmpty(struct.t_uncertainty) || Objects.nonNull(struct.t_record_count)){
@ -235,7 +232,7 @@ public class GammaFileUtil {
totaleffBlock.setTotal_efficiency(struct.total_efficiency);
totaleffBlock.setUncertainty(struct.t_uncertainty);
totaleffBlock.setRecord_count(struct.t_record_count);
phd.getMapTotEKD().put("PHD", totaleffBlock);
phd.getMapTotEKD().put(CalName.CalPHD.getType(), totaleffBlock);
}
// 初始化默认分析设置
@ -263,23 +260,22 @@ public class GammaFileUtil {
throw new RuntimeException(e);
}
}
return true;
}
public void SetBaseInfo(PHDFile phd, Integer sampleId){
//根据sampleId获取sample文件路径
String sampleFilePath = spectrumAnalysisMapper.getSampleFilePath(sampleId);
String pathName = sampleFilePath.substring(0, sampleFilePath.lastIndexOf(StringPool.SLASH));
String fileName = sampleFilePath.substring(sampleFilePath.lastIndexOf(StringPool.SLASH)+1);
public void SetBaseInfo(PHDFile phd){
String pathName = phd.getFilepath();
String fileName = phd.getFilename();
//文件名称需要加上自动处理的前缀以及修改不同的文件后缀名
String subFileName = fileName.substring(0, fileName.lastIndexOf(StringPool.DOT));
try {
pathName = StringPool.SLASH + spectrumPathProperties.getRootPath() + StringPool.SLASH + pathName;
if(StringUtils.isNotBlank(subFileName)){
//连接ftp
FTPClient ftpClient = ftpUtil.LoginFTP();
if (Objects.isNull(ftpClient)){
String warning = "ftp连接失败";
}
pathName = StringPool.SLASH + spectrumPathProperties.getRootPath() + StringPool.SLASH + pathName;
if(StringUtils.isNotBlank(subFileName)){
//连接ftp
FTPClient ftpClient = ftpUtil.LoginFTP();
if (Objects.isNull(ftpClient)){
String warning = "ftp连接失败";
}
try {
//切换被动模式
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
@ -303,18 +299,23 @@ public class GammaFileUtil {
phd.setVLc(vData);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if(StringUtils.isNotBlank(subFileName)){
//连接ftp
FTPClient ftpClient = ftpUtil.LoginFTP();
if (Objects.isNull(ftpClient)){
String warning = "ftp连接失败";
}
}
if(StringUtils.isNotBlank(subFileName)){
//连接ftp
FTPClient ftpClient = ftpUtil.LoginFTP();
if (Objects.isNull(ftpClient)){
String warning = "ftp连接失败";
}
try {
//切换被动模式
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
@ -338,18 +339,23 @@ public class GammaFileUtil {
phd.setVScac(vData);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if(StringUtils.isNotBlank(subFileName)){
//连接ftp
FTPClient ftpClient = ftpUtil.LoginFTP();
if (Objects.isNull(ftpClient)){
String warning = "ftp连接失败";
}
}
if(StringUtils.isNotBlank(subFileName)){
//连接ftp
FTPClient ftpClient = ftpUtil.LoginFTP();
if (Objects.isNull(ftpClient)){
String warning = "ftp连接失败";
}
try {
//切换被动模式
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
@ -373,14 +379,15 @@ public class GammaFileUtil {
phd.setVBase(phd.getBaseCtrls().getBaseline());
}
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@ -520,6 +527,7 @@ public class GammaFileUtil {
phd.getUsedSetting().setEnergyTolerance(analysis.getSearchThreshold());
}else {
result.error500("There are 0 records when sample_id is "+sampleId+"!");
return false;
}
if (peakNum>0){
@ -557,9 +565,6 @@ public class GammaFileUtil {
phd.getVPeak().add(peakInfo);
}
}
if (phd.getVPeak().size()!=peakNum){
result.error500("The peaks' number in "+T_peaks+" and "+T_analy+" isn't equal.");
}
}
// 获取刻度点数据
List<GardsCalibrationPairsSpectrum> calibrationPairs = spectrumAnalysisMapper.getCalibrationPairs(T_calib, analysis.getIdAnalysis());
@ -574,35 +579,35 @@ public class GammaFileUtil {
phd.setUsedEner(pairsSpectrum.getInput());
gEnergyBlock.getCentroid_channel().add(pairsSpectrum.getXValue());
gEnergyBlock.getG_energy().add(pairsSpectrum.getYValue());
gEnergyBlock.getUncertainty().add(pairsSpectrum.getUncYValue().isEmpty()? 0:Double.valueOf(pairsSpectrum.getUncYValue()));
gEnergyBlock.getUncertainty().add(StringUtils.isBlank(pairsSpectrum.getUncYValue())? 0:Double.valueOf(pairsSpectrum.getUncYValue()));
} else if(calType.equals("Resolution")) {
phd.setUsedReso(pairsSpectrum.getInput());
gResolutionBlock.getG_energy().add(pairsSpectrum.getXValue());
gResolutionBlock.getFWHM().add(pairsSpectrum.getYValue());
gResolutionBlock.getUncertainty().add(pairsSpectrum.getUncYValue().isEmpty()? 0: Double.valueOf(pairsSpectrum.getUncYValue()));
gResolutionBlock.getUncertainty().add(StringUtils.isBlank(pairsSpectrum.getUncYValue())? 0: Double.valueOf(pairsSpectrum.getUncYValue()));
} else if(calType.equals("efficiency")) {
phd.setUsedEffi(pairsSpectrum.getInput());
gEfficiencyBlock.getG_energy().add(pairsSpectrum.getXValue());
gEfficiencyBlock.getEfficiency().add(pairsSpectrum.getYValue());
gEfficiencyBlock.getUncertainty().add(pairsSpectrum.getUncYValue().isEmpty()? 0: Double.valueOf(pairsSpectrum.getUncYValue()));
gEfficiencyBlock.getUncertainty().add(StringUtils.isBlank(pairsSpectrum.getUncYValue())? 0: Double.valueOf(pairsSpectrum.getUncYValue()));
} else if(calType.equals("TotalEfficiency")) {
phd.setUsedTotE(pairsSpectrum.getInput());
totaleffBlock.getG_energy().add(pairsSpectrum.getXValue());
totaleffBlock.getTotal_efficiency().add(pairsSpectrum.getYValue());
totaleffBlock.getUncertainty().add(pairsSpectrum.getUncYValue().isEmpty()? 0: Double.valueOf(pairsSpectrum.getUncYValue()));
totaleffBlock.getUncertainty().add(StringUtils.isBlank(pairsSpectrum.getUncYValue())? 0: Double.valueOf(pairsSpectrum.getUncYValue()));
}
}
if (phd.getUsedEner().isEmpty()){
phd.setUsedEner("PHD");
phd.setUsedEner(CalName.CalPHD.getType());
}
if (phd.getUsedReso().isEmpty()){
phd.setUsedReso("PHD");
phd.setUsedReso(CalName.CalPHD.getType());
}
if (phd.getUsedEffi().isEmpty()){
phd.setUsedEffi("PHD");
phd.setUsedEffi(CalName.CalPHD.getType());
}
if (phd.getUsedTotE().isEmpty()){
phd.setUsedTotE("PHD");
phd.setUsedTotE(CalName.CalPHD.getType());
}
gEnergyBlock.setRecord_count(gEnergyBlock.getG_energy().size());
gResolutionBlock.setRecord_count(gResolutionBlock.getG_energy().size());
@ -611,29 +616,21 @@ public class GammaFileUtil {
if(gEnergyBlock.getRecord_count() > 0) {
phd.setUsedEnerKD(gEnergyBlock);
phd.getMapEnerKD().put(phd.getUsedEner(), gEnergyBlock);
} else {
result.error500("There are 0 records of Energy Calibration!");
}
if(gResolutionBlock.getRecord_count() > 0) {
phd.setUsedResoKD(gResolutionBlock);
phd.getMapResoKD().put(phd.getUsedReso(), gResolutionBlock);
} else {
result.error500("There are 0 records of Resolution Calibration!");
}
if(gEfficiencyBlock.getRecord_count() > 0) {
phd.setUsedEffiKD(gEfficiencyBlock);
phd.getMapEffiKD().put(phd.getUsedEffi(), gEfficiencyBlock);
} else {
result.error500("There are 0 records of Efficiency Calibration!");
}
if(totaleffBlock.getRecord_count() > 0) {
phd.setUsedTotEKD(totaleffBlock);
phd.getMapTotEKD().put(phd.getUsedTotE(), totaleffBlock);
} else {
result.error500("There are 0 records of Total_efficiency Calibration!");
}
}
// 获取刻度拟合系数
@ -646,7 +643,7 @@ public class GammaFileUtil {
String[] list_coeff = calibrationSpectrum.getCoeffString().split(StringPool.COMMA);
for (String str:list_coeff) {
para.getP().add(Double.valueOf(str));
para.getPerr().add(NaN);
para.getPerr().add(0.0);
}
if(calType.equals("energy")) {
phd.setUsedEnerPara(para);
@ -845,7 +842,6 @@ public class GammaFileUtil {
if(phd.getHeader().getSystem_type().equals("P")) {
List<Double> energy = new LinkedList<>();
energy.add(ener_Be7);
System.loadLibrary("GammaAnaly");
CalValuesOut calValuesOut = CalValuesHandler.calFcnEval(energy, phd.getUsedResoPara().getP());
List<Double> fwhm = calValuesOut.counts;
QcCheckItem be7 = qcItems.get("Be7-FWHM");
@ -1123,7 +1119,7 @@ public class GammaFileUtil {
return true;
}
public List<String> DetailedInfo(PHDFile phd) {
public List<String> DetailedInfo(Integer sampleId, PHDFile phd) {
try {
// Sample_Id, Station_Code, Detector_Code, System_Type, Data_Type, Spectral_Qualifier,
// SRID, Sample_Status, Collect_Start, Sampling_Time, Quantity, Flow_Rate,
@ -1132,7 +1128,7 @@ public class GammaFileUtil {
for (int i=0; i<18; i++){
detailInfo.add("");
}
detailInfo.set(0, phd.getId_sample()); // Sample_Id
detailInfo.set(0, Objects.nonNull(sampleId)?sampleId.toString():""); // Sample_Id
detailInfo.set(1, phd.getHeader().getSite_code()); // Station_Code
detailInfo.set(2, phd.getHeader().getDetector_code()); // Detector_Code
detailInfo.set(3, phd.getHeader().getSystem_type()); // System_Type
@ -1144,7 +1140,7 @@ public class GammaFileUtil {
Date collect_stop_dt = DateUtils.parseDate(collect_stop,"yyyy/MM/dd HH:mm:ss");
detailInfo.set(8, phd.getCollect().getCollection_start_date() + " " + phd.getCollect().getCollection_start_time());
Date date = DateUtils.parseDate(phd.getCollect().getCollection_start_date() + " " + phd.getCollect().getCollection_start_time().substring(0,phd.getCollect().getCollection_start_time().indexOf(StringPool.DOT)),"yyyy/MM/dd HH:mm:ss");
double timeSpan = (date.getTime()/1000 - collect_stop_dt.getTime()/1000) / 3600.0;
double timeSpan = (collect_stop_dt.getTime()/1000 - date.getTime()/1000) / 3600.0;
detailInfo.set(9, String.format("%.2f", timeSpan));// Sampling_Time
detailInfo.set(10, String.format("%.2f", phd.getCollect().getAir_volume()));
if(timeSpan != 0){
@ -1155,7 +1151,7 @@ public class GammaFileUtil {
Date start_date = DateUtils.parseDate(start_time, "yyyy/MM/dd HH:mm:ss");
detailInfo.set(13, String.format("%.2f", phd.getAcq().getAcquisition_real_time()));
detailInfo.set(14, String.format("%.2f", phd.getAcq().getAcquisition_live_time()));
double timespan = (collect_stop_dt.getTime()/1000 - start_date.getTime()/1000);
double timespan = (start_date.getTime()/1000 - collect_stop_dt.getTime()/1000);
detailInfo.set(15, String.format("%.2f", timespan / 3600.0));
detailInfo.set(17, phd.getCategory());
return detailInfo;
@ -1463,41 +1459,53 @@ public class GammaFileUtil {
return datalist;
}
public boolean AnalyseData(PHDFile phd, boolean bSingle, String userName){
public boolean AnalyseData(PHDFile phd, ConfigureData configureData, List<String> nuclides, boolean bSingle){
//调用方法判断是否修改了参数
if (Objects.nonNull(configureData)){
SpecSetup phdSetting = phd.getSetting();
phdSetting.setECutAnalysis_Low(configureData.getECutAnalysis_Low());
phdSetting.setECutAnalysis_High(configureData.getECutAnalysis_High());
phdSetting.setEnergyTolerance(configureData.getEnergyTolerance());
phdSetting.setPSS_low(configureData.getPSS_low());
phdSetting.setBaseImprovePSS(configureData.getBaseImprovePSS());
phdSetting.setK_back(configureData.getK_back());
phdSetting.setK_alpha(configureData.getK_alpha());
phdSetting.setK_beta(configureData.getK_beta());
phdSetting.setRiskLevelK(configureData.getRiskLevelK());
phdSetting.setRefTime_act(configureData.getRefTime_act());
phdSetting.setRefTime_conc(configureData.getRefTime_conc());
}
int change = SettingChanged(phd);
if(change == 0 && phd.getVPeak().size() > 0){
return false;
} else if(change == -1) {
if(change == 0 && phd.getVPeak().size() > 0) return false;
else if(change == -1) {
phd.setUsedEffi(phd.getNewEffi());
phd.setUsedEffiKD(phd.getMapEffiKD().get(phd.getNewEffi()));
phd.setUsedEffiPara(phd.getMapEffiPara().get(phd.getNewEffi()));
UpdateEfficiency(phd);
Map<String, NuclideLines> map = new HashMap<>();
if (phd.getHeader().getSystem_type().equals("P")){
map = (Map<String, NuclideLines>)redisUtil.get("Gamma:GammaPInit" + userName);
} else if (phd.getHeader().getSystem_type().equals("G")) {
map = (Map<String, NuclideLines>)redisUtil.get("Gamma:GammaGInit"+userName);
}
NuclidesIdent(phd, map);
Map<String, NuclideLines> nuclideLinesMap = GetNuclideLines(nuclides);
NuclidesIdent(phd, nuclideLinesMap);
RunQC(phd);
String Warning = "Finish three tasks:\n"+
"\t1.Update efficiencies of all peaks;\n"+
"\t2.Identify nuclides again;\n"+
"\t3.Test QC again.";
} else {
// if(bSingle)
// {
if(bSingle) {
// AnalyseFlowChart flow_dlg(this);
// flow_dlg.exec();
// } else {
// Map<String, NuclideLines> t_map = (phd->header.system_type == "P" ? m_mapNucLineP : m_mapNucLineG);
// GammaAnalyALG alg;
// alg.AnalyseSpectrum(phd, t_map);
// }
} else {
Map<String, NuclideLines> nuclideLinesMap = GetNuclideLines(nuclides);
// AnalyseSpectrum(phd, nuclideLinesMap);
}
}
return true;
}
public boolean AnalyseSpectrum(PHDFile phd, Map<String, NuclideLines> map){
return false;
}
public int SettingChanged(PHDFile phd) {
SpecSetup newSets = phd.getSetting();
SpecSetup oldSets = phd.getUsedSetting();
@ -1505,7 +1513,7 @@ public class GammaFileUtil {
if(newSets.getECutAnalysis_Low() != oldSets.getECutAnalysis_Low()
|| newSets.getECutAnalysis_High() != oldSets.getECutAnalysis_High()
|| newSets.getEnergyTolerance() != oldSets.getEnergyTolerance()
|| newSets.getPSS_low() != oldSets.getPSS_low()
|| newSets.getPSS_low() != oldSets.getCalibrationPSS_low()
|| newSets.getBaseImprovePSS() != oldSets.getBaseImprovePSS()
|| newSets.getK_back() != oldSets.getK_back()
|| newSets.getK_alpha() != oldSets.getK_alpha()
@ -1519,9 +1527,7 @@ public class GammaFileUtil {
List<Double> old_ener = phd.getUsedEnerPara().getP();
List<Double> new_ener = phd.getMapEnerPara().get(phd.getNewEner()).getP();
if(old_ener.size() != new_ener.size()){
return 1;
}
if(old_ener.size() != new_ener.size()) return 1;
for(int i=0; i<old_ener.size(); ++i) {
if(Math.abs(old_ener.get(i) - new_ener.get(i)) > 1E-6){
return 1;
@ -1530,9 +1536,7 @@ public class GammaFileUtil {
List<Double> old_reso = phd.getUsedResoPara().getP();
List<Double> new_reso = phd.getMapResoPara().get(phd.getNewReso()).getP();
if(old_reso.size() != new_reso.size()){
return 1;
}
if(old_reso.size() != new_reso.size()) return 1;
for(int i=0; i<old_reso.size(); ++i) {
if(Math.abs(old_reso.get(i) - new_reso.get(i)) > 1E-6){
return 1;
@ -1541,15 +1545,12 @@ public class GammaFileUtil {
List<Double> old_effi = phd.getUsedEffiPara().getP();
List<Double> new_effi = phd.getMapEffiPara().get(phd.getNewEffi()).getP();
if(old_effi.size() != new_effi.size()){
return -1;
}
if(old_effi.size() != new_effi.size()) return -1;
for(int i=0; i<old_effi.size(); ++i) {
if(Math.abs(old_effi.get(i) - new_effi.get(i)) > 1E-6){
return -1;
}
}
return 0;
}
@ -2326,11 +2327,12 @@ public class GammaFileUtil {
GardsNuclLib parentAndDaughter = spectrumAnalysisMapper.getParentAndDaughter(name);
List<String> parentList = new LinkedList<>();
if(Objects.nonNull(parentAndDaughter)) {
parentList.add(parentAndDaughter.getDaughters1());
parentList.add(parentAndDaughter.getDaughters2());
parentList.add(parentAndDaughter.getDaughters3());
parentList.add(parentAndDaughter.getDaughters4());
parentList.add(parentAndDaughter.getDaughters5());
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();
@ -2793,11 +2795,11 @@ public class GammaFileUtil {
middleData.calibration_pairs_E_yValue = DoubleLimit(fileAnlyse.getUsedEnerKD().getG_energy());
middleData.calibration_pairs_E_uncYValue =DoubleLimit(fileAnlyse.getUsedEnerKD().getUncertainty());
if(Objects.nonNull(fileAnlyse.getMapEnerKD().get("PHD"))) {
if(Objects.nonNull(fileAnlyse.getMapEnerKD().get(CalName.CalPHD.getType()))) {
middleData.calibration_pairs_S_E_idCalPoint =DoubleLimit(temp);
middleData.calibration_pairs_S_E_xValue =DoubleLimit(fileAnlyse.getMapEnerKD().get("PHD").getCentroid_channel());
middleData.calibration_pairs_S_E_yValue =DoubleLimit(fileAnlyse.getMapEnerKD().get("PHD").getG_energy());
middleData.calibration_pairs_S_E_uncYValue =DoubleLimit(fileAnlyse.getMapEnerKD().get("PHD").getUncertainty());
middleData.calibration_pairs_S_E_xValue =DoubleLimit(fileAnlyse.getMapEnerKD().get(CalName.CalPHD.getType()).getCentroid_channel());
middleData.calibration_pairs_S_E_yValue =DoubleLimit(fileAnlyse.getMapEnerKD().get(CalName.CalPHD.getType()).getG_energy());
middleData.calibration_pairs_S_E_uncYValue =DoubleLimit(fileAnlyse.getMapEnerKD().get(CalName.CalPHD.getType()).getUncertainty());
}
}
@ -2818,11 +2820,11 @@ public class GammaFileUtil {
middleData.calibration_pairs_EF_yValue =DoubleLimit(fileAnlyse.getUsedEffiKD().getEfficiency());
middleData.calibration_pairs_EF_uncYValue=DoubleLimit(fileAnlyse.getUsedEffiKD().getUncertainty());
if(Objects.nonNull(fileAnlyse.getMapEffiKD().get("PHD"))) {
if(Objects.nonNull(fileAnlyse.getMapEffiKD().get(CalName.CalPHD.getType()))) {
middleData.calibration_pairs_S_EF_idCalPoint =DoubleLimit(temp);
middleData.calibration_pairs_S_EF_xValue =DoubleLimit(fileAnlyse.getMapEffiKD().get("PHD").getG_energy());
middleData.calibration_pairs_S_EF_yValue =DoubleLimit(fileAnlyse.getMapEffiKD().get("PHD").getEfficiency());
middleData.calibration_pairs_S_EF_uncYValue=DoubleLimit(fileAnlyse.getMapEffiKD().get("PHD").getUncertainty());
middleData.calibration_pairs_S_EF_xValue =DoubleLimit(fileAnlyse.getMapEffiKD().get(CalName.CalPHD.getType()).getG_energy());
middleData.calibration_pairs_S_EF_yValue =DoubleLimit(fileAnlyse.getMapEffiKD().get(CalName.CalPHD.getType()).getEfficiency());
middleData.calibration_pairs_S_EF_uncYValue=DoubleLimit(fileAnlyse.getMapEffiKD().get(CalName.CalPHD.getType()).getUncertainty());
}
}
@ -2842,11 +2844,11 @@ public class GammaFileUtil {
middleData.calibration_pairs_R_yValue =DoubleLimit(fileAnlyse.getUsedResoKD().getFWHM());
middleData.calibration_pairs_R_uncYValue =DoubleLimit(fileAnlyse.getUsedResoKD().getUncertainty());
if(Objects.nonNull(fileAnlyse.getMapResoKD().get("PHD"))) {
if(Objects.nonNull(fileAnlyse.getMapResoKD().get(CalName.CalPHD.getType()))) {
middleData.calibration_pairs_S_R_idCalPoint =DoubleLimit(temp);
middleData.calibration_pairs_S_R_xValue =DoubleLimit(fileAnlyse.getMapResoKD().get("PHD").getG_energy());
middleData.calibration_pairs_S_R_yValue =DoubleLimit(fileAnlyse.getMapResoKD().get("PHD").getFWHM());
middleData.calibration_pairs_S_R_uncYValue =DoubleLimit(fileAnlyse.getMapResoKD().get("PHD").getUncertainty());
middleData.calibration_pairs_S_R_xValue =DoubleLimit(fileAnlyse.getMapResoKD().get(CalName.CalPHD.getType()).getG_energy());
middleData.calibration_pairs_S_R_yValue =DoubleLimit(fileAnlyse.getMapResoKD().get(CalName.CalPHD.getType()).getFWHM());
middleData.calibration_pairs_S_R_uncYValue =DoubleLimit(fileAnlyse.getMapResoKD().get(CalName.CalPHD.getType()).getUncertainty());
}
}
@ -2865,11 +2867,11 @@ public class GammaFileUtil {
middleData.calibration_pairs_T_xValue =DoubleLimit(fileAnlyse.getUsedTotEKD().getG_energy());
middleData.calibration_pairs_T_yValue =DoubleLimit(fileAnlyse.getUsedTotEKD().getTotal_efficiency());
middleData.calibration_pairs_T_uncYValue =DoubleLimit(fileAnlyse.getUsedTotEKD().getUncertainty());
if(Objects.nonNull(fileAnlyse.getMapTotEKD().get("PHD"))) {
if(Objects.nonNull(fileAnlyse.getMapTotEKD().get(CalName.CalPHD.getType()))) {
middleData.calibration_pairs_S_T_idCalPoint =DoubleLimit(temp);
middleData.calibration_pairs_S_T_xValue =DoubleLimit(fileAnlyse.getMapTotEKD().get("PHD").getG_energy());
middleData.calibration_pairs_S_T_yValue =DoubleLimit(fileAnlyse.getMapTotEKD().get("PHD").getTotal_efficiency());
middleData.calibration_pairs_S_T_uncYValue =DoubleLimit(fileAnlyse.getMapTotEKD().get("PHD").getUncertainty());
middleData.calibration_pairs_S_T_xValue =DoubleLimit(fileAnlyse.getMapTotEKD().get(CalName.CalPHD.getType()).getG_energy());
middleData.calibration_pairs_S_T_yValue =DoubleLimit(fileAnlyse.getMapTotEKD().get(CalName.CalPHD.getType()).getTotal_efficiency());
middleData.calibration_pairs_S_T_uncYValue =DoubleLimit(fileAnlyse.getMapTotEKD().get(CalName.CalPHD.getType()).getUncertainty());
}
}
@ -3537,4 +3539,283 @@ public class GammaFileUtil {
return spectrum.toString();
}
public double GetEnergyByFloatChan(PHDFile phd, int channel){
// 算法描述取指定点附近的两点根据 y=ax+b 方程求指定点处的能量
double y = 0.0;
long m_nCount = phd.getSpec().getNum_g_channel();
int index = channel > 0 ? channel-1 : channel; // 确保索引大于等于0
if(phd.getVEnergy().size() == m_nCount && index < m_nCount) // 确保索引有效
{
int index2 = (index < m_nCount-1 ? index + 1 : index - 1);
double y1 = phd.getVEnergy().get(index);
double y2 = phd.getVEnergy().get(index2);
y = y1 + (y2 - y1) / (index2 - index) * (channel - index);
}
return y;
}
public List<String> InitList(double energy, double tolerance, List<String> nuclides){
if(nuclides.size() < 1){
return new LinkedList<>();
}
double min = energy - tolerance;
double max = energy + tolerance;
List<String> nuclideList = spectrumAnalysisMapper.findNuclideList(min, max, nuclides);
return nuclideList;
}
public void InitTable(String name, Map<String, Object> map, PHDFile phd){
InitNuclideInfo(name, map);
long span = phd.getSpec().getG_energy_span();
List<GardsNuclLinesLib> nuclideTableList = spectrumAnalysisMapper.getNuclideTable(name, span);
if (CollectionUtils.isNotEmpty(nuclideTableList)){
map.put("table", nuclideTableList);
InitChart(nuclideTableList, phd, map);
}
}
public void InitNuclideInfo(String name, Map<String, Object> map){
map.put("name", name);
GardsNuclLib nuclideInfo = spectrumAnalysisMapper.getNuclideInfo(name);
if(Objects.nonNull(nuclideInfo)) {
map.put("lines", nuclideInfo.getNumLines());
if(Objects.isNull(nuclideInfo.getHalflife())) {
map.put("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) {
halflife = halflife * 1440;
units = "M";
} else if(halflife <= 1.0 / 1440 && halflife > 0) {
halflife = halflife * 86400;
units = "S";
}
halflife = halflife + 0.0001;
map.put("halfLife", String.format("%.3f", halflife) + units);
}
if(Objects.isNull(nuclideInfo.getHalflifeErr())) {
map.put("halfLifeErr", "");
} else {
map.put("halfLifeErr", String.format("%.3f", nuclideInfo.getHalflifeErr().doubleValue())+"%");
}
}
}
public void InitChart(List<GardsNuclLinesLib> nuclideTableList, PHDFile phd, Map<String, Object> map){
List<Map<String, Object>> chartList = new LinkedList<>();
for (int i=0; i < nuclideTableList.size(); i++){
Map<String, Object> chartMap = new HashMap<>();
GardsNuclLinesLib item = nuclideTableList.get(i);
double energy = item.getEnergy();
List<ChartData> chartData = Energy_Count_Base(energy, 30, phd);
String title = "Line" + (i+1);
String bottom = "Abundance:" + item.getYield();
String selPos = energy+"";
String cursorText = energy + " keV";
chartMap.put("chartData", chartData);
chartMap.put("title", title);
chartMap.put("bottom", bottom);
chartMap.put("selPos", selPos);
chartMap.put("cursorText", cursorText);
chartList.add(chartMap);
}
map.put("chart", chartList);
}
public List<ChartData> Energy_Count_Base(double energy, int chanNum, PHDFile phd) {
List<ChartData> datalist = new LinkedList<>();
int channel = GetChannelByEnergy(energy, 0, phd);
int start = channel-chanNum/2, end = channel+chanNum/2;
if(start < 1) {
start = 1;
end = start + chanNum;
} else if(end > phd.getSpec().getNum_g_channel()) {
end = (int) phd.getSpec().getNum_g_channel();
start = end - chanNum;
}
datalist.add(Energy_CountCahrt(start, end, phd));
datalist.add(Energy_BaseLine(start, end, phd));
return datalist;
}
public ChartData Energy_CountCahrt(int start, int end, PHDFile phd) {
ChartData data1 = new ChartData();
if(phd.getSpec().getNum_g_channel() > 1 && phd.getVEnergy().size() == phd.getSpec().getNum_g_channel()) {
if(start < 1){
start = 1;
}
if(end < 1 || end > phd.getSpec().getNum_g_channel()){
end = (int) phd.getSpec().getNum_g_channel();
}
for(int i=start-1; i<end; ++i) {
SeriseData seriseData = new SeriseData();
seriseData.setX(phd.getVEnergy().get(i));
seriseData.setY(phd.getSpec().getCounts().get(i));
//if(m_phd->Spectrum.counts[i] == 0) continue;
data1.getPointlist().add(seriseData);
}
data1.setName("Energy");
data1.setGroup("energy");
data1.setColor("255,255,0"); // 颜色原谱:0:1Lc:2BaseLine:3Scac:4比较谱:5
}
return data1;
}
public ChartData Energy_BaseLine(int start, int end, PHDFile phd) {
ChartData cData = new ChartData();
if(phd.getSpec().getNum_g_channel() > 1 && phd.getVEnergy().size() == phd.getSpec().getNum_g_channel() && phd.getVBase().size() == phd.getSpec().getNum_g_channel()) {
if(start < 1){
start = 1;
}
if(end > phd.getSpec().getNum_g_channel() || end < 1){
end = (int) phd.getSpec().getNum_g_channel();
}
for(int i=start-1; i<end; ++i) {
SeriseData seriseData = new SeriseData();
seriseData.setX(phd.getVEnergy().get(i));
seriseData.setY(phd.getVBase().get(i));
cData.getPointlist().add(seriseData);
}
cData.setGroup("energy");
cData.setName("BaseLine");
cData.setColor("0,246,255");
cData.setType("Line");
}
return cData;
}
public int GetChannelByEnergy(double energy, int startIndex, PHDFile phd) {
// 索引从0开始道从1开始 = 索引 + 1
if(startIndex < 0) startIndex = 0;
int channel = startIndex + 1; // channel 设为 startIndex 处的道数
for(int i=channel; i<phd.getVEnergy().size(); ++i) // startIndex 的下一个索引开始
{
if(phd.getVEnergy().get(i) >= energy) {
if(phd.getVEnergy().get(i) - energy > energy - phd.getVEnergy().get(i-1)){
channel = i; // 道在索引(i-1)
} else{
channel = i+1; // 道在索引(i)
}
break;
}
}
return channel;
}
public void InitPara(PHDFile phd){
List<Double> Acal_tail_para = new LinkedList<>();
Acal_tail_para.add(99.0);
Acal_tail_para.add(0.0);
Acal_tail_para.add(0.0);
Acal_tail_para.add(0.0);
phd.getPara_tail().setP(Acal_tail_para);
List<Double> Acal_tail_alpha_para = new LinkedList<>();
Acal_tail_alpha_para.add(98.0);
Acal_tail_alpha_para.add(1.0);
phd.getPara_tailAlpha().setP(Acal_tail_alpha_para);
List<Double> Acal_tail_right_para = new LinkedList<>();
Acal_tail_right_para.add(98.0);
Acal_tail_right_para.add(0.35);
phd.getPara_tailRight().setP(Acal_tail_right_para);
List<Double> Acal_tail_right_alpha_para = new LinkedList<>();
Acal_tail_right_alpha_para.add(98.0);
Acal_tail_right_alpha_para.add(1.0);
phd.getPara_tailRightAlpha().setP(Acal_tail_right_alpha_para);
List<Double> Acal_step_ratio_para = new LinkedList<>();
Acal_step_ratio_para.add(98.0);
Acal_step_ratio_para.add(0.0);
phd.getPara_stepRatio().setP(Acal_step_ratio_para);
}
public void PeaksChanged(PHDFile phd) {
List<Double> vCentroid = new LinkedList<>();
List<Double> vFwhmCh = new LinkedList<>();
List<Double> vTail = new LinkedList<>();
List<Double> vUpperTail = new LinkedList<>();
for (PeakInfo peak: phd.getVPeak()) {
vCentroid.add(peak.peakCentroid);
vFwhmCh.add(peak.fwhmc);
vTail.add(peak.tail);
vUpperTail.add(peak.upperTail);
}
//m_data->m_phd->vPeak
CalValuesHandler.ComputePeakRange(phd.getVPeak().size(), (int) phd.getSpec().getNum_g_channel(), vCentroid, vFwhmCh, vTail, vUpperTail);
//
// if(m_data->m_phd->header.system_type.toUpper() == "P")
// {
// AlgFunc::NuclidesIdent(m_data->m_phd, m_data->m_mapNucLineP);
// }
// else AlgFunc::NuclidesIdent(m_data->m_phd, m_data->m_mapNucLineG);
}
public int FindNearPeak(List<PeakInfo> vPeak, int channel, boolean bFind) {
boolean t_bFind = false;
int i=0, peakNum = vPeak.size();
for(; i<peakNum; ++i) {
PeakInfo peak = vPeak.get(i);
if(channel >= peak.left && channel <= peak.right) {
// 如果 channel 在峰的左右边界内
if(peak.multiIndex > 0 && channel > peak.peakCentroid) {
// 如果是重峰 channel 在重峰的第一个峰的中心道右侧
int j = i;
double temp = channel - peak.peakCentroid;
while(++j < peakNum && vPeak.get(j).multiIndex == peak.multiIndex) {
if(Math.abs(vPeak.get(j).peakCentroid - channel) < temp) // 找出重峰中峰中心道离 channel 最近的峰
{
temp = Math.abs(vPeak.get(j).peakCentroid - channel);
i = j;
}
}
}
// channel 在索引(i)对应的峰内
t_bFind = true;
break;
} else if(peak.left > channel) {
// channel 不在任何峰内找离它最近的峰
if(i>0 && channel-vPeak.get(i-1).peakCentroid < peak.peakCentroid-channel) i -= 1;
break;
}
}
if(i >= peakNum) i -= 1;
if(bFind) bFind = t_bFind;
return i;
}
public List<TablePeaks> FitPeakBaseLine(PHDFile phd, List<Integer> vIdx){
List<TablePeaks> tablePeaksList = new LinkedList<>();
int peakNum = vIdx.size();
for (int i=0; i<peakNum; ++i) {
int peakIdx = vIdx.get(i);
int row = i+1;
PeakInfo peak = phd.getVPeak().get(peakIdx);
TablePeaks tablePeaks = new TablePeaks();
tablePeaks.setLab(String.valueOf(peakIdx + 1));
String nuclide = "";
for (String peakNuclide:peak.nuclides) {
nuclide+=peakNuclide+";";
}
tablePeaks.setNuclide(StringUtils.isBlank(nuclide)?nuclide:nuclide.substring(0,nuclide.length()-1));
tablePeaks.setEnergy(String.valueOf(peak.energy));
tablePeaks.setNetArea(String.valueOf(peak.area));
tablePeaks.setFwhm(String.valueOf(peak.fwhm));
tablePeaks.setStep(String.valueOf(peak.area * peak.stepRatio));
tablePeaks.setBwGamma("0");
// QLineEdit *edit_bwGamma = new QLineEdit(QString::number(peak.BWWidthChan * AlgFunc::calDerivaOut(peak.peakCentroid, m_enerPara)));
tablePeaks.setNetAreaB(false);
tablePeaks.setCentroid(true);
tablePeaks.setFwhmB(true);
tablePeaksList.add(tablePeaks);
}
return tablePeaksList;
}
}

View File

@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.jeecg.common.properties.SpectrumPathProperties;
import org.jeecg.modules.base.vo.*;
import org.jeecg.modules.entity.GardsXeResultsSpectrum;
import org.jeecg.modules.entity.vo.*;
import org.jeecg.modules.native_jni.EnergySpectrumHandler;
import org.jeecg.modules.native_jni.struct.BgBoundary;
import org.jeecg.modules.native_jni.struct.CalcBgBoundaryParam;
@ -20,14 +23,17 @@ import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.util.*;
import java.util.stream.Collectors;
@Component
public class PHDFileUtil {
@Autowired
private FTPUtil ftpUtil;
@Autowired
private SpectrumPathProperties spectrumPathProperties;
public Map<String, Object> getSourceData(String filePath, String fileName, List<GardsXeResultsSpectrum> xeDataList, Integer sampleId, String status){
public Map<String, Object> getSourceData(String filePath, List<GardsXeResultsSpectrum> xeDataList, Integer sampleId, String status){
//加载dll工具库
System.loadLibrary("ReadPHDFile");
EnergySpectrumStruct struct = EnergySpectrumHandler.getSourceData(filePath);
@ -59,7 +65,7 @@ public class PHDFileUtil {
//Acquisition Start
Date AcquisitionStart = null;
if ( StringUtils.isNotBlank(struct.collection_start_date) && StringUtils.isNotBlank(struct.collection_start_time) ){
AcquisitionStart = DateUtils.parseDate(struct.acquisition_start_date.replace(StringPool.SLASH,StringPool.DASH) + StringPool.SPACE + struct.acquisition_start_time.substring(0, struct.acquisition_start_time.indexOf(StringPool.DOT)), "yyyy-MM-dd HH:mm:ss");
AcquisitionStart = DateUtils.parseDate(struct.acquisition_start_date.replace(StringPool.SLASH,StringPool.DASH) + StringPool.SPACE + struct.acquisition_start_time);
}
//Acq Real Time
double AcquisitionRealTime = struct.acquisition_real_time;
@ -212,18 +218,20 @@ public class PHDFileUtil {
}
map.put("betaEnergyData", betaEnergyList);
//Xe
for (GardsXeResultsSpectrum xeData:xeDataList) {
Double conc = xeData.getConc();
Double mdc = xeData.getMdc();
if (conc < 0){
xeData.setColor("red");
} else if (0<conc && conc < mdc) {
xeData.setColor("#ffcc30");
} else if (conc > mdc) {
xeData.setColor("green");
if (CollectionUtils.isNotEmpty(xeDataList)){
for (GardsXeResultsSpectrum xeData:xeDataList) {
Double conc = xeData.getConc();
Double mdc = xeData.getMdc();
if (conc < 0){
xeData.setColor("red");
} else if (0<conc && conc < mdc) {
xeData.setColor("#ffcc30");
} else if (conc > mdc) {
xeData.setColor("green");
}
}
map.put("XeData", xeDataList);
}
map.put("XeData", xeDataList);
//计算边界值
CalcBgBoundaryParam calcBgBoundaryParam = new CalcBgBoundaryParam();
calcBgBoundaryParam.g_e_cal = EnergySpectrumHandler.GetFileFittingPara(gEnergy, gCentroidChannel);
@ -450,4 +458,162 @@ public class PHDFileUtil {
}
public Map<String, String> getFileData(String filePath){
Map<String, String> map = new HashMap<>();
//加载dll工具库
System.loadLibrary("ReadPHDFile");
EnergySpectrumStruct struct = EnergySpectrumHandler.getSourceData(filePath);
String dataType = struct.data_type;
String systemType = struct.system_type;
String spectrumQuantity = struct.spectrum_quantity;
double acquisitionLiveTime = struct.acquisition_live_time;
String measurementId = struct.measurement_id;
String gasBkMeasurementId = struct.gas_bk_measurement_id;
String detectorBkMeasurementId = struct.detector_bk_measurement_id;
return map;
}
public String NameStandardBy(String filePath, 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(filePath);
//获取路径下所有文件信息
List<FTPFile> ftpFiles = Arrays.asList(ftpClient.listFiles());
if (CollectionUtils.isNotEmpty(ftpFiles)){
//根据文件名称 分别获取 sample gas det文件
List<FTPFile> files = ftpFiles.stream().filter(item -> item.getName().equals(fileName)).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(files)){
FTPFile ftpFile = files.get(0);
inputStream = ftpClient.retrieveFileStream(ftpFile.getName());
file = File.createTempFile("tmp", null);
//将ftp文件的输入流复制给临时文件
FileUtils.copyInputStreamToFile(inputStream, file);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if (Objects.nonNull(ftpClient)){
ftpClient.disconnect();
}
if (inputStream != null){
inputStream.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
//加载动态库
System.loadLibrary("ReadPHDFile");
EnergySpectrumStruct sourceData = EnergySpectrumHandler.getSourceData(file.getAbsolutePath());
String systemType = sourceData.system_type;
String dataType = sourceData.data_type;
StringBuffer path = new StringBuffer();
if(systemType.contains("B")) {
path.append(StringPool.SLASH+"Spectrum");
path.append(StringPool.SLASH+"Xenon");
path.append(StringPool.SLASH+"Sauna");
} else if(systemType.contains("G")) {
path.append(StringPool.SLASH+"Spectrum");
path.append(StringPool.SLASH+"Xenon");
path.append(StringPool.SLASH+"Spalax");
}
if(dataType.contains("SAMPLEPHD")) {
path.append(StringPool.SLASH+"Samplephd");
} else if(dataType.contains("DETBKPHD")) {
path.append(StringPool.SLASH+"Detbkphd");
} else if(dataType.contains("GASBKPHD")) {
path.append(StringPool.SLASH+"Gasbkphd");
} else if(dataType.contains("QCPHD")) {
path.append(StringPool.SLASH+"Qcphd");
}
int pos = fileName.indexOf('-');
if(-1 == pos) {
} else if(fileName.length() >= pos+7) {
path.append(StringPool.SLASH+fileName.substring(pos+1,pos+5));
path.append(StringPool.SLASH+fileName.substring(pos+5,pos+7));
}
path.append(StringPool.SLASH+fileName);
return path.toString();
}
public BgBoundary CalBoundary(String filePath, 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(filePath);
//获取路径下所有文件信息
List<FTPFile> ftpFiles = Arrays.asList(ftpClient.listFiles());
if (CollectionUtils.isNotEmpty(ftpFiles)){
//根据文件名称 分别获取 sample gas det文件
List<FTPFile> files = ftpFiles.stream().filter(item -> item.getName().equals(fileName)).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(files)){
FTPFile ftpFile = files.get(0);
inputStream = ftpClient.retrieveFileStream(ftpFile.getName());
file = File.createTempFile("tmp", null);
//将ftp文件的输入流复制给临时文件
FileUtils.copyInputStreamToFile(inputStream, file);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if (Objects.nonNull(ftpClient)){
ftpClient.disconnect();
}
if (inputStream != null){
inputStream.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
//加载dll工具库
System.loadLibrary("ReadPHDFile");
EnergySpectrumStruct struct = EnergySpectrumHandler.getSourceData(file.getAbsolutePath());
//计算边界值
List<Double> gCentroidChannel = struct.g_centroid_channel;
List<Double> gEnergy = struct.g_energy;
List<Double> bChannel = struct.b_channel;
List<Double> bElectronEnergy = struct.b_electron_energy;
CalcBgBoundaryParam calcBgBoundaryParam = new CalcBgBoundaryParam();
calcBgBoundaryParam.g_e_cal = EnergySpectrumHandler.GetFileFittingPara(gEnergy, gCentroidChannel);
calcBgBoundaryParam.b_e_cal = EnergySpectrumHandler.GetFileFittingPara(bElectronEnergy, bChannel);
calcBgBoundaryParam.b_energy = struct.b_electron_energy;
calcBgBoundaryParam.b_channel = struct.b_channel;
calcBgBoundaryParam.g_channel = struct.g_centroid_channel;
calcBgBoundaryParam.g_energy = struct.g_energy;
calcBgBoundaryParam.ROI_B_start_x1 = struct.POI_B_x1;
calcBgBoundaryParam.ROI_B_stop_x2 = struct.POI_B_x2;
calcBgBoundaryParam.ROI_G_start_y1 = struct.POI_G_y1;
calcBgBoundaryParam.ROI_G_stop_y2 = struct.POI_G_y2;
BgBoundary bgBoundary = EnergySpectrumHandler.CalcBgBoundary(calcBgBoundaryParam);
return bgBoundary;
}
}

View File

@ -57,4 +57,28 @@ public class UserTaskUtil {
return stationIds;
}
/**
* 查看当前用户是否有过当前台站的排班任务
* @param userName
* @param stationId
* @return
*/
public boolean CheckUserWriteAuthorityForStation(String userName, Integer stationId){
boolean flag = false;
//根据用户名称查询用户id
SysUser user = userTaskService.findUserByName(userName);
String userId = user.getId();
List<String> userStations = userTaskService.findUserStations(userId);
if (Objects.nonNull(stationId) && CollectionUtils.isNotEmpty(userStations)){
if (userStations.contains(stationId)){
flag = true;
}
}
return flag;
}
public List<String> findRoleCodeByUserName(String userName){
return userTaskService.findRoleCodeByUserName(userName);
}
}

View File

@ -1,9 +1,8 @@
package org.jeecg.modules.controller;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.base.vo.CoeffData;
import org.jeecg.modules.base.vo.InputData;
import org.jeecg.modules.service.IDataService;
import org.jeecg.modules.base.vo.*;
import org.jeecg.modules.entity.vo.ChangeData;
import org.jeecg.modules.service.IGammaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -18,37 +17,70 @@ public class GammaController {
@Autowired
private IGammaService gammaService;
@Autowired
private IDataService dataService;
@GetMapping("initValue")
public Result initValue(HttpServletRequest request){
return dataService.initValue(request);
}
@GetMapping("gammaByDB")
public Result gammaByDB(@RequestParam Integer sampleId, @RequestParam String dbName){
return gammaService.gammaByDB(dbName, sampleId);
}
@GetMapping("gammaByFile")
public Result gammaByFile(String fileName, HttpServletRequest request){
return gammaService.gammaByFile(fileName, request);
}
@GetMapping("configure")
public Result configure(@RequestParam Integer sampleId){
return gammaService.configure(sampleId);
public Result configure(@RequestParam Integer sampleId, @RequestParam String fileName){
return gammaService.configure(sampleId, fileName);
}
@PostMapping("Reprocessing")
public Result Reprocessing(@RequestParam Integer sampleId){
return gammaService.Reprocessing(sampleId);
public Result Reprocessing(@RequestBody ConfigureData configureData, HttpServletRequest request){
return gammaService.Reprocessing(configureData, request);
}
@GetMapping("InteractiveTool")
public Result InteractiveTool(@RequestParam Integer sampleId){
return gammaService.InteractiveTool(sampleId);
public Result InteractiveTool(@RequestParam Integer sampleId, @RequestParam String fileName){
return gammaService.InteractiveTool(sampleId, fileName);
}
@GetMapping("insertPeak")
public Result insertPeak(Integer sampleId, String fileName, Integer curChan){
return gammaService.insertPeak(sampleId, fileName, curChan);
}
@GetMapping("getSelPosNuclide")
public Result getSelPosNuclide(Integer sampleId, String fileName, int channel, String nuclides, HttpServletRequest request){
return gammaService.getSelPosNuclide(sampleId, fileName, channel, nuclides, request);
}
@PostMapping("addNuclide")
public Result addNuclide(Integer curRow, String nuclideName, Integer sampleId){
return null;
}
@GetMapping("nuclideReview")
public Result nuclideReview(Integer sampleId, String fileName, Integer channel, HttpServletRequest request){
return gammaService.nuclideReview(sampleId, fileName, channel, request);
}
@GetMapping("changeNuclide")
public Result changeNuclide(Integer sampleId, String fileName, String nuclideName){
return gammaService.changeNuclide(sampleId, fileName, nuclideName);
}
@GetMapping("searchNuclide")
public Result searchNuclide(Integer sampleId, String fileName, Double energy, Double tolerance, HttpServletRequest request){
return gammaService.searchNuclide(sampleId, fileName, energy, tolerance, request);
}
@GetMapping("ZeroTime")
public Result ZeroTime(@RequestParam Integer sampleId){
return gammaService.ZeroTime(sampleId);
public Result ZeroTime(){
return gammaService.ZeroTime();
}
@GetMapping("ZeroTimeAnalyse")
public Result ZeroTimeAnalyse(String nuclide1, String nuclide2, Double product1, Double product2, String target, String energyTFH, String date, String time){
return gammaService.ZeroTimeAnalyse(nuclide1, nuclide2, product1, product2, target, energyTFH, date, time);
}
@GetMapping("Korsum")
@ -66,83 +98,118 @@ public class GammaController {
}
@GetMapping("energyCalibration")
public Result energyCalibration(@RequestParam Integer sampleId){
return gammaService.energyCalibration(sampleId);
public Result energyCalibration(@RequestParam Integer sampleId, String fileName){
return gammaService.energyCalibration(sampleId, fileName);
}
@PostMapping("changeDataEnergy")
public Result changeDataEnergy(@RequestBody ChangeData changeData){
return gammaService.changeDataEnergy(changeData.getM_vCurCentroid(), changeData.getM_vCurEnergy(), changeData.getM_vCurUncert(), changeData.getM_curParam(), changeData.getSampleId(), changeData.getFileName());
}
@PostMapping("applyDataEnergy")
public Result applyDataEnergy(@RequestBody ChangeData changeData){
return gammaService.applyDataEnergy(changeData.getM_vCurCentroid(), changeData.getM_vCurEnergy(), changeData.getM_vCurUncert(), changeData.getM_curParam(), changeData.getCurCalName(), changeData.getSampleId(), changeData.getFileName());
}
@GetMapping("resolutionCalibration")
public Result resolutionCalibration(@RequestParam Integer sampleId){
return gammaService.resolutionCalibration(sampleId);
public Result resolutionCalibration(@RequestParam Integer sampleId, String fileName){
return gammaService.resolutionCalibration(sampleId, fileName);
}
@PostMapping("changeDataResolution")
public Result changeDataResolution(@RequestBody ChangeData changeData){
return gammaService.changeDataResolution(changeData.getM_vCurReso(), changeData.getM_vCurEnergy(), changeData.getM_vCurUncert(), changeData.getM_curParam(), changeData.getSampleId(), changeData.getFileName());
}
@PostMapping("applyDataResolution")
public Result applyDataResolution(@RequestBody ChangeData changeData){
return gammaService.applyDataResolution(changeData.getM_vCurReso(), changeData.getM_vCurEnergy(), changeData.getM_vCurUncert(), changeData.getM_curParam(), changeData.getCurCalName(), changeData.getSampleId(), changeData.getFileName());
}
@GetMapping("EfficiencyCalibration")
public Result EfficiencyCalibration(@RequestParam Integer sampleId){
return gammaService.EfficiencyCalibration(sampleId);
public Result EfficiencyCalibration(@RequestParam Integer sampleId, String fileName){
return gammaService.EfficiencyCalibration(sampleId, fileName);
}
@PostMapping("changeDataEfficiency")
public Result changeDataEfficiency(@RequestBody ChangeData changeData){
return gammaService.changeDataEfficiency(changeData.getM_vCurEffi(), changeData.getM_vCurEnergy(), changeData.getM_vCurUncert(), changeData.getM_curParam(), changeData.getFuncId(), changeData.getSampleId(), changeData.getFileName());
}
@PostMapping("applyDataEfficiency")
public Result applyDataEfficiency(@RequestBody ChangeData changeData){
return gammaService.applyDataEfficiency(changeData.getM_vCurCentroid(), changeData.getM_vCurEnergy(), changeData.getM_vCurUncert(), changeData.getM_curParam(), changeData.getCurCalName(), changeData.getSampleId(), changeData.getFileName());
}
@GetMapping("NuclideLibrary")
public Result NuclideLibrary(String editEnergy, double err, String libraryName, String nuclideName, HttpServletRequest request){
return gammaService.NuclideLibrary(editEnergy, err, libraryName, nuclideName, request);
public Result NuclideLibrary(Integer sampleId, String fileName, String editEnergy, double err, String libraryName, String nuclideName, HttpServletRequest request){
return gammaService.NuclideLibrary(sampleId, fileName, editEnergy, err, libraryName, nuclideName, request);
}
@GetMapping("configUserLibrary")
public Result configUserLibrary(HttpServletRequest request){
return gammaService.configUserLibrary(request);
public Result configUserLibrary(Integer sampleId, String fileName, HttpServletRequest request){
return gammaService.configUserLibrary(sampleId, fileName, request);
}
@GetMapping("viewComment")
public Result viewComment(@RequestParam Integer sampleId){
return gammaService.viewComment(sampleId);
public Result viewComment(@RequestParam Integer sampleId, String fileName){
return gammaService.viewComment(sampleId, fileName);
}
@GetMapping("peakInformation")
public Result peakInformation(@RequestParam Integer sampleId){
return gammaService.peakInformation(sampleId);
public Result peakInformation(@RequestParam Integer sampleId, String fileName){
return gammaService.peakInformation(sampleId, fileName);
}
@GetMapping("viewARR")
public Result viewARR(Integer sampleId, HttpServletResponse response){
return gammaService.viewARR(sampleId, response);
public void viewARR(Integer sampleId, HttpServletResponse response){
gammaService.viewARR(sampleId, response);
}
@GetMapping("viewRRR")
public Result viewRRR(Integer sampleId){
return gammaService.viewRRR(sampleId);
public Result viewRRR(Integer sampleId, String fileName){
return gammaService.viewRRR(sampleId, fileName);
}
@GetMapping("radionuclideActivity")
public Result radionuclideActivity(Integer sampleId){
return gammaService.radionuclideActivity(sampleId);
public Result radionuclideActivity(Integer sampleId, String fileName){
return gammaService.radionuclideActivity(sampleId, fileName);
}
@GetMapping("Spectrum")
public Result Spectrum(Integer sampleId){
return gammaService.Spectrum(sampleId);
public Result Spectrum(Integer sampleId, String fileName){
return gammaService.Spectrum(sampleId, fileName);
}
@GetMapping("sampleInformation")
public Result sampleInformation(Integer sampleId){
return gammaService.sampleInformation(sampleId);
public Result sampleInformation(Integer sampleId, String fileName){
return gammaService.sampleInformation(sampleId, fileName);
}
@GetMapping("viewQCResult")
public Result viewQCResult(Integer sampleId){
return gammaService.viewQCResult(sampleId);
public Result viewQCResult(Integer sampleId, String fileName){
return gammaService.viewQCResult(sampleId, fileName);
}
@GetMapping("viewRLR")
public Result viewRLR(Integer sampleId){
return gammaService.viewRLR(sampleId);
public Result viewRLR(Integer sampleId, String fileName){
return gammaService.viewRLR(sampleId, fileName);
}
@GetMapping("viewAutomaticAnalysisLog")
public Result viewAutomaticAnalysisLog(Integer sampleId, HttpServletResponse response){
return gammaService.viewAutomaticAnalysisLog(sampleId, response);
public void viewAutomaticAnalysisLog(Integer sampleId, HttpServletResponse response){
gammaService.viewAutomaticAnalysisLog(sampleId, response);
}
@GetMapping("viewGammaviewerLog")
public Result viewGammaviewerLog(Integer sampleId){
return gammaService.viewGammaviewerLog(sampleId);
public Result viewGammaviewerLog(Integer sampleId, String fileName){
return gammaService.viewGammaviewerLog(sampleId, fileName);
}
@GetMapping("saveToDB")
public Result saveToDB(){
return null;
}
}

View File

@ -38,12 +38,28 @@ public class SpectrumAnalysesController {
return spectrumAnalysisService.getDBSpectrumList(queryRequest, gardsSampleData, dbName, menuTypes, AllUsers, CollectStopB, AcqStartB, startDate, endDate, request);
}
@GetMapping("getSpectrumFiles")
public Result getSpectrumFiles(HttpServletRequest request){
return spectrumAnalysisService.getSpectrumFiles(request);
}
@GetMapping("getFilesBySampleFile")
@ApiOperation(value = "根据sampleFile查询出关联的文件信息", notes = "根据sampleFile查询出关联的文件信息")
public Result getFilesBySampleFile(String sampleFileName, HttpServletRequest request){
return null;
}
@GetMapping("getDBSpectrumChart")
@ApiOperation(value = "查询折线图相关信息接口", notes = "查询折线图相关信息接口")
public Result getDBSpectrumChart(String dbName, Integer sampleId){
return spectrumAnalysisService.getDBSpectrumChart(dbName, sampleId);
}
@GetMapping("getFileSpectrumChart")
public Result getFileSpectrumChart(String sampleFileName, String gasFileName, String detFileName, String qcFileName, HttpServletRequest request){
return spectrumAnalysisService.getFileSpectrumChart(sampleFileName, gasFileName, detFileName, qcFileName, request);
}
@DeleteMapping("deleteDBSpectrumChartData")
@ApiOperation(value = "删除折线图缓存数据",notes = "删除折线图缓存数据")
public Result deleteDBSpectrumChartData(Integer[] sampleIds){
@ -147,13 +163,13 @@ public class SpectrumAnalysesController {
}
@PostMapping("ReAnalyse")
public Result ReAnalyse(@RequestBody AnalyseData analyseData){
return spectrumAnalysisService.ReAnalyse(analyseData);
public Result ReAnalyse(@RequestBody AnalyseData analyseData, HttpServletRequest request){
return spectrumAnalysisService.ReAnalyse(analyseData, request);
}
@PostMapping("analyseCurrentSpectrum")
public Result analyseCurrentSpectrum(String dbName, Integer sampleId){
return null;
@GetMapping("analyseCurrentSpectrum")
public Result analyseCurrentSpectrum(String dbName, Integer sampleId, String sampleFileName, String gasFileName, String detFileName, HttpServletRequest request){
return spectrumAnalysisService.analyseCurrentSpectrum(dbName, sampleId, sampleFileName, gasFileName, detFileName, request);
}
@PostMapping("analyseAllSpectrum")
@ -161,4 +177,9 @@ public class SpectrumAnalysesController {
return null;
}
@PostMapping("saveToDB")
public Result saveToDB(BgDataAnlyseResultIn anlyseResultIn){
return spectrumAnalysisService.saveToDB(anlyseResultIn);
}
}

View File

@ -27,6 +27,11 @@ public class GardsAnalysesSpectrum implements Serializable {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date analysisBegin;
/**
* 开始时间-字符串
*/
private String analysisBeginStr;
/**
* 分析结束时间
*/
@ -34,6 +39,11 @@ public class GardsAnalysesSpectrum implements Serializable {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date analysisEnd;
/**
* 结束时间-字符串
*/
private String analysisEndStr;
/**
* Reviewed:交互,auto:自动
*/

View File

@ -67,89 +67,66 @@ public class GardsPeaksSpectrum implements Serializable {
/**
* 峰的净计数率的不确定度1/s
*/
@TableField(value = "UNCNETCOUNTRATE")
private Double uncNetCountRate;
/**
* 测量系统在峰能量处的绝对效率
*/
@TableField(value = "EFFICIENCY")
private Double efficiency;
/**
* 测量系统在峰能量处的绝对效率的不确定度
*/
@TableField(value = "UNCEFFICIENCY")
private Double uncefficiency;
/**
* 峰的半高宽
*/
@TableField(value = "FWHM")
private Double fwhm;
/**
* 峰的十分之一高宽
*/
@TableField(value = "FWTM")
private Double fwtm;
/**
* 峰的重要性因子
*/
@TableField(value = "SIGNIFICANCE")
private Double significance;
/**
* 峰的可探测线Lc
*/
@TableField(value = "LC")
private Double lc;
/**
* 峰的感兴趣区的起始道
*/
@TableField(value = "ROISTART")
private Double roiStart;
/**
* 峰的感兴趣区的结束道
*/
@TableField(value = "ROIEND")
private Double roiEnd;
@TableField(value = "MULTIINDEX")
private Double mulitiIndex;
@TableField(value = "TAIL")
private Double tail;
@TableField(value = "TAILALPHA")
private Double tailAlpha;
@TableField(value = "UPPERTAIL")
private Double upperTail;
@TableField(value = "UPPERTAILALPHA")
private Double upperTailAlpha;
@TableField(value = "BWWIDTHCHAN")
private Double bwwidthchan;
@TableField(value = "RECOILDELTACHAN")
private Double recoildeltachan;
@TableField(value = "STEPRAIO")
private Double stepraio;
@TableField(value = "LD")
private Double ld;
@TableField(value = "SENSITIVITY")
private Double sensitivity;
@TableField(value = "BACKGROUNDAREA")
private Double backgroundarea;
@TableField(value = "MEANBACKCOUNT")
private Double meanbackcount;
@TableField(value = "RECOILBETACHAN")
private Double recoilbetachan;
@TableField(value = "PEAKCOMMENTS")
private String peakcomments;
}

View File

@ -0,0 +1,204 @@
package org.jeecg.modules.entity.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class BgDataAnlyseResultIn implements Serializable {
/**
* 前端新增/修改的备注信息存入数据库
*/
private String comment;
/**
* 分析员名称
*/
private String userName;
/**
* 台站名称
*/
private String stationName;
/**
* sample文件路径
*/
private String sampleFilePath;
/**
* sample文件名称
*/
private String sampleFileName;
/**
* gas文件路径
*/
private String gasFilePath;
/**
* gas文件名称
*/
private String gasFileName;
/**
* det文件路径
*/
private String detFilePath;
/**
* det文件名称
*/
private String detFileName;
/**
* qc文件名称
*/
private String qcFilePath;
/**
* qc文件名称
*/
private String qcFileName;
/**
* 是否点击过Energy Calibration页面下Gamma Detector Calibration的fitting按钮
*/
private boolean bGammaEnergyValid;
/**
* 是否点击过Energy Calibration页面下Beta Detector Calibration的fitting按钮
*/
private boolean bBetaEnergyValid;
/**
* 是否选中sampleData
*/
private boolean checkSample;
/**
* 是否选中GasData
*/
private boolean checkGas;
/**
* 是否选中DetData
*/
private boolean checkDet;
/**
* g-channel
*/
private List<Double> g_channel_sample;
/**
* g-energy
*/
private List<Double> g_energy_sample;
/**
* b-channel
*/
private List<Double> b_channel_sample;
/**
* b-energy
*/
private List<Double> b_energy_sample;
/**
* g-channel
*/
private List<Double> g_channel_gas;
/**
* g-energy
*/
private List<Double> g_energy_gas;
/**
* b-channel
*/
private List<Double> b_channel_gas;
/**
* b-energy
*/
private List<Double> b_energy_gas;
/**
* g-channel
*/
private List<Double> g_channel_det;
/**
* g-energy
*/
private List<Double> g_energy_det;
/**
* b-channel
*/
private List<Double> b_channel_det;
/**
* b-energy
*/
private List<Double> b_energy_det;
/**
* Gamma Detector Calibration公式参数
*/
private String param_a_c2e_g_sample;
private String param_b_c2e_g_sample;
private String param_c_c2e_g_sample;
private String param_a_c2e_g_gas;
private String param_b_c2e_g_gas;
private String param_c_c2e_g_gas;
private String param_a_c2e_g_det;
private String param_b_c2e_g_det;
private String param_c_c2e_g_det;
/**
* Beta Detector Calibration公式参数
*/
private String param_a_c2e_b_sample;
private String param_b_c2e_b_sample;
private String param_c_c2e_b_sample;
private String param_a_c2e_b_gas;
private String param_b_c2e_b_gas;
private String param_c_c2e_b_gas;
private String param_a_c2e_b_det;
private String param_b_c2e_b_det;
private String param_c_c2e_b_det;
private double MDC_Xe135; //MDC XE135
private double MDC_Xe131m; //MDC XE131m
private double MDC_Xe133m; //MDC XE133m
private double MDC_Xe133; //MDC XE133
private double Xe135_con; //135不浓度
private double Xe135_uncer; //135不确定度
private double Xe131m_con;
private double Xe131m_uncer;
private double Xe133m_con;
private double Xe133m_uncer;
private double Xe133_con;
private double Xe133_uncer;
private double LC_Xe135; //LC XE135
private double LC_Xe131m; //LC XE131m
private double LC_Xe133m; //LC XE133m
private double LC_Xe133; //LC XE133
private int Xe131mFlag;
private int Xe133Flag;
private int Xe133mFlag;
private int Xe135Flag;
}

View File

@ -0,0 +1,32 @@
package org.jeecg.modules.entity.vo;
import lombok.Data;
import org.jeecg.modules.base.vo.ParameterInfo;
import java.io.Serializable;
import java.util.List;
@Data
public class ChangeData implements Serializable {
private List<Double> m_vCurCentroid;
private List<Double> m_vCurReso;
private List<Double> m_vCurEffi;
private List<Double> m_vCurEnergy;
private List<Double> m_vCurUncert;
private ParameterInfo m_curParam;
private String curCalName;
private Integer sampleId;
private String fileName;
private Integer funcId;
}

View File

@ -0,0 +1,30 @@
package org.jeecg.modules.entity.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class TablePeaks implements Serializable {
private String lab;
private String nuclide;
private String energy;
private String netArea;
private String fwhm;
private String step;
private String bwGamma;
private boolean netAreaB;
private boolean centroid;
private boolean fwhmB;
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsBgEfficiencyPairs;
public interface GardsBgEfficiencyPairsSpectrumMapper extends BaseMapper<GardsBgEfficiencyPairs> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsCalibrationPairsOrig;
public interface GardsCalibrationPairsOrigSpectrumMapper extends BaseMapper<GardsCalibrationPairsOrig> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsHistogram;
public interface GardsHistogramSpectrumMapper extends BaseMapper<GardsHistogram> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsRoiLimits;
public interface GardsRoiLimitsSpectrumMapper extends BaseMapper<GardsRoiLimits> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsSampleAux;
public interface GardsSampleAuxSpectrumMapper extends BaseMapper<GardsSampleAux> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsSampleCertLine;
public interface GardsSampleCertLineSpectrumMapper extends BaseMapper<GardsSampleCertLine> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsSampleCert;
public interface GardsSampleCertSpectrumMapper extends BaseMapper<GardsSampleCert> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsSampleData;
public interface GardsSampleDataSpectrumMapper extends BaseMapper<GardsSampleData> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsSampleDescription;
public interface GardsSampleDescriptionSpectrumMapper extends BaseMapper<GardsSampleDescription> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsSampleRatios;
public interface GardsSampleRatiosSpectrumMapper extends BaseMapper<GardsSampleRatios> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsSpectrum;
public interface GardsSpectrumSpectrumMapper extends BaseMapper<GardsSpectrum> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.base.entity.original.GardsTotalEfficiencyPairs;
public interface GardsTotalEfficiencyPairsSpectrumMapper extends BaseMapper<GardsTotalEfficiencyPairs> {
}

View File

@ -2,6 +2,7 @@ package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.base.entity.configuration.GardsNuclLib;
import org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib;
@ -10,6 +11,7 @@ import org.jeecg.modules.base.vo.*;
import org.jeecg.modules.entity.*;
import java.util.List;
@Mapper
public interface SpectrumAnalysisMapper {
List<GardsSampleDataSpectrum> getDBSearchList(String dbName, List<String> stationTypes, List<String> userStations, boolean AllUsers);
@ -84,6 +86,8 @@ public interface SpectrumAnalysisMapper {
List<GardsXeResultsSpectrum> ReadXeResults(@Param(value = "dbName") String dbName, @Param(value = "idAnalysis") Integer idAnalysis, @Param(value = "sampleId") Integer sampleId);
List<String> getUserNuclideNames(@Param(value = "nuclides") List<String> nuclides, @Param(value = "min") Double min, @Param(value = "max") Double max);
List<String> getFULLNuclideNames(@Param(value = "min") Double min, @Param(value = "max") Double max);
List<String> getRelevantNuclideNames(@Param(value = "min") Double min, @Param(value = "max") Double max);
@ -98,4 +102,40 @@ public interface SpectrumAnalysisMapper {
String findAutomaticLogPath(@Param(value = "sampleId") Integer sampleId);
List<String> findNuclideList(@Param(value = "min") Double min, @Param(value = "max") Double max, @Param(value = "nuclides") List<String> nuclides);
List<GardsNuclLinesLib> getNuclideTable( @Param(value = "name") String name, @Param(value = "span") Long span);
List<String> getPossibleNuclide(@Param(value = "nuclides") List<String> nuclides, @Param(value = "min") double min, @Param(value = "max") double max);
Integer SampleIsExist(@Param(value = "filePathName") String filePathName, @Param(value = "userName") String userName);
void updateAnalysesStatus(String filePathName);
Integer getStationId(String stationName);
Integer getDetectorId(String detectorName);
Integer getSampleId(@Param(value = "filePathName") String filePathName);
void updateGardsAnalyses(GardsAnalysesSpectrum gardsAnalyses);
void insertGardsAnalyses(GardsAnalysesSpectrum gardsAnalyses);
void deleteCalibrationPairs(Integer idAnalysis);
void insertCalibrationPairs(List<GardsCalibrationPairsSpectrum> calibrationPairsList);
void deleteCalibration(Integer idAnalysis);
void insertCalibration(List<GardsCalibrationSpectrum> calibrationList);
void deleteROIChannels(Integer idAnalysis);
void insertROIChannels(List<GardsROIChannelsSpectrum> roiChannelsList);
void deleteXeResult(Integer idAnalysis);
void insertXeResult(List<GardsXeResultsSpectrum> xeResults);
}

View File

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

View File

@ -585,6 +585,19 @@
AND XE_RESULTS.SAMPLE_ID = #{sampleId}
</select>
<select id="getFULLNuclideNames" resultType="java.lang.String">
select
distinct a.name
from
CONFIGURATION.GARDS_NUCL_LINES_LIB a
where a.name in
<foreach collection="nuclides" item="nuclide" open="(" close=")" separator=",">
#{nuclide}
</foreach>
and a.energy > #{min}
and a.energy &lt; #{max}
</select>
<select id="getFULLNuclideNames" resultType="java.lang.String">
select
distinct a.name
@ -621,8 +634,8 @@
CONFIGURATION.GARDS_NUCL_LINES_LIB a
where a.name = #{name}
<if test=" min != null and max != null ">
and a.energy > min
and a.energy &lt; max
and a.energy > #{min}
and a.energy &lt; #{max}
</if>
order by a.yield
</select>
@ -663,4 +676,227 @@
SELECT LOG_PATH FROM RNAUTO.GARDS_ANALYSES WHERE SAMPLE_ID = #{sampleId}
</select>
<select id="findNuclideList" resultType="java.lang.String">
select
distinct a.name
from
CONFIGURATION.GARDS_NUCL_LINES_LIB a
where a.name in
<foreach collection="nuclides" item="nuclide" open="(" close=")" separator=",">
#{nuclide}
</foreach>
and a.energy > #{min}
and a.energy &lt; #{max}
</select>
<select id="getNuclideTable" resultType="org.jeecg.modules.base.entity.configuration.GardsNuclLinesLib">
select
a.fullname,
a.energy,
a.energy_uncert,
a.yield,
a.yield_uncert
from CONFIGURATION.GARDS_NUCL_LINES_LIB a
where a.name = #{name}
and a.energy >= 30
and a.energy &lt;= #{span}
order by a.yield
</select>
<select id="getPossibleNuclide" resultType="java.lang.String">
select
distinct a.name
from
CONFIGURATION.GARDS_NUCL_LINES_LIB a
where a.name in
<foreach collection="nuclides" item="nuclide" open="(" close=")" separator=",">
#{nuclide}
</foreach>
and a.energy > #{min}
and a.energy &lt; #{max}
</select>
<select id="SampleIsExist" resultType="java.lang.Integer">
SELECT IDANALYSIS FROM RNMAN.GARDS_ANALYSES WHERE SAMPLE_ID=(SELECT SAMPLE_ID FROM ORIGINAL.GARDS_SAMPLE_DATA WHERE INPUT_FILE_NAME = #{filePathName}) AND ANALYST= #{userName}
</select>
<update id="updateAnalysesStatus">
UPDATE ORIGINAL.GARDS_SAMPLE_DATA A SET A.STATUS='R' WHERE INPUT_FILE_NAME=#{filePathName}
</update>
<select id="getStationId" resultType="java.lang.Integer">
SELECT STATION_ID FROM CONFIGURATION.GARDS_STATIONS WHERE STATION_CODE = #{stationName}
</select>
<select id="getDetectorId" resultType="java.lang.Integer">
SELECT DETECTOR_ID FROM CONFIGURATION.GARDS_DETECTORS WHERE DETECTOR_CODE = #{detectorName}
</select>
<select id="getSampleId" resultType="java.lang.Integer">
SELECT SAMPLE_ID FROM ORIGINAL.GARDS_SAMPLE_DATA WHERE INPUT_FILE_NAME = #{filePathName}
</select>
<update id="updateGardsAnalyses">
UPDATE
RNMAN.GARDS_ANALYSES
SET
ANALYSISBEGIN=to_date(#{gardsAnalyses.analysisBeginStr},'YYYY-MM-DD hh24:mi:ss'),
ANALYSISEND=to_date(#{gardsAnalyses.analysisEndStr},'YYYY-MM-DD hh24:mi:ss'),
TYPE=#{gardsAnalyses.type},
SOFTWARE=#{gardsAnalyses.software},
SWVERSION=#{gardsAnalyses.swVersion},
CATEGORY=#{gardsAnalyses.category},
COMMENTS=#{gardsAnalyses.comments},
USEDGASPHD=#{gardsAnalyses.usedgasphd},
USEDDETPHD=#{gardsAnalyses.useddetphd},
USEDGASPHD_ID=#{gardsAnalyses.usedgasphdId},
USEDDETPHD_ID=#{gardsAnalyses.useddetphdId}
WHERE
SAMPLE_ID=#{gardsAnalyses.sampleId}
AND ANALYST=#{gardsAnalyses.analyst}
</update>
<insert id="insertGardsAnalyses">
INSERT INTO
RNMAN.GARDS_ANALYSES(
SAMPLE_ID,
ANALYSISBEGIN,
ANALYSISEND,
TYPE,
SOFTWARE,
SWVERSION,
ANALYST,
CATEGORY,
COMMENTS,
USEDGASPHD,
USEDDETPHD,
USEDGASPHD_ID,
USEDDETPHD_ID)
VALUES(#{gardsAnalyses.sampleId},
to_date(#{gardsAnalyses.analysisBeginStr},'YYYY-MM-DD hh24:mi:ss'),
to_date(#{gardsAnalyses.analysisEndStr},'YYYY-MM-DD hh24:mi:ss'),
#{gardsAnalyses.type},
#{gardsAnalyses.software},
#{gardsAnalyses.swVersion},
#{gardsAnalyses.analyst},
#{gardsAnalyses.category},
#{gardsAnalyses.comments},
#{gardsAnalyses.usedgasphd},
#{gardsAnalyses.useddetphd},
#{gardsAnalyses.usedgasphdId},
#{gardsAnalyses.useddetphdId})
</insert>
<delete id="deleteCalibrationPairs">
DELETE FROM RNMAN.GARDS_CALIBRATION_PAIRS WHERE IDANALYSIS=#{idAnalysis}
</delete>
<insert id="insertCalibrationPairs">
<foreach collection="calibrationPairsList" item="calibrationPairs" open="(" close=")" separator=",">
INSERT INTO
RNMAN.GARDS_CALIBRATION_PAIRS(
SAMPLE_ID,
IDANALYSIS,
SAMPLE_TYPE,
CALTYPE,
INPUT,
IDCALPOINT,
XVALUE,
YVALUE)
VALUES(#{calibrationPairs.sampleId},
#{calibrationPairs.idAnalysis},
#{calibrationPairs.sampleType},
#{calibrationPairs.caltype},
#{calibrationPairs.input},
#{calibrationPairs.idCalPoint},
#{calibrationPairs.xValue},
#{calibrationPairs.yValue},)
</foreach>
</insert>
<delete id="deleteCalibration">
DELETE FROM RNMAN.GARDS_CALIBRATION WHERE IDANALYSIS=#{idAnalysis}
</delete>
<insert id="insertCalibration">
<foreach collection="calibrationList" item="calibration" open="(" close=")" separator=",">
INSERT INTO
RNMAN.GARDS_CALIBRATION(
SAMPLE_ID,
IDANALYSIS,
SAMPLE_TYPE,
CALTYPE,
FUNCTION,
FUNCTIONDEF,
STARTOFRANGE,
ENDOFRANGE,
COEFF1,
COEFF2,
COEFF3)
VALUES(#{calibration.sampleId},
#{calibration.idAnalysis},
#{calibration.sampleType},
#{calibration.calType},
#{calibration.function},
#{calibration.functionDef},
#{calibration.startOfRange},
#{calibration.endOfRange},
#{calibration.coeff1},
#{calibration.coeff2},
#{calibration.coeff3})
</foreach>
</insert>
<delete id="deleteROIChannels">
DELETE FROM RNMAN.GARDS_ROI_CHANNELS WHERE IDANALYSIS=#{idAnalysis}
</delete>
<insert id="insertROIChannels">
<foreach collection="roiChannelsList" item="roiChannels" open="(" close=")" separator=",">
INSERT INTO
RNMAN.GARDS_ROI_CHANNELS(
SAMPLE_ID,
IDANALYSIS,
ROI,
B_CHAN_START,
B_CHAN_STOP,
G_CHAN_START,
G_CHAN_STOP)
VALUES(#{roiChannels.sampleId},
#{roiChannels.idAnalysis},
#{roiChannels.roi},
#{roiChannels.bChanStart},
#{roiChannels.bChanStop},
#{roiChannels.gChanStart},
#{roiChannels.gChanStop})
</foreach>
</insert>
<delete id="deleteXeResult">
DELETE FROM RNMAN.GARDS_XE_RESULTS WHERE IDANALYSIS=#{idAnalysis}
</delete>
<insert id="insertXeResult">
<foreach collection="xeResults" item="xeResult" open="(" close=")" separator=",">
INSERT INTO
RNMAN.GARDS_XE_RESULTS(SAMPLE_ID,
IDANALYSIS,
NUCLIDE_NAME,
CONC,
CONC_ERR,
MDC,
LC,
NID_FLAG)
VALUES(#{xeResult.sampleId},
#{xeResult.idAnalysis},
#{xeResult.nuclideName},
#{xeResult.conc},
#{xeResult.concErr},
#{xeResult.mdc},
#{xeResult.lc},
#{xeResult.nidFlag})
</foreach>
</insert>
</mapper>

View File

@ -8,7 +8,7 @@
from
sys_default_nuclide
where use_type = 3
and nuclide_type = 'G'
and nuclide_type = #{systemType}
and create_by = #{userName}
</select>

View File

@ -23,6 +23,6 @@ public class CalValuesHandler {
public static native List<Double> calFitPara(String type, int funcId, List<Double> x, List<Double> y, List<Double> err);
public static native List<PeakInfo> ComputePeakRange(int m_nCount, List<Double> vCentroid, List<Double> vFwhmCh, List<Double> vTail, List<Double> vUpperTail);
public static native StructInsertOutput ComputePeakRange(int peakSize, int m_nCount, List<Double> vCentroid, List<Double> vFwhmCh, List<Double> vTail, List<Double> vUpperTail);
}

View File

@ -1,5 +1,6 @@
package org.jeecg.modules.native_jni;
import org.jeecg.modules.entity.vo.SpectrumGroup;
import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
import org.jeecg.modules.native_jni.struct.BgBoundary;
import org.jeecg.modules.native_jni.struct.CalcBgBoundaryParam;
@ -51,5 +52,4 @@ public class EnergySpectrumHandler {
*/
public static native BgAnalyseResult bgAnalyse(String sampleFile, String gasFile, String detFile);
}

View File

@ -5,25 +5,41 @@ import java.util.List;
public class BgAnalyseResult {
/************************** BgMDCPara **************************/
/** MDC XE135 */
double MDC_Xe135;
public double MDC_Xe135;
/** MDC XE131m */
double MDC_Xe131m;
public double MDC_Xe131m;
/** MDC XE133m*/
double MDC_Xe133m;
public double MDC_Xe133m;
/** MDC XE133 */
double MDC_Xe133;
List<Double> MDC;
List<Double> MDC_CTS;
public double MDC_Xe133;
public List<Double> MDC;
public List<Double> MDC_CTS;
/************************** BgXeConUncer **************************/
/** 135不浓度 */
double Xe135_con;
public double Xe135_con;
/** 135不确定度 */
double Xe135_uncer;
double Xe131m_con;
double Xe131m_uncer;
double Xe133m_con;
double Xe133m_uncer;
double Xe133_con;
double Xe133_uncer;
public double Xe135_uncer;
public double Xe131m_con;
public double Xe131m_uncer;
public double Xe133m_con;
public double Xe133m_uncer;
public double Xe133_con;
public double Xe133_uncer;
// public double LC_Xe135; //LC XE135
// public double LC_Xe131m; //LC XE131m
// public double LC_Xe133m; //LC XE133m
// public double LC_Xe133; //LC XE133
// public List<Double> LC;
// public List<Double> LC_CTS;
/**
* 分析结果标记true成功false失败
*/
public boolean analyse_flag;
/**
* 失败原因
*/
public String error_log;
}

View File

@ -70,10 +70,10 @@ public class EnergySpectrumStruct {
* transmit time (hh : mm : ss . s)
*/
public String transmit_time;
/************************* Comment ******************/
public Double dimension_1;
/************************* Sample ******************/
public double dimension_1;
public Double dimension_2;
public double dimension_2;
/************************* Comment ******************/
public String comment;

View File

@ -1,11 +0,0 @@
package org.jeecg.modules.service;
import org.jeecg.common.api.vo.Result;
import javax.servlet.http.HttpServletRequest;
public interface IDataService {
Result initValue(HttpServletRequest request);
}

View File

@ -1,8 +1,7 @@
package org.jeecg.modules.service;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.base.vo.CoeffData;
import org.jeecg.modules.base.vo.InputData;
import org.jeecg.modules.base.vo.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -12,48 +11,77 @@ public interface IGammaService{
Result gammaByDB(String dbName, Integer sampleId);
Result configure(Integer sampleId);
Result gammaByFile(String fileName, HttpServletRequest request);
Result Reprocessing(Integer sampleId);
Result configure(Integer sampleId, String fileName);
Result InteractiveTool(Integer sampleId);
Result Reprocessing(ConfigureData configureData, HttpServletRequest request);
Result ZeroTime(Integer sampleId);
Result InteractiveTool(Integer sampleId, String fileName);
Result insertPeak(Integer sampleId, String fileName, Integer curChan);
Result getSelPosNuclide(Integer sampleId, String fileName, int channel, String nuclides, HttpServletRequest request);
Result nuclideReview(Integer sampleId, String fileName, Integer channel, HttpServletRequest request);
Result changeNuclide(Integer sampleId, String fileName, String nuclideName);
Result searchNuclide(Integer sampleId, String fileName, Double energy, Double tolerance, HttpServletRequest request);
Result ZeroTime();
Result ZeroTimeAnalyse(String nuclide1, String nuclide2, Double product1, Double product2, String target, String energyTFH, String date, String time);
Result Korsum();
List<InputData> KorSumInput(CoeffData coeffData);
Result energyCalibration(Integer sampleId);
Result energyCalibration(Integer sampleId, String fileName);
Result resolutionCalibration(Integer sampleId);
Result changeDataEnergy(List<Double> m_vCurCentroid, List<Double> m_vCurEnergy, List<Double> m_vCurUncert, ParameterInfo m_curParam, Integer sampleId, String fileName);
Result EfficiencyCalibration(Integer sampleId);
Result applyDataEnergy(List<Double> m_vCurCentroid, List<Double> m_vCurEnergy, List<Double> m_vCurUncert, ParameterInfo m_curParam, String curCalName, Integer sampleId, String fileName);
Result NuclideLibrary(String editEnergy, double err, String libraryName, String nuclideName, HttpServletRequest request);
Result resolutionCalibration(Integer sampleId, String fileName);
Result configUserLibrary(HttpServletRequest request);
Result changeDataResolution(List<Double> m_vCurReso, List<Double> m_vCurEnergy, List<Double> m_vCurUncert, ParameterInfo m_curParam, Integer sampleId, String fileName);
Result viewComment(Integer sampleId);
Result applyDataResolution(List<Double> m_vCurReso, List<Double> m_vCurEnergy, List<Double> m_vCurUncert, ParameterInfo m_curParam, String curCalName, Integer sampleId, String fileName);
Result peakInformation(Integer sampleId);
Result EfficiencyCalibration(Integer sampleId, String fileName);
Result viewARR(Integer sampleId, HttpServletResponse response);
Result changeDataEfficiency(List<Double> m_vCurEffi, List<Double> m_vCurEnergy, List<Double> m_vCurUncert, ParameterInfo m_curParam, Integer funcId, Integer sampleId, String fileName);
Result viewRRR(Integer sampleId);
Result applyDataEfficiency(List<Double> m_vCurEffi, List<Double> m_vCurEnergy, List<Double> m_vCurUncert, ParameterInfo m_curParam, String curCalName, Integer sampleId, String fileName);
Result radionuclideActivity(Integer sampleId);
Result NuclideLibrary(Integer sampleId, String fileName, String editEnergy, double err, String libraryName, String nuclideName, HttpServletRequest request);
Result Spectrum(Integer sampleId);
Result configUserLibrary(Integer sampleId, String fileName, HttpServletRequest request);
Result sampleInformation(Integer sampleId);
Result viewComment(Integer sampleId, String fileName);
Result viewQCResult(Integer sampleId);
Result peakInformation(Integer sampleId, String fileName);
Result viewRLR(Integer sampleId);
void viewARR(Integer sampleId, HttpServletResponse response);
Result viewAutomaticAnalysisLog(Integer sampleId, HttpServletResponse response);
Result viewRRR(Integer sampleId, String fileName);
Result viewGammaviewerLog(Integer sampleId);
Result radionuclideActivity(Integer sampleId, String fileName);
Result Spectrum(Integer sampleId, String fileName);
Result sampleInformation(Integer sampleId, String fileName);
Result viewQCResult(Integer sampleId, String fileName);
Result viewRLR(Integer sampleId, String fileName);
void viewAutomaticAnalysisLog(Integer sampleId, HttpServletResponse response);
Result viewGammaviewerLog(Integer sampleId, String fileName);
Result saveToDB(String fileName, String userName);
}

View File

@ -0,0 +1,11 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsBgEfficiencyPairs;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
public interface IGardsBgEfficiencyPairsSpectrumService extends IService<GardsBgEfficiencyPairs> {
Integer saveBgEfficiencyPairs(EnergySpectrumStruct sourceData, Integer sampleId);
}

View File

@ -0,0 +1,13 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsCalibrationPairsOrig;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import java.util.List;
public interface IGardsCalibrationPairsOrigSpectrumService extends IService<GardsCalibrationPairsOrig> {
Integer saveGardsCalibrationPairsOrig(EnergySpectrumStruct sourceData, Integer sampleId, List<String> readLines);
}

View File

@ -0,0 +1,11 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsHistogram;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
public interface IGardsHistogramSpectrumService extends IService<GardsHistogram> {
Integer saveHistogram(EnergySpectrumStruct sourceData, Integer sampleId, String filePathName);
}

View File

@ -0,0 +1,11 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsRoiLimits;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
public interface IGardsRoiLimitsSpectrumService extends IService<GardsRoiLimits> {
Integer saveRoiLimits(EnergySpectrumStruct sourceData, Integer sampleId);
}

View File

@ -0,0 +1,13 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsSampleAux;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import java.util.List;
public interface IGardsSampleAuxSpectrumService extends IService<GardsSampleAux> {
Integer saveSampleAux(EnergySpectrumStruct sourceData, Integer sampleId, List<String> readLines);
}

View File

@ -0,0 +1,11 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsSampleCertLine;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
public interface IGardsSampleCertLineSpectrumService extends IService<GardsSampleCertLine> {
Integer saveSampleCertLine(EnergySpectrumStruct sourceData, Integer sampleId);
}

View File

@ -0,0 +1,11 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsSampleCert;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
public interface IGardsSampleCertSpectrumService extends IService<GardsSampleCert> {
Integer saveSampleCert(EnergySpectrumStruct sourceData, Integer sampleId);
}

View File

@ -0,0 +1,13 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsSampleData;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import java.util.List;
public interface IGardsSampleDataSpectrumService extends IService<GardsSampleData> {
Integer saveSampleData(EnergySpectrumStruct sourceData, Integer stationId, Integer detectorId, String filePathName, List<String> readLines);
}

View File

@ -0,0 +1,11 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsSampleDescription;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
public interface IGardsSampleDescriptionSpectrumService extends IService<GardsSampleDescription> {
Integer saveSampleDescription(EnergySpectrumStruct sourceData, Integer sampleId);
}

View File

@ -0,0 +1,11 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsSampleRatios;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
public interface IGardsSampleRatiosSpectrumService extends IService<GardsSampleRatios> {
Integer saveSampleRatios(EnergySpectrumStruct sourceData, Integer sampleId);
}

View File

@ -0,0 +1,13 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsSpectrum;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import java.util.List;
public interface IGardsSpectrumSpectrumService extends IService<GardsSpectrum> {
Integer saveSpectrum(EnergySpectrumStruct sourceData, Integer sampleId, List<String> readLines, String filePathName);
}

View File

@ -0,0 +1,11 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.original.GardsTotalEfficiencyPairs;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
public interface IGardsTotalEfficiencyPairsSpectrumService extends IService<GardsTotalEfficiencyPairs> {
Integer saveTotalEfficiencyPairs(EnergySpectrumStruct sourceData, Integer sampleId);
}

View File

@ -3,9 +3,7 @@ package org.jeecg.modules.service;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsSampleDataSpectrum;
import org.jeecg.modules.base.vo.AnalyseData;
import org.jeecg.modules.base.vo.SeriseData;
import org.jeecg.modules.base.vo.StatisticsQueryData;
import org.jeecg.modules.base.vo.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -18,8 +16,14 @@ public interface ISpectrumAnalysisService {
Result getDBSpectrumList(QueryRequest queryRequest, GardsSampleDataSpectrum gardsSampleData, String dbName, String[] menuTypes, boolean AllUsers, boolean CollectStopB, boolean AcqStartB, Date startDate, Date endDate, HttpServletRequest request);
Result getSpectrumFiles(HttpServletRequest request);
Result getFilesBySampleFile(String sampleFileName, HttpServletRequest request);
Result getDBSpectrumChart(String dbName, Integer sampleId);
Result getFileSpectrumChart(String sampleFileName, String gasFileName, String detFileName, String qcFileName, HttpServletRequest request);
Result deleteDBSpectrumChartData(Integer[] sampleIds);
Result viewComment(Integer sampleId, HttpServletRequest request);
@ -54,10 +58,12 @@ public interface ISpectrumAnalysisService {
Result getGammaGated(Integer chartHeight, Integer channelWidth, Integer gammaChannel, Integer sampleId);
Result ReAnalyse(AnalyseData analyseData);
Result ReAnalyse(AnalyseData analyseData, HttpServletRequest request);
Result analyseCurrentSpectrum(String dbName, Integer sampleId);
Result analyseCurrentSpectrum(String dbName, Integer sampleId, String sampleFileName, String gasFileName, String detFileName, HttpServletRequest request);
Result analyseAllSpectrum();
Result saveToDB(BgDataAnlyseResultIn anlyseResultIn);
}

View File

@ -7,6 +7,6 @@ import java.util.List;
public interface ISysDefaultNuclideSpectrumService extends IService<SysDefaultNuclide> {
List<String> findNuclidesByUserName(String userName);
List<String> findNuclidesByUserName(String userName, String systemType);
}

View File

@ -21,4 +21,7 @@ public interface IUserTaskService {
@RequestMapping("/sysTask/findUserStations")
List<String> findUserStations(@RequestParam String userId);
@RequestMapping("/sys/user/findRoleCodeByUserName")
List<String> findRoleCodeByUserName(@RequestParam String userName);
}

View File

@ -1,48 +0,0 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.util.GammaFileUtil;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.base.vo.NuclideLines;
import org.jeecg.modules.mapper.SpectrumAnalysisMapper;
import org.jeecg.modules.service.IDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@Service("dataService")
public class DataServiceImpl implements IDataService {
@Autowired
private SpectrumAnalysisMapper spectrumAnalysisMapper;
@Autowired
private GammaFileUtil gammaFileUtil;
@Autowired
private RedisUtil redisUtil;
@Override
public Result initValue(HttpServletRequest request) {
Result result = new Result();
String userName = JwtUtil.getUserNameByToken(request);
List<String> PNuclideList = spectrumAnalysisMapper.UserNuclide("P", userName);
if (CollectionUtils.isEmpty(PNuclideList)){
PNuclideList = spectrumAnalysisMapper.UserNuclide("P", "admin");
}
List<String> GNuclideList = spectrumAnalysisMapper.UserNuclide("G", userName);
if (CollectionUtils.isEmpty(GNuclideList)){
GNuclideList = spectrumAnalysisMapper.UserNuclide("G", "admin");
}
Map<String, NuclideLines> PNuclideLinesMap = gammaFileUtil.GetNuclideLines(PNuclideList);
redisUtil.set("Gamma:GammaPInit"+userName,PNuclideLinesMap);
Map<String, NuclideLines> GNuclideLinesMap = gammaFileUtil.GetNuclideLines(GNuclideList);
redisUtil.set("Gamma:GammaGInit"+userName,GNuclideLinesMap);
result.setSuccess(true);
return result;
}
}

View File

@ -0,0 +1,35 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.base.entity.original.GardsBgEfficiencyPairs;
import org.jeecg.modules.mapper.GardsBgEfficiencyPairsSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsBgEfficiencyPairsSpectrumService;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
@Service("gardsBgEfficiencyPairsSpectrumService")
public class GardsBgEfficiencyPairsSpectrumServiceImpl extends ServiceImpl<GardsBgEfficiencyPairsSpectrumMapper, GardsBgEfficiencyPairs> implements IGardsBgEfficiencyPairsSpectrumService {
@Override
public Integer saveBgEfficiencyPairs(EnergySpectrumStruct sourceData, Integer sampleId) {
List<GardsBgEfficiencyPairs> bgEfficiencyPairsList = new LinkedList<>();
for (int i=0; i< sourceData.bg_record_count; i++){
GardsBgEfficiencyPairs bgEfficiencyPairs = new GardsBgEfficiencyPairs();
bgEfficiencyPairs.setSampleId(sampleId);
bgEfficiencyPairs.setRoi(Integer.valueOf(sourceData.bg_ROI_number.get(i)));
bgEfficiencyPairs.setNuclideName(sourceData.bg_nuclide_name.get(i));
bgEfficiencyPairs.setBgEfficiency(sourceData.bg_efficiency.get(i));
bgEfficiencyPairs.setBgEfficError(sourceData.bg_uncertainty.get(i));
bgEfficiencyPairsList.add(bgEfficiencyPairs);
}
if (CollectionUtils.isNotEmpty(bgEfficiencyPairsList)){
this.saveBatch(bgEfficiencyPairsList);
}
return bgEfficiencyPairsList.size();
}
}

View File

@ -0,0 +1,101 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.base.entity.original.GardsCalibrationPairsOrig;
import org.jeecg.modules.base.enums.CalType;
import org.jeecg.modules.base.enums.SampleFileHeader;
import org.jeecg.modules.base.enums.SystemType;
import org.jeecg.modules.mapper.GardsCalibrationPairsOrigSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsCalibrationPairsOrigSpectrumService;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
@Service("gardsCalibrationPairsOrigSpectrumService")
public class GardsCalibrationPairsOrigSpectrumServiceImpl extends ServiceImpl<GardsCalibrationPairsOrigSpectrumMapper, GardsCalibrationPairsOrig> implements IGardsCalibrationPairsOrigSpectrumService {
@Override
public Integer saveGardsCalibrationPairsOrig(EnergySpectrumStruct sourceData, Integer sampleId, List<String> readLines) {
List<GardsCalibrationPairsOrig> calibrationPairsOrigList = new LinkedList<>();
//判断文件是否包含g_Energy块 新增Gards_Calibration_Pairs_Orig数据
if (readLines.contains(SampleFileHeader.GENERGY.getMessage())){
for (int i=0; i<sourceData.g_record_count; i++){
GardsCalibrationPairsOrig calibrationPairsOrig = new GardsCalibrationPairsOrig();
calibrationPairsOrig.setSampleId(sampleId);
calibrationPairsOrig.setSampleType(SystemType.GAMMA.getType());
calibrationPairsOrig.setCaltype(CalType.ENERGY_CAL.getType());
calibrationPairsOrig.setInput("PHD");
calibrationPairsOrig.setIdCalPoint(i);
calibrationPairsOrig.setXValue(sourceData.g_centroid_channel.get(i));
calibrationPairsOrig.setYValue(sourceData.g_energy.get(i));
calibrationPairsOrig.setUncYValue(sourceData.g_uncertainty.get(i));
calibrationPairsOrigList.add(calibrationPairsOrig);
}
}
if (readLines.contains(SampleFileHeader.BENERGY.getMessage())){
for (int i=0; i<sourceData.b_record_count; i++){
GardsCalibrationPairsOrig calibrationPairsOrig = new GardsCalibrationPairsOrig();
calibrationPairsOrig.setSampleId(sampleId);
calibrationPairsOrig.setSampleType(SystemType.BETA.getType());
calibrationPairsOrig.setCaltype(CalType.ENERGY_CAL.getType());
calibrationPairsOrig.setInput("PHD");
calibrationPairsOrig.setIdCalPoint(i);
calibrationPairsOrig.setXValue(sourceData.b_channel.get(i));
calibrationPairsOrig.setYValue(sourceData.b_electron_energy.get(i));
calibrationPairsOrig.setUncYValue(sourceData.b_uncertainty.get(i));
calibrationPairsOrig.setDecayMode(sourceData.b_decay_mode.get(i));
calibrationPairsOrigList.add(calibrationPairsOrig);
}
}
if (readLines.contains(SampleFileHeader.GEFFICIENCY.getMessage())){
for (int i=0; i<sourceData.g_e_record_count; i++){
GardsCalibrationPairsOrig calibrationPairsOrig = new GardsCalibrationPairsOrig();
calibrationPairsOrig.setSampleId(sampleId);
calibrationPairsOrig.setSampleType(SystemType.GAMMA.getType());
calibrationPairsOrig.setCaltype(CalType.EFFICIENCY_CAL.getType());
calibrationPairsOrig.setInput("PHD");
calibrationPairsOrig.setIdCalPoint(i);
calibrationPairsOrig.setXValue(sourceData.g_e_energy.get(i));
calibrationPairsOrig.setYValue(sourceData.g_e_efficiency.get(i));
calibrationPairsOrig.setUncYValue(sourceData.g_e_uncertainty.get(i));
calibrationPairsOrigList.add(calibrationPairsOrig);
}
}
if (readLines.contains(SampleFileHeader.BRESOLUTION.getMessage())){
for (int i=0; i<sourceData.b_r_record_count; i++){
GardsCalibrationPairsOrig calibrationPairsOrig = new GardsCalibrationPairsOrig();
calibrationPairsOrig.setSampleId(sampleId);
calibrationPairsOrig.setSampleType(SystemType.BETA.getType());
calibrationPairsOrig.setCaltype(CalType.RESOLUTION_CAL.getType());
calibrationPairsOrig.setInput("PHD");
calibrationPairsOrig.setIdCalPoint(i);
calibrationPairsOrig.setXValue(sourceData.b_r_electron_energy.get(i));
calibrationPairsOrig.setYValue(sourceData.b_r_FWHM.get(i));
calibrationPairsOrig.setUncYValue(sourceData.b_r_uncertainty.get(i));
calibrationPairsOrigList.add(calibrationPairsOrig);
}
}
if (readLines.contains(SampleFileHeader.GRESOLUTION.getMessage())){
for (int i=0; i<sourceData.g_r_record_count; i++){
GardsCalibrationPairsOrig calibrationPairsOrig = new GardsCalibrationPairsOrig();
calibrationPairsOrig.setSampleId(sampleId);
calibrationPairsOrig.setSampleType(SystemType.GAMMA.getType());
calibrationPairsOrig.setCaltype(CalType.RESOLUTION_CAL.getType());
calibrationPairsOrig.setInput("PHD");
calibrationPairsOrig.setIdCalPoint(i);
calibrationPairsOrig.setXValue(sourceData.g_r_energy.get(i));
calibrationPairsOrig.setYValue(sourceData.g_r_FWHM.get(i));
calibrationPairsOrig.setUncYValue(sourceData.g_r_uncertainty.get(i));
calibrationPairsOrigList.add(calibrationPairsOrig);
}
}
if (CollectionUtils.isNotEmpty(calibrationPairsOrigList)){
this.saveBatch(calibrationPairsOrigList);
}
return calibrationPairsOrigList.size();
}
}

View File

@ -0,0 +1,28 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.base.entity.original.GardsHistogram;
import org.jeecg.modules.mapper.GardsHistogramSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsHistogramSpectrumService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("gardsHistogramSpectrumService")
public class GardsHistogramSpectrumServiceImpl extends ServiceImpl<GardsHistogramSpectrumMapper, GardsHistogram> implements IGardsHistogramSpectrumService {
@Override
public Integer saveHistogram(EnergySpectrumStruct sourceData, Integer sampleId, String filePathName) {
GardsHistogram histogram = new GardsHistogram();
histogram.setSampleId(sampleId);
histogram.setFilename(filePathName);
histogram.setGChannels(Integer.valueOf(String.valueOf(sourceData.g_channels)));
histogram.setBChannels(Integer.valueOf(String.valueOf(sourceData.b_channels)));
histogram.setGEnergySpan(Integer.valueOf(String.valueOf(sourceData.g_h_energy_span)));
histogram.setBEnergySpan(Integer.valueOf(String.valueOf(sourceData.b_h_energy_span)));
int insert = this.baseMapper.insert(histogram);
return insert;
}
}

View File

@ -0,0 +1,36 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.base.entity.original.GardsRoiLimits;
import org.jeecg.modules.mapper.GardsRoiLimitsSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsRoiLimitsSpectrumService;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
@Service("gardsRoiLimitsSpectrumService")
public class GardsRoiLimitsSpectrumServiceImpl extends ServiceImpl<GardsRoiLimitsSpectrumMapper, GardsRoiLimits> implements IGardsRoiLimitsSpectrumService {
@Override
public Integer saveRoiLimits(EnergySpectrumStruct sourceData, Integer sampleId) {
List<GardsRoiLimits> roiLimitsList = new LinkedList<>();
for (int i=0; i<sourceData.roi_record_count; i++){
GardsRoiLimits roiLimits = new GardsRoiLimits();
roiLimits.setSampleId(sampleId);
roiLimits.setRoi(Integer.valueOf(sourceData.ROI_number.get(i)));
roiLimits.setBEnergyStart(sourceData.POI_B_x1.get(i));
roiLimits.setBEnergyStop(sourceData.POI_B_x2.get(i));
roiLimits.setGEnergyStart(sourceData.POI_G_y1.get(i));
roiLimits.setGEnergyStop(sourceData.POI_G_y2.get(i));
roiLimitsList.add(roiLimits);
}
if (CollectionUtils.isNotEmpty(roiLimitsList)){
this.saveBatch(roiLimitsList);
}
return roiLimitsList.size();
}
}

View File

@ -0,0 +1,82 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.base.entity.original.GardsSampleAux;
import org.jeecg.modules.base.enums.SampleFileHeader;
import org.jeecg.modules.mapper.GardsSampleAuxSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsSampleAuxSpectrumService;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.List;
@Service("gardsSampleAuxSpectrumService")
public class GardsSampleAuxSpectrumServiceImpl extends ServiceImpl<GardsSampleAuxSpectrumMapper, GardsSampleAux> implements IGardsSampleAuxSpectrumService {
@Override
public Integer saveSampleAux(EnergySpectrumStruct sourceData, Integer sampleId, List<String> readLines) {
String sampleRefId = "";
String measurementID = "";
String bkgdMeasurementID = "";
String gasBkgdMeasurementID = "";
String sampleHeight = "";
String sampleDiameter = "";
String calibrationDtg = "";
String msgID = "";
String archiveBottleID = "";
double xeVolume=0;
double xeVolumeUncer=0;
double xeCollectionYied=0;
double xeCollectionYiedUncer=0;
//读取message下内容
msgID = sourceData.msg_id;
GardsSampleAux sampleAux = new GardsSampleAux();
sampleAux.setMsgId(msgID);
sampleAux.setSampleHeight(Double.valueOf(sampleHeight));
sampleAux.setSampleDiameter(Double.valueOf(sampleDiameter));
if (readLines.contains(SampleFileHeader.HEADER.getMessage())){
//封装sampleAux对应的数据
measurementID = sourceData.measurement_id.replace("\\", "/").replace(" ", "-");
bkgdMeasurementID = sourceData.detector_bk_measurement_id.replace("\\", "/").replace(" ", "-");
gasBkgdMeasurementID = sourceData.gas_bk_measurement_id.replace("\\", "/").replace(" ", "-");
sampleRefId = sourceData.sample_ref_id;
}
if (readLines.contains(SampleFileHeader.SAMPLE.getMessage())){
//读取Sample下内容
sampleHeight = String.valueOf(sourceData.dimension_2);
sampleDiameter = String.valueOf(sourceData.dimension_1);
}
if (readLines.contains(SampleFileHeader.CALIBRATION.getMessage())){
calibrationDtg = sourceData.date_calibration+" "+sourceData.time_calibration;
}
if (readLines.contains(SampleFileHeader.PROCESSING.getMessage())){
//读取Processing下内容
archiveBottleID = sourceData.archive_bottle_id;
xeVolume = sourceData.sample_volume_of_Xe;
xeVolumeUncer = sourceData.uncertainty_1;
xeCollectionYied = sourceData.Xe_collection_yield;
xeCollectionYiedUncer= sourceData.uncertainty_2;
}
try {
sampleAux.setSampleId(sampleId);
sampleAux.setSampleRefId(sampleRefId);
sampleAux.setMeasurementId(measurementID);
sampleAux.setBkgdMeasurementId(bkgdMeasurementID);
sampleAux.setGasBkgdMeasurementId(gasBkgdMeasurementID);
sampleAux.setSampleHeight(Double.valueOf(sampleHeight));
sampleAux.setSampleDiameter(Double.valueOf(sampleDiameter));
sampleAux.setCalibrationDtg(DateUtils.parseDate(calibrationDtg));
sampleAux.setArchiveBottleId(archiveBottleID);
sampleAux.setXeVolume(xeVolume);
sampleAux.setXeVolumeUncer(xeVolumeUncer);
sampleAux.setXeCollectionYied(xeCollectionYied);
sampleAux.setXeCollectionYiedUncer(xeCollectionYiedUncer);
} catch (ParseException e) {
throw new RuntimeException(e);
}
int insert = this.baseMapper.insert(sampleAux);
return insert;
}
}

View File

@ -0,0 +1,41 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.base.entity.original.GardsSampleCertLine;
import org.jeecg.modules.mapper.GardsSampleCertLineSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsSampleCertLineSpectrumService;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
@Service("gardsSampleCertLineSpectrumService")
public class GardsSampleCertLineSpectrumServiceImpl extends ServiceImpl<GardsSampleCertLineSpectrumMapper, GardsSampleCertLine> implements IGardsSampleCertLineSpectrumService {
@Override
public Integer saveSampleCertLine(EnergySpectrumStruct sourceData, Integer sampleId) {
List<GardsSampleCertLine> sampleCertLineList = new LinkedList<>();
for (int i=0; i<sourceData.record_count; i++){
GardsSampleCertLine sampleCertLine = new GardsSampleCertLine();
sampleCertLine.setSampleId(sampleId);
sampleCertLine.setNuclName(sourceData.nuclide_name.get(i));
sampleCertLine.setHalflife(sourceData.half_life_time.get(i));
sampleCertLine.setEnergy(sourceData.cer_g_energy.get(i));
sampleCertLine.setActivity(sourceData.activity_nuclide_time_assay.get(i));
sampleCertLine.setError(sourceData.uncertainty.get(i));
sampleCertLine.setAbundance(sourceData.g_intensity.get(i));
sampleCertLine.setBAbundance(sourceData.intensity_b_particle.get(i));
sampleCertLine.setBEnergy(sourceData.maximum_energy.get(i));
sampleCertLine.setDecayMode(sourceData.electron_decay_mode.get(i));
sampleCertLine.setHalfliftUnit(sourceData.time_unit.get(i));
sampleCertLineList.add(sampleCertLine);
}
if (CollectionUtils.isNotEmpty(sampleCertLineList)){
this.saveBatch(sampleCertLineList);
}
return sampleCertLineList.size();
}
}

View File

@ -0,0 +1,31 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.base.entity.original.GardsSampleCert;
import org.jeecg.modules.mapper.GardsSampleCertSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsSampleCertSpectrumService;
import org.springframework.stereotype.Service;
import java.text.ParseException;
@Service("gardsSampleCertSpectrumService")
public class GardsSampleCertSpectrumServiceImpl extends ServiceImpl<GardsSampleCertSpectrumMapper, GardsSampleCert> implements IGardsSampleCertSpectrumService {
@Override
public Integer saveSampleCert(EnergySpectrumStruct sourceData, Integer sampleId) {
GardsSampleCert sampleCert = new GardsSampleCert();
try {
sampleCert.setSampleId(sampleId);
sampleCert.setQuantity(sourceData.total_source_activity);
sampleCert.setAssayDate(DateUtils.parseDate(sourceData.assay_date+" "+sourceData.assay_time));
sampleCert.setUnit(sourceData.units_activity);
} catch (ParseException e) {
throw new RuntimeException(e);
}
int insert = this.baseMapper.insert(sampleCert);
return insert;
}
}

View File

@ -0,0 +1,84 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.base.entity.original.GardsSampleData;
import org.jeecg.modules.base.enums.SampleFileHeader;
import org.jeecg.modules.mapper.GardsSampleDataSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsSampleDataSpectrumService;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
@Service("gardsSampleDataSpectrumService")
public class GardsSampleDataSpectrumServiceImpl extends ServiceImpl<GardsSampleDataSpectrumMapper, GardsSampleData> implements IGardsSampleDataSpectrumService {
@Override
public Integer saveSampleData(EnergySpectrumStruct sourceData, Integer stationId, Integer detectorId, String filePathName, List<String> readLines) {
String sample_type = "";
String detect_code = "";
String geometry = "";
String spectral_qualifie = "";
String data_type = "";
String transmit_dtg = "";
String collect_start = "";
String collect_stop = "";
double quantity=0;
String acquisition_start = "";
double acquisition_real_sec=0;
double acquisition_live_sec=0;
//读取message下内容
data_type = sourceData.data_type;
//读取header下内容
GardsSampleData sampleData = new GardsSampleData();
if (readLines.contains(SampleFileHeader.HEADER.getMessage())){
sample_type=sourceData.system_type;
geometry=sourceData.sample_geometry;
spectral_qualifie=sourceData.spectrum_quantity;
transmit_dtg=sourceData.transmit_date+" "+sourceData.transmit_time;
detect_code=sourceData.detector_code;
}
if (readLines.contains(SampleFileHeader.COLLECTION.getMessage())){
//读取Collection下内容
collect_start = sourceData.collection_start_date+" "+sourceData.collection_start_time;
collect_stop = sourceData.collection_stop_date+" "+sourceData.collection_stop_time;
quantity = sourceData.air_volume;
}
if (readLines.contains(SampleFileHeader.ACQUISITION.getMessage())){
//读取Acquisition下内容
acquisition_start = sourceData.acquisition_start_date+" "+sourceData.acquisition_start_time;
acquisition_real_sec=sourceData.acquisition_real_time;
acquisition_live_sec=sourceData.acquisition_live_time;
}
try {
sampleData.setSiteDetCode(detect_code);
sampleData.setInputFileName(filePathName);
sampleData.setSampleType(sample_type);
sampleData.setDataType(data_type);
sampleData.setGeometry(geometry);
sampleData.setSpectralQualifie(spectral_qualifie);
sampleData.setTransmitDtg(DateUtils.parseDate(transmit_dtg));
sampleData.setCollectStart(DateUtils.parseDate(collect_start));
sampleData.setCollectStop(DateUtils.parseDate(collect_stop));
sampleData.setQuantity(quantity);
Date acquisitionStart = DateUtils.parseDate(acquisition_start);
long timeSecs = (long) (acquisitionStart.getTime() + acquisition_live_sec);
Date acquisitionStop = new Date(timeSecs);
sampleData.setAcquisitionStart(acquisitionStart);
sampleData.setAcquisitionStop(acquisitionStop);
sampleData.setAcquisitionLiveSec(acquisition_live_sec);
sampleData.setAcquisitionRealSec(acquisition_real_sec);
sampleData.setStatus("R");
sampleData.setStationId(stationId);
sampleData.setDetectorId(detectorId);
} catch (ParseException e) {
throw new RuntimeException(e);
}
int insert = this.baseMapper.insert(sampleData);
return insert;
}
}

View File

@ -0,0 +1,25 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.base.entity.original.GardsSampleDescription;
import org.jeecg.modules.mapper.GardsSampleDescriptionSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsSampleDescriptionSpectrumService;
import org.springframework.stereotype.Service;
@Service("gardsSampleDescriptionSpectrumService")
public class GardsSampleDescriptionSpectrumServiceImpl extends ServiceImpl<GardsSampleDescriptionSpectrumMapper, GardsSampleDescription> implements IGardsSampleDescriptionSpectrumService {
@Override
public Integer saveSampleDescription(EnergySpectrumStruct sourceData, Integer sampleId) {
GardsSampleDescription sampleDescription = new GardsSampleDescription();
String comment = sourceData.comment;
if (comment.length()>1024){
comment = comment.substring(0, 1022);
}
sampleDescription.setSampleId(sampleId);
sampleDescription.setDescription(comment);
int insert = this.baseMapper.insert(sampleDescription);
return insert;
}
}

View File

@ -0,0 +1,35 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.base.entity.original.GardsSampleRatios;
import org.jeecg.modules.mapper.GardsSampleRatiosSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsSampleRatiosSpectrumService;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
@Service("gardsSampleRatiosSpectrumService")
public class GardsSampleRatiosSpectrumServiceImpl extends ServiceImpl<GardsSampleRatiosSpectrumMapper, GardsSampleRatios> implements IGardsSampleRatiosSpectrumService {
@Override
public Integer saveSampleRatios(EnergySpectrumStruct sourceData, Integer sampleId) {
List<GardsSampleRatios> sampleRatiosList = new LinkedList<>();
for (int i=0; i<sourceData.ratio_record_count; i++){
GardsSampleRatios sampleRatios = new GardsSampleRatios();
sampleRatios.setSampleId(sampleId);
sampleRatios.setRatioId(sourceData.ratio_id.get(i));
sampleRatios.setUpperRoiNumber(Integer.valueOf(sourceData.ROI_num_highter_G_energy_ROI.get(i)));
sampleRatios.setLowerRoiNumber(Integer.valueOf(sourceData.ROI_num_lower_G_energy_ROI.get(i)));
sampleRatios.setCountRatio(sourceData.count_ratio.get(i));
sampleRatios.setCountRatioErr(sourceData.count_ratio_uncertainty.get(i));
sampleRatiosList.add(sampleRatios);
}
if (CollectionUtils.isNotEmpty(sampleRatiosList)){
this.saveBatch(sampleRatiosList);
}
return sampleRatiosList.size();
}
}

View File

@ -0,0 +1,50 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.base.entity.original.GardsSpectrum;
import org.jeecg.modules.base.enums.SampleFileHeader;
import org.jeecg.modules.base.enums.SystemType;
import org.jeecg.modules.mapper.GardsSpectrumSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsSpectrumSpectrumService;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
@Service("gardsSpectrumSpectrumService")
public class GardsSpectrumSpectrumServiceImpl extends ServiceImpl<GardsSpectrumSpectrumMapper, GardsSpectrum> implements IGardsSpectrumSpectrumService {
@Override
public Integer saveSpectrum(EnergySpectrumStruct sourceData, Integer sampleId, List<String> readLines, String filePathName) {
List<GardsSpectrum> spectrumList = new LinkedList<>();
//判断是否包含b_Spectrum块 新增Gards_Spectrum数据
if (readLines.contains(SampleFileHeader.BSPECTRUM.getMessage())){
GardsSpectrum spectrum = new GardsSpectrum();
spectrum.setSampleId(sampleId);
spectrum.setSampleType(SystemType.BETA.getType());
spectrum.setFilename(filePathName);
spectrum.setChannels(Integer.valueOf(String.valueOf(sourceData.num_b_channel)));
spectrum.setEnergySpan(Integer.valueOf(String.valueOf(sourceData.b_energy_span)));
spectrum.setStartChannel(Integer.valueOf(String.valueOf(sourceData.b_begin_channel)));
spectrumList.add(spectrum);
}
//判断是否包含g_Spectrum块 新增Gards_Spectrum数据
if (readLines.contains(SampleFileHeader.GSPECTRUM.getMessage())){
GardsSpectrum spectrum = new GardsSpectrum();
spectrum.setSampleId(sampleId);
spectrum.setSampleType(SystemType.GAMMA.getType());
spectrum.setFilename(filePathName);
spectrum.setChannels(Integer.valueOf(String.valueOf(sourceData.num_g_channel)));
spectrum.setEnergySpan(Integer.valueOf(String.valueOf(sourceData.g_energy_span)));
spectrum.setStartChannel(Integer.valueOf(String.valueOf(sourceData.g_begin_channel)));
spectrumList.add(spectrum);
}
if (CollectionUtils.isNotEmpty(spectrumList)){
this.saveBatch(spectrumList);
}
return spectrumList.size();
}
}

View File

@ -0,0 +1,34 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.base.entity.original.GardsTotalEfficiencyPairs;
import org.jeecg.modules.mapper.GardsTotalEfficiencyPairsSpectrumMapper;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.IGardsTotalEfficiencyPairsSpectrumService;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
@Service("gardsTotalEfficiencyPairsSpectrumService")
public class GardsTotalEfficiencyPairsSpectrumServiceImpl extends ServiceImpl<GardsTotalEfficiencyPairsSpectrumMapper, GardsTotalEfficiencyPairs> implements IGardsTotalEfficiencyPairsSpectrumService {
@Override
public Integer saveTotalEfficiencyPairs(EnergySpectrumStruct sourceData, Integer sampleId) {
List<GardsTotalEfficiencyPairs> totalEfficiencyPairsList = new LinkedList<>();
for (int i=0; i<sourceData.t_record_count; i++){
GardsTotalEfficiencyPairs totalEfficiencyPairs = new GardsTotalEfficiencyPairs();
totalEfficiencyPairs.setSampleId(sampleId);
totalEfficiencyPairs.setEfficEnergy(String.valueOf(sourceData.t_g_energy.get(i)));
totalEfficiencyPairs.setTotalEfficiency(sourceData.total_efficiency.get(i));
totalEfficiencyPairs.setTotalEfficError(sourceData.t_uncertainty.get(i));
totalEfficiencyPairsList.add(totalEfficiencyPairs);
}
if (CollectionUtils.isNotEmpty(totalEfficiencyPairsList)){
this.saveBatch(totalEfficiencyPairsList);
}
return totalEfficiencyPairsList.size();
}
}

View File

@ -12,6 +12,7 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.Prompt;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.constant.enums.FileTypeEnum;
import org.jeecg.common.properties.SpectrumPathProperties;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.FTPUtil;
import org.jeecg.modules.base.comparator.FileComparator;
@ -36,6 +37,8 @@ public class SpectrumFileServiceImpl implements ISpectrumFileService {
@Autowired
private FTPUtil ftpUtil;
@Autowired
private SpectrumPathProperties spectrumPathProperties;
@Override
public Result<?> upload(MultipartFile file) {
@ -48,7 +51,7 @@ public class SpectrumFileServiceImpl implements ISpectrumFileService {
FileOutputStream fos = null;
ZipInputStream zipInputStream = null;
String slash = SymbolConstant.SINGLE_SLASH;
String filePath = "/SpectrumFile" + slash + username;
String filePath = slash + spectrumPathProperties.getUploadPath() + slash + username;
String tempFilePath = System.getProperty("java.io.tmpdir") + username + slash;
List<String> fileNames = new ArrayList<>();
List<File> fileList = new ArrayList<>();
@ -111,7 +114,7 @@ public class SpectrumFileServiceImpl implements ISpectrumFileService {
LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String username = user.getUsername();
String slash = SymbolConstant.SINGLE_SLASH;
String filePath = "/SpectrumFile" + slash + username;
String filePath = slash + spectrumPathProperties.getUploadPath() + slash + username;
FTPClient ftpClient = null;
List<FileDto> fileDtos = new ArrayList<>();
Page<FileDto> page = new Page<>(pageNo, pageSize);

View File

@ -18,11 +18,11 @@ public class SysDefaultNuclideSpectrumServiceImpl extends ServiceImpl<SysDefault
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public List<String> findNuclidesByUserName(String userName) {
public List<String> findNuclidesByUserName(String userName, String systemType) {
//查询当前用户的核素信息
List<String> nuclides = this.baseMapper.findNuclidesByUserName(userName);
List<String> nuclides = this.baseMapper.findNuclidesByUserName(userName, systemType);
if (CollectionUtils.isEmpty(nuclides)){
nuclides = this.baseMapper.findNuclidesByUserName("admin");
nuclides = this.baseMapper.findNuclidesByUserName("admin", systemType);
}
return nuclides;
}

View File

@ -1768,4 +1768,9 @@ public class SysUserController {
return sysUserService.getUserByName(userName);
}
@GetMapping("findRoleCodeByUserName")
public List<String> findRoleCodeByUserName(@RequestParam String userName){
return sysUserService.findRoleCodeByUserName(userName);
}
}

View File

@ -404,4 +404,7 @@ public interface ISysUserService extends IService<SysUser> {
Map<String, SysUser> findUserMap();
List<SysUser> listByIds(List<String> ids);
List<String> findRoleCodeByUserName(String userName);
}

View File

@ -1339,6 +1339,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return list(wrapper);
}
@Override
public List<String> findRoleCodeByUserName(String userName) {
return sysUserRoleMapper.getRoleByUserName(userName);
}
/**
* 修改租户下的部门
* @param departs