作者 朱兆平

综保区特殊监管区-特殊处理

@@ -17,7 +17,9 @@ STYP=CARM @@ -17,7 +17,9 @@ STYP=CARM
17 17
18 #\u8F7D\u91CD\u4E0E\u79F0\u91CD\u7684\u53EF\u63A7\u8303\u56F4 ?% 18 #\u8F7D\u91CD\u4E0E\u79F0\u91CD\u7684\u53EF\u63A7\u8303\u56F4 ?%
19 grossWt=5% 19 grossWt=5%
20 -station=4600329012 20 +#白名单场站列表,用逗号隔开
  21 +station=4600329012,4612199001
  22 +#顺丰白名单场站列表
21 stationsf=4600541001 23 stationsf=4600541001
22 24
23 #\u4E8C\u7EF4\u7801\u5B58\u653E\u8DEF\u5F84\uFF0C\u9879\u76EE\u542F\u52A8\u65F6\u8BBE\u7F6E\uFF0C\u540E\u671F\u4E0D\u80FD\u66F4\u6539\u3002 25 #\u4E8C\u7EF4\u7801\u5B58\u653E\u8DEF\u5F84\uFF0C\u9879\u76EE\u542F\u52A8\u65F6\u8BBE\u7F6E\uFF0C\u540E\u671F\u4E0D\u80FD\u66F4\u6539\u3002
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 5
6 <groupId>com.sy</groupId> 6 <groupId>com.sy</groupId>
7 <artifactId>analysis_imf</artifactId> 7 <artifactId>analysis_imf</artifactId>
8 - <version>3.0-G2-SNAPSHOT</version> 8 + <version>4.0-LOCK-SNAPSHOT</version>
9 <packaging>jar</packaging> 9 <packaging>jar</packaging>
10 <name>analysis_imf</name> 10 <name>analysis_imf</name>
11 <description>北货集成金二抬杆指令判定</description> 11 <description>北货集成金二抬杆指令判定</description>
@@ -32,67 +32,71 @@ public class CustomsLockController { @@ -32,67 +32,71 @@ public class CustomsLockController {
32 32
33 @PostMapping("response") 33 @PostMapping("response")
34 public ResultJson lockResponse(@RequestBody LockFeedBack feedBack){ 34 public ResultJson lockResponse(@RequestBody LockFeedBack feedBack){
35 -  
36 - if (StringUtils.isEmpty(feedBack.barcode)){  
37 - return new ResultJson("400","缺少二维码信息","缺少二维码信息");  
38 - }  
39 -  
40 - log.info("收到关锁通知:{}",feedBack.toString());  
41 - StringBuilder sb = new StringBuilder(); 35 + try{
  36 + log.info("收到关锁通知:{}",feedBack.toString());
  37 + if (StringUtils.isEmpty(feedBack.barcode)){
  38 + return new ResultJson("400","缺少二维码信息","缺少二维码信息");
  39 + }
  40 + StringBuilder sb = new StringBuilder();
42 // sb.append("施解封时间:").append(feedBack.locktime).append("\n") 41 // sb.append("施解封时间:").append(feedBack.locktime).append("\n")
43 // .append("关锁秘钥:").append(feedBack.secret).append("\n") 42 // .append("关锁秘钥:").append(feedBack.secret).append("\n")
44 -// .append("施解封内容:").append(feedBack.feedbackconten).append("\n") 43 + sb.append("施解封内容:").append(feedBack.feedbackconten).append("\n");
45 // .append("施解封状态:").append(feedBack.feedbackcode).append("\n"); 44 // .append("施解封状态:").append(feedBack.feedbackcode).append("\n");
46 45
47 - String LOCK_TYPE_UNLOCK = "2";  
48 - /**  
49 - * 关锁施解封类型  
50 - * 1 施封  
51 - * 2 解封  
52 - */  
53 - String LOCK_TYPE_LOCK = "1";  
54 - if (LOCK_TYPE_LOCK.equals(feedBack.type)){  
55 - sb.append("施解封类型:").append("施封").append("\n");  
56 - }else if (LOCK_TYPE_UNLOCK.equals(feedBack.type)){  
57 - sb.append("施解封类型:").append("解封").append("\n");  
58 - }else {  
59 - sb.append("施解封类型:").append("未知").append("\n");  
60 - sb.append("施解封类型:").append(feedBack.type).append("\n");  
61 - } 46 + String LOCK_TYPE_UNLOCK = "2";
  47 + /**
  48 + * 关锁施解封类型
  49 + * 1 施封
  50 + * 2 解封
  51 + */
  52 + String LOCK_TYPE_LOCK = "1";
  53 + if (LOCK_TYPE_LOCK.equals(feedBack.type)){
  54 + sb.append("施解封类型:").append("施封").append("\n");
  55 + }else if (LOCK_TYPE_UNLOCK.equals(feedBack.type)){
  56 + sb.append("施解封类型:").append("解封").append("\n");
  57 + }else {
  58 + sb.append("施解封类型:").append("未知").append("\n");
  59 + sb.append("施解封类型:").append(feedBack.type).append("\n");
  60 + }
62 61
63 62
64 - //判定关锁返回结果,结果正常,继续走抬杆指令,结果异常 不走抬杆指令,转人工抬杆  
65 - /**  
66 - * 关锁通知施解封状态  
67 - * 01 成功  
68 - * 02 失败  
69 - */  
70 - String LOCK_SUCCESS = "01";  
71 - if(LOCK_SUCCESS.equals(feedBack.feedbackcode)){  
72 - //读取缓存  
73 - GatherInfo gatherInfo = customsLockService.cacheRead(feedBack.barcode);  
74 - sb.append("成功");  
75 - if (gatherInfo!=null){  
76 - commandLogService.commandlog(gatherInfo,true,sb.toString(),null,null,0.0,0.0,0.0,0.0);  
77 - customsLockService.localGatherInfoHandle(gatherInfo); 63 + //判定关锁返回结果,结果正常,继续走抬杆指令,结果异常 不走抬杆指令,转人工抬杆
  64 + /**
  65 + * 关锁通知施解封状态
  66 + * 01 成功
  67 + * 02 失败
  68 + */
  69 + String LOCK_SUCCESS = "01";
  70 + if(LOCK_SUCCESS.equals(feedBack.feedbackcode)){
  71 + //读取缓存
  72 + GatherInfo gatherInfo = customsLockService.cacheRead(feedBack.barcode);
  73 + sb.append("成功");
  74 + if (gatherInfo!=null){
  75 + commandLogService.commandlog(gatherInfo,true,sb.toString(),null,null,0.0,0.0,0.0,0.0);
  76 + customsLockService.localGatherInfoHandle(gatherInfo);
  77 + }else {
  78 + sb.append("关锁缓存信息读取失败");
  79 + gatherInfo = new GatherInfo();
  80 + gatherInfo.setBarcode(feedBack.barcode);
  81 + gatherInfo.setGrosswt(new BigDecimal(0));
  82 + commandLogService.commandlog(gatherInfo,false,sb.toString(),null,null,0.0,0.0,0.0,0.0);
  83 + log.info("[LOCK-RSP]-关锁缓存信息读取失败");
  84 + return new ResultJson("400","关锁缓存信息读取失败");
  85 + }
78 }else { 86 }else {
79 - sb.append("关锁缓存信息读取失败");  
80 - gatherInfo = new GatherInfo(); 87 + sb.append("关锁施解封失败");
  88 + GatherInfo gatherInfo = new GatherInfo();
81 gatherInfo.setBarcode(feedBack.barcode); 89 gatherInfo.setBarcode(feedBack.barcode);
82 gatherInfo.setGrosswt(new BigDecimal(0)); 90 gatherInfo.setGrosswt(new BigDecimal(0));
  91 +
83 commandLogService.commandlog(gatherInfo,false,sb.toString(),null,null,0.0,0.0,0.0,0.0); 92 commandLogService.commandlog(gatherInfo,false,sb.toString(),null,null,0.0,0.0,0.0,0.0);
84 - log.info("[LOCK-RSP]-关锁缓存信息读取失败");  
85 - }  
86 - }else {  
87 - sb.append("关锁施解封失败");  
88 - GatherInfo gatherInfo = new GatherInfo();  
89 - gatherInfo.setBarcode(feedBack.barcode);  
90 - gatherInfo.setGrosswt(new BigDecimal(0)); 93 + log.info("[LOCK-RSP]-关锁施解封失败");
91 94
92 - commandLogService.commandlog(gatherInfo,false,sb.toString(),null,null,0.0,0.0,0.0,0.0);  
93 - log.info("[LOCK-RSP]-关锁施解封失败"); 95 + }
  96 + return new ResultJson("200","success");
  97 + }catch (Exception e){
  98 + return new ResultJson("500",e.toString());
94 } 99 }
95 - return new ResultJson("200","success");  
96 } 100 }
97 101
98 } 102 }
@@ -188,7 +188,7 @@ public class GatherInfoHandle implements GatherInfoService { @@ -188,7 +188,7 @@ public class GatherInfoHandle implements GatherInfoService {
188 log.info("[X21-SUCCESS]:[IN]-进口提货放行"); 188 log.info("[X21-SUCCESS]:[IN]-进口提货放行");
189 }else{ 189 }else{
190 sendBw(info,false,CHECKINNOEMPTY,landBusinessTypeList,listinfos); 190 sendBw(info,false,CHECKINNOEMPTY,landBusinessTypeList,listinfos);
191 - log.info("[X21-ERR]:[IN]-进口提货-空车驶入"); 191 + log.info("[X21-ERR]:[IN]-进口提货-空车驶入");
192 } 192 }
193 break; 193 break;
194 default: 194 default:
@@ -261,16 +261,71 @@ public class GatherInfoHandle implements GatherInfoService { @@ -261,16 +261,71 @@ public class GatherInfoHandle implements GatherInfoService {
261 261
262 /** 262 /**
263 * 一. 263 * 一.
264 - * 场站白名单 264 + * 场站白名单,顺丰
265 * @return 白名单 true. 其他走校验 265 * @return 白名单 true. 其他走校验
266 */ 266 */
267 private boolean areaWhiteListCheck(){ 267 private boolean areaWhiteListCheck(){
268 if(FileTool.readProperties("stationsf").equals(info.getAreaid())) { 268 if(FileTool.readProperties("stationsf").equals(info.getAreaid())) {
269 return true; 269 return true;
270 } 270 }
  271 + if (zbqAreaWhiteListCheck()) {
  272 + return true;
  273 + }
271 return false; 274 return false;
272 } 275 }
273 276
  277 + /**
  278 + * 一.
  279 + * 场站白名单,综保区白名单特殊验放
  280 + * 综保区不做重量验放,但是还要进行单证放行验放
  281 + * @return 白名单 true. 其他走校验
  282 + */
  283 + private boolean zbqAreaWhiteListCheck(){
  284 + if(FileTool.readProperties("station").contains(info.getAreaid())) {
  285 + log.info("[ZBQ]-综保区核验放行");
  286 + if ("E".equals(info.getIetype())){
  287 +
  288 + inStationInfo(); //入场信息获取
  289 + setListinfos(); //流转申请表体获取
  290 +
  291 + //业务类型及放行判定
  292 + switch (landBusinessTypeList.getBusinesstype()){
  293 + case "进口提货":
  294 + if ("退库货物".equals(landBusinessTypeList.getCocode()) || "换单货物".equals(landBusinessTypeList.getCocode())){
  295 + return true;
  296 + }else {
  297 + //检查运单放行
  298 + if (gatherInfoHandle.resMessageService.checkManifestRelease(info,listinfos)){
  299 + return true;
  300 + }else {
  301 + //有运单未放行
  302 + log.error("[进口提货]-出场未通过校验:"+FANGXING+landBusinessTypeList.getMasterList());
  303 + sendBw(info,false,FANGXING,landBusinessTypeList,listinfos);
  304 + return false;
  305 + }
  306 + }
  307 +
  308 + case "调拨业务":
  309 + //检查运单放行,拉板可出
  310 + if (gatherInfoHandle.resMessageService.checkManifestRelease(info,listinfos)){
  311 + return true;
  312 + }else {
  313 + //有运单未放行
  314 + log.error("[调拨业务]-出场未通过校验:"+FANGXING+landBusinessTypeList.getMasterList());
  315 + sendBw(info,false,FANGXING,landBusinessTypeList,listinfos);
  316 + return false;
  317 + }
  318 + default:
  319 + return true;
  320 + }
  321 + }
  322 + return true;
  323 + }
  324 + return false;
  325 + }
  326 +
  327 +
  328 +
274 329
275 /** 330 /**
276 * 1. 车牌信息校验 331 * 1. 车牌信息校验
@@ -696,9 +751,6 @@ public class GatherInfoHandle implements GatherInfoService { @@ -696,9 +751,6 @@ public class GatherInfoHandle implements GatherInfoService {
696 log.info("[流转缓存]-{}缓存已核销",vaName); 751 log.info("[流转缓存]-{}缓存已核销",vaName);
697 //核销记录 752 //核销记录
698 releaseRecord(); 753 releaseRecord();
699 -  
700 - //总业务车次计数  
701 - gatherInfoHandle.redisService.incr("kako-barcode-total",1);  
702 } 754 }
703 755
704 /** 756 /**
@@ -52,7 +52,11 @@ public class ResMessageServiceImpl implements ResMessageService { @@ -52,7 +52,11 @@ public class ResMessageServiceImpl implements ResMessageService {
52 @Override 52 @Override
53 public boolean checkManifestRelease(GatherInfo info, List<LAND_BUSINEESTYPE_LIST_INFO> list_infos) { 53 public boolean checkManifestRelease(GatherInfo info, List<LAND_BUSINEESTYPE_LIST_INFO> list_infos) {
54 List<String> noRelease = new Vector<>(); 54 List<String> noRelease = new Vector<>();
55 - if (list_infos.size() < 1) { 55 + if (list_infos==null){
  56 + CommandClient.Client(info, AWB_EMPTY);
  57 + return false;
  58 + }
  59 + if (list_infos.isEmpty()) {
56 CommandClient.Client(info, AWB_EMPTY); 60 CommandClient.Client(info, AWB_EMPTY);
57 return false; 61 return false;
58 } 62 }
@@ -11,6 +11,7 @@ import com.sy.service.CustomsLockService; @@ -11,6 +11,7 @@ import com.sy.service.CustomsLockService;
11 import com.sy.service.LandBusListService; 11 import com.sy.service.LandBusListService;
12 import com.sy.service.RedisService; 12 import com.sy.service.RedisService;
13 import com.sy.service.impl.GatherInfoHandle; 13 import com.sy.service.impl.GatherInfoHandle;
  14 +import com.sy.utils.FileTool;
14 import lombok.extern.slf4j.Slf4j; 15 import lombok.extern.slf4j.Slf4j;
15 import org.apache.commons.lang.StringUtils; 16 import org.apache.commons.lang.StringUtils;
16 import org.springframework.beans.factory.annotation.Autowired; 17 import org.springframework.beans.factory.annotation.Autowired;
@@ -81,6 +82,8 @@ public class CustomsLockServiceImpl implements CustomsLockService { @@ -81,6 +82,8 @@ public class CustomsLockServiceImpl implements CustomsLockService {
81 @Override 82 @Override
82 public boolean lockNoticeCheck(GatherInfo info) { 83 public boolean lockNoticeCheck(GatherInfo info) {
83 if (info!=null && StringUtils.isNotEmpty(info.getBarcode())) { 84 if (info!=null && StringUtils.isNotEmpty(info.getBarcode())) {
  85 + //todo:这里后期判定可以复用场站白名单验证
  86 +// FileTool.readProperties("station").contains(info.getAreaid());
84 /** 87 /**
85 * 申请业务类型检查 88 * 申请业务类型检查
86 * 调拨业务及分拨业务装载货物为单证的,必须有关锁号 89 * 调拨业务及分拨业务装载货物为单证的,必须有关锁号