fix:1.添加解析成功后返回文件名称逻辑2.修改生成日志条件原始库存储完成后再生成

This commit is contained in:
panbaolin 2023-10-25 18:55:23 +08:00
parent 89c5377c09
commit 25459ab06e
12 changed files with 80 additions and 44 deletions

View File

@ -134,12 +134,13 @@ public class FileSourceHandleManager{
@Override @Override
public void run() { public void run() {
StringBuilder finalFileName = new StringBuilder();
try { try {
//获取文件内容 //获取文件内容
fileContent = FileUtils.readFileToString(spectrumFile,"UTF-8"); fileContent = FileUtils.readFileToString(spectrumFile,"UTF-8");
//解析文件 //解析文件
AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum(); AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum();
spectrumHandler.init(fileContent,spectrumServiceQuotes); spectrumHandler.init(fileContent,spectrumServiceQuotes,finalFileName);
final boolean matchResult = spectrumHandler.saveEmailToLocal(); final boolean matchResult = spectrumHandler.saveEmailToLocal();
if(matchResult){ if(matchResult){
//开始解析 //开始解析
@ -153,7 +154,7 @@ public class FileSourceHandleManager{
} else { } else {
warning = e.getMessage(); warning = e.getMessage();
} }
spectrumServiceQuotes.getLogFileUtil().errorLog(spectrumFile.getName(), warning, e); spectrumServiceQuotes.getLogFileUtil().errorLog(finalFileName.toString(), warning, e);
log.error("Parsing the {} file of the filesource directory failed.The reason is {}",spectrumFile.getName(),e.getMessage()); log.error("Parsing the {} file of the filesource directory failed.The reason is {}",spectrumFile.getName(),e.getMessage());
e.printStackTrace(); e.printStackTrace();

View File

@ -135,6 +135,7 @@ public class UndealHandleManager{
@Override @Override
public void run() { public void run() {
StringBuilder finalFileName = new StringBuilder();
long currentMillis = System.currentTimeMillis(); long currentMillis = System.currentTimeMillis();
long createMillis = currentMillis; long createMillis = currentMillis;
//判断redis是否包含文件名称 key //判断redis是否包含文件名称 key
@ -148,7 +149,7 @@ public class UndealHandleManager{
final String fileContent = FileUtils.readFileToString(spectrumFile,"UTF-8"); final String fileContent = FileUtils.readFileToString(spectrumFile,"UTF-8");
//解析文件 //解析文件
AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum(); AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum();
spectrumHandler.init(fileContent,spectrumServiceQuotes,true); spectrumHandler.init(fileContent,spectrumServiceQuotes,finalFileName,true);
final boolean matchResult = spectrumHandler.saveEmailToLocal(); final boolean matchResult = spectrumHandler.saveEmailToLocal();
if(matchResult){ if(matchResult){
//开始解析 //开始解析
@ -163,7 +164,7 @@ public class UndealHandleManager{
} else { } else {
warning = e.getMessage(); warning = e.getMessage();
} }
spectrumServiceQuotes.getLogFileUtil().errorLog(spectrumFile.getName(), warning, e); spectrumServiceQuotes.getLogFileUtil().errorLog(finalFileName.toString(), warning, e);
log.error("The {} file of the undeal directory fails to be parsed again.The reason is {}",spectrumFile.getName(),e.getMessage()); log.error("The {} file of the undeal directory fails to be parsed again.The reason is {}",spectrumFile.getName(),e.getMessage());
e.printStackTrace(); e.printStackTrace();
}finally { }finally {

View File

@ -57,6 +57,10 @@ public abstract class AbstractS_D_Q_G_SpectrumHandler extends AbstractSpectrumHa
* 能谱文件处理状态默认为未处理 * 能谱文件处理状态默认为未处理
*/ */
protected String status = SampleStatus.UNTREATED.getValue(); protected String status = SampleStatus.UNTREATED.getValue();
/**
* 原始库是否存储成功
*/
protected boolean isStoreSuccess = false;
/** /**
* 前置检查 * 前置检查
@ -90,7 +94,7 @@ public abstract class AbstractS_D_Q_G_SpectrumHandler extends AbstractSpectrumHa
@Override @Override
protected void parseingEmail() throws Exception { protected void parseingEmail() throws Exception {
final EnergySpectrumStruct sourceData = EnergySpectrumHandler.getSourceData(super.spectrumFile.getAbsolutePath()); 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()); throw new PHD_ReadException("THE PHDFile has some blocks can't be read:"+super.spectrumFile.getAbsolutePath());
} }
this.sourceData = sourceData; this.sourceData = sourceData;
@ -180,6 +184,7 @@ public abstract class AbstractS_D_Q_G_SpectrumHandler extends AbstractSpectrumHa
} }
//提交事务 //提交事务
this.spectrumServiceQuotes.getTransactionManager().commit(transactionStatus); this.spectrumServiceQuotes.getTransactionManager().commit(transactionStatus);
this.isStoreSuccess = true;
}catch (Exception e){ }catch (Exception e){
//回滚事务 //回滚事务
spectrumServiceQuotes.getTransactionManager().rollback(transactionStatus); spectrumServiceQuotes.getTransactionManager().rollback(transactionStatus);

View File

@ -48,7 +48,10 @@ public abstract class AbstractSpectrumHandler extends AbstractChain {
* 是否来自于undel目录 * 是否来自于undel目录
*/ */
protected boolean fromUndel = false; protected boolean fromUndel = false;
/**
* 返回调用方filesourceundelSpectrumParsingActuator的文件名称
*/
protected StringBuilder returnFileName;
/** /**
* 保存当前能谱文件有哪些#开头的标签 * 保存当前能谱文件有哪些#开头的标签
*/ */
@ -57,17 +60,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.mailContent = mailContent;
this.spectrumServiceQuotes = spectrumServiceQuotes; 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.mailContent = mailContent;
this.spectrumServiceQuotes = spectrumServiceQuotes; this.spectrumServiceQuotes = spectrumServiceQuotes;
this.returnFileName = returnFileName;
this.fromUndel = fromUndel; this.fromUndel = fromUndel;
} }
@ -75,12 +80,13 @@ public abstract class AbstractSpectrumHandler extends AbstractChain {
* 初始化参数 * 初始化参数
*/ */
protected void initNext(SpectrumServiceQuotes spectrumServiceQuotes,File spectrumFile,DataType currDataType, protected void initNext(SpectrumServiceQuotes spectrumServiceQuotes,File spectrumFile,DataType currDataType,
String mailContent,boolean fromUndel){ String mailContent,boolean fromUndel,StringBuilder returnFileName){
this.spectrumServiceQuotes = spectrumServiceQuotes; this.spectrumServiceQuotes = spectrumServiceQuotes;
this.spectrumFile = spectrumFile; this.spectrumFile = spectrumFile;
this.currDataType = currDataType; this.currDataType = currDataType;
this.mailContent = mailContent; this.mailContent = mailContent;
this.fromUndel = fromUndel; this.fromUndel = fromUndel;
this.returnFileName = returnFileName;
this.setChina(); this.setChina();
} }

View File

@ -47,7 +47,7 @@ public class AlertSpectrum extends AbstractSpectrumHandler{
protected void setChina() { protected void setChina() {
AbstractSpectrumHandler spectrumHandler = new HealthStatusSpectrum(); AbstractSpectrumHandler spectrumHandler = new HealthStatusSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,
super.currDataType,super.mailContent,super.fromUndel); super.currDataType,super.mailContent,super.fromUndel,super.returnFileName);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }
@ -73,6 +73,8 @@ public class AlertSpectrum extends AbstractSpectrumHandler{
//若本次文件来自于undel目录解析成功则删除 //若本次文件来自于undel目录解析成功则删除
deleteIfFromUndelFile(); deleteIfFromUndelFile();
}catch (Exception e){ }catch (Exception e){
//异常返回文件名称用于报错日志
super.returnFileName.append(super.spectrumFile.getName());
throw e; throw e;
}finally { }finally {
//把流程日志保存到日志目录 //把流程日志保存到日志目录

View File

@ -16,7 +16,7 @@ public class DetbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
protected void setChina() { protected void setChina() {
AbstractSpectrumHandler spectrumHandler = new QcphdSpectrum(); AbstractSpectrumHandler spectrumHandler = new QcphdSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,
super.currDataType,super.mailContent,super.fromUndel); super.currDataType,super.mailContent,super.fromUndel,super.returnFileName);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }
@ -48,6 +48,8 @@ public class DetbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
//若本次文件来自于undel目录解析成功则删除 //若本次文件来自于undel目录解析成功则删除
deleteIfFromUndelFile(); deleteIfFromUndelFile();
}catch (Exception e){ }catch (Exception e){
//异常返回文件名称用于报错日志
super.returnFileName.append(super.spectrumFile.getName());
//修改状态为解析失败 //修改状态为解析失败
super.status = SampleStatus.FAIL.getValue(); super.status = SampleStatus.FAIL.getValue();
super.updateStatus(); super.updateStatus();
@ -56,7 +58,7 @@ public class DetbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
super.handleParseingFailFile(); super.handleParseingFailFile();
throw e; throw e;
}finally { }finally {
if(Objects.nonNull(this.parsingProcessLog)){ if(Objects.nonNull(this.parsingProcessLog) && super.isStoreSuccess){
this.parsingProcessLog.handleLog(); this.parsingProcessLog.handleLog();
} }
} }

View File

@ -18,7 +18,7 @@ public class GasbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
protected void setChina() { protected void setChina() {
AbstractSpectrumHandler spectrumHandler = new MetSpectrum(); AbstractSpectrumHandler spectrumHandler = new MetSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,
super.currDataType,super.mailContent,super.fromUndel); super.currDataType,super.mailContent,super.fromUndel,super.returnFileName);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }
@ -50,6 +50,8 @@ public class GasbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
//若本次文件来自于undel目录解析成功则删除 //若本次文件来自于undel目录解析成功则删除
deleteIfFromUndelFile(); deleteIfFromUndelFile();
}catch (Exception e){ }catch (Exception e){
//异常返回文件名称用于报错日志
super.returnFileName.append(super.spectrumFile.getName());
//修改状态为解析失败 //修改状态为解析失败
super.status = SampleStatus.FAIL.getValue(); super.status = SampleStatus.FAIL.getValue();
super.updateStatus(); super.updateStatus();
@ -58,7 +60,7 @@ public class GasbkphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
super.handleParseingFailFile(); super.handleParseingFailFile();
throw e; throw e;
}finally { }finally {
if(Objects.nonNull(this.parsingProcessLog)){ if(Objects.nonNull(this.parsingProcessLog) && super.isStoreSuccess){
this.parsingProcessLog.handleLog(); this.parsingProcessLog.handleLog();
} }
} }

View File

@ -59,18 +59,24 @@ public class HealthStatusSpectrum extends AbstractSpectrumHandler{
@Override @Override
public void handler() throws Exception { public void handler() throws Exception {
if(DataType.SOH.getType().equals(super.currDataType.getType())){ if(DataType.SOH.getType().equals(super.currDataType.getType())){
//打印当前处理的能谱类型 try {
super.printCurrDataType(); //打印当前处理的能谱类型
//解析邮件内容 super.printCurrDataType();
this.parseingEmail(); //解析邮件内容
//保存PHD文件到savefile this.parseingEmail();
super.saveFileToSavefile(); //保存PHD文件到savefile
//结构体数据入库 super.saveFileToSavefile();
this.handlerOriginalData(); //结构体数据入库
//把流程日志保存到日志目录 this.handlerOriginalData();
this.saveLogToLogDir(); //把流程日志保存到日志目录
//若本次文件来自于undel目录解析成功则删除 this.saveLogToLogDir();
deleteIfFromUndelFile(); //若本次文件来自于undel目录解析成功则删除
deleteIfFromUndelFile();
}catch (Exception e){
//异常返回文件名称用于报错日志
super.returnFileName.append(super.spectrumFile.getName());
throw e;
}
} }
} }

View File

@ -43,7 +43,7 @@ public class MetSpectrum extends AbstractSpectrumHandler{
protected void setChina() { protected void setChina() {
AbstractSpectrumHandler spectrumHandler = new AlertSpectrum(); AbstractSpectrumHandler spectrumHandler = new AlertSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,
super.currDataType,super.mailContent,super.fromUndel); super.currDataType,super.mailContent,super.fromUndel,super.returnFileName);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }
@ -54,18 +54,24 @@ public class MetSpectrum extends AbstractSpectrumHandler{
@Override @Override
public void handler() throws Exception { public void handler() throws Exception {
if(DataType.MET.getType().equals(super.currDataType.getType())){ if(DataType.MET.getType().equals(super.currDataType.getType())){
//打印当前处理的能谱类型 try {
super.printCurrDataType(); //打印当前处理的能谱类型
//解析邮件内容 super.printCurrDataType();
this.parseingEmail(); //解析邮件内容
//保存PHD文件到savefile this.parseingEmail();
super.saveFileToSavefile(); //保存PHD文件到savefile
//结构体数据入库 super.saveFileToSavefile();
this.handlerOriginalData(); //结构体数据入库
//把流程日志保存到日志目录 this.handlerOriginalData();
this.saveLogToLogDir(); //把流程日志保存到日志目录
//若本次文件来自于undel目录解析成功则删除 this.saveLogToLogDir();
deleteIfFromUndelFile(); //若本次文件来自于undel目录解析成功则删除
deleteIfFromUndelFile();
}catch (Exception e){
//异常返回文件名称用于报错日志
super.returnFileName.append(super.spectrumFile.getName());
throw e;
}
}else{ }else{
super.next.handler(); super.next.handler();
} }

View File

@ -16,7 +16,7 @@ public class QcphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
protected void setChina() { protected void setChina() {
AbstractSpectrumHandler spectrumHandler = new GasbkphdSpectrum(); AbstractSpectrumHandler spectrumHandler = new GasbkphdSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,
super.currDataType,super.mailContent,super.fromUndel); super.currDataType,super.mailContent,super.fromUndel,super.returnFileName);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }
@ -49,6 +49,8 @@ public class QcphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
//若本次文件来自于undel目录解析成功则删除 //若本次文件来自于undel目录解析成功则删除
deleteIfFromUndelFile(); deleteIfFromUndelFile();
}catch (Exception e){ }catch (Exception e){
//异常返回文件名称用于报错日志
super.returnFileName.append(super.spectrumFile.getName());
//修改状态为解析失败 //修改状态为解析失败
super.status = SampleStatus.FAIL.getValue(); super.status = SampleStatus.FAIL.getValue();
super.updateStatus(); super.updateStatus();
@ -57,7 +59,7 @@ public class QcphdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
super.handleParseingFailFile(); super.handleParseingFailFile();
throw e; throw e;
}finally { }finally {
if(Objects.nonNull(this.parsingProcessLog)){ if(Objects.nonNull(this.parsingProcessLog) && super.isStoreSuccess){
this.parsingProcessLog.handleLog(); this.parsingProcessLog.handleLog();
} }
} }

View File

@ -17,7 +17,7 @@ public class SamplephdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
protected void setChina() { protected void setChina() {
AbstractSpectrumHandler spectrumHandler = new DetbkphdSpectrum(); AbstractSpectrumHandler spectrumHandler = new DetbkphdSpectrum();
spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile, spectrumHandler.initNext(super.spectrumServiceQuotes,super.spectrumFile,
super.currDataType,super.mailContent,super.fromUndel); super.currDataType,super.mailContent,super.fromUndel,super.returnFileName);
spectrumHandler.setPrevious(this); spectrumHandler.setPrevious(this);
super.setNext(spectrumHandler); super.setNext(spectrumHandler);
} }
@ -52,6 +52,8 @@ public class SamplephdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
//若本次文件来自于undel目录解析成功则删除 //若本次文件来自于undel目录解析成功则删除
deleteIfFromUndelFile(); deleteIfFromUndelFile();
}catch (Exception e){ }catch (Exception e){
//异常返回文件名称用于报错日志
super.returnFileName.append(super.spectrumFile.getName());
//修改状态为解析失败 //修改状态为解析失败
super.status = SampleStatus.FAIL.getValue(); super.status = SampleStatus.FAIL.getValue();
super.updateStatus(); super.updateStatus();
@ -60,7 +62,7 @@ public class SamplephdSpectrum extends AbstractS_D_Q_G_SpectrumHandler {
super.handleParseingFailFile(); super.handleParseingFailFile();
throw e; throw e;
}finally { }finally {
if(Objects.nonNull(this.parsingProcessLog)){ if(Objects.nonNull(this.parsingProcessLog) && super.isStoreSuccess){
this.parsingProcessLog.handleLog(); this.parsingProcessLog.handleLog();
} }
} }

View File

@ -80,6 +80,7 @@ public class SpectrumParsingActuator implements Runnable{
StringBuilder mailContent = null; StringBuilder mailContent = null;
String sendTime = null; String sendTime = null;
String receiveTime = null; String receiveTime = null;
StringBuilder finalFileName = new StringBuilder();
try { try {
subject = MimeUtility.decodeText(message.getSubject()); subject = MimeUtility.decodeText(message.getSubject());
sendTime = DateUtils.formatDate(message.getSentDate(),"yyyy-MM-dd HH:mm:ss"); sendTime = DateUtils.formatDate(message.getSentDate(),"yyyy-MM-dd HH:mm:ss");
@ -92,7 +93,7 @@ public class SpectrumParsingActuator implements Runnable{
//判断是否是IMS2.0协议文件 //判断是否是IMS2.0协议文件
if(checkMailContent(mailContent,subject)){ if(checkMailContent(mailContent,subject)){
AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum(); AbstractSpectrumHandler spectrumHandler = new SamplephdSpectrum();
spectrumHandler.init(mailContent.toString(),spectrumServiceQuotes); spectrumHandler.init(mailContent.toString(),spectrumServiceQuotes,finalFileName);
final boolean matchResult = spectrumHandler.saveEmailToLocal(); final boolean matchResult = spectrumHandler.saveEmailToLocal();
if(matchResult){ if(matchResult){
//保存邮件解析日志到PG数据库 //保存邮件解析日志到PG数据库