BillDomTransportCheck.groovy
8.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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
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.EnginCheckService
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 {
Boolean checkFlag = true;
String cookieUserName = "admin"
String cookieUserId = "1903e605-a2e1-404d-a1a6-a749752fb030"
String ServiceAdr = "http://10.50.3.61: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()){
//数组过滤,只要单证,不要其他 板箱之类
listinfos = listinfos.stream().filter({ listInfo ->
if ("B".equals(listInfo.getExt4())) {
return true;
} else {
return false;
}
}).collect(Collectors.toList());
listinfos.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);
logger.info("[TRANS-CHECK-BILL]-{}",bill.getAwba())
// 调用第三方接口
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){
sb.append("转运单证[").append(bill.getAwba()).append("]核验通过")
logger.info("[TRANS-CHECK-SUCCESS]-单证:{},状态:{},转运业务验放通过",oBill,status)
}else{
logger.info("[TRANS-CHECK-FAILD]-转运单证{}核验失败,未审核通过",bill.getAwba())
sb.append("转运单证[").append(bill.getAwba()).append("]核验失败,未审核通过")
gatherInfoHandle.sendBw(gatherInfo,false,sb.toString(),landBusinessTypeList,listinfos);
return checkFlag = false;
}
})
}else{
logger.info("[TRANS-CHECK-FAILD]-转运单证{}核验失败,未找到申请数据",bill.getAwba())
sb.append("转运单证[").append(bill.getAwba()).append("]核验失败,未找到申请数据")
gatherInfoHandle.sendBw(gatherInfo,false,sb.toString(),landBusinessTypeList,listinfos);
return checkFlag = false;
}
}else {
logger.info("[TRANS-CHECK-FAILD]-转运单证{}核验失败,API未查询到转运申请数据",bill.getAwba())
sb.append("转运单证[").append(bill.getAwba()).append("]核验失败,API未查询到转运申请数据")
gatherInfoHandle.sendBw(gatherInfo,false,sb.toString(),landBusinessTypeList,listinfos);
return checkFlag = false;
}
}else{
logger.info("[TRANS-CHECK-FAILD]-转运单证{}核验失败,API-FAILD",bill.getAwba())
sb.append("转运单证[").append(bill.getAwba()).append("]核验失败,API-FAILD")
gatherInfoHandle.sendBw(gatherInfo,false,sb.toString(),landBusinessTypeList,listinfos);
return checkFlag = false;
}
})
}else{
gatherInfoHandle.sendBw(gatherInfo,false,"缺少申请单证信息",landBusinessTypeList,listinfos);
return checkFlag = false;
};
if (checkFlag){
commandLog(gatherInfo,true,"转运业务单证核放成功",executeParams)
};
return checkFlag;
} 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;
}
void commandLog(GatherInfo gatherInfo,boolean check,String reason,ExecuteParams executeParams){
// 调用方法
ApplicationContext context = getContext();
// 获取容器中的bean
EnginCheckService enginCheckService = context.getBean(EnginCheckService.class);
enginCheckService.commandlog(gatherInfo,check,reason,executeParams)
}
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);
}
};
}
}
}