作者 朱兆平

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

@@ -77,7 +77,9 @@ feign.httpclient.enabled=true @@ -77,7 +77,9 @@ feign.httpclient.enabled=true
77 # 是否启用hystrix 77 # 是否启用hystrix
78 feign.hystrix.enabled=true 78 feign.hystrix.enabled=true
79 # 请求连接超时时间(毫秒) 79 # 请求连接超时时间(毫秒)
80 -feign.httpclient.connection-timeout=3000 80 +feign.httpclient.connection-timeout=5000
  81 +# 设置 Hystrix 的超时时间为 5000 毫秒
  82 +hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000
81 83
82 #logback日志配置 84 #logback日志配置
83 85
@@ -2,6 +2,7 @@ package com.sy.feign; @@ -2,6 +2,7 @@ package com.sy.feign;
2 2
3 import feign.RequestInterceptor; 3 import feign.RequestInterceptor;
4 import feign.RequestTemplate; 4 import feign.RequestTemplate;
  5 +import feign.Retryer;
5 import org.springframework.context.annotation.Bean; 6 import org.springframework.context.annotation.Bean;
6 import org.springframework.context.annotation.Configuration; 7 import org.springframework.context.annotation.Configuration;
7 import org.springframework.web.context.request.RequestContextHolder; 8 import org.springframework.web.context.request.RequestContextHolder;
@@ -12,6 +13,17 @@ import javax.servlet.http.HttpServletRequest; @@ -12,6 +13,17 @@ import javax.servlet.http.HttpServletRequest;
12 @Configuration 13 @Configuration
13 public class NmmsInterceptor { 14 public class NmmsInterceptor {
14 15
  16 +
  17 + /**
  18 + * 设置feign重试次数
  19 + * @return
  20 + */
  21 + @Bean
  22 + public Retryer feignRetryer() {
  23 + // 设置最大重试次数为3次
  24 + return new Retryer.Default(1000, 5000, 3);
  25 + }
  26 +
15 @Bean 27 @Bean
16 public RequestInterceptor requestInterceptor() { 28 public RequestInterceptor requestInterceptor() {
17 return new RequestInterceptor() { 29 return new RequestInterceptor() {
@@ -9,6 +9,7 @@ import com.sy.model.LandBusinessTypeList @@ -9,6 +9,7 @@ import com.sy.model.LandBusinessTypeList
9 import com.sy.model.LandRoadVe 9 import com.sy.model.LandRoadVe
10 import com.sy.response.ResultJson 10 import com.sy.response.ResultJson
11 import com.sy.service.CommandLogService 11 import com.sy.service.CommandLogService
  12 +import com.sy.service.EnginCheckService
12 import com.sy.service.RedisService 13 import com.sy.service.RedisService
13 import com.sy.service.feigin.G2X81FeignService 14 import com.sy.service.feigin.G2X81FeignService
14 import com.sy.service.feigin.StationManageFeignService 15 import com.sy.service.feigin.StationManageFeignService
@@ -47,9 +48,19 @@ class G2X81Notice extends Script implements ChannelCheckScript{ @@ -47,9 +48,19 @@ class G2X81Notice extends Script implements ChannelCheckScript{
47 */ 48 */
48 GatherInfo info = (GatherInfo) executeParams.get("GatherInfo"); 49 GatherInfo info = (GatherInfo) executeParams.get("GatherInfo");
49 LandRoadVe ve = (LandRoadVe) executeParams.get("LandRoadVe"); 50 LandRoadVe ve = (LandRoadVe) executeParams.get("LandRoadVe");
  51 +
50 ApplicationContext context = getContext(); 52 ApplicationContext context = getContext();
51 G2X81FeignService g2X81FeignService = context.getBean(G2X81FeignService.class); 53 G2X81FeignService g2X81FeignService = context.getBean(G2X81FeignService.class);
52 54
  55 + EnginCheckService enginCheckService = context.getBean(EnginCheckService.class);
  56 +
  57 + /**
  58 + * 写入本地验放通过信息
  59 + */
  60 + enginCheckService.commandlog(info,true,"双验放:本地验放通过:等待金二验放指令",executeParams);
  61 +
  62 +
  63 +
53 if (info!=null){ 64 if (info!=null){
54 //缓存X21 的 seqn 需要作为异步X82回执验放时用到的信息 65 //缓存X21 的 seqn 需要作为异步X82回执验放时用到的信息
55 cacheWithSeqno(info); 66 cacheWithSeqno(info);
@@ -92,6 +103,8 @@ class G2X81Notice extends Script implements ChannelCheckScript{ @@ -92,6 +103,8 @@ class G2X81Notice extends Script implements ChannelCheckScript{
92 commandLogService.commandlog(info,result,reason,landBusinessTypeList,null,0.0,0.0,0.0,0.0); 103 commandLogService.commandlog(info,result,reason,landBusinessTypeList,null,0.0,0.0,0.0,0.0);
93 } 104 }
94 105
  106 +
  107 +
95 String x22TransToX81(GatherInfo gatherInfo,LandRoadVe ve){ 108 String x22TransToX81(GatherInfo gatherInfo,LandRoadVe ve){
96 log.info("[SEQN]-处理X21报文:{}",gatherInfo.getSeqno()); 109 log.info("[SEQN]-处理X21报文:{}",gatherInfo.getSeqno());
97 //当前时间作为X81申报时间 110 //当前时间作为X81申报时间
@@ -115,15 +128,15 @@ class G2X81Notice extends Script implements ChannelCheckScript{ @@ -115,15 +128,15 @@ class G2X81Notice extends Script implements ChannelCheckScript{
115 JSONObject yard = chanel.getJSONObject("yard"); 128 JSONObject yard = chanel.getJSONObject("yard");
116 String stationG2 = yard.getString("stationIdG2"); 129 String stationG2 = yard.getString("stationIdG2");
117 log.info("[G2-YARD]-{}",stationG2); 130 log.info("[G2-YARD]-{}",stationG2);
  131 + log.info("[VE-RFID-NO]:车辆电子车牌号:{}",ve.getVeCustomsNo());
118 132
119 - log.info("[G2-TEMPLATE]-{}",G2X81Template.template)  
120 String x81XML= G2X81Template.template.replace("#{ie_flag}",gatherInfo.getIetype()) 133 String x81XML= G2X81Template.template.replace("#{ie_flag}",gatherInfo.getIetype())
121 .replace("#{area_id}",stationG2) 134 .replace("#{area_id}",stationG2)
122 .replace("#{chnl_no}",channelG2) 135 .replace("#{chnl_no}",channelG2)
123 .replace("#{session_id}",gatherInfo.getSeqno()) 136 .replace("#{session_id}",gatherInfo.getSeqno())
124 .replace("#{ve_license_no}",gatherInfo.getVename()) 137 .replace("#{ve_license_no}",gatherInfo.getVename())
125 .replace("#{gross_wt}",gatherInfo.getGrosswt().toString()) 138 .replace("#{gross_wt}",gatherInfo.getGrosswt().toString())
126 - .replace("#{rfid_id}",gatherInfo.getCarecno()) 139 + .replace("#{rfid_id}",ve.getVeCustomsNo())
127 .replace("#{ve_wt}",ve.getSelfWt()) 140 .replace("#{ve_wt}",ve.getSelfWt())
128 .replace("#{operate_time}",startTime); 141 .replace("#{operate_time}",startTime);
129 log.info("[X21-TO-X81]-{}",x81XML); 142 log.info("[X21-TO-X81]-{}",x81XML);
@@ -5,11 +5,9 @@ import com.sy.model.GatherInfo; @@ -5,11 +5,9 @@ import com.sy.model.GatherInfo;
5 import com.sy.model.X82Feedback; 5 import com.sy.model.X82Feedback;
6 import com.sy.service.X82Service; 6 import com.sy.service.X82Service;
7 import com.sy.service.router.MessageRouterG2; 7 import com.sy.service.router.MessageRouterG2;
8 -import com.sy.socket.CommandClient;  
9 import com.sy.utils.Base64Tool; 8 import com.sy.utils.Base64Tool;
10 import lombok.extern.slf4j.Slf4j; 9 import lombok.extern.slf4j.Slf4j;
11 import org.apache.commons.lang.StringUtils; 10 import org.apache.commons.lang.StringUtils;
12 -import org.springframework.beans.factory.annotation.Autowired;  
13 import org.springframework.stereotype.Component; 11 import org.springframework.stereotype.Component;
14 12
15 @Component 13 @Component
@@ -121,6 +121,14 @@ public class LandRoadVe { @@ -121,6 +121,14 @@ public class LandRoadVe {
121 121
122 private Date updateDate; 122 private Date updateDate;
123 123
  124 + private String veState;
  125 +
  126 + private String veCustomsNo;
  127 +
  128 + private String icCode;
  129 +
  130 + private String lockNum;
  131 +
124 public String getVeState() { 132 public String getVeState() {
125 return veState; 133 return veState;
126 } 134 }
@@ -129,8 +137,6 @@ public class LandRoadVe { @@ -129,8 +137,6 @@ public class LandRoadVe {
129 this.veState = veState; 137 this.veState = veState;
130 } 138 }
131 139
132 - private String veState;  
133 -  
134 public String getId() { 140 public String getId() {
135 return id; 141 return id;
136 } 142 }
@@ -602,4 +608,28 @@ public class LandRoadVe { @@ -602,4 +608,28 @@ public class LandRoadVe {
602 public void setUpdateDate(Date updateDate) { 608 public void setUpdateDate(Date updateDate) {
603 this.updateDate = updateDate; 609 this.updateDate = updateDate;
604 } 610 }
  611 +
  612 + public String getVeCustomsNo() {
  613 + return veCustomsNo;
  614 + }
  615 +
  616 + public void setVeCustomsNo(String veCustomsNo) {
  617 + this.veCustomsNo = veCustomsNo;
  618 + }
  619 +
  620 + public String getIcCode() {
  621 + return icCode;
  622 + }
  623 +
  624 + public void setIcCode(String icCode) {
  625 + this.icCode = icCode;
  626 + }
  627 +
  628 + public String getLockNum() {
  629 + return lockNum;
  630 + }
  631 +
  632 + public void setLockNum(String lockNum) {
  633 + this.lockNum = lockNum;
  634 + }
605 } 635 }
@@ -84,7 +84,7 @@ public class EnginCheckServiceImpl implements EnginCheckService { @@ -84,7 +84,7 @@ public class EnginCheckServiceImpl implements EnginCheckService {
84 * 核销判定需要另外执行.这里需要跳过. 84 * 核销判定需要另外执行.这里需要跳过.
85 */ 85 */
86 if (ruleChannelConfigs.get(i).ruleConfig != null && "核销判定".equals(ruleChannelConfigs.get(i).ruleConfig.getRuleType())){ 86 if (ruleChannelConfigs.get(i).ruleConfig != null && "核销判定".equals(ruleChannelConfigs.get(i).ruleConfig.getRuleType())){
87 - return true; 87 + continue;
88 } 88 }
89 // 执行脚本中指定的方法 changeProduct 89 // 执行脚本中指定的方法 changeProduct
90 EngineExecutorResult executorResult = engineExecutor.execute( 90 EngineExecutorResult executorResult = engineExecutor.execute(
@@ -62,6 +62,9 @@ @@ -62,6 +62,9 @@
62 <result column="UPDATE_BY" jdbcType="VARCHAR" property="updateBy" /> 62 <result column="UPDATE_BY" jdbcType="VARCHAR" property="updateBy" />
63 <result column="UPDATE_DATE" jdbcType="TIMESTAMP" property="updateDate" /> 63 <result column="UPDATE_DATE" jdbcType="TIMESTAMP" property="updateDate" />
64 <result column="VE_STATE" jdbcType="VARCHAR" property="veState" /> 64 <result column="VE_STATE" jdbcType="VARCHAR" property="veState" />
  65 + <result column="VE_CUSTOMS_NO" jdbcType="VARCHAR" property="veCustomsNo" />
  66 + <result column="IC_CODE" jdbcType="VARCHAR" property="icCode" />
  67 + <result column="LOCK_NUM" jdbcType="VARCHAR" property="lockNum" />
65 </resultMap> 68 </resultMap>
66 <sql id="Base_Column_List"> 69 <sql id="Base_Column_List">
67 ID, EPORT_ID, MAIN_PORT, CO_CODE, VE_TARGET_NO, DOMESTIC_LISENCE_NO, DOMESTIC_LICENSE_COLOR, 70 ID, EPORT_ID, MAIN_PORT, CO_CODE, VE_TARGET_NO, DOMESTIC_LISENCE_NO, DOMESTIC_LICENSE_COLOR,
@@ -73,7 +76,7 @@ @@ -73,7 +76,7 @@
73 FRONT_45C_PIC, BACK_45C_PIC, OIL_BOX_PIC, VE_BOTTOM_PIC, MEMO, PROPOSER, PROPOSE_TIME, 76 FRONT_45C_PIC, BACK_45C_PIC, OIL_BOX_PIC, VE_BOTTOM_PIC, MEMO, PROPOSER, PROPOSE_TIME,
74 VE_CLASS_FLAG, OPERATION_TYPE, TRAILER_LICENSE_NO, TRAILER_FRAME_NO, APPRO_NO_PIC, 77 VE_CLASS_FLAG, OPERATION_TYPE, TRAILER_LICENSE_NO, TRAILER_FRAME_NO, APPRO_NO_PIC,
75 VE_FRAME_NO_PIC, MOTOR_NO_PIC, FOREIGN_LICENSE_PIC, NATIONALITY, RETURNMESSAGE, CREATE_BY, 78 VE_FRAME_NO_PIC, MOTOR_NO_PIC, FOREIGN_LICENSE_PIC, NATIONALITY, RETURNMESSAGE, CREATE_BY,
76 - CREATE_DATE, UPDATE_BY, UPDATE_DATE,VE_STATE 79 + CREATE_DATE, UPDATE_BY, UPDATE_DATE,VE_STATE,VE_CUSTOMS_NO,IC_CODE,LOCK_NUM
77 </sql> 80 </sql>
78 <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap"> 81 <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
79 select 82 select
@@ -47,7 +47,7 @@ @@ -47,7 +47,7 @@
47 - rule_config、 47 - rule_config、
48 - rule_channel_config、 48 - rule_channel_config、
49 - land_business_type_config 49 - land_business_type_config
50 - 3. 打开二维码正式环境获取接口,申请接口\取消申请接口\异常处理接口 50 + 3. 打开二维码正式环境获取接口,申请接口\取消申请接口\异常处理接口\车辆备案接口
51 4. 打包编译 51 4. 打包编译
52 5. 上传正式服务器 52 5. 上传正式服务器
53 7. 备份正在运行版本 53 7. 备份正在运行版本
@@ -73,3 +73,16 @@ @@ -73,3 +73,16 @@
73 - 配置业务类型管理权限 73 - 配置业务类型管理权限
74 - 重新配置验放端规则信息到redis 74 - 重新配置验放端规则信息到redis
75 75
  76 +
  77 +# VER 6.1 Date:2023-08-21 周三
  78 + - 功能
  79 + ## 新增金二验放规则
  80 + ## 新增金二回执处理接口
  81 + ## 针对双验放规则进行升级改造
  82 + ## 做一线进出口业务的需要备案电子车牌信息
  83 + - 数据库
  84 + 1. 车辆备案表新增电子车牌字段
  85 + - 验放服务
  86 + 1. 增加熔断器配置项
  87 + # 设置 Hystrix 的超时时间为 5000 毫秒
  88 + hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000