diff --git a/jeecg-boot-base-core/pom.xml b/jeecg-boot-base-core/pom.xml
index 1e5181eb..a2a12189 100644
--- a/jeecg-boot-base-core/pom.xml
+++ b/jeecg-boot-base-core/pom.xml
@@ -258,5 +258,25 @@
commons-net
3.3
+
\ No newline at end of file
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java
index 8d4634b5..8a2bd25a 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java
@@ -212,9 +212,8 @@ public class EmailServiceManager {
public void getMailContent(@NotNull Part part, StringBuilder content) throws MessagingException, IOException {
if(part.isMimeType(MailContentType.PLAIN.getContentType())){
content.append(part.getContent());
- }else if(part.isMimeType(MailContentType.HTML.getContentType())){
- content.append(part.getContent());
}else if(part.isMimeType("multipart/*")){
+ System.out.println(part.getContentType());
Multipart multipart = (Multipart) part.getContent();
for(int i=0;i void exportXls(HttpServletResponse response, Class target,
+ List data, String sheetName, String fileName){
+ ExportParams params = new ExportParams();
+ params.setSheetName(sheetName);
+ Workbook workbook = null;
+ OutputStream outputStream = null;
+ try {
+ // 设置文件名、Excel类型(xls|xlsx)
+ outputStream = ExportUtil.xls(response,fileName);
+ workbook = ExcelExportUtil.
+ exportExcel(params, target, data);
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }finally {
+ try {
+ if (ObjectUtil.isNotNull(outputStream))
+ outputStream.close();
+ if (ObjectUtil.isNotNull(workbook))
+ workbook.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public static void exportXls(HttpServletResponse response, Class target, List data){
+ exportXls(response, target, data, "sheet1", "file");
+ }
+
+ public static TemplateExportParams excelTemplate(String name){
+ //return new TemplateExportParams("C:/Users/a/Desktop/"+ name +".xlsx");
+ return new TemplateExportParams("E:\\Code\\IDEA\\AnalysisSystemForRadionuclide\\jeecg-boot-base-core\\src\\main\\resources\\excelTemplate\\"+ name +".xlsx");
+ }
+
+ public static void exportXls(HttpServletResponse response, String template,
+ Map data, String fileName){
+ TemplateExportParams params = excelTemplate(template);
+ Workbook workbook = null;
+ OutputStream outputStream = null;
+ try {
+ // 设置文件名、Excel类型(xls|xlsx)
+ outputStream = ExportUtil.xls(response,fileName);
+ workbook = ExcelExportUtil.exportExcel(params, data);
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }finally {
+ try {
+ if (ObjectUtil.isNotNull(outputStream))
+ outputStream.close();
+ if (ObjectUtil.isNotNull(workbook))
+ workbook.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
}
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/QCResultDto.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/QCResultDto.java
new file mode 100644
index 00000000..4d9dc19d
--- /dev/null
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/QCResultDto.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.base.dto;
+
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+@Data
+public class QCResultDto {
+
+ @Excel(name = "Name",orderNum = "1",width = 30)
+ private String fieldName;
+
+ @Excel(name = "Value",orderNum = "2",width = 10)
+ private Object fieldValue;
+}
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/TableQCResult.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/TableQCResult.java
index c67d472a..d036c0cc 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/TableQCResult.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/entity/vo/TableQCResult.java
@@ -1,18 +1,23 @@
package org.jeecg.modules.entity.vo;
import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
@Data
public class TableQCResult implements Serializable {
+ @Excel(name = "Name",orderNum = "1",width = 20)
private String name;
+ @Excel(name = "Flag",orderNum = "2",width = 10)
private String flag;
+ @Excel(name = "Value",orderNum = "3",width = 15)
private double value;
+ @Excel(name = "Standard",orderNum = "4",width = 30)
private String standard;
}
diff --git a/jeecg-boot-base-core/src/main/resources/excelTemplate/SampleInfo-G.xlsx b/jeecg-boot-base-core/src/main/resources/excelTemplate/SampleInfo-G.xlsx
new file mode 100644
index 00000000..b956e69e
Binary files /dev/null and b/jeecg-boot-base-core/src/main/resources/excelTemplate/SampleInfo-G.xlsx differ
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/exception/BAnalyseException.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/exception/BAnalyseException.java
new file mode 100644
index 00000000..d0125608
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/exception/BAnalyseException.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.exception;
+
+/**
+ * B谱分析异常
+ */
+public class BAnalyseException extends Exception{
+
+ /**
+ * Constructs a new exception with the specified detail message. The
+ * cause is not initialized, and may subsequently be initialized by
+ * a call to {@link #initCause}.
+ *
+ * @param message the detail message. The detail message is saved for
+ * later retrieval by the {@link #getMessage()} method.
+ */
+ public BAnalyseException(String message) {
+ super(message);
+ }
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/exception/PHD_ReadException.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/exception/PHD_ReadException.java
new file mode 100644
index 00000000..216ba8ad
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/exception/PHD_ReadException.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.exception;
+
+/**
+ * PHD文件读取异常
+ */
+public class PHD_ReadException extends Exception{
+
+ /**
+ * Constructs a new exception with the specified detail message. The
+ * cause is not initialized, and may subsequently be initialized by
+ * a call to {@link #initCause}.
+ *
+ * @param message the detail message. The detail message is saved for
+ * later retrieval by the {@link #getMessage()} method.
+ */
+ public PHD_ReadException(String message) {
+ super(message);
+ }
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/ftp/FTPUtils.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/ftp/FTPUtils.java
index 15a0fe59..05ab760a 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/ftp/FTPUtils.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/ftp/FTPUtils.java
@@ -2,14 +2,14 @@ package org.jeecg.modules.ftp;
import cn.hutool.core.io.FileUtil;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.net.ftp.*;
-import org.jeecg.common.constant.StringConstant;
-
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
+import java.util.Objects;
@Slf4j
public class FTPUtils {
@@ -32,6 +32,11 @@ public class FTPUtils {
client.login(userName, password);
// 切换为本地被动模式,可以解决FTP上传后文件为空的问题,但需要服务器将FTP服务添加至防火墙白名单
client.enterLocalPassiveMode();
+ //设置文件client参数
+ this.client.setFileType(FTPClient.BINARY_FILE_TYPE);
+ this.client.setControlEncoding(this.encoding);
+ this.client.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
+
//判断是否连接成功
int reply = client.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
@@ -50,38 +55,36 @@ public class FTPUtils {
* @param localPath
* @throws IOException
*/
- public void downloadFTPFile(String ftpFilePath,String fileName,String localPath) throws IOException {
- //设置文件client参数
- this.client.setFileType(FTPClient.BINARY_FILE_TYPE);
- this.client.setControlEncoding(this.encoding);
- this.client.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
+ public boolean downloadFTPFile(String ftpFilePath,String fileName,String localPath) throws IOException {
this.checkDirectory(ftpFilePath);
- System.out.println(this.client.printWorkingDirectory());
- String absolutePath = this.ftpRootPath+StringConstant.SLASH+ftpFilePath;
- final FTPFile[] ftpFiles = this.client.listFiles(null, file -> {
- if (fileName.equals(file.getName())) {
- return true;
- }
- return false;
- });
- for(FTPFile file : ftpFiles){
- InputStream inputStream = null;
- try{
- inputStream = this.client.retrieveFileStream(new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
- FileUtil.writeFromStream(inputStream,localPath+File.separator+fileName);
- }catch (Exception e){
- if(null != inputStream){
- inputStream.close();
+ InputStream inputStream = null;
+ try{
+ final FTPFile[] ftpFiles = this.client.listFiles(fileName);
+ if(ArrayUtils.isNotEmpty(ftpFiles)){
+ inputStream = this.client.retrieveFileStream(fileName);
+ if(Objects.nonNull(inputStream)){
+ FileUtil.writeFromStream(inputStream,localPath+File.separator+fileName);
+ return true;
}
+ }else {
+ log.warn("{}不存在",fileName);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ return false;
+ }finally {
+ if(Objects.nonNull(inputStream)){
+ inputStream.close();
+ this.client.completePendingCommand();
}
}
+ return false;
}
/**
* 检查目录是否存在,不存在则创建,支持递归创建
* @param path 目录路径
* @return 返回值true/false
- * @throws IOException
*/
private boolean checkDirectory(String path){
try{
@@ -114,6 +117,12 @@ public class FTPUtils {
return true;
}
+ public static void main(String[] args) throws IOException {
+ FTPUtils ftp = new FTPUtils("8.141.87.165",21,"rmsops","cnndc010","utf-8","/");
+// ftp.saveFile("log/Soh/2023/08","GBX68_RMSSOH-20230731_152800.0.log",new ByteArrayInputStream((System.lineSeparator()+"ssssssssssss").getBytes(StandardCharsets.UTF_8)));
+ ftp.downloadFTPFile("/savefile/Spectrum/Xenon/Sauna/Gasbkphd/2023/09","AUX09_003-20151224_0655_G_FULL_40182.873.PHD","E:\\file");
+ }
+
/**
* 写入文件,若文件或文件目录不存在则自行创建
* @param filePath 文件路径
@@ -125,9 +134,12 @@ public class FTPUtils {
try{
final boolean flag = this.checkDirectory(filePath);
if(flag){
- client.setFileType(FTP.BINARY_FILE_TYPE);
- String encodedName = new String(fileName.getBytes(StandardCharsets.UTF_8),StandardCharsets.ISO_8859_1);
- return client.storeFile(encodedName, inputStream);
+ final FTPFile[] ftpFiles = this.client.listFiles(fileName);
+ if(ArrayUtils.isEmpty(ftpFiles)){
+ return client.storeFile(fileName, inputStream);
+ }else{
+ return client.appendFile(fileName,inputStream);
+ }
}
}catch (IOException e){
log.error("{}文件创建失败,原因为:{}",filePath+"/"+fileName,e.getMessage());
@@ -201,6 +213,7 @@ public class FTPUtils {
public void close(){
try{
if (client != null){
+ client.logout();
client.disconnect();
}
}catch (IOException e){
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsCalibrationMapper.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsCalibrationMapper.java
index fb3db82d..1025782a 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsCalibrationMapper.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsCalibrationMapper.java
@@ -1,7 +1,12 @@
package org.jeecg.modules.mapper;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.base.entity.rnauto.GardsCalibration;
public interface GardsCalibrationMapper extends BaseMapper {
+
+ @InterceptorIgnore(tenantLine = "true")
+ public int create(@Param("calibration") GardsCalibration calibration);
}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsRoiChannelsMapper.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsRoiChannelsMapper.java
new file mode 100644
index 00000000..edba26d7
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsRoiChannelsMapper.java
@@ -0,0 +1,8 @@
+package org.jeecg.modules.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.base.entity.rnauto.GardsRoiChannels;
+
+public interface GardsRoiChannelsMapper extends BaseMapper {
+
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsRoiResultsMapper.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsRoiResultsMapper.java
new file mode 100644
index 00000000..711cbae7
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsRoiResultsMapper.java
@@ -0,0 +1,7 @@
+package org.jeecg.modules.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.base.entity.rnauto.GardsRoiResults;
+
+public interface GardsRoiResultsMapper extends BaseMapper {
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsSampleDataMapper.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsSampleDataMapper.java
index 95657d3f..76c11320 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsSampleDataMapper.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsSampleDataMapper.java
@@ -9,22 +9,10 @@ import org.jeecg.modules.base.entity.original.GardsSampleData;
public interface GardsSampleDataMapper extends BaseMapper {
@Select(value = "select " +
- "gsd.SAMPLE_ID,gsd.input_file_name " +
- "from GARDS_SAMPLE_AUX gsa inner join GARDS_SAMPLE_DATA gsd on gsa.sample_id = gsd.sample_id " +
+ "gsd.SAMPLE_ID as sampleId,gsd.input_file_name as inputFileName " +
+ "from ORIGINAL.GARDS_SAMPLE_AUX gsa inner join ORIGINAL.GARDS_SAMPLE_DATA gsd on gsa.sample_id = gsd.sample_id " +
"where gsa.measurement_id = #{measurementId} and gsd.data_type=#{dataType}")
- public GardsSampleData getSampleInputFileName(@Param("measurementId") String measurementId,@Param("dataType") String dataType);
-
- @Select(value = "select " +
- "gsd.SAMPLE_ID,gsd.input_file_name " +
- "from GARDS_SAMPLE_AUX gsa inner join GARDS_SAMPLE_DATA gsd on gsa.sample_id = gsd.sample_id " +
- "where gsa.bkgd_measurement_id = #{bkgdMeasurementId} and gsd.data_type=#{dataType}")
- public GardsSampleData getDetInputFileName(@Param("bkgdMeasurementId") String bkgdMeasurementId,@Param("dataType") String dataType);
-
- @Select(value = "select " +
- "gsd.SAMPLE_ID,gsd.input_file_name " +
- "from GARDS_SAMPLE_AUX gsa inner join GARDS_SAMPLE_DATA gsd on gsa.sample_id = gsd.sample_id " +
- "where gsa.gas_bkgd_measurement_id = #{gasMeasurementId} and gsd.data_type=#{dataType}")
- public GardsSampleData getGasInputFileName(@Param("gasMeasurementId") String gasMeasurementId,@Param("dataType") String dataType);
+ public GardsSampleData getSampleIdAndInputFileName(@Param("measurementId") String measurementId,@Param("dataType") String dataType);
@Update(value = "UPDATE ORIGINAL.GARDS_SAMPLE_DATA SET STATUS=#{status} WHERE INPUT_FILE_NAME=#{inputFileName}")
public int updateStatus(@Param("status") String status,@Param("inputFileName") String inputFileName);
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsXeResultsMapper.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsXeResultsMapper.java
new file mode 100644
index 00000000..c60bc80b
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/GardsXeResultsMapper.java
@@ -0,0 +1,7 @@
+package org.jeecg.modules.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.base.entity.rnauto.GardsXeResults;
+
+public interface GardsXeResultsMapper extends BaseMapper {
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/xml/GardsCalibrationMapper.xml b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/xml/GardsCalibrationMapper.xml
new file mode 100644
index 00000000..f63942f5
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/mapper/xml/GardsCalibrationMapper.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+ insert into RNAUTO.GARDS_CALIBRATION(
+ SAMPLE_ID,
+ IDANALYSIS,
+ SAMPLE_TYPE,
+ CALTYPE,
+ FUNCTION,
+ FUNCTIONDEF,
+ STARTOFRANGE,
+ ENDOFRANGE,
+ coeff1,
+ coeff2,
+ coeff3,
+ moddate)
+ values(
+ #{calibration.sampleId},
+ #{calibration.idAnalysis},
+ #{calibration.sampleType},
+ #{calibration.calType},
+ #{calibration.function},
+ #{calibration.functionDef},
+ #{calibration.startOfRange},
+ #{calibration.endOfRange},
+ #{calibration.coeff1},
+ #{calibration.coeff2},
+ #{calibration.coeff3},
+ #{calibration.moddate})
+
+
+
+
\ No newline at end of file
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/native_jni/struct/BgAnalyseResult.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/native_jni/struct/BgAnalyseResult.java
index 493f6450..a20be280 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/native_jni/struct/BgAnalyseResult.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/native_jni/struct/BgAnalyseResult.java
@@ -3,29 +3,92 @@ package org.jeecg.modules.native_jni.struct;
import java.util.List;
public class BgAnalyseResult {
- /************************** BgMDCPara **************************/
- /** MDC XE135 */
- public double MDC_Xe135;
- /** MDC XE131m */
- public double MDC_Xe131m;
- /** MDC XE133m*/
- public double MDC_Xe133m;
- /** MDC XE133 */
- public double MDC_Xe133;
- public List MDC;
- public List MDC_CTS;
-
- /************************** BgXeConUncer **************************/
- /** 135不浓度 */
- public double Xe135_con;
- /** 135不确定度 */
- public double Xe135_uncer;
+ /************************** GARDS_XE_RESULTS START**************************/
+ /************************** XE_131m **************************/
public double Xe131m_con;
public double Xe131m_uncer;
- public double Xe133m_con;
- public double Xe133m_uncer;
+ public double MDC_Xe131m;
+ public double LC_Xe131m;
+ public int XE_131m_NID_FLAG;
+
+ /************************** XE_133 **************************/
public double Xe133_con;
public double Xe133_uncer;
+ public double MDC_Xe133;
+ public double LC_Xe133;
+ public int XE_133_NID_FLAG;
+ /************************** XE_133m **************************/
+ public double Xe133m_con;
+ public double Xe133m_uncer;
+ public double MDC_Xe133m;
+ public double LC_Xe133m;
+ public int XE_133m_NID_FLAG;
+
+ /************************** XE_135 **************************/
+ public double Xe135_con;
+ public double Xe135_uncer;
+ public double MDC_Xe135;
+ public double LC_Xe135;
+ public int XE_135_NID_FLAG;
+ /************************** GARDS_XE_RESULTS end **************************/
+
+ /************************** GARDS_ROI_RESULTS START**************************/
+ public List ROI;
+ public List LC;
+ public List s_roi_cts;
+ public List g_roi_cts;
+ public List d_roi_cts;
+ public List s_deduct_d_cts;
+ public List g_deduct_d_cts;
+ public List ROI_net_coutns;
+ public List ROI_net_coutns_err;
+ public List ROI_con_uncer;
+ public List ROI_con_uncer_err;
+ public List MDC;
+ public List dNidFlag;
+
+ /************************** GARDS_ROI_RESULTS end **************************/
+
+ /************************** GARDS_CALIBRATION START**************************/
+ public List s_b_fitting_e_c;
+ public int s_b_fitting_type;
+ public String s_b_fitting_type_def;
+ public List s_g_fitting_e_c;
+ public int s_g_fitting_type;
+ public String s_g_fitting_type_def;
+
+ public List g_b_fitting_e_c;
+ public int g_b_fitting_type;
+ public String g_b_fitting_type_def;
+ public List g_g_fitting_e_c;
+ public int g_g_fitting_type;
+ public String g_g_fitting_type_def;
+
+ public List d_b_fitting_e_c;
+ public int d_b_fitting_type;
+ public String d_b_fitting_type_def;
+ public List d_g_fitting_e_c;
+ public int d_g_fitting_type;
+ public String d_g_fitting_type_def;
+ /************************** GARDS_CALIBRATION end **************************/
+
+ /************************** GARDS_ROI_CHANNELS START**************************/
+ public List S_ROI;
+ public List S_ROI_B_Boundary_start;
+ public List S_ROI_B_Boundary_stop;
+ public List S_ROI_G_Boundary_start;
+ public List S_ROI_G_Boundary_stop;
+ public List G_ROI;
+ public List G_ROI_B_Boundary_start;
+ public List G_ROI_B_Boundary_stop;
+ public List G_ROI_G_Boundary_start;
+ public List G_ROI_G_Boundary_stop;
+ public List D_ROI;
+ public List D_ROI_B_Boundary_start;
+ public List D_ROI_B_Boundary_stop;
+ public List D_ROI_G_Boundary_start;
+ public List D_ROI_G_Boundary_stop;
+ /************************** GARDS_ROI_CHANNELS end **************************/
/**
* 分析结果标记,true成功,false失败
@@ -36,23 +99,76 @@ public class BgAnalyseResult {
*/
public String error_log;
+
@Override
public String toString() {
return "BgAnalyseResult{" +
- "MDC_Xe135=" + MDC_Xe135 +
- ", MDC_Xe131m=" + MDC_Xe131m +
- ", MDC_Xe133m=" + MDC_Xe133m +
- ", MDC_Xe133=" + MDC_Xe133 +
- ", MDC=" + MDC +
- ", MDC_CTS=" + MDC_CTS +
- ", Xe135_con=" + Xe135_con +
- ", Xe135_uncer=" + Xe135_uncer +
- ", Xe131m_con=" + Xe131m_con +
+ "Xe131m_con=" + Xe131m_con +
", Xe131m_uncer=" + Xe131m_uncer +
- ", Xe133m_con=" + Xe133m_con +
- ", Xe133m_uncer=" + Xe133m_uncer +
+ ", MDC_Xe131m=" + MDC_Xe131m +
+ ", LC_Xe131m=" + LC_Xe131m +
+ ", XE_131m_NID_FLAG=" + XE_131m_NID_FLAG +
", Xe133_con=" + Xe133_con +
", Xe133_uncer=" + Xe133_uncer +
+ ", MDC_Xe133=" + MDC_Xe133 +
+ ", LC_Xe133=" + LC_Xe133 +
+ ", XE_133_NID_FLAG=" + XE_133_NID_FLAG +
+ ", Xe133m_con=" + Xe133m_con +
+ ", Xe133m_uncer=" + Xe133m_uncer +
+ ", MDC_Xe133m=" + MDC_Xe133m +
+ ", LC_Xe133m=" + LC_Xe133m +
+ ", XE_133m_NID_FLAG=" + XE_133m_NID_FLAG +
+ ", Xe135_con=" + Xe135_con +
+ ", Xe135_uncer=" + Xe135_uncer +
+ ", MDC_Xe135=" + MDC_Xe135 +
+ ", LC_Xe135=" + LC_Xe135 +
+ ", XE_135_NID_FLAG=" + XE_135_NID_FLAG +
+ ", ROI=" + ROI +
+ ", LC=" + LC +
+ ", s_roi_cts=" + s_roi_cts +
+ ", g_roi_cts=" + g_roi_cts +
+ ", d_roi_cts=" + d_roi_cts +
+ ", s_deduct_d_cts=" + s_deduct_d_cts +
+ ", g_deduct_d_cts=" + g_deduct_d_cts +
+ ", ROI_net_coutns=" + ROI_net_coutns +
+ ", ROI_net_coutns_err=" + ROI_net_coutns_err +
+ ", ROI_con_uncer=" + ROI_con_uncer +
+ ", ROI_con_uncer_err=" + ROI_con_uncer_err +
+ ", MDC=" + MDC +
+ ", dNidFlag=" + dNidFlag +
+ ", s_b_fitting_e_c=" + s_b_fitting_e_c +
+ ", s_b_fitting_type=" + s_b_fitting_type +
+ ", s_b_fitting_type_def='" + s_b_fitting_type_def + '\'' +
+ ", s_g_fitting_e_c=" + s_g_fitting_e_c +
+ ", s_g_fitting_type=" + s_g_fitting_type +
+ ", s_g_fitting_type_def='" + s_g_fitting_type_def + '\'' +
+ ", g_b_fitting_e_c=" + g_b_fitting_e_c +
+ ", g_b_fitting_type=" + g_b_fitting_type +
+ ", g_b_fitting_type_def='" + g_b_fitting_type_def + '\'' +
+ ", g_g_fitting_e_c=" + g_g_fitting_e_c +
+ ", g_g_fitting_type=" + g_g_fitting_type +
+ ", g_g_fitting_type_def='" + g_g_fitting_type_def + '\'' +
+ ", d_b_fitting_e_c=" + d_b_fitting_e_c +
+ ", d_b_fitting_type=" + d_b_fitting_type +
+ ", d_b_fitting_type_def='" + d_b_fitting_type_def + '\'' +
+ ", d_g_fitting_e_c=" + d_g_fitting_e_c +
+ ", d_g_fitting_type=" + d_g_fitting_type +
+ ", d_g_fitting_type_def='" + d_g_fitting_type_def + '\'' +
+ ", S_ROI=" + S_ROI +
+ ", S_ROI_B_Boundary_start=" + S_ROI_B_Boundary_start +
+ ", S_ROI_B_Boundary_stop=" + S_ROI_B_Boundary_stop +
+ ", S_ROI_G_Boundary_start=" + S_ROI_G_Boundary_start +
+ ", S_ROI_G_Boundary_stop=" + S_ROI_G_Boundary_stop +
+ ", G_ROI=" + G_ROI +
+ ", G_ROI_B_Boundary_start=" + G_ROI_B_Boundary_start +
+ ", G_ROI_B_Boundary_stop=" + G_ROI_B_Boundary_stop +
+ ", G_ROI_G_Boundary_start=" + G_ROI_G_Boundary_start +
+ ", G_ROI_G_Boundary_stop=" + G_ROI_G_Boundary_stop +
+ ", D_ROI=" + D_ROI +
+ ", D_ROI_B_Boundary_start=" + D_ROI_B_Boundary_start +
+ ", D_ROI_B_Boundary_stop=" + D_ROI_B_Boundary_stop +
+ ", D_ROI_G_Boundary_start=" + D_ROI_G_Boundary_start +
+ ", D_ROI_G_Boundary_stop=" + D_ROI_G_Boundary_stop +
", analyse_flag=" + analyse_flag +
", error_log='" + error_log + '\'' +
'}';
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/BlockConstant.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/BlockConstant.java
index 1ca9045a..82882588 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/BlockConstant.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/BlockConstant.java
@@ -9,5 +9,10 @@ public interface BlockConstant {
public final static String SYSTEMTYPE_G = "G";
public final static String EFFICIENCY_CAL ="efficiency";
+ public final static String XE_131m = "Xe131m";
+ public final static String XE_133m = "Xe133m";
+ public final static String XE_133 = "Xe133";
+ public final static String XE_135 = "Xe135";
+
}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsAnalysesService.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsAnalysesService.java
index 2ed5e7e9..312a192b 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsAnalysesService.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsAnalysesService.java
@@ -1,9 +1,12 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.base.entity.original.GardsSampleData;
import org.jeecg.modules.base.entity.rnauto.GardsAnalyses;
import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
+import java.util.Date;
+
/**
* 存储谱数据分析的基本信息
*/
@@ -12,10 +15,16 @@ public interface GardsAnalysesService extends IService {
/**
* 存储谱数据分析的基本信息
* 不提交事务,由调用方手动统一提交事务
- * @param analyseResult
* @param sampleId
+ * @param detSampleData
+ * @param gasSampleData
+ * @param beginDate 分析开始时间
+ * @param endDate 分析结束时间
+ * @param logPath
+ * @param reportPath
+ * @return
*/
- public void create(BgAnalyseResult analyseResult,Integer sampleId);
+ public GardsAnalyses create(Integer sampleId, GardsSampleData detSampleData, GardsSampleData gasSampleData, Date beginDate, Date endDate, String logPath, String reportPath);
Integer getIdAnalysis(Integer sampleId);
}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsCalibrationService.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsCalibrationService.java
index d6b5e45a..55f51a8b 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsCalibrationService.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsCalibrationService.java
@@ -2,11 +2,20 @@ package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.base.entity.rnauto.GardsCalibration;
+import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
+import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
/**
* 存储数据分析过程中能量、分辨率和效率刻度的拟合结果。
*/
public interface GardsCalibrationService extends IService {
-
+ /**
+ * 存储数据分析过程中能量、分辨率和效率刻度的拟合结果。
+ * 不提交事务,由调用方手动统一提交事务
+ * @param analyseResult
+ * @param sampleId
+ * @param anayId
+ */
+ public void create(BgAnalyseResult analyseResult, Integer sampleId, Integer anayId);
}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsRoiChannelsService.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsRoiChannelsService.java
new file mode 100644
index 00000000..7506daee
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsRoiChannelsService.java
@@ -0,0 +1,20 @@
+package org.jeecg.modules.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.base.entity.rnauto.GardsRoiChannels;
+import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
+
+/**
+ * 存储β-γ符合谱中感兴趣区道址边界数据。
+ */
+public interface GardsRoiChannelsService extends IService {
+
+ /**
+ * 存储β-γ符合谱中感兴趣区道址边界数据。
+ * 不提交事务,由调用方手动统一提交事务
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ */
+ public void create(BgAnalyseResult analyseResult,Integer sampleId, Integer idAnalysis);
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsRoiResultsService.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsRoiResultsService.java
new file mode 100644
index 00000000..5adbc9bc
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsRoiResultsService.java
@@ -0,0 +1,20 @@
+package org.jeecg.modules.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.base.entity.rnauto.GardsRoiResults;
+import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
+
+/**
+ * 存储β-γ符合谱中分析过程中的有关感兴趣区(ROI)计算的中间结果。
+ */
+public interface GardsRoiResultsService extends IService {
+
+ /**
+ * 存储β-γ符合谱中分析过程中的有关感兴趣区(ROI)计算的中间结果。
+ * 不提交事务,由调用方手动统一提交事务
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ */
+ public void create(BgAnalyseResult analyseResult,Integer sampleId, Integer idAnalysis);
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsSampleDataService.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsSampleDataService.java
index d7841cfd..59d6a559 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsSampleDataService.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsSampleDataService.java
@@ -13,28 +13,12 @@ public interface GardsSampleDataService extends IService {
public boolean fileExist(String inputFileName);
/**
- * 获取Sample谱文件保存路径
+ * 获取谱文件保存路径
* @param measurementId
* @param dataType
* @return
*/
- public GardsSampleData getSampleInputFileName(String measurementId,String dataType);
-
- /**
- * 获取Det谱文件保存路径
- * @param bkgdMeasurementId
- * @param dataType
- * @return
- */
- public GardsSampleData getDetInputFileName(String bkgdMeasurementId,String dataType);
-
- /**
- * 获取Gas谱文件保存路径
- * @param gasMeasurementId
- * @param dataType
- * @return
- */
- public GardsSampleData getGasInputFileName(String gasMeasurementId,String dataType);
+ public GardsSampleData getSampleIdAndInputFileName(String measurementId,String dataType);
/**
* 修改能谱处理状态
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsXeResultsService.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsXeResultsService.java
new file mode 100644
index 00000000..44c0a218
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/GardsXeResultsService.java
@@ -0,0 +1,20 @@
+package org.jeecg.modules.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.base.entity.rnauto.GardsXeResults;
+import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
+
+/**
+ * 存储β-γ符合谱最终分析结果。
+ */
+public interface GardsXeResultsService extends IService {
+
+ /**
+ * 存储β-γ符合谱最终分析结果
+ * 不提交事务,由调用方手动统一提交事务
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ */
+ public void create(BgAnalyseResult analyseResult, Integer sampleId, Integer idAnalysis);
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesServiceImpl.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesServiceImpl.java
index c312cbf6..8708f13c 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesServiceImpl.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsAnalysesServiceImpl.java
@@ -3,45 +3,58 @@ package org.jeecg.modules.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.jeecg.common.properties.SoftwareProperties;
+import org.jeecg.modules.base.entity.original.GardsSampleData;
import org.jeecg.modules.base.entity.rnauto.GardsAnalyses;
import org.jeecg.modules.base.enums.AnalysesType;
import org.jeecg.modules.mapper.GardsAnalysesMapper;
-import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
import org.jeecg.modules.service.GardsAnalysesService;
import org.springframework.stereotype.Service;
-
-import java.util.Optional;
+import java.util.Date;
/**
* 存储谱数据分析的基本信息
*/
@Service
+@RequiredArgsConstructor
public class GardsAnalysesServiceImpl extends ServiceImpl implements GardsAnalysesService {
+ private final SoftwareProperties properties;
+
/**
* 存储谱数据分析的基本信息
* 不提交事务,由调用方手动统一提交事务
- * @param analyseResult
* @param sampleId
+ * @param detSampleData
+ * @param gasSampleData
+ * @param beginDate 分析开始时间
+ * @param endDate 分析结束时间
+ * @param logPath
+ * @param reportPath
+ * @return
*/
@Override
- public void create(BgAnalyseResult analyseResult,Integer sampleId) {
+ public GardsAnalyses create(Integer sampleId, GardsSampleData detSampleData, GardsSampleData gasSampleData, Date beginDate, Date endDate, String logPath, String reportPath) {
GardsAnalyses analyses = new GardsAnalyses();
analyses.setSampleId(sampleId);
- analyses.setAnalysisBegin(null);//分析开始时间,java控制
- analyses.setAnalysisEnd(null);//分析结束时间,java控制
- analyses.setType(AnalysesType.AUTO.getValue());//类型,java控制
- analyses.setSoftware(null);//使用的软件名称,配置文件配置
- analyses.setSwVersion(null);//软件版本号,配置文件配置
- analyses.setAnalyst(null);//分析员名称,配置文件配置
+ analyses.setAnalysisBegin(beginDate);
+ analyses.setAnalysisEnd(endDate);
+ analyses.setType(AnalysesType.AUTO.getValue());
+ analyses.setSoftware(properties.getSwName());
+ analyses.setSwVersion(properties.getSwVersion());
+ analyses.setAnalyst(properties.getAnalyst());
analyses.setCategory(1);//按C++代码写死的1,该字段是分级结果张博士还没有想好数据要不要分级1,2,3,4
analyses.setComments("test");//按C++代码写死的test
- analyses.setUsedgasphd(null);//gas谱的phd文件ftp路径
- analyses.setUseddetphd(null);//det谱的phd文件ftp路径
- analyses.setUsedgasphdId(null);//gas谱的sampleId
- analyses.setUseddetphdId(null);//det谱的sampleId
- analyses.setLogPath(null);//解析过程日志ftp路径
- analyses.setReportPath(null);//报告ftp路径
+ analyses.setUsedgasphd(gasSampleData.getInputFileName());
+ analyses.setUseddetphd(detSampleData.getInputFileName());
+ analyses.setUsedgasphdId(gasSampleData.getSampleId());
+ analyses.setUseddetphdId(detSampleData.getSampleId());
+ analyses.setLogPath(logPath);
+ analyses.setReportPath(reportPath);
+
+ this.save(analyses);
+ return analyses;
}
@Override
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationPairsServiceImpl.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationPairsServiceImpl.java
index 1ed06ee3..6f721267 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationPairsServiceImpl.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsCalibrationPairsServiceImpl.java
@@ -70,6 +70,7 @@ public class GardsCalibrationPairsServiceImpl extends ServiceImpl implements GardsCalibrationService {
+public class GardsCalibrationServiceImpl extends ServiceImpl implements GardsCalibrationService, BlockConstant {
+ private final static int START_RANGE = 0;
+ private final static int END_RANGE = 1;
+
+ /**
+ * 存储数据分析过程中能量、分辨率和效率刻度的拟合结果。
+ * 不提交事务,由调用方手动统一提交事务
+ * @param analyseResult
+ * @param sampleId
+ * @param anayId
+ */
+ @Override
+ public void create(BgAnalyseResult analyseResult, Integer sampleId, Integer anayId){
+ this.saveSampleB_EnergyRecord(analyseResult,sampleId,anayId);
+ this.saveSampleG_EnergyRecord(analyseResult,sampleId,anayId);
+ this.saveGasB_EnergyRecord(analyseResult,sampleId,anayId);
+ this.saveGasG_EnergyRecord(analyseResult,sampleId,anayId);
+ this.saveDetB_EnergyRecord(analyseResult,sampleId,anayId);
+ this.saveDetG_EnergyRecord(analyseResult,sampleId,anayId);
+ }
+
+ /**
+ * 保存 B_Energy 块信息
+ * @param analyseResult
+ * @param sampleId
+ * @param anayId
+ */
+ private void saveSampleB_EnergyRecord(BgAnalyseResult analyseResult, Integer sampleId, Integer anayId) {
+ GardsCalibration calibration = new GardsCalibration();
+ calibration.setSampleId(sampleId);
+ calibration.setIdAnalysis(anayId);
+ calibration.setSampleType(SYSTEMTYPE_B);
+ calibration.setCalType(ENERGY_CAL);
+ calibration.setFunction(analyseResult.s_b_fitting_type);
+ calibration.setFunctionDef(analyseResult.s_b_fitting_type_def);
+ calibration.setStartOfRange(START_RANGE);
+ calibration.setEndOfRange(END_RANGE);
+ calibration.setCoeff1(analyseResult.s_b_fitting_e_c.get(0));
+ calibration.setCoeff2(analyseResult.s_b_fitting_e_c.get(1));
+ calibration.setCoeff3(analyseResult.s_b_fitting_e_c.get(2));
+ calibration.setModdate(new Date());
+
+ this.baseMapper.create(calibration);
+
+ }
+
+ /**
+ * 存储数据分析过程中能量、分辨率和效率刻度的拟合结果。
+ * 不提交事务,由调用方手动统一提交事务
+ * G_Energy能道存储
+ * @param analyseResult
+ * @param sampleId
+ * @param anayId
+ */
+ private void saveSampleG_EnergyRecord(BgAnalyseResult analyseResult,Integer sampleId, Integer anayId) {
+ GardsCalibration calibration = new GardsCalibration();
+ calibration.setSampleId(sampleId);
+ calibration.setIdAnalysis(anayId);
+ calibration.setSampleType(SYSTEMTYPE_G);
+ calibration.setCalType(ENERGY_CAL);
+ calibration.setFunction(analyseResult.s_g_fitting_type);
+ calibration.setFunctionDef(analyseResult.s_g_fitting_type_def);
+ calibration.setStartOfRange(START_RANGE);
+ calibration.setEndOfRange(END_RANGE);
+ calibration.setCoeff1(analyseResult.s_g_fitting_e_c.get(0));
+ calibration.setCoeff2(analyseResult.s_g_fitting_e_c.get(1));
+ calibration.setCoeff3(analyseResult.s_g_fitting_e_c.get(2));
+ calibration.setModdate(new Date());
+
+ this.baseMapper.create(calibration);
+ }
+
+ /**
+ * 存储数据分析过程中能量、分辨率和效率刻度的拟合结果。
+ * 不提交事务,由调用方手动统一提交事务
+ * B_Energy
+ * @param analyseResult
+ * @param sampleId
+ * @param anayId
+ */
+ private void saveGasB_EnergyRecord(BgAnalyseResult analyseResult, Integer sampleId, Integer anayId) {
+ GardsCalibration calibration = new GardsCalibration();
+ calibration.setSampleId(sampleId);
+ calibration.setIdAnalysis(anayId);
+ calibration.setSampleType(SYSTEMTYPE_B);
+ calibration.setCalType(ENERGY_CAL);
+ calibration.setFunction(analyseResult.g_b_fitting_type);
+ calibration.setFunctionDef(analyseResult.g_b_fitting_type_def);
+ calibration.setStartOfRange(START_RANGE);
+ calibration.setEndOfRange(END_RANGE);
+ calibration.setCoeff1(analyseResult.g_b_fitting_e_c.get(0));
+ calibration.setCoeff2(analyseResult.g_b_fitting_e_c.get(1));
+ calibration.setCoeff3(analyseResult.g_b_fitting_e_c.get(2));
+ calibration.setModdate(new Date());
+
+ this.baseMapper.create(calibration);
+ }
+
+ /**
+ * 存储数据分析过程中能量、分辨率和效率刻度的拟合结果。
+ * 不提交事务,由调用方手动统一提交事务
+ * G_Energy能道存储
+ *
+ * @param analyseResult
+ * @param sampleId
+ * @param anayId
+ */
+ private void saveGasG_EnergyRecord(BgAnalyseResult analyseResult, Integer sampleId, Integer anayId) {
+ GardsCalibration calibration = new GardsCalibration();
+ calibration.setSampleId(sampleId);
+ calibration.setIdAnalysis(anayId);
+ calibration.setSampleType(SYSTEMTYPE_G);
+ calibration.setCalType(ENERGY_CAL);
+ calibration.setFunction(analyseResult.g_g_fitting_type);
+ calibration.setFunctionDef(analyseResult.g_g_fitting_type_def);
+ calibration.setStartOfRange(START_RANGE);
+ calibration.setEndOfRange(END_RANGE);
+ calibration.setCoeff1(analyseResult.g_g_fitting_e_c.get(0));
+ calibration.setCoeff2(analyseResult.g_g_fitting_e_c.get(1));
+ calibration.setCoeff3(analyseResult.g_g_fitting_e_c.get(2));
+ calibration.setModdate(new Date());
+
+ this.baseMapper.create(calibration);
+ }
+
+ /**
+ * 存储数据分析过程中能量、分辨率和效率刻度的拟合结果。
+ * 不提交事务,由调用方手动统一提交事务
+ * B_Energy
+ *
+ * @param analyseResult
+ * @param sampleId
+ * @param anayId
+ */
+ private void saveDetB_EnergyRecord(BgAnalyseResult analyseResult, Integer sampleId, Integer anayId) {
+ GardsCalibration calibration = new GardsCalibration();
+ calibration.setSampleId(sampleId);
+ calibration.setIdAnalysis(anayId);
+ calibration.setSampleType(SYSTEMTYPE_B);
+ calibration.setCalType(ENERGY_CAL);
+ calibration.setFunction(analyseResult.d_b_fitting_type);
+ calibration.setFunctionDef(analyseResult.d_b_fitting_type_def);
+ calibration.setStartOfRange(START_RANGE);
+ calibration.setEndOfRange(END_RANGE);
+ calibration.setCoeff1(analyseResult.d_b_fitting_e_c.get(0));
+ calibration.setCoeff2(analyseResult.d_b_fitting_e_c.get(1));
+ calibration.setCoeff3(analyseResult.d_b_fitting_e_c.get(2));
+ calibration.setModdate(new Date());
+
+ this.baseMapper.create(calibration);
+ }
+
+ /**
+ * 存储数据分析过程中能量、分辨率和效率刻度的拟合结果。
+ * 不提交事务,由调用方手动统一提交事务
+ * G_Energy能道存储
+ *
+ * @param analyseResult
+ * @param sampleId
+ * @param anayId
+ */
+ private void saveDetG_EnergyRecord(BgAnalyseResult analyseResult, Integer sampleId, Integer anayId) {
+ GardsCalibration calibration = new GardsCalibration();
+ calibration.setSampleId(sampleId);
+ calibration.setIdAnalysis(anayId);
+ calibration.setSampleType(SYSTEMTYPE_G);
+ calibration.setCalType(ENERGY_CAL);
+ calibration.setFunction(analyseResult.d_g_fitting_type);
+ calibration.setFunctionDef(analyseResult.d_g_fitting_type_def);
+ calibration.setStartOfRange(START_RANGE);
+ calibration.setEndOfRange(END_RANGE);
+ calibration.setCoeff1(analyseResult.d_g_fitting_e_c.get(0));
+ calibration.setCoeff2(analyseResult.d_g_fitting_e_c.get(1));
+ calibration.setCoeff3(analyseResult.d_g_fitting_e_c.get(2));
+ calibration.setModdate(new Date());
+
+ this.baseMapper.create(calibration);
+ }
+
+// public static void main(String[] args) {
+// System.loadLibrary("ReadPHDFile");
+// String sampleTempFilePath = "E:\\file\\AUX09_003-20151224_1855_S_FULL_40184.505.PHD";
+// String gasTempFilePath = "E:\\file\\AUX09_003-20151224_0655_G_FULL_40182.873.PHD";
+// String detTempFilePath = "E:\\file\\AUX09_003-20150527_0425_D_FULL_259449.672.PHD";
+// BgAnalyseResult analyseResult = EnergySpectrumHandler.bgAnalyse(sampleTempFilePath,gasTempFilePath,detTempFilePath);
+// System.out.println(analyseResult);
+// }
}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsRoiChannelsServiceImpl.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsRoiChannelsServiceImpl.java
new file mode 100644
index 00000000..5f5bc3d8
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsRoiChannelsServiceImpl.java
@@ -0,0 +1,104 @@
+package org.jeecg.modules.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.compress.utils.Lists;
+import org.jeecg.modules.base.entity.rnauto.GardsRoiChannels;
+import org.jeecg.modules.mapper.GardsRoiChannelsMapper;
+import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
+import org.jeecg.modules.service.GardsRoiChannelsService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 存储β-γ符合谱中感兴趣区道址边界数据。
+ */
+@Service
+public class GardsRoiChannelsServiceImpl extends ServiceImpl implements GardsRoiChannelsService {
+
+ /**
+ * 存储β-γ符合谱中感兴趣区道址边界数据。
+ * 不提交事务,由调用方手动统一提交事务
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ */
+ @Override
+ public void create(BgAnalyseResult analyseResult,Integer sampleId, Integer idAnalysis) {
+ List roiChannelsList = Lists.newArrayList();
+ this.saveSampleRoiChannels(analyseResult,sampleId,idAnalysis,roiChannelsList);
+ this.saveGasRoiChannels(analyseResult,sampleId,idAnalysis,roiChannelsList);
+ this.saveDetRoiChannels(analyseResult,sampleId,idAnalysis,roiChannelsList);
+ if(!CollectionUtils.isEmpty(roiChannelsList)){
+ this.saveBatch(roiChannelsList);
+ }
+ }
+
+ /**
+ * 存储sample谱RoiChannels数据
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ */
+ private void saveSampleRoiChannels(BgAnalyseResult analyseResult,Integer sampleId, Integer idAnalysis,List roiChannelsList) {
+ for(int i=0;i roiChannelsList) {
+ for(int i=0;i roiChannelsList) {
+ for(int i=0;i implements GardsRoiResultsService {
+
+
+ /**
+ * 存储β-γ符合谱中分析过程中的有关感兴趣区(ROI)计算的中间结果。
+ * 不提交事务,由调用方手动统一提交事务
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ */
+ @Override
+ public void create(BgAnalyseResult analyseResult,Integer sampleId, Integer idAnalysis) {
+ List list = Lists.newArrayList();
+ for(int i=0;i analyseResult.MDC.get(i)){
+// list.get(i).setNidFlag(1);
+// }else {
+// list.get(i).setNidFlag(0);
+// }
+// }
+ list.get(i).setNidFlag(0);
+ }
+
+ if(!CollectionUtils.isEmpty(list)){
+ this.saveBatch(list);
+ }
+ }
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataServiceImpl.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataServiceImpl.java
index 3ed94ab2..29245aa0 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataServiceImpl.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataServiceImpl.java
@@ -3,6 +3,7 @@ package org.jeecg.modules.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
import org.jeecg.modules.base.entity.original.GardsSampleData;
import org.jeecg.modules.mapper.GardsSampleDataMapper;
import org.jeecg.modules.service.GardsSampleDataService;
@@ -26,43 +27,18 @@ public class GardsSampleDataServiceImpl extends ServiceImpl implements GardsXeResultsService, BlockConstant {
+
+ /**
+ * 存储β-γ符合谱最终分析结果
+ * 不提交事务,由调用方手动统一提交事务
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ */
+ @Override
+ public void create(BgAnalyseResult analyseResult,Integer sampleId, Integer idAnalysis) {
+ List xeResultsList = Lists.newArrayList();
+ this.saveXE_131m(analyseResult,sampleId,idAnalysis,XE_131m,xeResultsList);
+ this.saveXE_133(analyseResult,sampleId,idAnalysis,XE_133,xeResultsList);
+ this.saveXE_133m(analyseResult,sampleId,idAnalysis,XE_133m,xeResultsList);
+ this.saveXE_135(analyseResult,sampleId,idAnalysis,XE_135,xeResultsList);
+ if(!CollectionUtils.isEmpty(xeResultsList)){
+ this.saveBatch(xeResultsList);
+ }
+ }
+
+ /**
+ * 保存XE_131m
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ * @param nuclideName
+ */
+ private void saveXE_131m(BgAnalyseResult analyseResult,Integer sampleId,Integer idAnalysis,String nuclideName,List xeResultsList){
+ GardsXeResults xeResults = new GardsXeResults();
+ xeResults.setSampleId(sampleId);
+ xeResults.setIdAnalysis(idAnalysis);
+ xeResults.setNuclideName(nuclideName);
+ xeResults.setConc(analyseResult.Xe131m_con);
+ xeResults.setConcErr(analyseResult.Xe131m_uncer);
+ xeResults.setMdc(analyseResult.MDC_Xe131m);
+ xeResults.setLc(analyseResult.LC_Xe131m);
+ xeResults.setNidFlag(analyseResult.XE_131m_NID_FLAG);
+ xeResults.setModdate(new Date());
+
+ xeResultsList.add(xeResults);
+ }
+
+ /**
+ * 保存XE_133
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ * @param nuclideName
+ */
+ private void saveXE_133(BgAnalyseResult analyseResult,Integer sampleId,Integer idAnalysis,String nuclideName,List xeResultsList){
+ GardsXeResults xeResults = new GardsXeResults();
+ xeResults.setSampleId(sampleId);
+ xeResults.setIdAnalysis(idAnalysis);
+ xeResults.setNuclideName(nuclideName);
+ xeResults.setConc(analyseResult.Xe133_con);
+ xeResults.setConcErr(analyseResult.Xe133_uncer);
+ xeResults.setMdc(analyseResult.MDC_Xe133);
+ xeResults.setLc(analyseResult.MDC_Xe133);
+ xeResults.setNidFlag(analyseResult.XE_133_NID_FLAG);
+ xeResults.setModdate(new Date());
+
+ xeResultsList.add(xeResults);
+ }
+
+ /**
+ * 保存XE_133m
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ * @param nuclideName
+ */
+ private void saveXE_133m(BgAnalyseResult analyseResult,Integer sampleId,Integer idAnalysis,String nuclideName,List xeResultsList){
+ GardsXeResults xeResults = new GardsXeResults();
+ xeResults.setSampleId(sampleId);
+ xeResults.setIdAnalysis(idAnalysis);
+ xeResults.setNuclideName(nuclideName);
+ xeResults.setConc(analyseResult.Xe131m_con);
+ xeResults.setConcErr(analyseResult.Xe131m_uncer);
+ xeResults.setMdc(analyseResult.MDC_Xe131m);
+ xeResults.setLc(analyseResult.LC_Xe131m);
+ xeResults.setNidFlag(analyseResult.XE_131m_NID_FLAG);
+ xeResults.setModdate(new Date());
+
+ xeResultsList.add(xeResults);
+ }
+
+ /**
+ * 保存XE_135
+ * @param analyseResult
+ * @param sampleId
+ * @param idAnalysis
+ * @param nuclideName
+ */
+ private void saveXE_135(BgAnalyseResult analyseResult,Integer sampleId,Integer idAnalysis,String nuclideName,List xeResultsList){
+ GardsXeResults xeResults = new GardsXeResults();
+ xeResults.setSampleId(sampleId);
+ xeResults.setIdAnalysis(idAnalysis);
+ xeResults.setNuclideName(nuclideName);
+ xeResults.setConc(analyseResult.Xe135_con);
+ xeResults.setConcErr(analyseResult.Xe135_uncer);
+ xeResults.setMdc(analyseResult.MDC_Xe135);
+ xeResults.setLc(analyseResult.LC_Xe135);
+ xeResults.setNidFlag(analyseResult.XE_135_NID_FLAG);
+ xeResults.setModdate(new Date());
+
+ xeResultsList.add(xeResults);
+ }
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/SpectrumBaseBlockServiceImpl.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/SpectrumBaseBlockServiceImpl.java
index 458bb105..f1631cb1 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/SpectrumBaseBlockServiceImpl.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/service/impl/SpectrumBaseBlockServiceImpl.java
@@ -93,8 +93,8 @@ public class SpectrumBaseBlockServiceImpl implements ISpectrumBaseBlockService {
if(StringUtils.isNotBlank(struct.acquisition_start_date) && StringUtils.isNotBlank(struct.acquisition_start_time)){
gardsSampleData.setAcquisitionStart(DateUtils.parseDate(struct.acquisition_start_date+" "+struct.acquisition_start_time));
}
- if(Objects.nonNull(gardsSampleData.getAcquisitionStart()) && struct.acquisition_real_time > 0){
- Date acquisitionStop = new Date((long) (gardsSampleData.getAcquisitionStart().getTime()+struct.acquisition_real_time));
+ if(Objects.nonNull(gardsSampleData.getAcquisitionStart()) && struct.acquisition_live_time > 0){
+ Date acquisitionStop = new Date((long) (gardsSampleData.getAcquisitionStart().getTime()+(struct.acquisition_live_time*1000)));
gardsSampleData.setAcquisitionStop(acquisitionStop);
}
gardsSampleData.setAcquisitionRealSec(struct.acquisition_real_time);
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AlertSpectrum.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AlertSpectrum.java
index 7cece8f9..28c00d79 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AlertSpectrum.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AlertSpectrum.java
@@ -7,6 +7,7 @@ import org.jeecg.common.properties.SpectrumPathProperties;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.base.entity.original.GardsAlertData;
import org.jeecg.modules.base.enums.DataType;
+import org.jeecg.modules.exception.PHD_ReadException;
import org.jeecg.modules.native_jni.EnergySpectrumHandler;
import org.jeecg.modules.native_jni.struct.AlertSpectrumStruct;
@@ -81,10 +82,10 @@ public class AlertSpectrum extends SpectrumHandler{
* 调用dll解析邮件
*/
@Override
- protected void parseingEmail() {
+ protected void parseingEmail() throws Exception {
final AlertSpectrumStruct sourceData = EnergySpectrumHandler.getAlertSourceData(mailFile.getAbsolutePath());
if(Objects.isNull(sourceData)){
- throw new RuntimeException("THE PHDFile has some blocks can't be read:"+this.mailFile.getAbsolutePath());
+ throw new PHD_ReadException("THE PHDFile has some blocks can't be read:"+this.mailFile.getAbsolutePath());
}
this.sourceData = sourceData;
}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/HealthStatusSpectrum.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/HealthStatusSpectrum.java
index 607381c9..092deb36 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/HealthStatusSpectrum.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/HealthStatusSpectrum.java
@@ -8,6 +8,7 @@ import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.base.entity.original.GardsSohData;
import org.jeecg.modules.base.enums.DataType;
import org.jeecg.modules.exception.AirSamplerFlowException;
+import org.jeecg.modules.exception.PHD_ReadException;
import org.jeecg.modules.native_jni.EnergySpectrumHandler;
import org.jeecg.modules.native_jni.struct.SOHSpectrumStruct;
import org.springframework.util.CollectionUtils;
@@ -80,10 +81,10 @@ public class HealthStatusSpectrum extends SpectrumHandler{
* 调用dll解析邮件
*/
@Override
- protected void parseingEmail() {
+ protected void parseingEmail() throws Exception {
final SOHSpectrumStruct sourceData = EnergySpectrumHandler.getSOHSourceData(mailFile.getAbsolutePath());
if(Objects.isNull(sourceData)){
- throw new RuntimeException("THE PHDFile has some blocks can't be read:"+this.mailFile.getAbsolutePath());
+ throw new PHD_ReadException("THE PHDFile has some blocks can't be read:"+this.mailFile.getAbsolutePath());
}
if(sourceData.af_record_count <= 0 || sourceData.af_start_date.size() < 0 || sourceData.af_start_time.size() < 0){
throw new AirSamplerFlowException("ariSamplerFlow data error");
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/MetSpectrum.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/MetSpectrum.java
index 8395a868..e79a08da 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/MetSpectrum.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/MetSpectrum.java
@@ -80,7 +80,7 @@ public class MetSpectrum extends SpectrumHandler{
* 调用dll解析邮件
*/
@Override
- protected void parseingEmail() {
+ protected void parseingEmail() throws Exception{
final MetSpectrumStruct sourceData = EnergySpectrumHandler.getMetSourceData(mailFile.getAbsolutePath());
if(Objects.isNull(sourceData)){
throw new RuntimeException("THE PHDFile has some blocks can't be read:"+this.mailFile.getAbsolutePath());
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/S_D_Q_G_SpectrumHandler.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/S_D_Q_G_SpectrumHandler.java
index e0174d01..58378faf 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/S_D_Q_G_SpectrumHandler.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/S_D_Q_G_SpectrumHandler.java
@@ -12,6 +12,7 @@ import org.jeecg.modules.config.datasource.DataSourceSwitcher;
import org.jeecg.modules.exception.AcquisitionBlockException;
import org.jeecg.modules.exception.FileRepeatException;
import org.jeecg.modules.exception.HeaderBlockException;
+import org.jeecg.modules.exception.PHD_ReadException;
import org.jeecg.modules.native_jni.EnergySpectrumHandler;
import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
import org.jeecg.modules.service.ISpectrumBlockService;
@@ -49,6 +50,14 @@ public abstract class S_D_Q_G_SpectrumHandler extends SpectrumHandler{
* 基础数据
*/
protected GardsSampleData sampleData;
+ /**
+ * 日志文件路径
+ */
+ protected String logFilePath;
+ /**
+ * 日志文件名称
+ */
+ protected String logFileName;
/**
* 前置检查
@@ -80,10 +89,10 @@ public abstract class S_D_Q_G_SpectrumHandler extends SpectrumHandler{
* 调用dll解析邮件
*/
@Override
- protected void parseingEmail() {
+ protected void parseingEmail() throws Exception {
final EnergySpectrumStruct sourceData = EnergySpectrumHandler.getSourceData(mailFile.getAbsolutePath());
if(Objects.isNull(sourceData)){
- throw new RuntimeException("THE PHDFile has some blocks can't be read:"+this.mailFile.getAbsolutePath());
+ throw new PHD_ReadException("THE PHDFile has some blocks can't be read:"+this.mailFile.getAbsolutePath());
}
this.sourceData = sourceData;
}
@@ -182,7 +191,7 @@ public abstract class S_D_Q_G_SpectrumHandler extends SpectrumHandler{
}
}
//提交事务
- spectrumServiceQuotes.getTransactionManager().commit(transactionStatus);
+ this.spectrumServiceQuotes.getTransactionManager().commit(transactionStatus);
this.endIntoDatabaseTime = new Date();
}catch (Exception e){
//回滚事务
@@ -225,9 +234,10 @@ public abstract class S_D_Q_G_SpectrumHandler extends SpectrumHandler{
logContent.append("------------------- ").append("Write Data into Database Successfully at ").append(DateUtils.formatDate(this.endIntoDatabaseTime,"yyyy-MM-dd HH:mm:ss")).append(" --------------------");
//保存日志文件到ftp
final SpectrumPathProperties properties = this.spectrumServiceQuotes.getSpectrumPathProperties();
- final String ftpPath = properties.getLogPath()+StringConstant.SLASH+this.getFileSavePath();
- final String fileName = super.mailFile.getName().replace(this.currDataType.getSuffix(),LOG_FILE_SUFFIX);
- super.ftpUtil.saveFile(ftpPath,fileName,new ByteArrayInputStream(logContent.toString().getBytes(StandardCharsets.UTF_8)));
+ this.logFilePath = properties.getLogPath()+StringConstant.SLASH+this.getFileSavePath();
+ this.logFileName = super.mailFile.getName().replace(this.currDataType.getSuffix(),LOG_FILE_SUFFIX);
+
+ super.ftpUtil.saveFile(logFilePath,logFileName,new ByteArrayInputStream(logContent.toString().getBytes(StandardCharsets.UTF_8)));
}
/**
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_B_Analysis.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_B_Analysis.java
new file mode 100644
index 00000000..fa919a1d
--- /dev/null
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_B_Analysis.java
@@ -0,0 +1,299 @@
+package org.jeecg.modules.spectrum;
+
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.constant.StringConstant;
+import org.jeecg.common.properties.SpectrumPathProperties;
+import org.jeecg.modules.base.entity.original.GardsSampleData;
+import org.jeecg.modules.base.entity.rnauto.GardsAnalyses;
+import org.jeecg.modules.base.enums.DataType;
+import org.jeecg.modules.base.enums.DataTypeAbbr;
+import org.jeecg.modules.base.enums.SampleStatus;
+import org.jeecg.modules.config.datasource.DataSourceSwitcher;
+import org.jeecg.modules.exception.BAnalyseException;
+import org.jeecg.modules.exception.FileNotExistException;
+import org.jeecg.modules.ftp.FTPUtils;
+import org.jeecg.modules.native_jni.EnergySpectrumHandler;
+import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
+import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct;
+import org.springframework.transaction.TransactionStatus;
+import java.io.File;
+import java.io.IOException;
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * B谱分析过程
+ */
+public class Sample_B_Analysis {
+
+ /**
+ * 报告文件后缀
+ */
+ private static final String ARR_FILE_SUFFIX = ".txt";
+ /**
+ * 正常分析过程日志
+ */
+ private StringBuilder analysesLog = new StringBuilder();
+ /**
+ * 分析过程当前状态
+ */
+ private String currAnalysesStatus = null;
+ /**
+ * Sample谱结构体数据
+ */
+ private EnergySpectrumStruct sampleStruct = null;
+ /**
+ * sample谱原始数据
+ */
+ private GardsSampleData sampleData = null;
+ /**
+ * gas谱原始数据
+ */
+ private GardsSampleData detSampleData = null;
+ /**
+ * det谱原始数据
+ */
+ private GardsSampleData gasSampleData = null;
+ /**
+ * sample谱PHD文件临时路径
+ */
+ private String sampleTempFilePath;
+ /**
+ * det谱PHD文件临时路径
+ */
+ private String detTempFilePath;
+ /**
+ * gas谱PHD文件临时路径
+ */
+ private String gasTempFilePath;
+ /**
+ * 日志文件路径
+ */
+ private String logFilePath;
+ /**
+ * 日志文件名称
+ */
+ private String logFileName;
+ /**
+ * 报告文件路径
+ */
+ private String arrFilePath;
+ /**
+ * 报告文件名称
+ */
+ private String arrFileName;
+ /**
+ * spring bean引用
+ */
+ private SpectrumServiceQuotes spectrumServiceQuotes;
+ /**
+ * ftp工具
+ */
+ private FTPUtils ftpUtil;
+ /**
+ * 分析结果
+ */
+ private BgAnalyseResult analyseResult;
+ /**
+ * 开始分析时间
+ */
+ private Date startAnalysisTime;
+ /**
+ * 结束分析时间
+ */
+ private Date endAnalysisTime;
+
+ public Sample_B_Analysis(GardsSampleData sampleData,String sampleTempFilePath,SpectrumServiceQuotes spectrumServiceQuotes,
+ EnergySpectrumStruct sampleStruct,FTPUtils ftpUtil,String logFilePath,String logFileName){
+ this.sampleData = sampleData;
+ this.sampleTempFilePath = sampleTempFilePath;
+ this.spectrumServiceQuotes = spectrumServiceQuotes;
+ this.sampleStruct = sampleStruct;
+ this.ftpUtil = ftpUtil;
+ this.logFilePath = logFilePath;
+ this.logFileName = logFileName;
+ }
+
+ /**
+ * 执行解析过程
+ */
+ public void start(){
+ try {
+ //修改状态为解析中
+ this.updateStatus(SampleStatus.IN_PROCESS.getValue());
+ //查询det、gas数据(sampleId,inputFileName),sample数据在构造函数已经传过来
+ this.queryPHDFile();
+ //构造报告文件存储路径及文件名称,日志文件存储路径及文件名称在原始库存储阶段已存在,已经传过来
+ this.structureArrFilePath();
+ //下载det和gas谱PHD文件,sample谱PHD文件位置在构造函数已经传过来
+ this.downloadPHDFile();
+ //传入sample、det和gas谱PHD文件调用dll进行分析
+ this.autoAnalyse();
+ //存储数据
+ this.storageDataToDatabase();
+ //删除下载的det和gas临时文件
+ this.deleteLocalTemporaryFile();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 修改状态为解析中
+ * @param analysesStatus
+ */
+ private void updateStatus(String analysesStatus){
+ this.currAnalysesStatus = analysesStatus;
+ this.spectrumServiceQuotes.getSampleDataService().updateStatus(this.currAnalysesStatus,this.sampleData.getInputFileName());
+ }
+
+ /**
+ * 查询det、gas数据,sample在构造函数已经传过来
+ * @throws FileNotExistException
+ */
+ private void queryPHDFile() throws FileNotExistException {
+ //查询det和gas能谱文件
+ this.detSampleData = spectrumServiceQuotes.getSampleDataService().getSampleIdAndInputFileName(this.sampleStruct.detector_bk_measurement_id, DataTypeAbbr.DETBKPHD.getType());
+ this.gasSampleData = spectrumServiceQuotes.getSampleDataService().getSampleIdAndInputFileName(this.sampleStruct.gas_bk_measurement_id, DataTypeAbbr.GASBKPHD.getType());
+
+ //如果找不到sample、det、gas谱文件数据则解析失败修改记录状态
+ if(StringUtils.isEmpty(this.sampleData.getInputFileName()) || Objects.isNull(this.detSampleData) || StringUtils.isEmpty(this.detSampleData.getInputFileName()) || Objects.isNull(this.gasSampleData) || StringUtils.isEmpty(this.gasSampleData.getInputFileName())){
+ this.currAnalysesStatus = SampleStatus.FAIL.getValue();
+ this.spectrumServiceQuotes.getSampleDataService().updateStatus(this.currAnalysesStatus,this.sampleData.getInputFileName());
+
+ throw new FileNotExistException("gas or det file is no exist or is error..");
+ }
+ }
+
+ /**
+ * 创建报告文件路径
+ */
+ private void structureArrFilePath(){
+ //处理此文件需要保存到ftp服务的路径
+ final int year = LocalDate.now().getYear();
+ final int month = LocalDate.now().getMonth().getValue();
+ final SpectrumPathProperties properties = this.spectrumServiceQuotes.getSpectrumPathProperties();
+ StringBuilder ftpPath = new StringBuilder();
+ ftpPath.append(properties.getRootPath());
+ ftpPath.append(StringConstant.SLASH);
+ ftpPath.append(properties.getArrPath());
+ ftpPath.append(StringConstant.SLASH);
+ ftpPath.append(properties.getFilePathMap().get(this.sampleStruct.system_type));
+ ftpPath.append(StringConstant.SLASH);
+ ftpPath.append(properties.getFilePathMap().get(this.sampleStruct.data_type));
+ ftpPath.append(StringConstant.SLASH);
+ ftpPath.append(year);
+ ftpPath.append(StringConstant.SLASH);
+ ftpPath.append(month>=10?month:"0"+month);
+ this.arrFilePath = ftpPath.toString();
+ final String filePath = this.sampleData.getInputFileName().replace(DataType.SAMPLEPHD.getSuffix(), ARR_FILE_SUFFIX);
+ this.arrFileName = filePath.substring(filePath.lastIndexOf(StringConstant.SLASH)+1);
+ }
+
+ /**
+ * 调用dll库的分析B谱结果
+ */
+ private void autoAnalyse() throws BAnalyseException, FileNotExistException {
+ this.startAnalysisTime = new Date();
+ System.out.println("sam:"+this.sampleTempFilePath);
+ System.out.println("gas:"+this.gasTempFilePath);
+ System.out.println("det:"+this.detTempFilePath);
+
+ BgAnalyseResult analyseResult = EnergySpectrumHandler.bgAnalyse(this.sampleTempFilePath,this.gasTempFilePath,this.detTempFilePath);
+ System.out.println(analyseResult);
+ this.endAnalysisTime = new Date();
+ if(Objects.isNull(analyseResult)){
+ throw new BAnalyseException("THE PHD file cannot be parsed:"+this.sampleTempFilePath+","+this.gasTempFilePath+","+this.detTempFilePath);
+ }
+ this.analyseResult = analyseResult;
+ }
+
+ /**
+ * 下载det和gas谱PHD文件,sample谱PHD文件位置在构造函数已经传过来
+ * @throws IOException
+ */
+ private void downloadPHDFile() throws IOException, FileNotExistException {
+ boolean flag = false;
+ //下载gas谱PHD文件到本地临时路径
+ String gasFileName = gasSampleData.getInputFileName().substring(gasSampleData.getInputFileName().lastIndexOf(StringConstant.SLASH) + 1);
+ String gasFileFTPPath = gasSampleData.getInputFileName().substring(0, gasSampleData.getInputFileName().lastIndexOf(StringConstant.SLASH));
+ boolean gasFlag = ftpUtil.downloadFTPFile(gasFileFTPPath,gasFileName,this.spectrumServiceQuotes.getTaskProperties().getTemporaryStoragePath());
+ if(!gasFlag){
+ flag = true;
+ }
+ gasTempFilePath = this.spectrumServiceQuotes.getTaskProperties().getTemporaryStoragePath()+File.separator+gasFileName;
+
+ //下载det谱PHD文件到本地临时路径
+ final String detFileName = detSampleData.getInputFileName().substring(detSampleData.getInputFileName().lastIndexOf(StringConstant.SLASH) + 1);
+ String detFileFTPPath = detSampleData.getInputFileName().substring(0, detSampleData.getInputFileName().lastIndexOf(StringConstant.SLASH));
+ boolean detFlag = ftpUtil.downloadFTPFile(detFileFTPPath,detFileName,this.spectrumServiceQuotes.getTaskProperties().getTemporaryStoragePath());
+ if(!detFlag){
+ flag = true;
+ }
+ detTempFilePath = this.spectrumServiceQuotes.getTaskProperties().getTemporaryStoragePath()+ File.separator+detFileName;
+
+ if(flag){
+ throw new FileNotExistException("gas or det file is no exist or is error..");
+ }
+ }
+
+ /**
+ * 数据入库
+ */
+ private void storageDataToDatabase(){
+ String logFileRelativePath = this.logFilePath+StringConstant.SLASH+this.logFileName;
+ String arrFileRelativePath = this.arrFilePath+StringConstant.SLASH+this.arrFileName;
+ DataSourceSwitcher.switchToOracle();
+ final TransactionStatus transactionStatus = spectrumServiceQuotes.getTransactionManager().getTransaction(spectrumServiceQuotes.getTransactionDefinition());
+ try{
+ //存储基础数据
+ final GardsAnalyses analyses = spectrumServiceQuotes.getAnalysesService().create(this.sampleData.getSampleId(),this.detSampleData,
+ this.gasSampleData,this.startAnalysisTime,this.endAnalysisTime,logFileRelativePath,arrFileRelativePath);
+ //调用原始数据dll获取gas、det谱数据入库,sample已有数据直接入库
+ //存储sample谱B_Energy和G_Energy块数据
+ spectrumServiceQuotes.getGardsCalibrationPairsService().createB_EnergyRecord(sampleData.getSampleId(),analyses.getIdAnalysis(),sampleStruct);
+ spectrumServiceQuotes.getGardsCalibrationPairsService().createG_EnergyRecord(sampleData.getSampleId(),analyses.getIdAnalysis(),sampleStruct);
+ //存储det谱B_Energy和G_Energy块数据
+ final EnergySpectrumStruct detStruct = EnergySpectrumHandler.getSourceData(detSampleData.getInputFileName());
+ spectrumServiceQuotes.getGardsCalibrationPairsService().createB_EnergyRecord(detSampleData.getSampleId(),analyses.getIdAnalysis(),detStruct);
+ spectrumServiceQuotes.getGardsCalibrationPairsService().createG_EnergyRecord(detSampleData.getSampleId(),analyses.getIdAnalysis(),detStruct);
+ //存储gas谱B_Energy和G_Energy块数据
+ final EnergySpectrumStruct gasStruct = EnergySpectrumHandler.getSourceData(gasSampleData.getInputFileName());
+ spectrumServiceQuotes.getGardsCalibrationPairsService().createB_EnergyRecord(gasSampleData.getSampleId(),analyses.getIdAnalysis(),gasStruct);
+ spectrumServiceQuotes.getGardsCalibrationPairsService().createG_EnergyRecord(gasSampleData.getSampleId(),analyses.getIdAnalysis(),gasStruct);
+
+ //存储gards_calibration表数据sample、det、gas谱B_Energy和G_Energy块数据
+ spectrumServiceQuotes.getGardsCalibrationService().create(this.analyseResult,gasSampleData.getSampleId(),analyses.getIdAnalysis());
+ //gards_roi_channels数据表,存储sample、det、gas谱数据
+ spectrumServiceQuotes.getRoiChannelsService().create(this.analyseResult,sampleData.getSampleId(),analyses.getIdAnalysis());
+ //gards_Xe_results数据表XE_131m、XE_133、XE_133m、XE_135数据
+ spectrumServiceQuotes.getXeResultsService().create(this.analyseResult,sampleData.getSampleId(),analyses.getIdAnalysis());
+ //gards_ roi_results数据表
+ spectrumServiceQuotes.getRoiResultsService().create(this.analyseResult,sampleData.getSampleId(),analyses.getIdAnalysis());
+ //提交事务
+ spectrumServiceQuotes.getTransactionManager().commit(transactionStatus);
+ }catch (Exception e){
+ //回滚事务
+ spectrumServiceQuotes.getTransactionManager().rollback(transactionStatus);
+ throw e;
+ }finally {
+ DataSourceSwitcher.clearDataSource();
+ }
+ }
+
+ /**
+ * 删除下载的det和gas临时文件
+ */
+ private void deleteLocalTemporaryFile(){
+ File detFile = new File(this.detTempFilePath);
+ if(detFile.exists() && detFile.isFile()){
+ detFile.delete();
+ }
+
+ File gasFile = new File(this.gasTempFilePath);
+ if(gasFile.exists() && gasFile.isFile()){
+ gasFile.delete();
+ }
+ }
+}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java
index 69a6394b..2040583c 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/Sample_G_Analysis.java
@@ -62,7 +62,7 @@ public class Sample_G_Analysis {
saveNuclIded(middleData,sampleId,IdAnalysis);
/* Gards_Qc_Check 数据表保存 */
saveQcCheck(middleData,sampleId,IdAnalysis);
- // 收尾处理 ==> 写日志文件和报告文件
+ /** 收尾处理 ==> 写日志文件和报告文件 **/
}catch (Exception e){
e.printStackTrace();
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SamplephdSpectrum.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SamplephdSpectrum.java
index 81808e7c..bd021eab 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SamplephdSpectrum.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SamplephdSpectrum.java
@@ -1,33 +1,13 @@
package org.jeecg.modules.spectrum;
-import org.apache.commons.lang3.StringUtils;
-import org.jeecg.common.constant.StringConstant;
-import org.jeecg.modules.base.entity.original.GardsSampleData;
import org.jeecg.modules.base.enums.DataType;
-import org.jeecg.modules.base.enums.DataTypeAbbr;
-import org.jeecg.modules.base.enums.SampleStatus;
-import org.jeecg.modules.exception.FileNotExistException;
-import org.jeecg.modules.native_jni.EnergySpectrumHandler;
-import org.jeecg.modules.native_jni.struct.BgAnalyseResult;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Objects;
+import org.jeecg.modules.base.enums.SystemType;
/**
* 样品谱处理
*/
public class SamplephdSpectrum extends S_D_Q_G_SpectrumHandler{
- /**
- * 正常分析过程日志
- */
- private StringBuilder analysesLog = new StringBuilder();
- /**
- * 分析过程当前状态
- */
- private String currAnalysesStatus = null;
-
/**
* 设置过滤链路
*/
@@ -60,78 +40,26 @@ public class SamplephdSpectrum extends S_D_Q_G_SpectrumHandler{
super.handlerOriginalData();
//保存email日志
super.saveEmailLog();
+ //把原始库流程日志写入ftp日志文件
+ super.saveLogToFtp();
+ //进行B、G(P)谱分析
+ this.autoAnalysis();
//删除本地临时文件
super.deleteLocalTemporaryFile();
- //把流程日志写入ftp日志文件
- super.saveLogToFtp();
}else{
super.next.handler();
}
}
/**
- * 处理分析结果
- *
- * @param struct
+ * 进行B、G(P)谱分析
+ * @throws Exception
*/
- protected void handlerAnalysisResult() throws FileNotExistException, IOException {
-
- final String sampleFilePath = super.ftpSavePath;
- String detFilePath = null;
- String gasFilePath = null;
- //修改状态为解析中
- this.currAnalysesStatus = SampleStatus.IN_PROCESS.getValue();
- super.spectrumServiceQuotes.getSampleDataService().updateStatus(this.currAnalysesStatus,sampleFilePath);
- //查询det和gas能谱文件
- GardsSampleData detSampleData = super.spectrumServiceQuotes.getSampleDataService().getDetInputFileName(super.sourceData.detector_bk_measurement_id, DataTypeAbbr.DETBKPHD.getType());
- GardsSampleData gasSampleData = super.spectrumServiceQuotes.getSampleDataService().getGasInputFileName(super.sourceData.gas_bk_measurement_id, DataTypeAbbr.GASBKPHD.getType());
-
- //如果找不到sample、det、gas谱文件数据则解析失败修改记录状态
- if(StringUtils.isEmpty(sampleFilePath) || Objects.isNull(detSampleData) || StringUtils.isEmpty(detSampleData.getInputFileName()) || Objects.isNull(gasSampleData) || StringUtils.isEmpty(gasSampleData.getInputFileName())){
- this.currAnalysesStatus = SampleStatus.FAIL.getValue();
- super.spectrumServiceQuotes.getSampleDataService().updateStatus(this.currAnalysesStatus,sampleFilePath);
-
- throw new FileNotExistException("gas or det file is no exist or is error..");
+ protected void autoAnalysis() throws Exception {
+ if(this.sourceData.system_type.equals(SystemType.BETA.getType())){
+ Sample_B_Analysis bAnalysis = new Sample_B_Analysis(super.sampleData,super.mailFile.getAbsolutePath(),
+ super.spectrumServiceQuotes,super.sourceData,super.ftpUtil,super.logFilePath,super.logFileName);
+ bAnalysis.start();
}
- //下载det谱PHD文件到本地临时路径
- final String detFileName = detSampleData.getInputFileName().substring(detSampleData.getInputFileName().lastIndexOf(StringConstant.SLASH) + 1);
- detFilePath = detSampleData.getInputFileName().substring(0, detSampleData.getInputFileName().lastIndexOf(StringConstant.SLASH));
- ftpUtil.downloadFTPFile(detFilePath,detFileName,this.spectrumServiceQuotes.getTaskProperties().getTemporaryStoragePath());
- detFilePath = this.spectrumServiceQuotes.getTaskProperties().getTemporaryStoragePath()+File.separator+detFileName;
-
- //下载gas谱PHD文件到本地临时路径
- String gasFileName = gasSampleData.getInputFileName().substring(gasSampleData.getInputFileName().lastIndexOf(StringConstant.SLASH) + 1);
- gasFilePath = gasSampleData.getInputFileName().substring(0, gasSampleData.getInputFileName().lastIndexOf(StringConstant.SLASH));
- ftpUtil.downloadFTPFile(gasFilePath,gasFileName,this.spectrumServiceQuotes.getTaskProperties().getTemporaryStoragePath());
- gasFilePath = this.spectrumServiceQuotes.getTaskProperties().getTemporaryStoragePath()+File.separator+gasFileName;
-
- //分析结果
- final BgAnalyseResult analyseResult = EnergySpectrumHandler.bgAnalyse(sampleFilePath, gasFilePath, detFilePath);
- System.out.println(analyseResult);
- if(Objects.nonNull(analyseResult) && analyseResult.analyse_flag){
- //存储数据
- super.spectrumServiceQuotes.getAnalysesService().create(analyseResult,super.sampleData.getSampleId());
- //修改分析状态为已完成
- this.currAnalysesStatus = SampleStatus.COMPLETE.getValue();
- super.spectrumServiceQuotes.getSampleDataService().updateStatus(this.currAnalysesStatus,sampleFilePath);
-
- //调用原始数据dll获取gas、det谱数据入库,sample已有数据直接入库 EnergySpectrumHandler.getSourceData()
-
- //存储gards_calibration表数据sample、det、gas谱数据
-
- //存储GARDS_ROI_CHANNELS表数据sample、det、gas谱数据-乔钦政那边已和周雨涵调试过
-
- //gards_ Xe_results数据表
-
-
- }
- }
-
- /**
- * 下载FTP文件到临时目录
- * @param filePath
- */
- private void downFTPFileToTemporaryDirectory(String filePath){
-
}
}
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumHandler.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumHandler.java
index b976f417..148e5fc3 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumHandler.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumHandler.java
@@ -5,6 +5,7 @@ import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.base.enums.DataType;
import org.jeecg.modules.email.EmailProperties;
+import org.jeecg.modules.exception.PHD_ReadException;
import org.jeecg.modules.ftp.FTPUtils;
import javax.mail.Message;
import java.io.File;
@@ -94,7 +95,7 @@ public abstract class SpectrumHandler extends Chain{
/**
* 调用dll解析邮件
*/
- protected abstract void parseingEmail();
+ protected abstract void parseingEmail() throws Exception;
/**
* 保存能谱文件到ftp
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumParsingActuator.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumParsingActuator.java
index f4485823..8aacc32a 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumParsingActuator.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumParsingActuator.java
@@ -95,7 +95,7 @@ public class SpectrumParsingActuator implements Runnable{
mailContent = new StringBuilder();
emailServiceManager.getMailContent(message,mailContent);
//所有邮件都需以.eml格式存储到ftp eml文件夹中
- downloadEmailToFtp();
+// downloadEmailToFtp();
//判断是否是IMS2.0协议文件
if(checkMailContent(mailContent,subject)){
SpectrumHandler spectrumHandler = new SamplephdSpectrum();
diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumServiceQuotes.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumServiceQuotes.java
index 2a495bee..861eaa6b 100644
--- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumServiceQuotes.java
+++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/SpectrumServiceQuotes.java
@@ -59,4 +59,11 @@ public class SpectrumServiceQuotes {
private final GardsNuclLinesIdedAutoService gardsNuclLinesIdedAutoService;
private final GardsQcCheckAutoService gardsQcCheckAutoService;
+
+ private final GardsXeResultsService xeResultsService;
+
+ private final GardsRoiResultsService roiResultsService;
+
+ private final GardsRoiChannelsService roiChannelsService;
+
}
diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/GammaFileUtil.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/GammaFileUtil.java
index 43d64f28..070f2915 100644
--- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/GammaFileUtil.java
+++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/common/util/GammaFileUtil.java
@@ -75,19 +75,21 @@ public class GammaFileUtil {
pathName = StringPool.SLASH + spectrumPathProperties.getRootPath() + StringPool.SLASH + pathName;
ftpClient.changeWorkingDirectory(pathName);
List ftpFiles = Arrays.asList(ftpClient.listFiles());
- ftpFiles = ftpFiles.stream().filter(item-> item.getName().equals(fileName)).collect(Collectors.toList());
- if (ftpFiles.size() == 0){
+ 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)){
+ if (Objects.nonNull(ftpFile)) {
InputStream inputStream = ftpClient.retrieveFileStream(ftpFile.getName());
//声明一个临时文件
File file = File.createTempFile("tmp", null);
//将ftp文件的输入流复制给临时文件
FileUtils.copyInputStreamToFile(inputStream, file);
//读取文件信息
+ //String path = "C:\\Users\\a\\Desktop\\AUX04_005-20230601_1405_S_FULL_40186.PHD";
+ //EnergySpectrumStruct struct = EnergySpectrumHandler.getSourceData(path);
EnergySpectrumStruct struct = EnergySpectrumHandler.getSourceData(file.getAbsolutePath());
//MsgInfo
phd.getMsgInfo().setMsg_id(struct.msg_id);
@@ -109,64 +111,64 @@ public class GammaFileUtil {
//Comment
phd.setOriTotalCmt(struct.comment);
//Collection
- if (StringUtils.isNotBlank(struct.collection_start_date) || StringUtils.isNotBlank(struct.collection_start_time) || StringUtils.isNotBlank(struct.collection_stop_date) || StringUtils.isNotBlank(struct.collection_stop_time) || Objects.nonNull(struct.air_volume)){
+ if (StringUtils.isNotBlank(struct.collection_start_date) || StringUtils.isNotBlank(struct.collection_start_time) || StringUtils.isNotBlank(struct.collection_stop_date) || StringUtils.isNotBlank(struct.collection_stop_time) || Objects.nonNull(struct.air_volume)) {
phd.getCollect().setCollection_start_date(struct.collection_start_date);
phd.getCollect().setCollection_start_time(struct.collection_start_time);
phd.getCollect().setCollection_stop_date(struct.collection_stop_date);
phd.getCollect().setCollection_stop_time(struct.collection_stop_time);
phd.getCollect().setAir_volume(struct.air_volume);
- if(phd.getCollect().getCollection_start_time().indexOf('.')<0) {
- phd.getCollect().setCollection_start_time(phd.getCollect().getCollection_start_time()+".0");
+ if (phd.getCollect().getCollection_start_time().indexOf('.') < 0) {
+ phd.getCollect().setCollection_start_time(phd.getCollect().getCollection_start_time() + ".0");
}
- if(phd.getCollect().getCollection_stop_time().indexOf('.')<0) {
- phd.getCollect().setCollection_stop_time(phd.getCollect().getCollection_stop_time()+".0");
+ if (phd.getCollect().getCollection_stop_time().indexOf('.') < 0) {
+ phd.getCollect().setCollection_stop_time(phd.getCollect().getCollection_stop_time() + ".0");
}
- }else {
+ } else {
phd.getCollect().setAir_volume(0.0);
}
//Acquisition
- if (StringUtils.isNotBlank(struct.acquisition_start_date) || StringUtils.isNotBlank(struct.acquisition_start_time) || Objects.nonNull(struct.acquisition_real_time) || Objects.nonNull(struct.acquisition_live_time)){
+ if (StringUtils.isNotBlank(struct.acquisition_start_date) || StringUtils.isNotBlank(struct.acquisition_start_time) || Objects.nonNull(struct.acquisition_real_time) || Objects.nonNull(struct.acquisition_live_time)) {
phd.getAcq().setAcquisition_start_date(struct.acquisition_start_date);
phd.getAcq().setAcquisition_start_time(struct.acquisition_start_time);
phd.getAcq().setAcquisition_real_time(struct.acquisition_real_time);
phd.getAcq().setAcquisition_live_time(struct.acquisition_live_time);
- if(phd.getAcq().getAcquisition_start_time().indexOf('.')<0) {
- phd.getAcq().setAcquisition_start_time(phd.getAcq().getAcquisition_start_time()+".0");
+ if (phd.getAcq().getAcquisition_start_time().indexOf('.') < 0) {
+ phd.getAcq().setAcquisition_start_time(phd.getAcq().getAcquisition_start_time() + ".0");
}
- }else {
+ } else {
phd.getAcq().setAcquisition_live_time(0.0);
phd.getAcq().setAcquisition_real_time(0.0);
}
//Processing
- if (Objects.nonNull(struct.sample_volume_of_Xe) || Objects.nonNull(struct.uncertainty_1) || Objects.nonNull(struct.Xe_collection_yield) || Objects.nonNull(struct.uncertainty_2) || StringUtils.isNotBlank(struct.archive_bottle_id) ){
+ if (Objects.nonNull(struct.sample_volume_of_Xe) || Objects.nonNull(struct.uncertainty_1) || Objects.nonNull(struct.Xe_collection_yield) || Objects.nonNull(struct.uncertainty_2) || StringUtils.isNotBlank(struct.archive_bottle_id)) {
phd.getProcess().setSample_volume_of_Xe(struct.sample_volume_of_Xe);
phd.getProcess().setUncertainty_1(struct.uncertainty_1);
phd.getProcess().setXe_collection_yield(struct.Xe_collection_yield);
phd.getProcess().setUncertainty_2(struct.uncertainty_2);
phd.getProcess().setArchive_bottle_id(struct.archive_bottle_id);
- }else {
+ } else {
phd.getProcess().setSample_volume_of_Xe(0.0);
phd.getProcess().setXe_collection_yield(0.0);
phd.getProcess().setUncertainty_1(0.0);
phd.getProcess().setUncertainty_2(0.0);
}
//Sample
- if (Objects.nonNull(struct.dimension_1) || Objects.nonNull(struct.dimension_2)){
+ if (Objects.nonNull(struct.dimension_1) || Objects.nonNull(struct.dimension_2)) {
phd.getSampleBlock().setDimension_1(struct.dimension_1);
phd.getSampleBlock().setDimension_2(struct.dimension_2);
- }else {
+ } else {
phd.getSampleBlock().setDimension_1(0.0);
phd.getSampleBlock().setDimension_2(0.0);
}
//Calibration
- if (StringUtils.isNotBlank(struct.date_calibration) || StringUtils.isNotBlank(struct.time_calibration)){
+ if (StringUtils.isNotBlank(struct.date_calibration) || StringUtils.isNotBlank(struct.time_calibration)) {
phd.getCalibration().setDate_calibration(struct.date_calibration);
phd.getCalibration().setTime_calibration(struct.time_calibration);
}
//Certificate
- if (Objects.nonNull(struct.total_source_activity) || StringUtils.isNotBlank(struct.assay_date) || StringUtils.isNotBlank(struct.assay_time) || StringUtils.isNotBlank(struct.units_activity) || CollectionUtils.isNotEmpty(struct.nuclide_name)
+ if (Objects.nonNull(struct.total_source_activity) || StringUtils.isNotBlank(struct.assay_date) || StringUtils.isNotBlank(struct.assay_time) || StringUtils.isNotBlank(struct.units_activity) || CollectionUtils.isNotEmpty(struct.nuclide_name)
|| CollectionUtils.isNotEmpty(struct.half_life_time) || CollectionUtils.isNotEmpty(struct.time_unit) || CollectionUtils.isNotEmpty(struct.activity_nuclide_time_assay) || CollectionUtils.isNotEmpty(struct.uncertainty)
- || CollectionUtils.isNotEmpty(struct.cer_g_energy) || CollectionUtils.isNotEmpty(struct.g_intensity) || CollectionUtils.isNotEmpty(struct.electron_decay_mode) || CollectionUtils.isNotEmpty(struct.maximum_energy) || CollectionUtils.isNotEmpty(struct.intensity_b_particle) || Objects.nonNull(struct.record_count)){
+ || CollectionUtils.isNotEmpty(struct.cer_g_energy) || CollectionUtils.isNotEmpty(struct.g_intensity) || CollectionUtils.isNotEmpty(struct.electron_decay_mode) || CollectionUtils.isNotEmpty(struct.maximum_energy) || CollectionUtils.isNotEmpty(struct.intensity_b_particle) || Objects.nonNull(struct.record_count)) {
phd.getCertificate().setTotal_source_activity(struct.total_source_activity);
phd.getCertificate().setAssay_date(struct.assay_date);
phd.getCertificate().setAssay_time(struct.assay_time);
@@ -184,23 +186,23 @@ public class GammaFileUtil {
phd.getCertificate().setRecord_count(struct.record_count);
}
//g_Spectrum
- if (Objects.nonNull(struct.num_g_channel) || Objects.nonNull(struct.g_energy_span) || Objects.nonNull(struct.g_begin_channel) || CollectionUtils.isNotEmpty(struct.g_counts)){
+ if (Objects.nonNull(struct.num_g_channel) || Objects.nonNull(struct.g_energy_span) || Objects.nonNull(struct.g_begin_channel) || CollectionUtils.isNotEmpty(struct.g_counts)) {
phd.getSpec().setNum_g_channel(struct.num_g_channel);
phd.getSpec().setG_energy_span(struct.g_energy_span);
phd.getSpec().setBegin_channel(struct.g_begin_channel);
phd.getSpec().setCounts(struct.g_counts);
- int i=0;
- for (;i 0){
+ int i = 0;
+ for (; i < phd.getSpec().getNum_g_channel(); ++i) {
+ if (phd.getSpec().getCounts().get(i) > 0) {
break;
}
}
- if(i == phd.getSpec().getNum_g_channel()){
+ if (i == phd.getSpec().getNum_g_channel()) {
phd.setValid(false);
}
}
//g_Energy
- if (CollectionUtils.isNotEmpty(struct.g_energy) || CollectionUtils.isNotEmpty(struct.g_centroid_channel) || CollectionUtils.isNotEmpty(struct.g_uncertainty) || Objects.nonNull(struct.g_record_count)){
+ if (CollectionUtils.isNotEmpty(struct.g_energy) || CollectionUtils.isNotEmpty(struct.g_centroid_channel) || CollectionUtils.isNotEmpty(struct.g_uncertainty) || Objects.nonNull(struct.g_record_count)) {
GEnergyBlock gEnergyBlock = new GEnergyBlock();
gEnergyBlock.setG_energy(struct.g_energy);
gEnergyBlock.setCentroid_channel(struct.g_centroid_channel);
@@ -209,7 +211,7 @@ public class GammaFileUtil {
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)){
+ 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)) {
GResolutionBlock gResolutionBlock = new GResolutionBlock();
gResolutionBlock.setG_energy(struct.g_r_energy);
gResolutionBlock.setFWHM(struct.g_r_FWHM);
@@ -218,7 +220,7 @@ public class GammaFileUtil {
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)){
+ 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)) {
GEfficiencyBlock gEfficiencyBlock = new GEfficiencyBlock();
gEfficiencyBlock.setG_energy(struct.g_e_energy);
gEfficiencyBlock.setEfficiency(struct.g_e_efficiency);
@@ -227,7 +229,7 @@ public class GammaFileUtil {
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)){
+ if (CollectionUtils.isNotEmpty(struct.t_g_energy) || CollectionUtils.isNotEmpty(struct.total_efficiency) || CollectionUtils.isNotEmpty(struct.t_uncertainty) || Objects.nonNull(struct.t_record_count)) {
TotaleffBlock totaleffBlock = new TotaleffBlock();
totaleffBlock.setG_energy(struct.t_g_energy);
totaleffBlock.setTotal_efficiency(struct.total_efficiency);
@@ -237,18 +239,19 @@ public class GammaFileUtil {
}
// 初始化默认分析设置
- if(phd.getHeader().getSystem_type().equals("P")) {
+ if (phd.getHeader().getSystem_type().equals("P")) {
phd.getSetting().setECutAnalysis_Low(35.0);
phd.getSetting().setBUpdateCal(true);
}
- phd.getSetting().setRefTime_conc(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"));
- phd.getSetting().setRefTime_act(DateUtils.parseDate(phd.getAcq().getAcquisition_start_date() + " " + phd.getAcq().getAcquisition_start_time().substring(0, phd.getAcq().getAcquisition_start_time().indexOf(StringPool.DOT)),"yyyy/MM/dd HH:mm:ss"));
+ phd.getSetting().setRefTime_conc(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"));
+ phd.getSetting().setRefTime_act(DateUtils.parseDate(phd.getAcq().getAcquisition_start_date() + " " + phd.getAcq().getAcquisition_start_time().substring(0, phd.getAcq().getAcquisition_start_time().indexOf(StringPool.DOT)), "yyyy/MM/dd HH:mm:ss"));
phd.setUsedSetting(phd.getSetting());
phd.setBAnalyed(false);
phd.setAnaly_start_time(DateUtils.formatDate(new Date(), "yyyy/MM/dd HH:mm:ss"));
+
}
- } catch (IOException e) {
+ }catch (IOException e) {
throw new RuntimeException(e);
} catch (ParseException e) {
throw new RuntimeException(e);
diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java
index c25ed7d3..e8102e8f 100644
--- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java
+++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/GammaController.java
@@ -1,10 +1,8 @@
package org.jeecg.modules.controller;
+import cn.hutool.core.collection.CollUtil;
import org.jeecg.common.api.vo.Result;
-import org.jeecg.modules.entity.vo.ChangeData;
-import org.jeecg.modules.entity.vo.CoeffData;
-import org.jeecg.modules.entity.vo.ConfigureData;
-import org.jeecg.modules.entity.vo.InputData;
+import org.jeecg.modules.entity.vo.*;
import org.jeecg.modules.service.IGammaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -189,11 +187,25 @@ public class GammaController {
return gammaService.sampleInformation(sampleId, fileName);
}
+ @GetMapping("exportSampleInformation")
+ public void exportSampleInformation(Integer sampleId, String fileName,
+ HttpServletResponse response){
+ gammaService.exportSampleInformation(sampleId, fileName, response);
+ }
+
@GetMapping("viewQCResult")
- public Result viewQCResult(Integer sampleId, String fileName){
+ public Result> viewQCResult(Integer sampleId, String fileName){
return gammaService.viewQCResult(sampleId, fileName);
}
+ @GetMapping("exportQCResult")
+ public void exportQCResult(Integer sampleId, String fileName,HttpServletResponse response){
+ Result> result = gammaService.viewQCResult(sampleId, fileName);
+ List tableQCResults = result.getResult();
+ if (CollUtil.isEmpty(tableQCResults))return;
+ gammaService.exportQCResult(tableQCResults,response);
+ }
+
@GetMapping("viewRLR")
public Result viewRLR(Integer sampleId, String fileName){
return gammaService.viewRLR(sampleId, fileName);
diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/SpectrumAnalysesController.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/SpectrumAnalysesController.java
index 071d4b48..4054b615 100644
--- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/SpectrumAnalysesController.java
+++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/controller/SpectrumAnalysesController.java
@@ -1,14 +1,13 @@
package org.jeecg.modules.controller;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsSampleDataSpectrum;
-import org.jeecg.modules.entity.vo.AnalyseData;
-import org.jeecg.modules.entity.vo.BgDataAnlyseResultIn;
-import org.jeecg.modules.entity.vo.FittingBody;
-import org.jeecg.modules.entity.vo.StatisticsQueryData;
+import org.jeecg.modules.entity.vo.*;
import org.jeecg.modules.service.ISpectrumAnalysisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
@@ -103,6 +102,16 @@ public class SpectrumAnalysesController {
return spectrumAnalysisService.viewQCResult(sampleId);
}
+
+ @GetMapping("exportQCResult")
+ @ApiOperation(value = "导出QC Result数据", notes = "导出QC Result数据")
+ public void exportQCResult(Integer sampleId,HttpServletResponse response){
+ Result result = spectrumAnalysisService.viewQCResult(sampleId);
+ QCResult qcResult = result.getResult();
+ if (ObjectUtil.isNull(qcResult))return;
+ spectrumAnalysisService.exportQCResult(qcResult,response);
+ }
+
@GetMapping("viewRLR")
@ApiOperation(value = "查看RLR数据", notes = "查看RLR数据")
public Result viewRLR(Integer sampleId){
@@ -183,4 +192,12 @@ public class SpectrumAnalysesController {
return spectrumAnalysisService.saveToDB(anlyseResultIn);
}
+ public static void main(String[] args) {
+ String str = "\n#FILE INFORMATION\n SampleMeasID: AUX04_005-2023/06/18-14:05\n GASBKMeasID: AUX04_005-2023/06/18-02:05\n DETBKMeasID: AUX04_005-2022/04/22-13:27\n SRID: 04202306171811X\n\n#COLLECTION INFORMATION\n Station CODE: AUX04\n Detector CODE: AUX04_005\n Sample ID: 426132\n Collection Start: 2023/06/17 18:54:10\n Collection Stop: 2023/06/18 06:54:08\n Collection TIME: 43198.00\n Sample Volume[m3]: 14.410883\n Xe Volume[cm3]: 1.00978\n\n#ACQUISITION INFORMATION\n Acquisition Start: 2023/06/18 14:05:09\n Acq Real Time: 40200.803\n Acq Live Time: 40187.202\n\n";
+ String[] parts = str.split("\\n");
+
+ for (String part : parts) {
+ System.out.println(part);
+ }
+ }
}
diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java
index d3886c7f..9061c8f9 100644
--- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java
+++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGammaService.java
@@ -6,6 +6,7 @@ import org.jeecg.modules.entity.vo.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
+import java.util.Map;
public interface IGammaService{
@@ -72,9 +73,14 @@ public interface IGammaService{
Result Spectrum(Integer sampleId, String fileName);
- Result sampleInformation(Integer sampleId, String fileName);
+ Result