作者 朱兆平

技术回执处理

... ... @@ -137,7 +137,10 @@ custom:
receptBakDir: /Users/mrz/Downloads/rdp_temp/logs/success
#解析错误报文的备份目录
errBakDir: /Users/mrz/Downloads/rdp_temp/logs/error
#回执转发目录
transmitDir: /Users/mrz/Downloads/rdp_temp/logs/transmit
#匹配技术回执正则
delTechnologyReceptMatch: CN_MT(.*)_1P0_460470678920X_(.*).xml
devops:
dir:
singlewindow-tcs-recept: D:\TCSSingleWindow\recive
... ...
... ... @@ -21,6 +21,7 @@ import org.xml.sax.SAXParseException;
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.concurrent.CountDownLatch;
... ... @@ -43,6 +44,10 @@ public class CustomXmlHandleThread implements Runnable{
@Value("${custom.errBakDir}")
private String errBakDir;
//匹配技术回执正则
@Value("${custom.delTechnologyReceptMatch}")
private String delTechnologyReceptMatch;
private File xmlfile;
private static CustomXmlHandleThread customXmlHandle;
... ... @@ -87,30 +92,42 @@ public class CustomXmlHandleThread implements Runnable{
customXmlHandle.errBakDir = this.errBakDir;
customXmlHandle.delTechnologyReceptMatch = this.delTechnologyReceptMatch;
// 初使化时将已静态化的testService实例化
}
@Override
public void run() {
log.info("线程:{}开始",xmlfile.getName());
try{
int i =handelXmlDocument();
String today = DateUtil.getTodayBy_yyyyMMdd();
String backdireByDay = customXmlHandle.bakupDir + "/" + today;
//操作成功,则转移剪切解析文件到备份目录,否则转移到error目录备份
if(i>0){
File bakupDirectory = new File(backdireByDay);
//解析成功备份一份到备份目录
FileUtils.moveFileToDirectory(xmlfile,bakupDirectory,true);
}else {
String filename = xmlfile.getName();
log.info("线程:{}开始",filename);
if(filename.matches(customXmlHandle.delTechnologyReceptMatch)){
log.warn("{}报文为技术回执,剪切到错误备份目录,不解析",filename);
errBak(xmlfile);
log.info("{}报文为技术回执,剪切备份成功..开始解析下一文件,当前线程即将结束",filename);
}
else
{
try{
int i =handelXmlDocument();
String today = DateUtil.getTodayBy_yyyyMMdd();
String backdireByDay = customXmlHandle.bakupDir + "/" + today;
//操作成功,则转移剪切解析文件到备份目录,否则转移到error目录备份
if(i>0){
File bakupDirectory = new File(backdireByDay);
//解析成功备份一份到备份目录
FileUtils.moveFileToDirectory(xmlfile,bakupDirectory,true);
}else {
errBak(xmlfile);
}
}catch (FileExistsException e){
log.error("错误的解析文件剪切失败,目标目录已存在同名文件");
}catch (Exception e){
log.error("错误的解析文件剪切失败,目标目录已存在同名文件",e);
errBak(xmlfile);
e.printStackTrace();
}
}catch (FileExistsException e){
log.error("错误的解析文件剪切失败,目标目录已存在同名文件");
}catch (Exception e){
log.error("错误的解析文件剪切失败,目标目录已存在同名文件",e);
errBak(xmlfile);
e.printStackTrace();
}
log.info("线程:{}结束",xmlfile.getName());
... ... @@ -330,4 +347,5 @@ public class CustomXmlHandleThread implements Runnable{
e.printStackTrace();
}
}
}
... ...
... ... @@ -31,6 +31,8 @@ public class TaskAnalysis {
@Value("${custom.transmitDir}")
private String transmitDir;
/**
* 线程数量
*/
... ... @@ -45,7 +47,7 @@ public class TaskAnalysis {
//设置转发文件夹
String today = DateUtil.getTodayBy_yyyyMMdd();
String transToCfps = transmitDir + "/" + today;
String transToCfps = transmitDir;
//回执目录
String readDir = receptDir;
... ...