diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/LogFileUtil.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/LogFileUtil.java new file mode 100644 index 00000000..10186b0e --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/LogFileUtil.java @@ -0,0 +1,131 @@ +package org.jeecg.common.util; + +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import org.jeecg.common.properties.SpectrumPathProperties; +import org.jeecg.common.properties.TaskProperties; +import org.jeecg.modules.base.entity.postgre.SysEmail; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.Objects; + +@Component +public class LogFileUtil { + /** + * 相关Spring组件引用 + */ + @Autowired + private SpectrumPathProperties spectrumPathProperties; + + + public void errorLog(String spectrumFileName, String warning) { + String logFilePath = spectrumPathProperties.getRootPath() + File.separator + spectrumPathProperties.getLogPath() + File.separator + "Error"; + File logPath = new File(logFilePath); + if (!logPath.exists()) { + logPath.mkdir(); + } + String logFileName = logFilePath + File.separator + spectrumFileName.replace("PHD", "log"); + File logFile = new File(logFileName); + StringBuffer out = new StringBuffer(); + String nowDate = DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"); + out.append(nowDate+ StringPool.SPACE + "Data Anlyse Error:"); + out.append(warning); + out.append(System.lineSeparator()); + out.append(System.lineSeparator()); + out.append(System.lineSeparator()); + FileWriter writer = null; + try { + writer = new FileWriter(logFile, true); + writer.write(out.toString()); + } catch (IOException ex) { + throw new RuntimeException(ex); + } finally { + try { + if (Objects.nonNull(writer)) { + writer.close(); + } + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + } + + /** + * GSType 区分日志生成是getEmail还是sendEmail的日志 warning是日志内容 state是状态 成功、失败 logProccess是当前位于邮箱流程的位置 + * @param GSType + * @param email + * @param state + * @param logProcess + */ + public void emailLog(String GSType, SysEmail email, String state, String logProcess) { + String warning = ""; + switch (logProcess) { + case "CONNECT": + warning="Connect Server:"+email.getEmailServerAddress()+" Port:"+email.getPort()+" "+state+"....."; + break; + case "GETALLID": + warning="Get All FileName "+state+"....."; + break; + case "GETIDHEADER": + warning="Get FileNameHeader "+state+"....."; + break; + case "GETIDBODY": + warning="Get File "+"FileName"+" FileNameBody "+state+"....."; + break; + case "GETIDATTACH": + warning="Get File "+"subject"+" AttachFile "+"FileName"+" "+state+"....."; + break; + case "GETIDEML": + warning="Get File "+"subject"+" EmlFile "+"FileName"; + break; + case "DELETEID": + warning="Delete File "+"subject"+" "+state+"....."; + break; + case "EXPUNGE": + warning="Expunge File "+"subject"+" "+state+"....."; + break; + case "DONE": + warning="Done"; + break; + default: + break; + } + LocalDateTime now = LocalDateTime.now(); + String logFilePath = spectrumPathProperties.getRootPath() + File.separator + spectrumPathProperties.getLogPath() + File.separator + "Mail" + File.separator + GSType + File.separator + now.getYear() + File.separator + now.getMonthValue(); + File logPath = new File(logFilePath); + if (!logPath.exists()) { + logPath.mkdirs(); + } + String logFileName = logFilePath + File.separator + now.getYear() + StringPool.DASH + now.getMonthValue() + StringPool.DASH + now.getDayOfMonth() + StringPool.UNDERSCORE + "Mail.log"; + File logFile = new File(logFileName); + StringBuffer out = new StringBuffer(); + String nowDate = DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"); + out.append(nowDate+ StringPool.SPACE); + out.append(warning); + out.append(System.lineSeparator()); + out.append(System.lineSeparator()); + out.append(System.lineSeparator()); + FileWriter writer = null; + try { + writer = new FileWriter(logFile, true); + writer.write(out.toString()); + } catch (IOException ex) { + throw new RuntimeException(ex); + } finally { + try { + if (Objects.nonNull(writer)) { + writer.close(); + } + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + } + +} diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/common/util/LogFileUtil.java b/jeecg-module-auto-process/src/main/java/org/jeecg/common/util/LogFileUtil.java deleted file mode 100644 index 513e0b0a..00000000 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/common/util/LogFileUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.jeecg.common.util; - -import com.baomidou.mybatisplus.core.toolkit.StringPool; -import org.jeecg.common.properties.SpectrumPathProperties; -import org.jeecg.common.properties.TaskProperties; -import org.jeecg.modules.exception.StationNotFoundException; -import org.jeecg.modules.spectrum.SpectrumServiceQuotes; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Date; -import java.util.Objects; - -@Component -public class LogFileUtil { - - /** - * 任务属性 - */ - @Autowired - private TaskProperties taskProperties; - /** - * 相关Spring组件引用 - */ - @Autowired - private SpectrumPathProperties spectrumPathProperties; - - - public void errorLog(String spectrumFileName, String warning, Exception e) { - String logFilePath = spectrumPathProperties.getRootPath() + File.separator + spectrumPathProperties.getLogPath() + File.separator + "Error"; - File logPath = new File(logFilePath); - if (!logPath.exists()) { - logPath.mkdir(); - } - String logFileName = logFilePath + File.separator + spectrumFileName.replace("PHD", "log"); - File logFile = new File(logFileName); - StringBuffer out = new StringBuffer(); - String nowDate = DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"); - out.append(nowDate+ StringPool.SPACE + "Data Anlyse Error:"); - out.append(warning); - out.append(System.lineSeparator()); - out.append(System.lineSeparator()); - out.append(System.lineSeparator()); - FileWriter writer = null; - try { - writer = new FileWriter(logFile, true); - writer.write(out.toString()); - } catch (IOException ex) { - throw new RuntimeException(ex); - } finally { - try { - if (Objects.nonNull(writer)) { - writer.close(); - } - } catch (IOException ex) { - throw new RuntimeException(ex); - } - } - } - -} diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/FileSourceHandleManager.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/FileSourceHandleManager.java index 6d0ddaec..026f2d22 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/FileSourceHandleManager.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/FileSourceHandleManager.java @@ -134,12 +134,13 @@ public class FileSourceHandleManager{ @Override public void run() { + StringBuilder finalFileName = new StringBuilder(); try { //获取文件内容 fileContent = FileUtils.readFileToString(spectrumFile,"UTF-8"); //解析文件 AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum(); - spectrumHandler.init(fileContent,spectrumServiceQuotes); + spectrumHandler.init(fileContent,spectrumServiceQuotes,finalFileName); final boolean matchResult = spectrumHandler.saveEmailToLocal(); if(matchResult){ //开始解析 @@ -153,7 +154,7 @@ public class FileSourceHandleManager{ } else { warning = e.getMessage(); } - spectrumServiceQuotes.getLogFileUtil().errorLog(spectrumFile.getName(), warning, e); + spectrumServiceQuotes.getLogFileUtil().errorLog(finalFileName.toString(), warning); log.error("Parsing the {} file of the filesource directory failed.The reason is {}",spectrumFile.getName(),e.getMessage()); e.printStackTrace(); diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/UndealHandleManager.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/UndealHandleManager.java index ea867546..11586233 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/UndealHandleManager.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/UndealHandleManager.java @@ -135,6 +135,7 @@ public class UndealHandleManager{ @Override public void run() { + StringBuilder finalFileName = new StringBuilder(); long currentMillis = System.currentTimeMillis(); long createMillis = currentMillis; //判断redis是否包含文件名称 key @@ -148,7 +149,7 @@ public class UndealHandleManager{ final String fileContent = FileUtils.readFileToString(spectrumFile,"UTF-8"); //解析文件 AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum(); - spectrumHandler.init(fileContent,spectrumServiceQuotes,true); + spectrumHandler.init(fileContent,spectrumServiceQuotes,finalFileName,true); final boolean matchResult = spectrumHandler.saveEmailToLocal(); if(matchResult){ //开始解析 @@ -163,7 +164,7 @@ public class UndealHandleManager{ } else { warning = e.getMessage(); } - spectrumServiceQuotes.getLogFileUtil().errorLog(spectrumFile.getName(), warning, e); + spectrumServiceQuotes.getLogFileUtil().errorLog(finalFileName.toString(), warning); log.error("The {} file of the undeal directory fails to be parsed again.The reason is {}",spectrumFile.getName(),e.getMessage()); e.printStackTrace(); }finally { diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractS_D_Q_G_SpectrumHandler.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractS_D_Q_G_SpectrumHandler.java index f9daa734..452c4a12 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractS_D_Q_G_SpectrumHandler.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractS_D_Q_G_SpectrumHandler.java @@ -90,7 +90,7 @@ public abstract class AbstractS_D_Q_G_SpectrumHandler extends AbstractSpectrumHa @Override protected void parseingEmail() throws Exception { final EnergySpectrumStruct sourceData = EnergySpectrumHandler.getSourceData(super.spectrumFile.getAbsolutePath()); - if(Objects.isNull(sourceData)){ + if(Objects.isNull(sourceData) || StringUtils.isBlank(sourceData.data_type)){ throw new PHD_ReadException("THE PHDFile has some blocks can't be read:"+super.spectrumFile.getAbsolutePath()); } this.sourceData = sourceData; diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractSpectrumHandler.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractSpectrumHandler.java index c485d87a..56ddb2a4 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractSpectrumHandler.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/AbstractSpectrumHandler.java @@ -3,16 +3,14 @@ package org.jeecg.modules.spectrum; import cn.hutool.core.io.FileUtil; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.RandomUtils; -import org.jeecg.common.constant.StringConstant; import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.modules.base.enums.DataType; +import org.jeecg.modules.exception.FileRepeatException; import org.jeecg.modules.file.FileOperation; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; -import java.util.Objects; import java.util.UUID; /** @@ -48,7 +46,10 @@ public abstract class AbstractSpectrumHandler extends AbstractChain { * 是否来自于undel目录 */ protected boolean fromUndel = false; - + /** + * 返回调用方(filesource,undel,SpectrumParsingActuator)的文件名称 + */ + protected StringBuilder returnFileName; /** * 保存当前能谱文件有哪些#开头的标签 */ @@ -57,17 +58,19 @@ public abstract class AbstractSpectrumHandler extends AbstractChain { /** * 初始化参数 */ - public void init(String mailContent,SpectrumServiceQuotes spectrumServiceQuotes) throws Exception{ + public void init(String mailContent,SpectrumServiceQuotes spectrumServiceQuotes,StringBuilder returnFileName) throws Exception{ this.mailContent = mailContent; this.spectrumServiceQuotes = spectrumServiceQuotes; + this.returnFileName = returnFileName; } /** * 初始化参数 */ - public void init(String mailContent,SpectrumServiceQuotes spectrumServiceQuotes,boolean fromUndel) throws Exception{ + public void init(String mailContent,SpectrumServiceQuotes spectrumServiceQuotes,StringBuilder returnFileName,boolean fromUndel) throws Exception{ this.mailContent = mailContent; this.spectrumServiceQuotes = spectrumServiceQuotes; + this.returnFileName = returnFileName; this.fromUndel = fromUndel; } @@ -75,12 +78,13 @@ public abstract class AbstractSpectrumHandler extends AbstractChain { * 初始化参数 */ protected void initNext(SpectrumServiceQuotes spectrumServiceQuotes,File spectrumFile,DataType currDataType, - String mailContent,boolean fromUndel){ + String mailContent,boolean fromUndel,StringBuilder returnFileName){ this.spectrumServiceQuotes = spectrumServiceQuotes; this.spectrumFile = spectrumFile; this.currDataType = currDataType; this.mailContent = mailContent; this.fromUndel = fromUndel; + this.returnFileName = returnFileName; this.setChina(); } @@ -183,8 +187,8 @@ public abstract class AbstractSpectrumHandler extends AbstractChain { * 处理解析失败的文件,上传到undeal目录 * @throws FileNotFoundException */ - protected void handleParseingFailFile() throws FileNotFoundException { - if(!fromUndel){ + protected void handleParseingFailFile(Exception e) throws FileNotFoundException { + if(!fromUndel && !(e instanceof FileRepeatException)){ try { //解析失败会把文件移动到undeal目录 final String rootPath = spectrumServiceQuotes.getSpectrumPathProperties().getRootPath(); @@ -214,13 +218,4 @@ public abstract class AbstractSpectrumHandler extends AbstractChain { } } } - - /** - * 删除本地临时文件 - */ - protected void deleteLocalTemporaryFile(){ - if(Objects.nonNull(spectrumFile) && spectrumFile.isFile() && spectrumFile.exists()){ - spectrumFile.delete(); - } - } } 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 712e3acd..f05b8449 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 @@ -47,7 +47,7 @@ public class AlertSpectrum extends AbstractSpectrumHandler{ protected void setChina() { AbstractSpectrumHandler spectrumHandler = new HealthStatusSpectrum(); spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, - super.currDataType,super.mailContent,super.fromUndel); + super.currDataType,super.mailContent,super.fromUndel,super.returnFileName); spectrumHandler.setPrevious(this); super.setNext(spectrumHandler); } @@ -73,6 +73,8 @@ public class AlertSpectrum extends AbstractSpectrumHandler{ //若本次文件来自于undel目录,解析成功则删除 deleteIfFromUndelFile(); }catch (Exception e){ + //异常返回文件名称用于报错日志 + super.returnFileName.append(super.spectrumFile.getName()); throw e; }finally { //把流程日志保存到日志目录 diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/DetbkphdSpectrum.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/DetbkphdSpectrum.java index 56f86467..57b015dc 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/DetbkphdSpectrum.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/DetbkphdSpectrum.java @@ -2,6 +2,8 @@ package org.jeecg.modules.spectrum; import org.jeecg.modules.base.enums.DataType; import org.jeecg.modules.base.enums.SampleStatus; +import org.jeecg.modules.exception.FileRepeatException; + import java.util.Objects; /** @@ -16,7 +18,7 @@ public class DetbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler { protected void setChina() { AbstractSpectrumHandler spectrumHandler = new QcphdSpectrum(); spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, - super.currDataType,super.mailContent,super.fromUndel); + super.currDataType,super.mailContent,super.fromUndel,super.returnFileName); spectrumHandler.setPrevious(this); super.setNext(spectrumHandler); } @@ -48,12 +50,14 @@ public class DetbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler { //若本次文件来自于undel目录,解析成功则删除 deleteIfFromUndelFile(); }catch (Exception e){ + //异常返回文件名称用于报错日志 + super.returnFileName.append(super.spectrumFile.getName()); //修改状态为解析失败 super.status = SampleStatus.FAIL.getValue(); super.updateStatus(); //处理解析失败的文件,上传到undeal目录 - super.handleParseingFailFile(); + super.handleParseingFailFile(e); throw e; }finally { if(Objects.nonNull(this.parsingProcessLog)){ diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/GasbkphdSpectrum.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/GasbkphdSpectrum.java index 19e8506f..e4eedf80 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/GasbkphdSpectrum.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/GasbkphdSpectrum.java @@ -3,6 +3,8 @@ package org.jeecg.modules.spectrum; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.base.enums.DataType; import org.jeecg.modules.base.enums.SampleStatus; +import org.jeecg.modules.exception.FileRepeatException; + import java.util.Objects; /** @@ -18,7 +20,7 @@ public class GasbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler { protected void setChina() { AbstractSpectrumHandler spectrumHandler = new MetSpectrum(); spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, - super.currDataType,super.mailContent,super.fromUndel); + super.currDataType,super.mailContent,super.fromUndel,super.returnFileName); spectrumHandler.setPrevious(this); super.setNext(spectrumHandler); } @@ -50,12 +52,14 @@ public class GasbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler { //若本次文件来自于undel目录,解析成功则删除 deleteIfFromUndelFile(); }catch (Exception e){ + //异常返回文件名称用于报错日志 + super.returnFileName.append(super.spectrumFile.getName()); //修改状态为解析失败 super.status = SampleStatus.FAIL.getValue(); super.updateStatus(); //处理解析失败的文件,上传到undeal目录 - super.handleParseingFailFile(); + super.handleParseingFailFile(e); throw e; }finally { if(Objects.nonNull(this.parsingProcessLog)){ 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 fb554287..edfc7112 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 @@ -59,18 +59,24 @@ public class HealthStatusSpectrum extends AbstractSpectrumHandler{ @Override public void handler() throws Exception { if(DataType.SOH.getType().equals(super.currDataType.getType())){ - //打印当前处理的能谱类型 - super.printCurrDataType(); - //解析邮件内容 - this.parseingEmail(); - //保存PHD文件到savefile - super.saveFileToSavefile(); - //结构体数据入库 - this.handlerOriginalData(); - //把流程日志保存到日志目录 - this.saveLogToLogDir(); - //若本次文件来自于undel目录,解析成功则删除 - deleteIfFromUndelFile(); + try { + //打印当前处理的能谱类型 + super.printCurrDataType(); + //解析邮件内容 + this.parseingEmail(); + //保存PHD文件到savefile + super.saveFileToSavefile(); + //结构体数据入库 + this.handlerOriginalData(); + //把流程日志保存到日志目录 + this.saveLogToLogDir(); + //若本次文件来自于undel目录,解析成功则删除 + deleteIfFromUndelFile(); + }catch (Exception e){ + //异常返回文件名称用于报错日志 + super.returnFileName.append(super.spectrumFile.getName()); + throw e; + } } } 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 b243a61a..def4166c 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 @@ -43,7 +43,7 @@ public class MetSpectrum extends AbstractSpectrumHandler{ protected void setChina() { AbstractSpectrumHandler spectrumHandler = new AlertSpectrum(); spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, - super.currDataType,super.mailContent,super.fromUndel); + super.currDataType,super.mailContent,super.fromUndel,super.returnFileName); spectrumHandler.setPrevious(this); super.setNext(spectrumHandler); } @@ -54,18 +54,24 @@ public class MetSpectrum extends AbstractSpectrumHandler{ @Override public void handler() throws Exception { if(DataType.MET.getType().equals(super.currDataType.getType())){ - //打印当前处理的能谱类型 - super.printCurrDataType(); - //解析邮件内容 - this.parseingEmail(); - //保存PHD文件到savefile - super.saveFileToSavefile(); - //结构体数据入库 - this.handlerOriginalData(); - //把流程日志保存到日志目录 - this.saveLogToLogDir(); - //若本次文件来自于undel目录,解析成功则删除 - deleteIfFromUndelFile(); + try { + //打印当前处理的能谱类型 + super.printCurrDataType(); + //解析邮件内容 + this.parseingEmail(); + //保存PHD文件到savefile + super.saveFileToSavefile(); + //结构体数据入库 + this.handlerOriginalData(); + //把流程日志保存到日志目录 + this.saveLogToLogDir(); + //若本次文件来自于undel目录,解析成功则删除 + deleteIfFromUndelFile(); + }catch (Exception e){ + //异常返回文件名称用于报错日志 + super.returnFileName.append(super.spectrumFile.getName()); + throw e; + } }else{ super.next.handler(); } diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/ParsingProcessLog.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/ParsingProcessLog.java index 15d06b7c..c698016a 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/ParsingProcessLog.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/ParsingProcessLog.java @@ -741,6 +741,23 @@ public class ParsingProcessLog extends AbstractAutoLogOrReport{ } } + /** + * 前置检查 + */ + private boolean preCheck(){ + boolean flag = true; + if(Objects.isNull(spectrumHandler)){ + flag = false; + } + if(Objects.isNull(spectrumHandler.startIntoDatabaseTime) || Objects.isNull(spectrumHandler.endIntoDatabaseTime)){ + flag = false; + } + if(Objects.isNull(spectrumHandler.sampleData)){ + flag = false; + } + return flag; + } + /** * 处理存储流程日志 * @return @@ -763,6 +780,10 @@ public class ParsingProcessLog extends AbstractAutoLogOrReport{ * 处理所有日志 */ protected void handleLog() throws IOException { + //生成日志前置检查 + if(this.preCheck() == false){ + return; + } this.handleStorageProcessLog(); if(DataType.SAMPLEPHD.getType().equals(this.spectrumHandler.currDataType.getType()) && this.spectrumHandler.sourceData.system_type.equals(SystemType.BETA.getType()) && diff --git a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/QcphdSpectrum.java b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/QcphdSpectrum.java index ef489640..fa0b9c14 100644 --- a/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/QcphdSpectrum.java +++ b/jeecg-module-auto-process/src/main/java/org/jeecg/modules/spectrum/QcphdSpectrum.java @@ -2,6 +2,8 @@ package org.jeecg.modules.spectrum; import org.jeecg.modules.base.enums.DataType; import org.jeecg.modules.base.enums.SampleStatus; +import org.jeecg.modules.exception.FileRepeatException; + import java.util.Objects; /** @@ -16,7 +18,7 @@ public class QcphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler { protected void setChina() { AbstractSpectrumHandler spectrumHandler = new GasbkphdSpectrum(); spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, - super.currDataType,super.mailContent,super.fromUndel); + super.currDataType,super.mailContent,super.fromUndel,super.returnFileName); spectrumHandler.setPrevious(this); super.setNext(spectrumHandler); } @@ -49,12 +51,14 @@ public class QcphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler { //若本次文件来自于undel目录,解析成功则删除 deleteIfFromUndelFile(); }catch (Exception e){ + //异常返回文件名称用于报错日志 + super.returnFileName.append(super.spectrumFile.getName()); //修改状态为解析失败 super.status = SampleStatus.FAIL.getValue(); super.updateStatus(); //处理解析失败的文件,上传到undeal目录 - super.handleParseingFailFile(); + super.handleParseingFailFile(e); throw e; }finally { if(Objects.nonNull(this.parsingProcessLog)){ 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 index 5ac1056b..7a22ba12 100644 --- 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 @@ -200,8 +200,8 @@ public class Sample_B_Analysis implements BlockConstant { final SpectrumPathProperties properties = this.spectrumServiceQuotes.getSpectrumPathProperties(); //构造报告文件路径 StringBuilder relativePath = new StringBuilder(); - relativePath.append(properties.getSaveFilePath()); - relativePath.append(File.separator); +// relativePath.append(properties.getSaveFilePath()); +// relativePath.append(File.separator); relativePath.append(properties.getArrPath()); relativePath.append(File.separator); relativePath.append(this.spectrumFileRelativePath); @@ -792,6 +792,8 @@ public class Sample_B_Analysis implements BlockConstant { StringBuilder finalReportPath = new StringBuilder(); finalReportPath.append(spectrumServiceQuotes.getSpectrumPathProperties().getRootPath()); finalReportPath.append(File.separator); + finalReportPath.append(spectrumServiceQuotes.getSpectrumPathProperties().getSaveFilePath()); + finalReportPath.append(File.separator); finalReportPath.append(arrFilePath); finalReportPath.append(File.separator); finalReportPath.append(arrFileName); 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 d4e4f086..9940e541 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 @@ -3,6 +3,8 @@ package org.jeecg.modules.spectrum; import org.jeecg.modules.base.enums.DataType; import org.jeecg.modules.base.enums.SampleStatus; import org.jeecg.modules.base.enums.SystemType; +import org.jeecg.modules.exception.FileRepeatException; + import java.util.Objects; /** @@ -17,7 +19,7 @@ public class SamplephdSpectrum extends AbstractS_D_Q_G_SpectrumHandler { protected void setChina() { AbstractSpectrumHandler spectrumHandler = new DetbkphdSpectrum(); spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, - super.currDataType,super.mailContent,super.fromUndel); + super.currDataType,super.mailContent,super.fromUndel,super.returnFileName); spectrumHandler.setPrevious(this); super.setNext(spectrumHandler); } @@ -52,12 +54,14 @@ public class SamplephdSpectrum extends AbstractS_D_Q_G_SpectrumHandler { //若本次文件来自于undel目录,解析成功则删除 deleteIfFromUndelFile(); }catch (Exception e){ + //异常返回文件名称用于报错日志 + super.returnFileName.append(super.spectrumFile.getName()); //修改状态为解析失败 super.status = SampleStatus.FAIL.getValue(); super.updateStatus(); //处理解析失败的文件,上传到undeal目录 - super.handleParseingFailFile(); + super.handleParseingFailFile(e); throw e; }finally { if(Objects.nonNull(this.parsingProcessLog)){ 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 2b3f1a5d..67cddaf1 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 @@ -1,5 +1,6 @@ package org.jeecg.modules.spectrum; +import com.baomidou.mybatisplus.core.toolkit.StringPool; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.constant.StringConstant; @@ -7,6 +8,7 @@ import org.jeecg.common.email.EmailServiceManager; import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.email.EmailProperties; +import org.jeecg.modules.exception.StationNotFoundException; import javax.mail.Message; import javax.mail.MessagingException; @@ -80,19 +82,21 @@ public class SpectrumParsingActuator implements Runnable{ StringBuilder mailContent = null; String sendTime = null; String receiveTime = null; + StringBuilder finalFileName = new StringBuilder(); try { subject = MimeUtility.decodeText(message.getSubject()); sendTime = DateUtils.formatDate(message.getSentDate(),"yyyy-MM-dd HH:mm:ss"); receiveTime = DateUtils.formatDate(message.getReceivedDate(),"yyyy-MM-dd HH:mm:ss"); - System.out.println(subject); mailContent = new StringBuilder(); emailServiceManager.getMailContent(message,mailContent); + //读取文件内容成功后写入日志 + spectrumServiceQuotes.getLogFileUtil().emailLog("Get", emailProperties, "Successful", "GETALLID"); //所有邮件都需以.eml格式存储到eml文件夹中 downloadEmailToEmlDir(); //判断是否是IMS2.0协议文件 if(checkMailContent(mailContent,subject)){ AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum(); - spectrumHandler.init(mailContent.toString(),spectrumServiceQuotes); + spectrumHandler.init(mailContent.toString(),spectrumServiceQuotes,finalFileName); final boolean matchResult = spectrumHandler.saveEmailToLocal(); if(matchResult){ //保存邮件解析日志到PG数据库 @@ -104,6 +108,17 @@ public class SpectrumParsingActuator implements Runnable{ } } } catch (Exception e) { + if (e.getClass().equals(MessagingException.class)) { + spectrumServiceQuotes.getLogFileUtil().emailLog("Get", emailProperties, "Error", "GETALLID"); + } + //生成日志 + String warning = ""; + if (e.getClass().equals(StationNotFoundException.class)) { + warning = e.getMessage()+ StringPool.SPACE+"timeout:0,waittime:"+spectrumServiceQuotes.getTaskProperties().getUndealFileTimeOut(); + } else { + warning = e.getMessage(); + } + spectrumServiceQuotes.getLogFileUtil().errorLog(finalFileName.toString(), warning); log.error("This email failed to parse. The email subject is: {}, sent on: {}, received on: {}, and the reason for the failure is: {}",subject,sendTime,receiveTime,e.getMessage()); e.printStackTrace(); }finally { diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java index ef6357c1..05eb4419 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/common/util/GammaFileUtil.java @@ -1540,6 +1540,16 @@ public class GammaFileUtil extends AbstractLogOrReport { ParameterInfo value = JSON.parseObject(JSON.toJSONString(entry.getValue()), ParameterInfo.class); phd.setUsedTotEPara(value); } + if (entry.getKey().equalsIgnoreCase("mapNucActMda")) { + HashMap jsonMap = JSON.parseObject(JSON.toJSONString(entry.getValue()), HashMap.class); + Map value = new HashMap<>(); + for (Map.Entry objectEntry:jsonMap.entrySet()) { + String key = objectEntry.getKey(); + NuclideActMda entryValue = JSON.parseObject(JSON.toJSONString(objectEntry.getValue()), NuclideActMda.class); + value.put(key, entryValue); + } + phd.setMapNucActMda(value); + } } BeanUtils.copyProperties(phd.getSetting(), phd.getUsedSetting()); @@ -2305,9 +2315,9 @@ public class GammaFileUtil extends AbstractLogOrReport { map.put("AllData", datalist); } - public String GetReportContent(PHDFile phd, boolean bLog) { + public String GetReportContent(PHDFile phd, String userName, boolean bLog) { GStoreMiddleProcessData middleData = new GStoreMiddleProcessData(); - GetInterMiddlData(phd, "", middleData); + GetInterMiddlData(phd, userName, middleData); if(bLog) { return GetLogContent(middleData); } else { diff --git a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsNuclLinesLibServiceImpl.java b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsNuclLinesLibServiceImpl.java index 71f3a5aa..c8d33bbf 100644 --- a/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsNuclLinesLibServiceImpl.java +++ b/jeecg-module-beta-gamma-analyser/src/main/java/org/jeecg/modules/service/impl/GardsNuclLinesLibServiceImpl.java @@ -83,14 +83,15 @@ public class GardsNuclLinesLibServiceImpl extends ServiceImpl 0){ - nuclideLines.setKey_flag(i); - nuclideLines.setMaxYeildIdx(i); + int index = nuclideNames.indexOf(lib.getName()); + nuclideLines.setKey_flag(index); + nuclideLines.setMaxYeildIdx(index); } String name = lib.getName(); Double day = halfLife.get(name); if (ObjectUtil.isNotNull(day)) - lib.setHalflife(day * 86400); + nuclideLines.setHalflife(day * 86400); result.put(lib.getName(), nuclideLines); } 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 4d93ad02..23ef5c22 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 @@ -463,6 +463,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi map.put("dead_time", String.format("%.2f", deadTime*100)); map.put("checkBox_updateCal", phd.getSetting().isBUpdateCal()); map.put("bAnalyed", phd.isBAnalyed()); + map.put("peak", phd.getVPeak()); // 更新页面折线图信息 gammaFileUtil.UpdateChart(phd, map, colorMap); //将当前加载的phd信息加入到缓存中 文件名称作为缓存信息的key @@ -800,6 +801,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi map.put("dead_time", String.format("%.2f", deadTime*100)); map.put("checkBox_updateCal", phd.getSetting().isBUpdateCal()); map.put("bAnalyed", phd.isBAnalyed()); + map.put("peak", phd.getVPeak()); gammaFileUtil.UpdateChart(phd, map, colorMap); phdCache.put(fileName+"-"+userName, phd); localCache.setPHDCache(phdCache); @@ -996,13 +998,14 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi Map nuclideLinesMap = GetNuclideLines(nuclides); gammaFileUtil.AnalyseSpectrum(phd, nuclideLinesMap); //重新分析各峰值对应的核素信息 - gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap); +// gammaFileUtil.NuclidesIdent(phd, nuclideLinesMap); Map map = new HashMap<>(); gammaFileUtil.UpdateChart(phd, map, colorMap); // 更新 ‘QC Flags’ 状态 List qcstate = gammaFileUtil.Qcstate(phd); map.put("QCFlag", qcstate); map.put("bAnalyed", phd.isBAnalyed()); + map.put("peak", phd.getVPeak()); result.setSuccess(true); result.setResult(map); } @@ -3502,6 +3505,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi public void viewARR(Integer sampleId, HttpServletResponse response) { //获取自动处理生成的报告地址 String reportPath = spectrumAnalysisMapper.viewARR(sampleId); + if (StringUtils.isBlank(reportPath)){ + throw new RuntimeException("自动处理程序生成报告不存在!"); + } String pathName = StringPool.SLASH + spectrumPathProperties.getSaveFilePath() + StringPool.SLASH + reportPath.substring(0, reportPath.lastIndexOf(StringPool.SLASH)); String fileName = reportPath.substring(reportPath.lastIndexOf(StringPool.SLASH)+1)+".txt"; //连接ftp @@ -3612,7 +3618,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi result.error500("Please select the parse file first!"); return result; } - String reportContent = gammaFileUtil.GetReportContent(phd, false); + String reportContent = gammaFileUtil.GetReportContent(phd, userName, false); result.setSuccess(true); result.setResult(reportContent); return result; @@ -3626,7 +3632,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi if (Objects.isNull(phd)) { return; } - String reportContent = gammaFileUtil.GetReportContent(phd, false); + String reportContent = gammaFileUtil.GetReportContent(phd, userName, false); OutputStream fos = null; try { //设置响应类型 @@ -4090,6 +4096,9 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi @Override public void viewAutomaticAnalysisLog(Integer sampleId, HttpServletResponse response) { String logPath = spectrumAnalysisMapper.findAutomaticLogPath(sampleId); + if (StringUtils.isBlank(logPath)){ + throw new RuntimeException("自动处理程序生成日志不存在!"); + } String pathName = StringPool.SLASH + spectrumPathProperties.getLogPath() + StringPool.SLASH + logPath.substring(0, logPath.lastIndexOf(StringPool.SLASH)); String fileName = logPath.substring(logPath.lastIndexOf(StringPool.SLASH) + 1); //连接ftp @@ -4146,7 +4155,7 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi result.error500("Please select the parse file first!"); return result; } - String reportContent = gammaFileUtil.GetReportContent(phd, true); + String reportContent = gammaFileUtil.GetReportContent(phd, userName, true); result.setSuccess(true); result.setResult(reportContent); return result;