yi.wang

Merge remote-tracking branch 'origin/master'

......@@ -78,8 +78,8 @@ public class BasfDataInterface {
//2、TODO 校验主单
/* sw.start("checkMawb");
result=mawbService.checkMawb(mawb);
/*sw.start("checkMawb");
result=basfService.checkBasfMawb(saveMawbBasfResult);
if(!result.getSuccess()){
return result;
}
......
......@@ -153,7 +153,6 @@ public class BasfMawb implements Serializable {
private String ownerCode;
@ApiModelProperty(value = "消费使用/生产销售单位名称", name = "ownerName", example = "上海保险")
@NotBlank(message="参数ownerName不能为空", groups = {MawbAdd.class})
@Column(name = "OWNERNAME")
private String ownerName;
......@@ -240,8 +239,8 @@ public class BasfMawb implements Serializable {
private String EANNo;
@Valid
@ApiModelProperty(value = "运单明细", name = "mawbDetailList", example = "")
@ApiModelProperty(value = "运单明细", name = "BasfMawbDetail", example = "")
@OneToMany(cascade = CascadeType.PERSIST)
@JoinColumn(name = "mawbId")
private List<MawbDetail> mawbDetailList;
private List<BasfMawbDetail> mawbDetailList;
}
......
package com.erry.iclear.dateInterface.api.request;
public class BasfMawbDetail {
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
@ApiModel(value = "mawbDetail", description = "运单明细")
@Entity
@Table(name = "T_ICLEAR_API_MAWBDETAIL")
@Data
public class BasfMawbDetail implements Serializable {
private static final long serialVersionUID = -6706944312498119267L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Id", insertable = false, nullable = false)
private Long id;
@Column(name = "MSGID")
private Long msgId;
@Column(name="MAWBID")
private Long mawbId;
@Column(name="DETAILID")
private String detailId;
@ApiModelProperty(value = "归类标志", example = "空值")
@Column(name = "CLASSMARK")
private String classMark;
@ApiModelProperty(value = "商品编号")
@Column(name = "CODETS")
private String codeTS;
@ApiModelProperty(value = "申报单价", example = "空值")
@Column(name = "DECLPRICE")
private BigDecimal declPrice;
@ApiModelProperty(value = "申报总价")
@Column(name = "DECLTOTAL")
private BigDecimal declTotal;
@ApiModelProperty(value = "征免方式")
@Column(name = "DUTYMODE")
private String dutyMode;
@ApiModelProperty(value = "货号")
@Column(name = "EXGNO")
private String exgNo;
@ApiModelProperty(value = "版本号")
@Column(name = "EXGVERSION")
private String exgVersion;
@ApiModelProperty(value = "第一计量单位(法定单位)")
@Column(name = "FIRSTUNIT")
private String firstUnit;
@ApiModelProperty(value = "第一法定数量")
@NotNull(message="参数firstQty不能为空")
@Column(name = "FIRSTQTY")
private Integer firstQty;
@ApiModelProperty(value = "成交计量单位")
@Column(name = "GUNIT")
private String gunit;
@ApiModelProperty(value = "商品规格、型号")
@Column(name = "GMODE")
private String gmodel;
@ApiModelProperty(value = "商品名称")
@Column(name = "GNAME")
private String gname;
@ApiModelProperty(value = "商品序号")
@Column(name = "GNO")
private String gno;
@ApiModelProperty(value = "成交数量")
@Column(name = "GQTY")
private BigDecimal gqty;
@ApiModelProperty(value = "原产国")
@Column(name = "ORIGINCURRENTY")
private String originCountry;
@ApiModelProperty(value = "第二计量单位")
@Column(name = "SECONDUNIT")
private String secondUnit;
@ApiModelProperty(value = "第二法定数量")
@Column(name = "SECONDQTY")
private Integer secondQty;
@ApiModelProperty(value = "成交币制")
@Column(name = "TRADECURR")
private String tradeCurr;
@ApiModelProperty(value = "用途/生产厂家")
@Column(name = "USETO")
private String useTo;
@ApiModelProperty(value = "工缴费")
@Column(name = "WORKUSD")
private BigDecimal workUsd;
@ApiModelProperty(value = "检验检疫编")
@Column(name = "CIQCODE")
private String ciqCode;
@ApiModelProperty(value = "最终目的国(地区)")
@Column(name = "DESTINATIONCOUNTRY")
private String destinationCountry;
@ApiModelProperty(value = "申报货物英文名称")
@Column(name = "DECLGOODSENAME")
private String declGoodsEname;
@ApiModelProperty(value = "目的地代码")
@Column(name = "DESTCODE")
private String destCode;
@ApiModelProperty(value = "境内目的地/境内货源地")
@Column(name = "DISTRICTCODE")
private String districtCode;
@ApiModelProperty(value = "申报重量")
@Column(name = "DECLAREDWEIGHT")
private BigDecimal declaredWeight;
}
......
package com.erry.iclear.dateInterface.service;
import com.arronlong.httpclientutil.HttpClientUtil;
import com.arronlong.httpclientutil.common.HttpConfig;
import com.arronlong.httpclientutil.common.HttpHeader;
import com.erry.iclear.dateInterface.api.request.*;
import com.erry.iclear.dateInterface.api.response.IClearCheckResponseResult;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.entity.ChmConsignment;
import com.erry.iclear.dateInterface.entity.ChmConsignmentDetail;
import com.erry.iclear.dateInterface.repository.BasfMawbRepository;
import com.erry.iclear.dateInterface.repository.MawbRepository;
import com.erry.iclear.dateInterface.util.JsonToJava;
import com.erry.iclear.dateInterface.util.NumberUtils;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Header;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author Administrator
......@@ -16,6 +29,18 @@ import java.util.List;
@Service
@Slf4j
public class BasfService {
private Gson gson = new Gson();
@Value("${api.address.iclear-check-url-c}")
String iclearCheckUrl;
@Autowired
private ChmConsignmentService consignmentService;
@Autowired
private ChmConsignmentDetailService consignmentDetailService;
@Autowired
private BasfMawbRepository basfMawbRepository;
......@@ -51,10 +76,10 @@ public class BasfService {
basfMawb.setEANNo(basfc.getEANNo());
//明细
List<MawbDetail> mawbDetailList = new ArrayList<>();
List<BasfMawbDetail> mawbDetailList = new ArrayList<>();
if (basfc.getBasfcDetailList().size()>0){
for (BasfcDetail basfcDetail : basfc.getBasfcDetailList()){
MawbDetail mawbDetail = new MawbDetail();
BasfMawbDetail mawbDetail = new BasfMawbDetail();
mawbDetail.setDetailId(basfcDetail.getConsignmentDetailId());
mawbDetail.setGmodel(basfcDetail.getModel());
mawbDetail.setCodeTS(basfcDetail.getSkuCode());
......@@ -79,4 +104,50 @@ public class BasfService {
}
return result;
}
/**
* 校验主单
* @param basfMawb
* @return
*/
public ResultRS checkBasfMawb(BasfMawb basfMawb){
ResultRS result = new ResultRS(Boolean.FALSE,null,null);
try{
log.info("checkMawb start>>>>>>>>>> mawb:"+gson.toJson(basfMawb));
//1、将请求转换为运单
ChmConsignment chmConsignment=consignmentService.convertToChmConsignmentBasf(basfMawb,null,"IDE-ICLEAR-API");
if(Objects.equals(chmConsignment,null)){
result.setCode("30001");
result.setMsg("数据格式不正确");
return result;
}
List<ChmConsignmentDetail> chmConsignmentDetailList = new ArrayList<>();
basfMawb.getMawbDetailList().forEach(detail ->{
chmConsignmentDetailList.add(consignmentDetailService.convertToChmConsignmentDetailBasf(detail,chmConsignment));
});
chmConsignment.setChmConsignmentDetailList(chmConsignmentDetailList);
//调用IClear接口进行运单数据校验
String objJson = JsonToJava.toJson(chmConsignment);
Header[] headers = HttpHeader.custom()
.other("Content-Type", "application/json")
.build();
log.info("******************* : " + this.iclearCheckUrl);
//推送海关回执数据
HttpConfig config = HttpConfig.custom()
.headers(headers)
.url(this.iclearCheckUrl)
.encoding("utf-8")
.json(objJson);
String json = HttpClientUtil.post(config);
IClearCheckResponseResult iclearCheckResponseResult = JsonToJava.parseJson(json, IClearCheckResponseResult.class);
result.setSuccess(iclearCheckResponseResult.getSuccess());
result.setMsg(iclearCheckResponseResult.getMessage());
log.info("<<<<<<<< checkMawb start >>>>>>>>>> mawb:"+gson.toJson(basfMawb) +" result :" +result.getSuccess() +" iclear check response : " + json + " status : " + result.getSuccess());
}catch (Exception e){
log.error("checkMawb() error:" + e.getMessage());
}
return result;
}
}
......
package com.erry.iclear.dateInterface.service;
import com.erry.iclear.dateInterface.api.request.BasfMawbDetail;
import com.erry.iclear.dateInterface.api.request.MawbDetail;
import com.erry.iclear.dateInterface.common.Constant;
import com.erry.iclear.dateInterface.entity.*;
......@@ -137,7 +138,7 @@ public class ChmConsignmentDetailService {
* @param mawbDetail
* @return
*/
public ChmConsignmentDetail convertToChmConsignmentDetailBasf(MawbDetail mawbDetail,ChmConsignment chmConsignment){
public ChmConsignmentDetail convertToChmConsignmentDetailBasf(BasfMawbDetail mawbDetail, ChmConsignment chmConsignment){
ChmConsignmentDetail result = new ChmConsignmentDetail();
try{
result.setChmConsignment(chmConsignment);
......
......@@ -15,8 +15,6 @@ import com.erry.iclear.dateInterface.util.DateUtils;
import com.erry.iclear.dateInterface.util.NumberUtils;
import com.erry.iclear.dateInterface.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -550,7 +548,7 @@ public class ChmConsignmentService {
/**
* 保存或更新 iclear中的运单信息
* @param mawb
* @param basfMawb
* @param timeStamp
*/
public ResultRS processChmConsignmentBasf(BasfMawb basfMawb, String timeStamp, String creator) {
......
......@@ -28,7 +28,7 @@ api:
#IClear校验运单地址
iclear-check-url: http://40.73.78.157:8081/chmConsignmentController/checkChmAndDetaliD
#IClear校验C类运单地址
iclear-check-url-c: http://40.73.78.157:8081/chmConsignmentController/checkChmAndDetaliC
iclear-check-url-c: http://40.73.78.157:8080/chmConsignmentController/checkChmAndDetaliC
#获取token地址
token-url: https://apiuat.iclrccd-fedex.com/login
#刷新token地址
......
......@@ -26,6 +26,8 @@ api:
address:
#IClear校验运单地址
iclear-check-url: https://www.iclrccd-fedex.com/chmConsignmentController/checkChmAndDetaliD
#IClear校验C类运单地址
iclear-check-url-c: http://40.73.78.157:8080/chmConsignmentController/checkChmAndDetaliC
#获取token地址
token-url: https://api.iclrccd-fedex.com/export/login
#刷新token地址
......
......@@ -26,6 +26,8 @@ api:
address:
#IClear校验运单地址
iclear-check-url: http://40.73.78.157:8081/chmConsignmentController/checkChmAndDetaliD
#IClear校验C类运单地址
iclear-check-url-c: http://40.73.78.157:8080/chmConsignmentController/checkChmAndDetaliC
#获取token地址
token-url: https://apiuat.iclrccd-fedex.com/login
#刷新token地址
......
......@@ -3,13 +3,10 @@ package com.erry.iclear.dateInterface;
import com.erry.iclear.dateInterface.api.CustomsDataInterface;
import com.erry.iclear.dateInterface.api.request.*;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.repository.MawbAdd;
import com.erry.iclear.dateInterface.service.BasfService;
import com.erry.iclear.dateInterface.service.ChmConsignmentService;
import com.erry.iclear.dateInterface.service.MawbService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.util.ArrayList;
......@@ -26,7 +23,7 @@ public class ChmConsignmentServiceTest extends IClearApiApplicationTests {
private CustomsDataInterface customsDataInterface;
@Autowired
private BasfService mawbService;
private BasfService basfService;
/*@Test
......@@ -44,24 +41,30 @@ public class ChmConsignmentServiceTest extends IClearApiApplicationTests {
@Test
public void testProcessChmConsignment1(){
try{
ResultRS result = new ResultRS(Boolean.FALSE,"","");
Basfc basfc = this.createNewBasf();
BasfMawb mawb = mawbService.saveMawbBasf(basfc);
BasfMawb mawb = basfService.saveMawbBasf(basfc);
//Basfc basfc = this.createNewBasf();
String timeStamp = String.valueOf(new Date().getTime());
ResultRS resultRS = chmConsignmentService.processChmConsignmentBasf(mawb, timeStamp, "BASF");
/*result=basfService.checkBasfMawb(mawb);
if(!result.getSuccess()){
System.out.println(result.getMsg());
}*/
System.out.println(resultRS.toString());
}catch (Exception e){
e.printStackTrace();
}
System.out.println("1");
}
private Basfc createNewBasf(){
List<BasfcDetail> basfcDetailList = new ArrayList<>();
BasfcDetail basfcDetail = new BasfcDetail();
basfcDetail.setConsignmentDetailId("111");
basfcDetail.setSkuCode("123456789");
basfcDetail.setSkuName("测试");
basfcDetail.setModel("0|0|1|||||||||");
basfcDetail.setConsignmentDetailId("222");
basfcDetail.setSkuCode("29262000");
basfcDetail.setSkuName("210908001测试");
basfcDetail.setModel("0|0|1|1||||||||");
basfcDetail.setUnitLegalFirst("035");
basfcDetail.setQtyLegalFirst(BigDecimal.valueOf(1));
basfcDetail.setKnockdownUnit("035");
......@@ -74,13 +77,13 @@ public class ChmConsignmentServiceTest extends IClearApiApplicationTests {
basfcDetailList.add(basfcDetail);
Basfc basfc = new Basfc();
basfc.setConsignmentCode("211015003");
basfc.setConsignmentCode("210908002");
basfc.setConsignmentId(1L);
basfc.setConsType("C");
basfc.setSender("发件人");
basfc.setShipperCustomsCode("1234567890");
basfc.setSender("天津知行博创科技有限公司");
basfc.setShipperCustomsCode("11119608L9");
basfc.setShipperSCC("123456789012345678");
basfc.setOperateUnitName("");
basfc.setOperateUnitName("天津丰铭佳业科贸有限公司");
basfc.setOperateUnitCode("");
basfc.setOperateSCC("");
basfc.setEANNo("");
......