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/util/ExportUtil.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ExportUtil.java index 4b40c13a..d9f25273 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ExportUtil.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ExportUtil.java @@ -1,10 +1,19 @@ package org.jeecg.common.util; +import cn.hutool.core.util.ObjectUtil; +import org.apache.poi.ss.usermodel.Workbook; +import org.jeecg.modules.base.dto.QCResultDto; +import org.jeecgframework.poi.excel.ExcelExportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.TemplateExportParams; + import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Map; public class ExportUtil { @@ -33,4 +42,63 @@ public class ExportUtil { response.setHeader("Content-disposition", "attachment;filename=" + name); return response.getOutputStream(); } + + public static 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/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-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> sampleInformation(Integer sampleId, String fileName); - Result viewQCResult(Integer sampleId, String fileName); + void exportSampleInformation(Integer sampleId, String fileName, + HttpServletResponse response); + + Result> viewQCResult(Integer sampleId, String fileName); + + void exportQCResult(List data,HttpServletResponse response); Result viewRLR(Integer sampleId, String fileName); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISpectrumAnalysisService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISpectrumAnalysisService.java index 6ccc60bb..2760fc91 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISpectrumAnalysisService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/ISpectrumAnalysisService.java @@ -37,7 +37,9 @@ public interface ISpectrumAnalysisService { Result viewSampleInformation(Integer sampleId); - Result viewQCResult(Integer sampleId); + Result viewQCResult(Integer sampleId); + + void exportQCResult(QCResult qcResult,HttpServletResponse response); Result viewRLR(Integer sampleId); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java index 446f624d..a57a4f97 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java @@ -1,5 +1,6 @@ package org.jeecg.modules.service.impl; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; @@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.google.common.cache.Cache; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; +import org.jeecg.common.Excel.ExportExcel; import org.jeecg.common.api.vo.Result; import org.jeecg.common.cache.LocalCache; import org.jeecg.common.properties.SpectrumPathProperties; @@ -20,15 +22,17 @@ import org.jeecg.modules.entity.*; import org.jeecg.modules.mapper.SpectrumAnalysisMapper; import org.jeecg.modules.native_jni.CalValuesHandler; import org.jeecg.modules.service.*; +import org.jeecgframework.poi.excel.ExcelExportUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.DefaultResourceLoader; +import org.springframework.core.io.Resource; import org.springframework.stereotype.Service; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.math.BigDecimal; import java.sql.Connection; import java.sql.ResultSet; @@ -1432,8 +1436,8 @@ public class GammaServiceImpl implements IGammaService { } @Override - public Result sampleInformation(Integer sampleId, String fileName) { - Result result = new Result(); + public Result> sampleInformation(Integer sampleId, String fileName) { + Result> result = new Result(); Cache phdCache = localCache.getPHDCache(); PHDFile phd = phdCache.getIfPresent(fileName); if (Objects.isNull(phd)){ @@ -1478,8 +1482,23 @@ public class GammaServiceImpl implements IGammaService { } @Override - public Result viewQCResult(Integer sampleId, String fileName) { - Result result = new Result(); + public void exportSampleInformation(Integer sampleId, String fileName, + HttpServletResponse response) { + /*Result> result = sampleInformation(sampleId, fileName); + Map sampleInfo = result.getResult(); + if (MapUtil.isEmpty(sampleInfo)) return;*/ + /*Map data = sampleInfo.entrySet().stream() + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));*/ + /*String exportFileName = "SampleInfo-Gamma.xls"; + ExportUtil.exportXls(response,"SampleInfo-G",data,exportFileName);*/ + Map data = new HashMap<>(); + data.put("name","123"); + data.put("sex",1); + } + + @Override + public Result> viewQCResult(Integer sampleId, String fileName) { + Result> result = new Result(); Cache phdCache = localCache.getPHDCache(); PHDFile phd = phdCache.getIfPresent(fileName); if (Objects.isNull(phd)){ @@ -1546,6 +1565,13 @@ public class GammaServiceImpl implements IGammaService { return result; } + @Override + public void exportQCResult(List data, HttpServletResponse response) { + String sheetName = "QCResult-Gamma"; + String fileName = "QCResult-Gamma.xls"; + ExportUtil.exportXls(response,TableQCResult.class,data,sheetName,fileName); + } + @Override public Result viewRLR(Integer sampleId, String fileName) { Result result = new Result(); diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java index ca6dcb51..3a2e6c4d 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/SpectrumAnalysisServiceImpl.java @@ -1,5 +1,8 @@ package org.jeecg.modules.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; @@ -10,11 +13,13 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; +import org.apache.poi.ss.usermodel.Workbook; import org.jeecg.common.api.QueryRequest; import org.jeecg.common.api.vo.Result; import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.util.*; +import org.jeecg.modules.base.dto.QCResultDto; import org.jeecg.modules.base.entity.original.*; import org.jeecg.modules.base.enums.*; import org.jeecg.modules.entity.*; @@ -25,6 +30,8 @@ import org.jeecg.modules.native_jni.struct.BgAnalyseResult; import org.jeecg.modules.native_jni.struct.BgBoundary; import org.jeecg.modules.native_jni.struct.EnergySpectrumStruct; import org.jeecg.modules.service.*; +import org.jeecgframework.poi.excel.ExcelExportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -1049,8 +1056,8 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { } @Override - public Result viewQCResult(Integer sampleId) { - Result result = new Result(); + public Result viewQCResult(Integer sampleId) { + Result result = new Result(); QCResult qcResult = new QCResult(); Sections sections = new Sections(); List collectionTimeSections = sections.getCollectionTimeSections(); @@ -1276,6 +1283,21 @@ public class SpectrumAnalysisServiceImpl implements ISpectrumAnalysisService { return result; } + @Override + public void exportQCResult(QCResult qcResult, HttpServletResponse response) { + Map qcMap = BeanUtil.beanToMap(qcResult); + List qcResultDtos = new ArrayList<>(); + for (Map.Entry entry : qcMap.entrySet()) { + QCResultDto qcResultDto = new QCResultDto(); + qcResultDto.setFieldName(entry.getKey()); + qcResultDto.setFieldValue(entry.getValue()); + qcResultDtos.add(qcResultDto); + } + String sheetName = "QCResult-Beta"; + String fileName = "QCResult-Beta.xls"; + ExportUtil.exportXls(response,QCResultDto.class,qcResultDtos,sheetName,fileName); + } + @Override public Result viewRLR(Integer sampleId) { Result result = new Result(); diff --git a/jeecg-module-spectrum-analysis/src/main/resources/template/export/SampleInfo-G.xls b/jeecg-module-spectrum-analysis/src/main/resources/template/export/SampleInfo-G.xls new file mode 100644 index 00000000..e1fc215a Binary files /dev/null and b/jeecg-module-spectrum-analysis/src/main/resources/template/export/SampleInfo-G.xls differ diff --git a/jeecg-module-spectrum-analysis/src/main/resources/template/export/export.xls b/jeecg-module-spectrum-analysis/src/main/resources/template/export/export.xls new file mode 100644 index 00000000..29113869 Binary files /dev/null and b/jeecg-module-spectrum-analysis/src/main/resources/template/export/export.xls differ