BillDomTransportCheck.groovy
6.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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
package com.sy.groovy
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.JSONArray
import com.alibaba.fastjson.JSONObject
import com.sy.model.GatherInfo
import com.sy.model.LAND_BUSINEESTYPE_LIST_INFO
import com.sy.model.LandBusinessTypeList
import com.sy.response.ResultJson
import com.sy.service.impl.GatherInfoHandle;
import feign.Feign
import feign.Headers
import feign.Param;
import feign.Request
import feign.RequestLine;
import feign.hystrix.FallbackFactory;
import groovy.lang.Script;
import org.basis.enhance.groovy.entity.ExecuteParams;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory
import org.springframework.context.ApplicationContext
import java.util.stream.Collectors;
/**
* 单证验放
* 放行验放
*/
class BillDomTransportCheck extends Script implements ChannelCheckScript {
private final Logger logger = LoggerFactory.getLogger(getClass());
@Override
Boolean check(ExecuteParams executeParams) {
try {
String cookieUserName = "admin"
String cookieUserId = "1903e605-a2e1-404d-a1a6-a749752fb030"
String ServiceAdr = "http://192.168.1.63:10001"
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);
if (listinfos!=null && !listinfos.isEmpty()){
//数组过滤,只要单证,不要其他 板箱之类
List<LAND_BUSINEESTYPE_LIST_INFO> list_infos = listinfos.stream().filter({ listInfo ->
if ("B".equals(listInfo.getExt4())) {
return true;
} else {
return false;
}
}).collect(Collectors.toList());
list_infos.forEach({bill->
// 创建 Feign Client
//https://nmms.zzcargo.com:8443/api/wlpt-nmms-manage/trans/dom?originFlightno=&originFlightdate=&originFlightdateEnd=&originMasterwaybill=ML66158691&agentName=&transType=dom&pageNum=1&pageSize=10
MyFeignClient myFeignClient = createFeignClient(MyFeignClient, ServiceAdr,cookieUserName,cookieUserId);
// 调用第三方接口
String response = myFeignClient.callThirdPartyApi(bill.getAwba(),cookieUserName,cookieUserId);
logger.info("[TRANS-API-RESPONSE]-{}",response)
// 处理响应结果...
//返回的ResultJson实体类
JSONObject jo = JSONObject.parseObject(response);
StringBuilder sb = new StringBuilder("");
if ("200".equals(jo.getString("code"))){
//获取返回列表 data->list
JSONObject rData = jo.getJSONObject("data")
if (rData!=null){
JSONArray rList = rData.getJSONArray("list")
if (rList!=null && !rList.isEmpty()){
rList.forEach({ item ->
JSONObject jsonObject = (JSONObject) item;
Integer status = jsonObject.getInteger("status")
String oBill = jsonObject.getString("originMasterwaybill")
logger.info("[TRANS-API-RESPONSE]-单证:{},状态:{}",oBill,status)
if (status>0){
// return true
}else{
sb.append("转运单证[").append(bill.getAwba()).append("]核验失败,未审核通过")
gatherInfoHandle.sendBw(gatherInfo,false,sb.toString(),landBusinessTypeList,listinfos);
return false
}
})
}
}
}else{
logger.info("[TRANS-CHECK-FAILD]-转运单证{}核验失败",bill.getAwba())
sb.append("转运单证[").append(bill.getAwba()).append("]核验失败,API-FAILD")
gatherInfoHandle.sendBw(gatherInfo,false,sb.toString(),landBusinessTypeList,listinfos);
return false;
}
})
//这里返回验放成功,验放失败从上面返回
return true;
}else{
return false;
}
} catch (Exception e) {
e.printStackTrace();
logger.error("[CACHE-PARSE-ERROR]:", e);
return false;
}
}
@Override
Object run() {
return false;
}
// 获取spring容器
ApplicationContext getContext() {
// 获取spring IOC容器
ApplicationContext context = applicationContext;
return context;
}
private <T> T createFeignClient(Class<T> clientClass, String url,String username, String userid) {
return Feign.builder()
.options(new Request.Options(5000, 5000))
.requestInterceptor({ requestTemplate ->
String cookieValue = "username=" + username + "; userid=" + userid;
requestTemplate.header("Cookie", cookieValue);
})
.target(clientClass, url);
}
interface MyFeignClient {
@RequestLine("GET /trans/dom?originMasterwaybill={originMasterwaybill}")
@Headers("Cookie: username={username}; userid={userid}")
String callThirdPartyApi(@Param("originMasterwaybill") String originMasterwaybill,
@Param("username") String username,
@Param("userid") String userid);
}
class MyFallbackFactory implements FallbackFactory<MyFeignClient> {
@Override
public MyFeignClient create(Throwable throwable) {
return new MyFeignClient() {
@Override
public String callThirdPartyApi(String originMasterwaybill,String username,String userid) {
// 处理 fallback 逻辑...
ResultJson resultJson = new ResultJson("400","访问接口出错");
return JSON.toJSONString(resultJson);
}
};
}
}
}