BillAllocateCheck.groovy
4.7 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
package com.sy.groovy
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.JSONArray
import com.alibaba.fastjson.JSONObject
import com.sy.model.Feign_Allocate_Search
import com.sy.model.GatherInfo
import com.sy.model.LAND_BUSINEESTYPE_LIST_INFO
import com.sy.model.LandBusinessTypeList
import com.sy.service.NmmsService
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 javax.validation.constraints.NotNull
/**
* 单证验放
* 舱单分拨申请验放
*/
class BillAllocateCheck extends Script implements ChannelCheckScript {
private final Logger logger = LoggerFactory.getLogger(getClass());
private final String FENBO = "装载运单的分拨申请舱单未通过校验";
/**过磅重量判定
* 传入gatherInfo,三大属性验证,二维码/车牌/过卡重量
* 适用于分拨业务或者调拨业务
*/
Boolean check(ExecuteParams executeParams) {
try{
GatherInfo gatherInfo = (GatherInfo) executeParams.get("gatherInfo");
LandBusinessTypeList landBusinessTypeList = (LandBusinessTypeList) executeParams.get("ChanelFormInfo");
List<LAND_BUSINEESTYPE_LIST_INFO> listinfos = (List<LAND_BUSINEESTYPE_LIST_INFO>) executeParams.get("ChanelFormBillLists");
// 调用方法
ApplicationContext context = getContext();
// 获取容器中的bean
GatherInfoHandle gatherInfoHandle = context.getBean(GatherInfoHandle.class);
boolean allocatCheck = checkNmmsAllocate(landBusinessTypeList.getMasterList());
if(!allocatCheck){
logger.error("[分拨业务]-分拨申请舱单未通过校验:"+FENBO);
gatherInfoHandle.sendBw(gatherInfo,false,FENBO,landBusinessTypeList,listinfos);
return false;
}
return true;
}catch (Exception e){
e.printStackTrace();
logger.error("[BillAllocateCheck-ERROR]:",e);
return false;
}
}
@Override
Object run() {
return null
}
// 获取spring容器
ApplicationContext getContext() {
// 获取spring IOC容器
ApplicationContext context = applicationContext;
return context;
}
/**
* 新舱单分拨申请数据查询
* @param waybill 查询的运单号
* @return
*/
private Map nmmsAllocate(@NotNull String waybill){
logger.info("新舱单查询分拨申请数据开始");
Feign_Allocate_Search feignAllocateSearch = new Feign_Allocate_Search(waybill,0,10);
ApplicationContext context = getContext();
NmmsService nmmsService = context.getBean(NmmsService.class)
Map map = nmmsService.getAllocate(feignAllocateSearch);
logger.info(""+map);
return map;
}
/**
* 分拨申请查询
* @param waybill
* @return
*/
private boolean checkNmmsAllocate(String waybill){
if (waybill.length() < 1) {
return false;
}
waybill = waybill.replace("-", "");
//中文逗号替换
waybill = waybill.replace(",", ",");
String[] maifest = waybill.split(",");
logger.info("运单列表:" + waybill);
boolean flag = false;
for (String awb : maifest) {
Map map= nmmsAllocate(awb);
if (map.containsKey("reslut")){
String result = map.get("reslut").toString();
JSONObject jsonObject = JSON.parseObject(result);
if (jsonObject.containsKey("ds")) {
JSONArray ds = jsonObject.getJSONArray("ds");
JSONObject awbinfo = ds.getJSONObject(0);
if (awbinfo.containsKey("RECEIPTINFORMATION")){
if (awbinfo.getString("RECEIPTINFORMATION").contains("39301") || awbinfo.getString("RECEIPTINFORMATION").contains("39103")){
log.info("运单:{},分拨回执查询结果:{}",awb,awbinfo.getString("RECEIPTINFORMATION"));
}else {
log.info("运单{}分拨申请回执不正常:{}",awb,awbinfo.getString("RECEIPTINFORMATION"));
return false;
}
}
}else {
logger.info("运单:{}分拨申请回执未查询到,或未进行分拨申请",awb);
return false;
}
}else{
logger.info("运单:{}分拨申请回执未查询到,或未进行分拨申请",awb);
return false;
}
}
return true;
}
}