package com.sy.service.impl; import com.sy.bwAnalysis.AnalysisRoute; import com.sy.bwAnalysis.GatherInfoAnalysis; import com.sy.bwAnalysis.MessageAnalysis; import com.sy.bwAssist.Message; import com.sy.mapper.LandListDao; import com.sy.model.ChannelEnum; import com.sy.model.GatherInfo; import com.sy.service.RedisService; import com.sy.service.router.MessageRouter; import com.sy.service.router.RouterContext; import lombok.extern.slf4j.Slf4j; import org.apache.log4j.PropertyConfigurator; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; @RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class GatherInfoHandleImplTest { @Autowired RedisService redisService; @Qualifier("X21") @Autowired MessageRouter messageRouterX21; @Qualifier("X22") @Autowired MessageRouter messageRouterX22; @Resource private LandListDao landListDao; //车牌号 private String voNo = "豫LL0125"; //二维码 private static String BARCODE = "4ae-4031-ace5-517528b51d60"; //场站编号 private String areaID = "4604600000"; //进出场类型I/E private String ie = "I"; //进通道报文X21 private static String IMPORT_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<MSG>\n" + "\t<META>\n" + "\t\t<SNDR>KAO</SNDR>\n" + "\t\t<RCVR/>\n" + "\t\t<SEQN>20220624063157</SEQN>\n" + "\t\t<DDTM>20220624063157</DDTM>\n" + "\t\t<TYPE>KAKO</TYPE>\n" + "\t\t<STYP>CARM</STYP>\n" + "\t</META>\n" + "\t<GATHER_INFO AREA_ID=\"${areaID}\" CHNL_NO=\"${chnlNo}\" I_E_TYPE=\"${IETYPE}\" SEQ_NO=\"20220624063118000004\">\n" + "\t\t<IC>\n" + "\t\t\t<DR_IC_NO/>\n" + "\t\t\t<IC_DR_CUSTOMS_NO/>\n" + "\t\t\t<IC_CO_CUSTOMS_NO/>\n" + "\t\t\t<IC_BILL_NO/>\n" + "\t\t\t<IC_FORM_TYPE/>\n" + "\t\t\t<IC_GROSS_WT/>\n" + "\t\t\t<IC_VE_CUSTOMS_NO/>\n" + "\t\t\t<IC_VE_NAME/>\n" + "\t\t\t<IC_CONTA_ID/>\n" + "\t\t\t<IC_ESEAL_ID/>\n" + "\t\t\t<IC_REG_DATETIME/>\n" + "\t\t\t<IC_PER_DAY_DUE/>\n" + "\t\t\t<GPS_ID/>\n" + "\t\t</IC>\n" + "\t\t<WEIGHT>\n" + "\t\t\t<GROSS_WT>${cross_weight}</GROSS_WT>\n" + "\t\t</WEIGHT>\n" + "\t\t<CAR>\n" + "\t\t\t<VE_NAME>${car}</VE_NAME>\n" + "\t\t\t<CAR_EC_NO/>\n" + "\t\t\t<CAR_EC_NO2/>\n" + "\t\t\t<VE_CUSTOMS_NO/>\n" + "\t\t\t<VE_WT/>\n" + "\t\t</CAR>\n" + "\t\t<CONTA>\n" + "\t\t\t<CONTA_NUM/>\n" + "\t\t\t<CONTA_RECO>1</CONTA_RECO>\n" + "\t\t\t<CONTA_ID_F/>\n" + "\t\t\t<CONTA_ID_B/>\n" + "\t\t\t<CONTA_MODEL_F/>\n" + "\t\t\t<CONTA_MODEL_B/>\n" + "\t\t</CONTA>\n" + "\t\t<ORDER_NUM/>\n" + "\t\t<BAR_CODE>${barcode}</BAR_CODE>\n" + "\t\t<SEAL>\n" + "\t\t\t<ESEAL_ID/>\n" + "\t\t\t<SEAL_KEY/>\n" + "\t\t</SEAL>\n" + "\t</GATHER_INFO>\n" + "</MSG>"; /** * 入区不放行代码 */ private static String CHCEK_RESULT_CODE_I_ERR= "11000000200000000000"; /** * 入区放行代码 */ private static String CHCEK_RESULT_CODE_I_SUC= "00000000200000000000"; /** * 出区不放行代码 */ private static String CHCEK_RESULT_CODE_E_ERR= "11000000100000000000"; /** * 出区放行代码 */ private static String CHCEK_RESULT_CODE_E_SUC= "00000000100000000000"; private static String RESULT_CODE_DES_SUC = "海关放行"; private static String RESULT_CODE_DES_ERR = "海关不放行"; //X22指令报文 private static String X22_COMMANDINFO_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<MSG>\n" + "\t<META>\n" + "\t\t<SNDR>KAO</SNDR>\n" + "\t\t<RCVR/>\n" + "\t\t<SEQN>20220829110020</SEQN>\n" + "\t\t<DDTM>20220829110020</DDTM>\n" + "\t\t<TYPE>KAKO</TYPE>\n" + "\t\t<STYP>CARM</STYP>\n" + "\t</META>\n" + "\t<COMMAND_INFO AREA_ID=\"${AREA_ID}\" CHNL_NO=\"${CHNL_NO}\" I_E_TYPE=\"${I_E_TYPE}\" SEQ_NO=\"${SEQ_NO}\">\n" + "\t\t<CHECK_RESULT>${CHECK_RESULT}</CHECK_RESULT>\n" + "\t\t<OP_HINT>${OP_HINT}</OP_HINT>\n" + "\t\t<SEAL>\n" + "\t\t\t<ESEAL_ID/>\n" + "\t\t\t<SEAL_KEY/>\n" + "\t\t\t<OPEN_TIMES/>\n" + "\t\t\t<ESEAL_IC_NO/>\n" + "\t\t</SEAL>\n" + "\t\t<SZ_MSG/>\n" + "\t</COMMAND_INFO>\n" + "</MSG>"; /** * 进场测试 */ @Test public void exportDownload_I() { //车牌号 //过卡重量 String cross_weight= String.valueOf(20120); //场站编号 String areaID = ChannelEnum.NORTH_K1_IN_1.getArea(); //通道编号 String chnlNo = ChannelEnum.NORTH_K1_IN_1.getChannel(); //进出场类型I/E String ie = "I"; //二维码 String barcode = BARCODE; log.error("开始进场测试"); IMPORT_XML= IMPORT_XML.replace("${car}",voNo) .replace("${cross_weight}",cross_weight) .replace("${areaID}",areaID) .replace("${chnlNo}",chnlNo) .replace("${IETYPE}",ie) .replace("${barcode}",barcode); //进港提货测试 String string = IMPORT_XML.replace("Msg","MSG"); MessageAnalysis analysis = new MessageAnalysis(); Message message = analysis.readTicketsXml(string); mesageHandle(message); } /** * 出场测试 */ @Test public void exportDownload_E(){ PropertyConfigurator.configure("config/log4j.properties"); //过卡重量 String cross_weight= String.valueOf(20120+728); //场站编号 String areaID = ChannelEnum.NORTH_K1_EX_2.getArea(); //通道编号 String chnlNo = ChannelEnum.NORTH_K1_EX_2.getChannel(); //进出场类型I/E String ie = "E"; //二维码 String barcode = BARCODE; log.error("开始出口送货离场测试"); IMPORT_XML= IMPORT_XML.replace("${car}",voNo) .replace("${cross_weight}",cross_weight) .replace("${areaID}",areaID) .replace("${chnlNo}",chnlNo) .replace("${IETYPE}",ie) .replace("${barcode}",barcode); //进港提货测试 String string = IMPORT_XML.replace("Msg","MSG"); MessageAnalysis analysis = new MessageAnalysis(); Message message = analysis.readTicketsXml(string); mesageHandle(message); } /** * 接收到金二X22指令测试 */ @Test public void X22Test(){ 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); String string = X22_COMMANDINFO_XML.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(messageRouterX22); routerContext.executeStrategy(message); }else{ RouterContext routerContext = new RouterContext(messageRouterX21); routerContext.executeStrategy(message); } } } }