Jiaqi.xu

BASF申报接口

package com.erry.iclear.dateInterface.api;
import com.alibaba.fastjson.JSON;
import com.erry.iclear.dateInterface.api.request.BasfConsignment;
import com.erry.iclear.dateInterface.api.request.BasfMawb;
import com.erry.iclear.dateInterface.api.request.Basfc;
import com.erry.iclear.dateInterface.api.request.ConsignmentCode;
import com.erry.iclear.dateInterface.api.response.BasfResultRS;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.entity.DeclaredInfo;
import com.erry.iclear.dateInterface.entity.IClearApiLog;
import com.erry.iclear.dateInterface.service.BasfService;
import com.erry.iclear.dateInterface.service.ChmConsignmentService;
import com.erry.iclear.dateInterface.service.DeclaredInfoService;
import com.erry.iclear.dateInterface.service.IClearApiLogService;
import com.erry.iclear.dateInterface.service.*;
import com.erry.iclear.dateInterface.util.StringUtil;
import com.google.gson.Gson;
import io.swagger.annotations.ApiOperation;
......@@ -42,6 +42,12 @@ public class BasfDataInterface {
@Autowired
private DeclaredInfoService declaredInfoService;
@Autowired
private BasfConsignmentService basfConsignmentService;
@Autowired
private DeclearTaskService declearTaskService;
@ApiOperation(value = "BASF推送运单数据", httpMethod = "POST", notes = "ex: http://192.168.1.75:8080/customs/sendMawbBasf")
@PostMapping("/sendMawbBasf")
@ResponseBody
......@@ -134,10 +140,10 @@ public class BasfDataInterface {
@ApiOperation(value = "BASF获取申报信息", httpMethod = "POST", notes = "ex: http://192.168.1.75:8080/customs/selectDecListBasf")
@PostMapping("/selectDecListBasf")
@ResponseBody
public ResultRS selectDecListBasf(HttpServletRequest request
, @Validated @RequestBody ConsignmentCode consignmentCode) {
public BasfResultRS selectDecListBasf(HttpServletRequest request
, @Validated @RequestBody ConsignmentCode consignmentCode) throws Exception {
log.info("接收到请求数据consignmentCode:"+consignmentCode.getConsignmentCode()+" data:" + gson.toJson(consignmentCode));
ResultRS result = new ResultRS(Boolean.FALSE,"","");
BasfResultRS result = new BasfResultRS(Boolean.FALSE,"","","");
//获取请求的运单号
String[] splitConsignment = StringUtil.split(consignmentCode.getConsignmentCode(),",");
if(splitConsignment.length > 20){
......@@ -158,20 +164,32 @@ public class BasfDataInterface {
String timeStamp=(String) request.getHeader("TimeStamp");
//记录请求的运单
IClearApiLog saveIClearApiLogResult = iClearApiLogService.saveIClearApiLog(iClearApiLogService.convertToIClearApiLogCselect(consignmentCode.getConsignmentCode(),appId,appKey,new Date(Long.valueOf(timeStamp))));
//日志的ID放入到回执日志中对应
saveIClearApiLogResult.getMsgId();
//查询请求需要得运单申报信息
List<DeclaredInfo> declaredInfos = declaredInfoService.selectDeclaredInfo(splitConsignment);
if(declaredInfos.size()>0){
for (int i= 0;i<declaredInfos.size();i++){
}
}
//构造返回数据
List<BasfConsignment> basfConsignments = basfConsignmentService.basfConsignmentList(declaredInfos);
//返回申报数据
if(basfConsignments.size() > 0){
result.setSuccess(Boolean.TRUE);
result.setConsignmentList(JSON.toJSONString(basfConsignments));
result.setMsg("操作成功!");
}else{
result.setSuccess(Boolean.TRUE);
result.setMsg("操作成功,无申报数据!");
}
//更新记录的请求信息
//记录返回得申报数据记录
if(!Objects.equals(saveIClearApiLogResult,null)){
saveIClearApiLogResult.setReceiveResult(result.getSuccess().toString());
saveIClearApiLogResult.setErrorCode(result.getCode());
saveIClearApiLogResult.setResponseTime(new Date());
saveIClearApiLogResult.setSpendTime(sw.getTotalTimeMillis());
iClearApiLogService.updateIClearApiLog(saveIClearApiLogResult);
}
//记录返回的申报数据记录
if(result.getSuccess()){
declearTaskService.insertDeclareTask(basfConsignments, saveIClearApiLogResult.getMsgId());
}
log.info("BASF申报数据请求成功!");
//6、return result
result.setSuccess(Boolean.TRUE);
result.setCode("0");
......
package com.erry.iclear.dateInterface.api.request;
import java.io.Serializable;
import java.util.List;
/**
* BASF申报数据构造 2021年11月9日 xjq
*/
public class BasfConsignment implements Serializable {
/**
* 运单号
*/
private String consignmnentCode;
/**
* 运单ID
*/
private Long consignmentId;
/**
* 运单类型
*/
private String consType;
/**
* 发件人(生产核销单位)名称
*/
private String sender;
/**
* 发件人(生产核销单位)海关编码
*/
private String shipperCustomsCode;
/**
* 发件人(生产核销单位)社会信用证代码
*/
private String shipperSCC;
/**
* 经营单位(境内发货人)
*/
private String operateUnitName;
/**
* 经营单位(境内发货人)海关编码
*/
private String operateUnitCode;
/**
* 经营单位(境内发货人)社会信用证代码
*/
private String operateSCC;
/**
* 运单明细(最多20条明细)
*/
private List<ConsignmentDetail> ConsignmentList;
public String getConsignmnentCode() {
return consignmnentCode;
}
public void setConsignmnentCode(String consignmnentCode) {
this.consignmnentCode = consignmnentCode;
}
public Long getConsignmentId() {
return consignmentId;
}
public void setConsignmentId(Long consignmentId) {
this.consignmentId = consignmentId;
}
public String getConsType() {
return consType;
}
public void setConsType(String consType) {
this.consType = consType;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getShipperCustomsCode() {
return shipperCustomsCode;
}
public void setShipperCustomsCode(String shipperCustomsCode) {
this.shipperCustomsCode = shipperCustomsCode;
}
public String getShipperSCC() {
return shipperSCC;
}
public void setShipperSCC(String shipperSCC) {
this.shipperSCC = shipperSCC;
}
public String getOperateUnitName() {
return operateUnitName;
}
public void setOperateUnitName(String operateUnitName) {
this.operateUnitName = operateUnitName;
}
public String getOperateUnitCode() {
return operateUnitCode;
}
public void setOperateUnitCode(String operateUnitCode) {
this.operateUnitCode = operateUnitCode;
}
public String getOperateSCC() {
return operateSCC;
}
public void setOperateSCC(String operateSCC) {
this.operateSCC = operateSCC;
}
public List<ConsignmentDetail> getConsignmentList() {
return ConsignmentList;
}
public void setConsignmentList(List<ConsignmentDetail> consignmentList) {
ConsignmentList = consignmentList;
}
}
package com.erry.iclear.dateInterface.api.request;
import java.io.Serializable;
import java.math.BigDecimal;
public class ConsignmentDetail implements Serializable {
/**
* 商品编号
*/
private String skuCode;
/**
* 品名
*/
private String skuName;
/**
* 规格型号
*/
private String model;
/**
* 成交数量
*/
private BigDecimal knockdownNumber;
/**
* 成交单位
*/
private String knockdownUnit;
/**
* 第一(法定)数量
*/
private BigDecimal qtyLegalFirst;
/**
* 第一(法定)计量单位
*/
private String unitLegalFirst;
/**
* 第二(法定)数量
*/
private BigDecimal qtyLegalSecond;
/**
* 第二(法定)计量单位
*/
private String unitLegalSecond;
/**
* 申报金额
*/
private BigDecimal declaredAmount;
/**
* 币制
*/
private String currency;
/**
* 申报重量
*/
private BigDecimal declaredWeight;
public String getSkuCode() {
return skuCode;
}
public void setSkuCode(String skuCode) {
this.skuCode = skuCode;
}
public String getSkuName() {
return skuName;
}
public void setSkuName(String skuName) {
this.skuName = skuName;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public BigDecimal getKnockdownNumber() {
return knockdownNumber;
}
public void setKnockdownNumber(BigDecimal knockdownNumber) {
this.knockdownNumber = knockdownNumber;
}
public String getKnockdownUnit() {
return knockdownUnit;
}
public void setKnockdownUnit(String knockdownUnit) {
this.knockdownUnit = knockdownUnit;
}
public BigDecimal getQtyLegalFirst() {
return qtyLegalFirst;
}
public void setQtyLegalFirst(BigDecimal qtyLegalFirst) {
this.qtyLegalFirst = qtyLegalFirst;
}
public String getUnitLegalFirst() {
return unitLegalFirst;
}
public void setUnitLegalFirst(String unitLegalFirst) {
this.unitLegalFirst = unitLegalFirst;
}
public BigDecimal getQtyLegalSecond() {
return qtyLegalSecond;
}
public void setQtyLegalSecond(BigDecimal qtyLegalSecond) {
this.qtyLegalSecond = qtyLegalSecond;
}
public String getUnitLegalSecond() {
return unitLegalSecond;
}
public void setUnitLegalSecond(String unitLegalSecond) {
this.unitLegalSecond = unitLegalSecond;
}
public BigDecimal getDeclaredAmount() {
return declaredAmount;
}
public void setDeclaredAmount(BigDecimal declaredAmount) {
this.declaredAmount = declaredAmount;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public BigDecimal getDeclaredWeight() {
return declaredWeight;
}
public void setDeclaredWeight(BigDecimal declaredWeight) {
this.declaredWeight = declaredWeight;
}
}
package com.erry.iclear.dateInterface.api.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
/**
* @author Administrator
*/
@Data
@AllArgsConstructor
public class BasfResultRS implements Serializable {
//成功标识
private Boolean success = true;
private String code;
//错误信息
private String msg;
//Object data;
private String consignmentList;
}
......@@ -65,4 +65,7 @@ public class DeclearTask implements Serializable {
@Column(name = "RESPONSE_CONTENT")
private String responseContent;
@Column(name = "DECELEAR_INFO_ID")
private String decelearInfoId;
}
\ No newline at end of file
......
......@@ -20,6 +20,6 @@ public interface DeclaredInfoRepository extends JpaRepository<DeclaredInfo, Inte
* 根据运单号在申报数据表中查询数据
* @return
*/
@Query(nativeQuery = true, value = "select * from T_DECLARED_INFO where CONSIGNMENT_ID IN (SELECT * FROM T_CHM_CONSIGNMENT WHERE T_CHM_CONSIGNMENT.CONSIGNMENT_CODE IN ?1)")
@Query(nativeQuery = true, value = "select * from T_DECLARED_INFO where CONSIGNMENT_ID IN (SELECT MAX(ID)AS ID FROM T_CHM_CONSIGNMENT WHERE CONSIGNMENT_CODE IN ?1 group by CONSIGNMENT_CODE)")
public List<DeclaredInfo> getDeclaredInfoByAll(List<String> consignmentCodeList);
}
......
package com.erry.iclear.dateInterface.service;
import com.erry.iclear.dateInterface.api.request.BasfConsignment;
import com.erry.iclear.dateInterface.api.request.ConsignmentDetail;
import com.erry.iclear.dateInterface.entity.DeclaredInfo;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class BasfConsignmentService {
public List<BasfConsignment> basfConsignmentList(List<DeclaredInfo> consignment){
List<BasfConsignment> basfConsignmentList = new ArrayList<>();
try{
if(consignment.size()>0){
String consignmentCode = null;
List<ConsignmentDetail> consignmentDetails = new ArrayList<>();
BasfConsignment basfConsignment = new BasfConsignment();
for (DeclaredInfo declaredInfo : consignment){
if(!declaredInfo.getConsignmentCode().equals(consignmentCode)) {
if(consignmentCode != null){
basfConsignment.setConsignmentList(consignmentDetails);
consignmentDetails = new ArrayList<>();
basfConsignmentList.add(basfConsignment);
basfConsignment = new BasfConsignment();
}
consignmentCode = declaredInfo.getConsignmentCode();
basfConsignment.setConsignmnentCode(declaredInfo.getConsignmentCode());
basfConsignment.setConsignmentId(declaredInfo.getConsignmentId());
basfConsignment.setConsType(declaredInfo.getConsType());
basfConsignment.setOperateUnitName(declaredInfo.getOperateUnitName());
basfConsignment.setOperateUnitCode(declaredInfo.getOperateUnitCode());
basfConsignment.setOperateSCC(declaredInfo.getTradeCoSCC());
basfConsignment.setSender(declaredInfo.getSender());
basfConsignment.setShipperCustomsCode(declaredInfo.getOwnerCode());
basfConsignment.setShipperSCC(declaredInfo.getOwnerCodeScc());
}
ConsignmentDetail consignmentDetail = new ConsignmentDetail();
consignmentDetail.setSkuCode(declaredInfo.getSkuCode());
consignmentDetail.setSkuName(declaredInfo.getModel().substring(declaredInfo.getModel().indexOf(":")+1,declaredInfo.getModel().indexOf("|")));
String[] models = declaredInfo.getModel().split("\\|");
String mdoel = "";
for(int i = 1; i < models.length; i++){
mdoel += models[i].substring(models[i].indexOf(":")+1)+"|";
}
consignmentDetail.setModel(mdoel);
consignmentDetail.setKnockdownNumber(declaredInfo.getKnockdownNumber());
consignmentDetail.setKnockdownUnit(declaredInfo.getKnockdownUnitDic().getExt2());
consignmentDetail.setQtyLegalFirst(declaredInfo.getQtyLegalFirst());
consignmentDetail.setUnitLegalFirst(declaredInfo.getUnitLegalFirstDic().getExt2());
consignmentDetail.setQtyLegalSecond(declaredInfo.getQtyLegalSecond());
consignmentDetail.setUnitLegalSecond(declaredInfo.getUnitLegalSecondDic() == null ? null : declaredInfo.getUnitLegalSecondDic().getExt2());
consignmentDetail.setDeclaredAmount(declaredInfo.getDeclaredAmount());
consignmentDetail.setCurrency(declaredInfo.getCurrencyDic().getExt2());
consignmentDetail.setDeclaredWeight(declaredInfo.getDeclaredWeight());
consignmentDetails.add(consignmentDetail);
}
basfConsignment.setConsignmentList(consignmentDetails);
basfConsignmentList.add(basfConsignment);
}
}catch (Exception e){
e.printStackTrace();
}
return basfConsignmentList;
}
}
package com.erry.iclear.dateInterface.service;
import com.erry.iclear.dateInterface.api.request.BasfConsignment;
import com.erry.iclear.dateInterface.common.BaseModel;
import com.erry.iclear.dateInterface.entity.ChmConsignment;
import com.erry.iclear.dateInterface.entity.DeclearTask;
import com.erry.iclear.dateInterface.repository.DeclearTaskRepository;
import com.erry.iclear.dateInterface.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* xjq 2021年11月11日
*/
@Service
@Slf4j
@Transactional(rollbackOn = Exception.class)
public class DeclearTaskService{
@Autowired
private DeclearTaskRepository declareTaskRepository;
public void insertDeclareTask(List<BasfConsignment> basfConsignments, Long logId) throws Exception {
List<DeclearTask> declareTaskList = new ArrayList<>();
try{
if (basfConsignments.size()>0){
for (BasfConsignment basfConsignment : basfConsignments) {
DeclearTask declareTask = new DeclearTask();
declareTask.setChmsignmentId(BigDecimal.valueOf(basfConsignment.getConsignmentId()));
declareTask.setChmsignmentCode(basfConsignment.getConsignmnentCode());
declareTask.setOperationTime(new Date());
declareTask.setFileType("1");
declareTask.setOperationName("root");
declareTask.setDataSource(String.valueOf(3));
declareTask.setResponseTime(new Date());
declareTask.setResponseResults("true");
declareTask.setDecelearInfoId(String.valueOf(logId));
declareTaskList.add(declareTask);
}
declareTaskRepository.saveAll(declareTaskList);
}
}catch (Exception e){
e.printStackTrace();
}
}
}