作者 朱兆平

增加金二验放规则及金二放行指令

@@ -18,7 +18,7 @@ public class IMF_Tesk { @@ -18,7 +18,7 @@ public class IMF_Tesk {
18 public static IMFClient client = null; 18 public static IMFClient client = null;
19 19
20 //todo:测试关,生产开 20 //todo:测试关,生产开
21 -// @Scheduled(fixedRate = 5000) 21 + @Scheduled(fixedRate = 5000)
22 private static void start() { 22 private static void start() {
23 //尝试catch SDK异常 23 //尝试catch SDK异常
24 try{ 24 try{
@@ -68,6 +68,7 @@ public class G2FeedBackHandel extends Thread { @@ -68,6 +68,7 @@ public class G2FeedBackHandel extends Thread {
68 messageRouterG2.faild(gatherInfo,x82Feedback.getOpHint()); 68 messageRouterG2.faild(gatherInfo,x82Feedback.getOpHint());
69 } 69 }
70 }else { 70 }else {
  71 + //没从缓存中取到过卡采集报文,就直接转,然后记录,同时给LED指示内容
71 GatherInfo gatherInfo1 = x82Service.X82FeedBackToX21GatherInfo(x82Feedback); 72 GatherInfo gatherInfo1 = x82Service.X82FeedBackToX21GatherInfo(x82Feedback);
72 messageRouterG2.faild(gatherInfo1,x82Feedback.getOpHint()); 73 messageRouterG2.faild(gatherInfo1,x82Feedback.getOpHint());
73 } 74 }
@@ -56,7 +56,12 @@ public class CommandLogImpl implements CommandLogService { @@ -56,7 +56,12 @@ public class CommandLogImpl implements CommandLogService {
56 command.setVeName(info.getVename()); 56 command.setVeName(info.getVename());
57 command.setVeWeight(selfWt); 57 command.setVeWeight(selfWt);
58 command.setIeType(info.getIetype()); 58 command.setIeType(info.getIetype());
  59 + if(info.getGrosswt()!=null){
59 command.setExitGrossWeight(info.getGrosswt().doubleValue()); 60 command.setExitGrossWeight(info.getGrosswt().doubleValue());
  61 + }else {
  62 + command.setExitGrossWeight(0.0);
  63 + }
  64 +
60 command.setInGrossWeight(inWt); 65 command.setInGrossWeight(inWt);
61 command.setGoodsWeight(goodsWt); 66 command.setGoodsWeight(goodsWt);
62 command.setActualGoodsWeight(diffVal); 67 command.setActualGoodsWeight(diffVal);
@@ -146,8 +146,14 @@ public class EnginCheckServiceImpl implements EnginCheckService { @@ -146,8 +146,14 @@ public class EnginCheckServiceImpl implements EnginCheckService {
146 } 146 }
147 147
148 //获取申请单表体 148 //获取申请单表体
  149 + String landBusinessJson = "";
  150 + if (StringUtils.isNotEmpty(gatherInfo.getVename())) {
149 log.info("[FORM-CACHE-GET]:车辆-{}核碰缓存",gatherInfo.getVename()); 151 log.info("[FORM-CACHE-GET]:车辆-{}核碰缓存",gatherInfo.getVename());
150 - String landBusinessJson = redisService.get(gatherInfo.getVename()); 152 + landBusinessJson = redisService.get(gatherInfo.getVename());
  153 + }else {
  154 + log.info("[FORM-CACHE-GET]:车辆未获取到车牌号,seqno:{}",gatherInfo.getSeqno());
  155 + }
  156 +
151 if (StringUtils.isNotEmpty(landBusinessJson)) { 157 if (StringUtils.isNotEmpty(landBusinessJson)) {
152 //这个是申请单表体 158 //这个是申请单表体
153 List<LandBusinessTypeList> list = JSONArray.parseArray(landBusinessJson, LandBusinessTypeList.class); 159 List<LandBusinessTypeList> list = JSONArray.parseArray(landBusinessJson, LandBusinessTypeList.class);
@@ -311,7 +317,11 @@ public class EnginCheckServiceImpl implements EnginCheckService { @@ -311,7 +317,11 @@ public class EnginCheckServiceImpl implements EnginCheckService {
311 command.setVeName(info.getVename()); 317 command.setVeName(info.getVename());
312 command.setVeWeight(selfWt); 318 command.setVeWeight(selfWt);
313 command.setIeType(info.getIetype()); 319 command.setIeType(info.getIetype());
  320 + if(info.getGrosswt()!=null){
314 command.setExitGrossWeight(info.getGrosswt().doubleValue()); 321 command.setExitGrossWeight(info.getGrosswt().doubleValue());
  322 + }else {
  323 + command.setExitGrossWeight(0.0);
  324 + }
315 command.setInGrossWeight(inWt); 325 command.setInGrossWeight(inWt);
316 command.setGoodsWeight(goodsWt); 326 command.setGoodsWeight(goodsWt);
317 command.setActualGoodsWeight(diffVal); 327 command.setActualGoodsWeight(diffVal);
@@ -25,7 +25,7 @@ public class Base64Test { @@ -25,7 +25,7 @@ public class Base64Test {
25 25
26 @Test 26 @Test
27 public void base64Decode(){ 27 public void base64Decode(){
28 - String testcode = "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48R0FUSEVSX0ZFRURCQUNLIHhtbG5zPSJodHRwOi8vcnBiLmN1c3RvbXMuZ292LmNuL2NvbW1vbi9Gcm9udEVuZFNjaGVtYXMvIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48QVJFQV9JRD40NjA0MDAwMDA2PC9BUkVBX0lEPjxDSE5MX05PPjQ2MDQwMDEyMjMyPC9DSE5MX05PPjxTRVNTSU9OX0lEPjIwMjIwNjMwMTg0NDQxMDAwMDI4PC9TRVNTSU9OX0lEPjxGRUVEQkFDS19USU1FPjIwMjMtMDgtMjAgMTU6MDc6MTY8L0ZFRURCQUNLX1RJTUU+PENIRUNLX1JFU1VMVD4wPC9DSEVDS19SRVNVTFQ+PE9QX0hJTlQ+55S15a2Q6L2m54mMOjrkuI3mlL7ooYzvvJrmib7kuI3liLDlr7nlupTnmoTmoLjmlL7ljZXvvIzkuI3kuojmlL7ooYw8L09QX0hJTlQ+PC9HQVRIRVJfRkVFREJBQ0s+"; 28 + String testcode = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEdBVEhFUl9JTkZPIHhtbG5zPSJodHRwOi8vcnBiLmN1c3RvbXMuZ292LmNuL2NvbW1vbi9Gcm9udEVuZFNjaGVtYXMvIgogICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3JwYi5jdXN0b21zLmdvdi5jbi9jb21tb24vRnJvbnRFbmRTY2hlbWFzLyI+CiAgICA8SV9FX0ZMQUc+RTwvSV9FX0ZMQUc+CiAgICA8QVJFQV9JRD40NjA0NjAwMDAwPC9BUkVBX0lEPgogICAgPENITkxfTk8+NDYwNDYwMDAyMDwvQ0hOTF9OTz4KICAgIDxHRVRIRVJfTU9ERT5BPC9HRVRIRVJfTU9ERT4KICAgIDxTRVNTSU9OX0lEPjIwMjMwODIzMTIxMzE3Mjg3MDAzPC9TRVNTSU9OX0lEPgogICAgPElDX0lORk8+CiAgICAgICA8SUNfSUQ+PC9JQ19JRD4KICAgICAgICA8SUNfTk8+PC9JQ19OTz4KICAgICAgICA8SUNfVFlQRT48L0lDX1RZUEU+CiAgICAgICAgPElDX0VYVEVOREVEX0NPTlRFTlQ+PC9JQ19FWFRFTkRFRF9DT05URU5UPgogICAgPC9JQ19JTkZPPgogICAgPEZPUk1fSU5GTz4KICAgICAgICA8Rk9STV9UWVBFPjwvRk9STV9UWVBFPgogICAgICAgIDxGT1JNX0lEPjwvRk9STV9JRD4KICAgIDwvRk9STV9JTkZPPgogICAgPFZFX0xJQ0VOU0VfTk8+6LGrQTI5NThHPC9WRV9MSUNFTlNFX05PPgogICAgPEdST1NTX1dUPjg3MDA8L0dST1NTX1dUPgogICAgPFZFX1JGSUQ+CiAgICAgICAgPFJGSURfSUQ+RTAwNDAwMDBEQzVDMzIwODwvUkZJRF9JRD4KICAgICAgICA8VkVfTElDRU5TRV9OTz7osatBMjk1OEc8L1ZFX0xJQ0VOU0VfTk8+CiAgICAgICAgPFZFX0NVU1RPTVNfTk8+PC9WRV9DVVNUT01TX05PPgogICAgICAgIDxWRV9XVD43NzAwPC9WRV9XVD4KICAgICAgICA8VkVfQ09NUEFOWT48L1ZFX0NPTVBBTlk+CiAgICAgICAgPFZFX1BFUkZPUk1BTkNFPjE8L1ZFX1BFUkZPUk1BTkNFPgogICAgPC9WRV9SRklEPgogICAgPE9QRVJBVEVfVElNRT4yMDIzLTA4LTIzIDEyOjEzOjI1PC9PUEVSQVRFX1RJTUU+CjwvR0FUSEVSX0lORk8+Cg==";
29 byte[] base64decodedBytes = Base64.getDecoder().decode(testcode); 29 byte[] base64decodedBytes = Base64.getDecoder().decode(testcode);
30 try { 30 try {
31 System.out.println("解密后的信息为:"+new String(base64decodedBytes, "utf-8")); 31 System.out.println("解密后的信息为:"+new String(base64decodedBytes, "utf-8"));
@@ -76,13 +76,41 @@ @@ -76,13 +76,41 @@
76 76
77 # VER 6.1 Date:2023-08-21 周三 77 # VER 6.1 Date:2023-08-21 周三
78 - 功能 78 - 功能
79 - ## 新增金二验放规则  
80 - ## 新增金二回执处理接口  
81 - ## 针对双验放规则进行升级改造  
82 - ## 做一线进出口业务的需要备案电子车牌信息 79 + 1. 新增金二验放规则
  80 + 2. 新增金二回执处理接口
  81 + 3. 针对双验放规则进行升级改造
  82 + 4. 做一线进出口业务的需要备案电子车牌信息
  83 + 5. 车辆备案管理新增电子车牌字段
  84 + 6. 场站管理新增金二场站代码字段
  85 + 7. 卡口管理新增金二通道代码等字段
83 - 数据库 86 - 数据库
84 1. 车辆备案表新增电子车牌字段 87 1. 车辆备案表新增电子车牌字段
  88 + 增加电子车牌号 数据表“land_road_ve_record”新增字段“VE_CUSTOMS_NO”
  89 + 2. 场站表增加了金二场站代码字段
  90 + 数据库yard新增stationIdG2(金二场站编码)字段
  91 + 3. 通道表增加了金二通道字段
  92 + 数据库bayonet新增channel_g2(金二通道编号)、type_io(通道内部通道、主通道类型 I 内 O 主)字段
  93 + 4. 新增货物类型管理 数据表”land_config_goods_type“
85 - 验放服务 94 - 验放服务
86 1. 增加熔断器配置项 95 1. 增加熔断器配置项
87 # 设置 Hystrix 的超时时间为 5000 毫秒 96 # 设置 Hystrix 的超时时间为 5000 毫秒
88 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000 97 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000
  98 + 2. 新增金二通道验放规则
  99 + 3. 新增金二验放指令接收及判定接口
  100 + - 申报管理服务
  101 + 1. 车辆备案管理增加车辆电子车牌信息管理
  102 + 2. 取消特殊业务绑定通道号,改为生成场站所有通道信息
  103 + - 场站管理服务
  104 + 1. 场站管理增加金二场站代码管理
  105 + 2. 通道管理增加金二通道代码管理
  106 + - 前端
  107 + 1. 场站管理增加金二场站代码管理
  108 + 2. 通道管理增加金二通道代码管理
  109 + 3. 车辆备案增加电子车牌信息管理
  110 + - 新增机场端IBMMQ金二报文交互服务 (部署在机场卡口服务器)
  111 + 1. 发送X81报文
  112 + 2. 接收X82报文
  113 + 3. 与验放服务交互
  114 + - 新增海关端IBMMQ金二报文交互服务
  115 + 1. 接收并申报X81报文到金二特殊区域接口
  116 + 2. 接收X82放行回执并回写到回执队列