作者 朱兆平

金二上生产本地报文读取处理器

... ... @@ -8,6 +8,7 @@ public enum ChannelEnum {
WEST_EX_1 ("4604000000","4604333322"),
NORTH_K1_IN_1 ("4604600000","4604601010"),
NORTH_K1_EX_1 ("4604600000","4604600010"),
NORTH_K1_IN_2 ("4604600000","4604601011"),
NORTH_K1_EX_2 ("4604600000","4604600011"),
NORTH_K3_IN_1 ("4604600000","4604601030"),
NORTH_K3_EX_1 ("4604600000","4604600030"),
... ...
package com.sy.task;
import com.sy.bwAnalysis.MessageAnalysis;
import com.sy.bwAssist.Message;
import com.sy.service.router.MessageRouter;
import com.sy.service.router.RouterContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* 本地报文处理器
*/
@Component
public class LocalFileTaskHandle implements Runnable{
private static LocalFileTaskHandle localFileTaskHandle;
private String message;
@Qualifier("X21")
@Autowired
private MessageRouter messageRouterX21;
@Qualifier("X22")
@Autowired
private MessageRouter messageRouterX22;
@PostConstruct
public void init() {
localFileTaskHandle = this;
}
@Override
public void run() {
String string = message.replace("Msg","MSG");
MessageAnalysis analysis = new MessageAnalysis();
Message message = analysis.readTicketsXml(string);
mesageHandle(message);
}
public void mesageHandle(Message message){
if ("CARM".equals(message.getMeta().getSmType())) {
//策略判断
if(message.getComInfo() !=null){
RouterContext routerContext = new RouterContext(localFileTaskHandle.messageRouterX22);
routerContext.executeStrategy(message);
}else{
RouterContext routerContext = new RouterContext(localFileTaskHandle.messageRouterX21);
routerContext.executeStrategy(message);
}
}
}
public void setMessage(String message) {
this.message = message;
}
}
... ...
... ... @@ -42,7 +42,7 @@ public class TaskAnalysis {
String readDir = receptDir;
//初始化线程池
ThreadPoolExecutor threadPool = XMLThreadPoolFactory.instance("file-read");
ThreadPoolExecutor threadPool = XMLThreadPoolFactory.instance("fileR");
try {
File fileDirectory = new File(readDir);
... ... @@ -73,10 +73,14 @@ public class TaskAnalysis {
private void threadJbob(File file,CountDownLatch latch,String transToCfps,ThreadPoolExecutor threadPool){
try{
AnalysisRoute analysisRoute=new AnalysisRoute();
// AnalysisRoute analysisRoute=new AnalysisRoute();
String message = com.sy.utils.FileTool.readfile(file,"UTF-8");
analysisRoute.setMessage(message);
threadPool.execute(analysisRoute);
LocalFileTaskHandle localFileTaskHandle = new LocalFileTaskHandle();
localFileTaskHandle.setMessage(message);
threadPool.execute(localFileTaskHandle);
// analysisRoute.setMessage(message);
// threadPool.execute(analysisRoute);
FileUtils.moveFileToDirectory(file,new File("bw/handled/"),true);
}catch (Exception e){
log.error("线程解析出错{}",e.toString());
... ...
... ... @@ -43,9 +43,9 @@ public class GatherInfoHandleImplTest {
private LandListDao landListDao;
//车牌号
private String voNo = "豫K823A9";
private String voNo = "豫NT0267";
//二维码
private static String BARCODE = "932-4b18-8931-bd28b4e9abc7";
private static String BARCODE = "2e1-43ce-bf14-bc0d4fb8b877";
//场站编号
private String areaID = "4604600000";
... ... @@ -164,9 +164,9 @@ public class GatherInfoHandleImplTest {
//过卡重量
String cross_weight= String.valueOf(5724);
//场站编号
String areaID = ChannelEnum.NORTH_K1_IN_1.getArea();
String areaID = ChannelEnum.NORTH_K1_IN_2.getArea();
//通道编号
String chnlNo = ChannelEnum.NORTH_K1_IN_1.getChannel();
String chnlNo = ChannelEnum.NORTH_K1_IN_2.getChannel();
//进出场类型I/E
String ie = "I";
//二维码
... ... @@ -197,7 +197,7 @@ public class GatherInfoHandleImplTest {
PropertyConfigurator.configure("config/log4j.properties");
//过卡重量
String cross_weight= String.valueOf(4622);
String cross_weight= String.valueOf(11000);
//场站编号
String areaID = ChannelEnum.NORTH_K1_EX_2.getArea();
//通道编号
... ... @@ -229,9 +229,9 @@ public class GatherInfoHandleImplTest {
*/
@Test
public void X22Test(){
X22_COMMANDINFO_XML= X22_COMMANDINFO_XML.replace("${AREA_ID}",ChannelEnum.NORTH_K1_IN_1.getArea())
.replace("${CHNL_NO}",ChannelEnum.NORTH_K1_IN_1.getChannel())
.replace("${I_E_TYPE}","E")
X22_COMMANDINFO_XML= X22_COMMANDINFO_XML.replace("${AREA_ID}",ChannelEnum.NORTH_K1_IN_2.getArea())
.replace("${CHNL_NO}",ChannelEnum.NORTH_K1_IN_2.getChannel())
.replace("${I_E_TYPE}","I")
.replace("${SEQ_NO}","20220624063118000004")
.replace("${CHECK_RESULT}",CHCEK_RESULT_CODE_E_SUC)
.replace("${OP_HINT}",RESULT_CODE_DES_SUC);
... ...