作者 朱兆平

退库及换单货物人工验放,进口入场必须空车\出口离场必须空车

... ... @@ -7,7 +7,6 @@
<artifactId>analysis_imf</artifactId>
<version>3.0-G2-SNAPSHOT</version>
<packaging>jar</packaging>
<name>analysis_imf</name>
<description>北货集成金二抬杆指令判定</description>
... ...
... ... @@ -22,6 +22,18 @@ public interface WeightCheckHandleService {
boolean checkExportDownLoading(double grossWt, double wt, double goodsWt,double inWt);
/**
* 进口普货提货业务,入场时的数据校验
* 校验入场重量是否等于车辆备案重量
* @param grossWt 地磅称重,也称出场过磅重量
* @param wt 车辆自重
* @param goodsWt 货物总重
* @param inWt 进场过磅重量
* 误差计算方式 (应该出场重量 - 出场重量) / 出场重量 与 误差比对,超过误差则不放行
* @return 返回校验结果 true 通过,false 不通过
*/
boolean checkImportAtCheckIN(double grossWt, double wt, double goodsWt,double inWt);
/**
* 进口普货提货业务重量校验,可支持 带货提货,不支持卸货提货
* 进口转关业务重量校验
* 进场重量+载货重量 = 出场重量
... ...
... ... @@ -45,6 +45,8 @@ public class GatherInfoHandle implements GatherInfoService {
private static String NOGrossWt = "过磅重量异常";
private static String BLACKLIST= "车辆已被拉进黑名单,不允许出区";
private static String CHANEL_ERR= "无对应通道流转申请,走错通道";
private static String TUIKU= "车辆装载有退库货物,人工放行";
private static String CHECKINNOEMPTY= "提货业务禁止非空车驶入";
@Autowired
... ... @@ -177,8 +179,22 @@ public class GatherInfoHandle implements GatherInfoService {
}
//入区核放
if(chanelInCheck()){
switch (landBusinessTypeList.getBusinesstype()){
case "进口转关":
case "进口提货":
if (gatherInfoHandle.weightCheckHandleService.checkImportAtCheckIN(growssWt, selfWt, goodsWt,inWt)){
pass();
log.info("[X21-SUCCESS]:[IN]-进口提货放行");
}else{
sendBw(info,false,CHECKINNOEMPTY,landBusinessTypeList,listinfos);
log.info("[X21-ERR]:[IN]-进口提货-费空车驶入");
}
break;
default:
pass();
log.info("[X21-SUCCESS]:[IN]-车辆入区直接放行");
}
/**
* 华东区内流转-进口分拨核销部分.
... ... @@ -388,7 +404,9 @@ public class GatherInfoHandle implements GatherInfoService {
private boolean goodsWhiteListCheck(){
if(!"普通货物".equals(landBusinessTypeList.getCocode())
&& !"转关货物".equals(landBusinessTypeList.getCocode())
&& !"退库货物".equals(landBusinessTypeList.getCocode()) ) {
&& !"退库货物".equals(landBusinessTypeList.getCocode())
&& !"换单货物".equals(landBusinessTypeList.getCocode())
) {
//todo:比如货物类型为快件货物,只走重量校验,不走放行信息等校验.
//todo:退库货物可以关联货运系统,得到退库信息进行比对
//todo:查验货物走查验信息比对
... ... @@ -481,12 +499,14 @@ public class GatherInfoHandle implements GatherInfoService {
case "进口转关":
case "进口提货":
if (gatherInfoHandle.weightCheckHandleService.checkImportDlv(growssWt, selfWt, goodsWt,inWt)){
if ("退库货物".equals(landBusinessTypeList.getCocode())){
if ("退库货物".equals(landBusinessTypeList.getCocode()) || "换单货物".equals(landBusinessTypeList.getCocode())){
/**
* 退库货物不校验运单放行.
* @chenageNew 退库货物不自动抬杆放行,改为人工验放模式
*/
log.info("[退库业务]-重量核验通过.");
return true;
log.info("[退库业务]-人工验放模式.");
sendBw(info,false,TUIKU,landBusinessTypeList,listinfos);
return false;
}else{
//检查运单放行
if (gatherInfoHandle.resMessageService.checkManifestRelease(info,listinfos)){
... ...
... ... @@ -63,6 +63,17 @@ public class WeightCheckHandleServiceImpl implements WeightCheckHandleService {
*/
@Override
public boolean checkExportDownLoading(double grossWt, double wt, double goodsWt, double inWt){
/**
* 异常情况判定
* 送货业务的入场重量必须大于离场重量
* 比如申请单申请的时候本来是进口提货 申请成出口送货
*/
if (inWt<grossWt){
log.info("出区重量比入区重量大,信息异常");
return false;
}
DecimalFormat df = new DecimalFormat("0.00");
boolean flag = false;
//卸货判定
... ... @@ -77,12 +88,37 @@ public class WeightCheckHandleServiceImpl implements WeightCheckHandleService {
log.info("[WEIGHT-CHECK]-进出场比对差值:{},空车出场差值:{},进出场比对重量差:{},空车比对重量差:{}",result,result2,Math.abs(inWt - goodsWt - grossWt),Math.abs(grossWt-wt));
}
double range = valueDob();
if (result <= range || result2 <= range) {
//车辆离场重量与车辆备案重量验放,只允许空车离场
if (result2 <= range) {
flag = true;
}
//
// if (result <= range || result2 <= range) {
// flag = true;
// }
return flag;
}
@Override
public boolean checkImportAtCheckIN(double grossWt, double wt, double goodsWt, double inWt){
double emptyIN= 0.00;
DecimalFormat df = new DecimalFormat("0.00");
if(Double.doubleToLongBits(grossWt)>Double.doubleToLongBits(0)){
//空车入场判定,入场重量-车辆备案重量
emptyIN = Double.parseDouble(df.format(Math.abs((wt - grossWt)) / grossWt));
double range = valueDob();
if (emptyIN <= range) {
log.info("[WEIGHT-CHECK]-进口提货入口重量验放:入场重量{},车辆备案重量:{},差值:{}",grossWt,wt,emptyIN);
return true;
}
}
return false;
}
/**
* 进口普货提货业务重量校验,可支持 带货提货,不支持卸货提货
* 进口转关业务重量校验
... ... @@ -107,7 +143,7 @@ public class WeightCheckHandleServiceImpl implements WeightCheckHandleService {
//进场过磅重量+带货重量 = 出场过磅重量
result = Double.parseDouble(df.format(Math.abs((inWt + goodsWt - grossWt)) / grossWt));
//todo:这里没有加空车离场判定,暂时不加,进口提货业务空车离场走空车验放判定系统.
//带货提货,不提货判定,非空车离场
result2 = Double.parseDouble(df.format(Math.abs((inWt - grossWt)) / grossWt));
//个别原因不提货了,空车离场
... ... @@ -116,25 +152,28 @@ public class WeightCheckHandleServiceImpl implements WeightCheckHandleService {
//车辆备案重量+货物重量 = 出场过磅重量,测试用,生产关闭
result1 = Double.parseDouble(df.format(Math.abs((wt + goodsWt - grossWt)) / grossWt));
//货重误差
//带货提货,货重误差
goodCheckResult = Double.parseDouble(df.format(Math.abs((grossWt-inWt-goodsWt)) / goodsWt));
}
double range = valueDob();
log.info("[WEIGHT-CHECK]-实际离场拉货重量:{},申请离场拉货重量:{},货重差值:{},货重误差:{}",grossWt-inWt,goodsWt,grossWt-inWt-goodsWt,goodCheckResult);
log.info("[WEIGHT-CHECK]-进出场比对差值:{},提货离场差值:{},进出场比对重量差:{}",result,result1,Math.abs(inWt - grossWt));
if (result <= range || goodCheckResult<=range) {
if (result <= range
// || goodCheckResult<=range
) {
flag = true;
}
//车辆备案重量+货物重量 = 出场过磅重量,测试用,生产关闭
if (result1 <= range || result2 <= range || emptyOut <= range) {
// //车辆备案重量+货物重量 = 出场过磅重量,测试用,生产关闭
// if (result1 <= range || result2 <= range || emptyOut <= range) {
//
// return true;
// }
return true;
}
}
return flag;
}
... ...
... ... @@ -3,7 +3,6 @@ package com.sy.socket;
import com.sy.model.CommandInfoX22;
import com.sy.model.GatherInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import java.io.IOException;
... ...