GatherInfoHandleImplTest.java 8.3 KB
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);
            }
        }
    }


}