WeightCheckAllocateOrDispatch.groovy
5.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.sy.groovy
import com.sy.model.GatherInfo
import com.sy.model.LAND_BUSINEESTYPE_LIST_INFO
import com.sy.model.LandBusinessTypeList
import com.sy.service.WeightCheckHandleService
import com.sy.service.impl.GatherInfoHandle
import org.basis.enhance.groovy.entity.ExecuteParams
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.context.ApplicationContext
import java.text.DecimalFormat
/**
* 重量验放
* 分拨调拨流转验放
*/
class WeightCheckAllocateOrDispatch extends Script implements ChannelCheckScript {
private final Logger logger = LoggerFactory.getLogger(getClass());
private final String GROWSSEXCETION = "禁止通行,重量不在可控范围";
/**过磅重量判定
* 传入gatherInfo,三大属性验证,二维码/车牌/过卡重量
* 适用于分拨业务或者调拨业务
*/
Boolean check(ExecuteParams executeParams) {
try{
GatherInfo gatherInfo = (GatherInfo) executeParams.get("GatherInfo");
LandBusinessTypeList landBusinessTypeList = (LandBusinessTypeList) executeParams.get("ChanelFormInfo");
Double selfWt = (Double) executeParams.get("selfWt");
Double goodsWt = (Double) executeParams.get("goodsWt");
Double inAisleWT = (Double) executeParams.get("inAisleWT");
List<LAND_BUSINEESTYPE_LIST_INFO> listinfos = (List<LAND_BUSINEESTYPE_LIST_INFO>) executeParams.get("ChanelFormBillLists");
logger.info("[AllocateOrDispatch-Weight-Check]-备案重:{}",selfWt);
logger.info("[AllocateOrDispatch-Weight-Check]-货重:{}",goodsWt);
logger.info("[AllocateOrDispatch-Weight-Check]-入场重:{}",inAisleWT);
logger.info("[AllocateOrDispatch-Weight-Check]-过磅重:{}",gatherInfo.getGrosswt());
//3.车辆备案验证
// 调用方法
ApplicationContext context = getContext();
// 获取容器中的bean
GatherInfoHandle gatherInfoHandle = context.getBean(GatherInfoHandle.class);
if (checkAllocateOrDispatch(gatherInfo.getGrosswt(), selfWt, goodsWt,inAisleWT)){
return true;
}else {
gatherInfoHandle.sendBw(gatherInfo,false,GROWSSEXCETION,landBusinessTypeList,listinfos);
return false;
}
}catch (Exception e){
e.printStackTrace();
logger.error("[AllocateOrDispatch-Weight-Check-ERROR]:",e);
return false;
}
}
@Override
Object run() {
return null
}
// 获取spring容器
ApplicationContext getContext() {
// 获取spring IOC容器
ApplicationContext context = applicationContext;
return context;
}
boolean checkAllocateOrDispatch(double grossWt, double wt, double goodsWt,double inWt){
// 调用方法
ApplicationContext context = getContext();
//重量校验算法
WeightCheckHandleService weightCheckHandleService = context.getBean(WeightCheckHandleService.class);
//todo:调拨分拨中的第二.三...场站的如卡口判断 都应该以带货入场进行判定.离场都应该以空车进行判定.
//todo: 进卡口判定 带货进 或者空车进 加个 此次任务 上个出卡口的重量信息比对
//todo: 出卡口判定 卸货出 或者 空车出
DecimalFormat df = new DecimalFormat("0.00");
boolean flag = false;
//载货离场判定
double result= 1.00;
//空车离场判定
double result2= 1.00;
//卸货离场判定
double result3= 1.00;
double result4= 1.00;
//货重为0 有BUG,0不能作为被除数
if (goodsWt > 0){
logger.info("货重正常")
}else {
logger.info("货重不正常,被除数改为1")
goodsWt = 1.0;
}
if (wt>10){
logger.info("车重正常")
}else {
logger.info("车重不正常,被除数改为1")
wt=1.0;
}
if(Double.doubleToLongBits(grossWt)>Double.doubleToLongBits(0)){
//带货出,入场重量+带货重量 = 离场重量
result = Double.parseDouble(df.format(Math.abs((grossWt-inWt-goodsWt)) / goodsWt));
//带货出,用车辆备案重量对碰,车辆备案重量+带货重量 = 离场重量
// result4 = Double.parseDouble(df.format(Math.abs((wt + goodsWt - grossWt)) / grossWt));
result4 = Double.parseDouble(df.format(Math.abs((grossWt-wt-goodsWt)) / goodsWt));
//空车出,过磅重量 = 车辆备案重量
result2 = Double.parseDouble(df.format(Math.abs((grossWt-wt)) / wt));
//卸货出,入场重量-卸货重量 = 离场重量
result3 = Double.parseDouble(df.format(Math.abs((inWt - goodsWt - grossWt)) / goodsWt));
System.out.println("进场提货离场差值:"+result);
System.out.println("空车离场差值:"+result2);
System.out.println("进场卸货离场差值:"+result3);
System.out.println("备案重量进场装载货物离场差值:"+result4);
}
double range = weightCheckHandleService.valueDob();
// 进场重量为正常数值时才可作为入场重量判定依据
if (inWt>50){
if (result <= range || result3 <= range){
flag = true;
}
}
if (result2 <= range || result4 <= range) {
flag = true;
}
return flag;
}
}