李俊

BASF校验接口

File mode changed
......@@ -12,7 +12,9 @@ import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.entity.ChmConsignment;
import com.erry.iclear.dateInterface.entity.DeclaredInfo;
import com.erry.iclear.dateInterface.entity.IClearApiLog;
import com.erry.iclear.dateInterface.entity.TIClearApiCheckLog;
import com.erry.iclear.dateInterface.repository.ChmConsignmentRepository;
import com.erry.iclear.dateInterface.repository.IClearApiCheckLogRepository;
import com.erry.iclear.dateInterface.service.*;
import com.erry.iclear.dateInterface.util.JsonToJava;
import com.erry.iclear.dateInterface.util.StringUtil;
......@@ -58,10 +60,73 @@ public class FedexDataInterface {
@Autowired
private ChmConsignmentRepository chmConsignmentRepository;
@Autowired
private IClearApiCheckLogRepository iClearApiCheckLogRepository;
@Value("${api.address.iclear-submit-url}")
String iclearCSubmitUrl;
@ApiOperation(value = "BASF运单数据校验接口", httpMethod = "POST", notes = "ex: http://192.168.1.75:8080/fedex/checkBASFMawbFedex")
@PostMapping("/checkBASFMawbFedex")
@ResponseBody
public ResultRS checkBASFMawbFedex(HttpServletRequest request
,@RequestBody Fedexc fedexc) throws HttpProcessException {
String appId=(String) request.getHeader("Appid");
String appKey=(String) request.getHeader("Appkey");
String timeStamp=(String) request.getHeader("TimeStamp");
String token=(String) request.getHeader("Token");
String addr = request.getRemoteAddr();
TIClearApiCheckLog tIclearApiCheckLog = new TIClearApiCheckLog();
tIclearApiCheckLog.setRequestAppid(appId);
tIclearApiCheckLog.setRequestAppkey(appKey);
tIclearApiCheckLog.setRequestIp(addr);
tIclearApiCheckLog.setRequestToken(token);
tIclearApiCheckLog.setConsignmentCode(fedexc.getConsignmentCode());
tIclearApiCheckLog.setCreateTime(new Date());
tIclearApiCheckLog.setRequestText(
new String("appId:"+appId+"," +
"appKey:"+appKey+"," +
"timeStamp:"+timeStamp+"," +
"token:"+token) + ","
+ fedexc.toString()
);
TIClearApiCheckLog tiClearApiCheckLogSave = iClearApiCheckLogRepository.save(tIclearApiCheckLog);
log.info("checkBASFMawbFedex:"+fedexc.toString());
log.info("appId:{},appKey:{},timeStamp:{},token:{}",appId,appKey,timeStamp,token);
ResultRS result = fedexService.checkBasfInterfaceData(fedexc);
StopWatch sw = new StopWatch("checkBASFMawbFedex");
sw.start("generate FedexMawb");
fedexc.setAppId(appId);
FedexMawb saveMawbFedexResult = fedexService.generateFedexMawb(fedexc);
sw.stop();
sw.start("checkFedexMawb");
String msg = result.getMsg();
String iclearCheckMsg = fedexService.checkFedexMawb(saveMawbFedexResult).getMsg();
result.setMsg(msg+";"+iclearCheckMsg);
sw.stop();
log.info(sw.prettyPrint());
if(result.getSuccess()){
result.setSuccess(Boolean.TRUE);
result.setCode("0");
}
tiClearApiCheckLogSave.setResponseText(result.getMsg());
tiClearApiCheckLogSave.setCode(result.getCode());
tiClearApiCheckLogSave.setSuccess(result.getSuccess());
iClearApiCheckLogRepository.save(tiClearApiCheckLogSave);
log.info(result.toString());
return result;
}
@ApiOperation(value = "Fedex推送运单数据", httpMethod = "POST", notes = "ex: http://192.168.1.75:8080/fedex/sendMawbFedex")
@PostMapping("/sendMawbFedex")
@ResponseBody
......@@ -283,4 +348,5 @@ public class FedexDataInterface {
result.setCode("0");
return result;
}
}
......
package com.erry.iclear.dateInterface.entity;
import com.erry.iclear.dateInterface.common.BaseModel;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
/**
* BASF校验接口日志表
*/
@Entity
@Table(name = "T_ICLEAR_API_CHECK_LOG")
@Data
public class TIClearApiCheckLog extends BaseModel {
@Id
@GeneratedValue
@Column(name = "ID" )
private Long id;
@Column(name = "request_appid" )
private String requestAppid;
@Column(name = "request_appkey" )
private String requestAppkey;
@Column(name = "request_token" )
private String requestToken;
@Column(name = "consignment_code" )
private String consignmentCode;
@Column(name = "request_text" )
private String requestText;
@Column(name = "response_text" )
private String responseText;
@Column(name = "request_ip" )
private String requestIp;
@Column(name = "create_time" )
private Date createTime;
@Column(name = "success" )
private Boolean success;
@Column(name = "code" )
private String code;
}
package com.erry.iclear.dateInterface.repository;
import com.erry.iclear.dateInterface.entity.IClearApiLog;
import com.erry.iclear.dateInterface.entity.TIClearApiCheckLog;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
/**
* @author Administrator
*/
@DynamicUpdate
@DynamicInsert
@Repository
@Transactional(rollbackFor = Exception.class)
public interface IClearApiCheckLogRepository extends JpaRepository<TIClearApiCheckLog, Integer>, JpaSpecificationExecutor<TIClearApiCheckLog> {
}
......@@ -11,15 +11,22 @@ import com.erry.iclear.dateInterface.entity.ChmConsignmentDetail;
import com.erry.iclear.dateInterface.repository.FedexMawbRepository;
import com.erry.iclear.dateInterface.util.JsonToJava;
import com.google.gson.Gson;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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 javax.persistence.*;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author Administrator
......@@ -50,6 +57,16 @@ public class FedexService {
FedexMawb result=null;
try{
log.info("saveMawb start>>>>>>>>>>>");
FedexMawb fedexMawb = this.generateFedexMawb(fedexc);
result = fedexMawbRepository.save(fedexMawb);
log.info("saveMawb end>>>>>>>>>>>");
}catch (Exception e){
log.error("saveMawb() error:"+e.getMessage());
}
return result;
}
public FedexMawb generateFedexMawb(Fedexc fedexc){
//运单头部信息
FedexMawb fedexMawb = new FedexMawb();
fedexMawb.setAppId(fedexc.getAppId());
......@@ -75,7 +92,8 @@ public class FedexService {
fedexMawb.setEanNo(fedexc.getEanNo());
//明细
List<FedexMawbDetail> mawbDetailList = new ArrayList<>();
if (fedexc.getConsignmentList().size()>0){
List<FedexDetail> consignmentList = fedexc.getConsignmentList();
if (Objects.nonNull(consignmentList) &&consignmentList.size()>0){
for (FedexDetail fedexcDetail : fedexc.getConsignmentList()){
FedexMawbDetail mawbDetail = new FedexMawbDetail();
mawbDetail.setDetailId(String.valueOf(fedexcDetail.getConsignmentDetailId()));
......@@ -95,12 +113,8 @@ public class FedexService {
}
}
fedexMawb.setMawbDetailList(mawbDetailList);
result = fedexMawbRepository.save(fedexMawb);
log.info("saveMawb end>>>>>>>>>>>");
}catch (Exception e){
log.error("saveMawb() error:"+e.getMessage());
}
return result;
return fedexMawb;
}
/**
......@@ -145,7 +159,56 @@ public class FedexService {
result.setMsg(iclearCheckResponseResult.getMessage());
log.info("<<<<<<<< checkMawb start >>>>>>>>>> mawb:"+gson.toJson(fedexMawb) +" result :" +result.getSuccess() +" iclear check response : " + json + " status : " + result.getSuccess());
}catch (Exception e){
log.error("checkMawb() error:" + e.getMessage());
log.error("checkMawb() error:",e);
}
return result;
}
/**
* 校验BASF接口信息
* @param fedexc
* @return
*/
public ResultRS checkBasfInterfaceData(Fedexc fedexc){
ResultRS result = new ResultRS(Boolean.FALSE,"","");
if(Objects.equals(fedexc,null)){
result.setCode("-7");
result.setMsg("请求信息不能为空");
}else{
List<String> msgList = new ArrayList<>();
// 参数consignmentCode不能为空
String consignmentCode = fedexc.getConsignmentCode();
if(StringUtils.isEmpty(consignmentCode)){
msgList.add("参数consignmentCode不能为空");
}
// 参数consignmentId不能为空
Long consignmentId = fedexc.getConsignmentId();
if(Objects.isNull(consignmentId)){
msgList.add("参数consignmentId不能为空");
}
// 参数consType不能为空
String consType = fedexc.getConsType();
if(StringUtils.isEmpty(consType)){
msgList.add("参数consType不能为空");
}
// 参数sender不能为空
String sender = fedexc.getSender();
if(StringUtils.isEmpty(sender)){
msgList.add("参数sender不能为空");
}
// 参数shipperSCC不能为空
String shipperSCC = fedexc.getShipperSCC();
if(StringUtils.isEmpty(shipperSCC)){
msgList.add("参数shipperSCC不能为空");
}
if(msgList.size() > 0){
String join = msgList.stream().collect(Collectors.joining(";"));
result.setCode("-7");
result.setMsg(join);
}
}
return result;
}
......
spring:
datasource:
url: jdbc:sqlserver://40.73.78.157:1433;DatabaseName=IClearDev
url: jdbc:sqlserver://40.73.78.157:1433;DatabaseName=IClearUat
username: sa
password: Fedex_123
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
......