作者 朱兆平

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

... ... @@ -17,7 +17,9 @@ STYP=CARM
#\u8F7D\u91CD\u4E0E\u79F0\u91CD\u7684\u53EF\u63A7\u8303\u56F4 ?%
grossWt=5%
station=4600329012
#白名单场站列表,用逗号隔开
station=4600329012,4612199001
#顺丰白名单场站列表
stationsf=4600541001
#\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 @@
<groupId>com.sy</groupId>
<artifactId>analysis_imf</artifactId>
<version>3.0-G2-SNAPSHOT</version>
<version>4.0-LOCK-SNAPSHOT</version>
<packaging>jar</packaging>
<name>analysis_imf</name>
<description>北货集成金二抬杆指令判定</description>
... ...
... ... @@ -32,67 +32,71 @@ public class CustomsLockController {
@PostMapping("response")
public ResultJson lockResponse(@RequestBody LockFeedBack feedBack){
if (StringUtils.isEmpty(feedBack.barcode)){
return new ResultJson("400","缺少二维码信息","缺少二维码信息");
}
log.info("收到关锁通知:{}",feedBack.toString());
StringBuilder sb = new StringBuilder();
try{
log.info("收到关锁通知:{}",feedBack.toString());
if (StringUtils.isEmpty(feedBack.barcode)){
return new ResultJson("400","缺少二维码信息","缺少二维码信息");
}
StringBuilder sb = new StringBuilder();
// sb.append("施解封时间:").append(feedBack.locktime).append("\n")
// .append("关锁秘钥:").append(feedBack.secret).append("\n")
// .append("施解封内容:").append(feedBack.feedbackconten).append("\n")
sb.append("施解封内容:").append(feedBack.feedbackconten).append("\n");
// .append("施解封状态:").append(feedBack.feedbackcode).append("\n");
String LOCK_TYPE_UNLOCK = "2";
/**
* 关锁施解封类型
* 1 施封
* 2 解封
*/
String LOCK_TYPE_LOCK = "1";
if (LOCK_TYPE_LOCK.equals(feedBack.type)){
sb.append("施解封类型:").append("施封").append("\n");
}else if (LOCK_TYPE_UNLOCK.equals(feedBack.type)){
sb.append("施解封类型:").append("解封").append("\n");
}else {
sb.append("施解封类型:").append("未知").append("\n");
sb.append("施解封类型:").append(feedBack.type).append("\n");
}
String LOCK_TYPE_UNLOCK = "2";
/**
* 关锁施解封类型
* 1 施封
* 2 解封
*/
String LOCK_TYPE_LOCK = "1";
if (LOCK_TYPE_LOCK.equals(feedBack.type)){
sb.append("施解封类型:").append("施封").append("\n");
}else if (LOCK_TYPE_UNLOCK.equals(feedBack.type)){
sb.append("施解封类型:").append("解封").append("\n");
}else {
sb.append("施解封类型:").append("未知").append("\n");
sb.append("施解封类型:").append(feedBack.type).append("\n");
}
//判定关锁返回结果,结果正常,继续走抬杆指令,结果异常 不走抬杆指令,转人工抬杆
/**
* 关锁通知施解封状态
* 01 成功
* 02 失败
*/
String LOCK_SUCCESS = "01";
if(LOCK_SUCCESS.equals(feedBack.feedbackcode)){
//读取缓存
GatherInfo gatherInfo = customsLockService.cacheRead(feedBack.barcode);
sb.append("成功");
if (gatherInfo!=null){
commandLogService.commandlog(gatherInfo,true,sb.toString(),null,null,0.0,0.0,0.0,0.0);
customsLockService.localGatherInfoHandle(gatherInfo);
//判定关锁返回结果,结果正常,继续走抬杆指令,结果异常 不走抬杆指令,转人工抬杆
/**
* 关锁通知施解封状态
* 01 成功
* 02 失败
*/
String LOCK_SUCCESS = "01";
if(LOCK_SUCCESS.equals(feedBack.feedbackcode)){
//读取缓存
GatherInfo gatherInfo = customsLockService.cacheRead(feedBack.barcode);
sb.append("成功");
if (gatherInfo!=null){
commandLogService.commandlog(gatherInfo,true,sb.toString(),null,null,0.0,0.0,0.0,0.0);
customsLockService.localGatherInfoHandle(gatherInfo);
}else {
sb.append("关锁缓存信息读取失败");
gatherInfo = new GatherInfo();
gatherInfo.setBarcode(feedBack.barcode);
gatherInfo.setGrosswt(new BigDecimal(0));
commandLogService.commandlog(gatherInfo,false,sb.toString(),null,null,0.0,0.0,0.0,0.0);
log.info("[LOCK-RSP]-关锁缓存信息读取失败");
return new ResultJson("400","关锁缓存信息读取失败");
}
}else {
sb.append("关锁缓存信息读取失败");
gatherInfo = new GatherInfo();
sb.append("关锁施解封失败");
GatherInfo gatherInfo = new GatherInfo();
gatherInfo.setBarcode(feedBack.barcode);
gatherInfo.setGrosswt(new BigDecimal(0));
commandLogService.commandlog(gatherInfo,false,sb.toString(),null,null,0.0,0.0,0.0,0.0);
log.info("[LOCK-RSP]-关锁缓存信息读取失败");
}
}else {
sb.append("关锁施解封失败");
GatherInfo gatherInfo = new GatherInfo();
gatherInfo.setBarcode(feedBack.barcode);
gatherInfo.setGrosswt(new BigDecimal(0));
log.info("[LOCK-RSP]-关锁施解封失败");
commandLogService.commandlog(gatherInfo,false,sb.toString(),null,null,0.0,0.0,0.0,0.0);
log.info("[LOCK-RSP]-关锁施解封失败");
}
return new ResultJson("200","success");
}catch (Exception e){
return new ResultJson("500",e.toString());
}
return new ResultJson("200","success");
}
}
... ...
... ... @@ -188,7 +188,7 @@ public class GatherInfoHandle implements GatherInfoService {
log.info("[X21-SUCCESS]:[IN]-进口提货放行");
}else{
sendBw(info,false,CHECKINNOEMPTY,landBusinessTypeList,listinfos);
log.info("[X21-ERR]:[IN]-进口提货-空车驶入");
log.info("[X21-ERR]:[IN]-进口提货-空车驶入");
}
break;
default:
... ... @@ -261,16 +261,71 @@ public class GatherInfoHandle implements GatherInfoService {
/**
* 一.
* 场站白名单
* 场站白名单,顺丰
* @return 白名单 true. 其他走校验
*/
private boolean areaWhiteListCheck(){
if(FileTool.readProperties("stationsf").equals(info.getAreaid())) {
return true;
}
if (zbqAreaWhiteListCheck()) {
return true;
}
return false;
}
/**
* 一.
* 场站白名单,综保区白名单特殊验放
* 综保区不做重量验放,但是还要进行单证放行验放
* @return 白名单 true. 其他走校验
*/
private boolean zbqAreaWhiteListCheck(){
if(FileTool.readProperties("station").contains(info.getAreaid())) {
log.info("[ZBQ]-综保区核验放行");
if ("E".equals(info.getIetype())){
inStationInfo(); //入场信息获取
setListinfos(); //流转申请表体获取
//业务类型及放行判定
switch (landBusinessTypeList.getBusinesstype()){
case "进口提货":
if ("退库货物".equals(landBusinessTypeList.getCocode()) || "换单货物".equals(landBusinessTypeList.getCocode())){
return true;
}else {
//检查运单放行
if (gatherInfoHandle.resMessageService.checkManifestRelease(info,listinfos)){
return true;
}else {
//有运单未放行
log.error("[进口提货]-出场未通过校验:"+FANGXING+landBusinessTypeList.getMasterList());
sendBw(info,false,FANGXING,landBusinessTypeList,listinfos);
return false;
}
}
case "调拨业务":
//检查运单放行,拉板可出
if (gatherInfoHandle.resMessageService.checkManifestRelease(info,listinfos)){
return true;
}else {
//有运单未放行
log.error("[调拨业务]-出场未通过校验:"+FANGXING+landBusinessTypeList.getMasterList());
sendBw(info,false,FANGXING,landBusinessTypeList,listinfos);
return false;
}
default:
return true;
}
}
return true;
}
return false;
}
/**
* 1. 车牌信息校验
... ... @@ -696,9 +751,6 @@ public class GatherInfoHandle implements GatherInfoService {
log.info("[流转缓存]-{}缓存已核销",vaName);
//核销记录
releaseRecord();
//总业务车次计数
gatherInfoHandle.redisService.incr("kako-barcode-total",1);
}
/**
... ...
... ... @@ -52,7 +52,11 @@ public class ResMessageServiceImpl implements ResMessageService {
@Override
public boolean checkManifestRelease(GatherInfo info, List<LAND_BUSINEESTYPE_LIST_INFO> list_infos) {
List<String> noRelease = new Vector<>();
if (list_infos.size() < 1) {
if (list_infos==null){
CommandClient.Client(info, AWB_EMPTY);
return false;
}
if (list_infos.isEmpty()) {
CommandClient.Client(info, AWB_EMPTY);
return false;
}
... ...
... ... @@ -11,6 +11,7 @@ import com.sy.service.CustomsLockService;
import com.sy.service.LandBusListService;
import com.sy.service.RedisService;
import com.sy.service.impl.GatherInfoHandle;
import com.sy.utils.FileTool;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -81,6 +82,8 @@ public class CustomsLockServiceImpl implements CustomsLockService {
@Override
public boolean lockNoticeCheck(GatherInfo info) {
if (info!=null && StringUtils.isNotEmpty(info.getBarcode())) {
//todo:这里后期判定可以复用场站白名单验证
// FileTool.readProperties("station").contains(info.getAreaid());
/**
* 申请业务类型检查
* 调拨业务及分拨业务装载货物为单证的,必须有关锁号
... ...