|
|
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);
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
} |
...
|
...
|
|