feat: 发票开具对外接口适配SAP

release
liufeilong 2 years ago
parent 23f74cc197
commit f0e7b01dd4
  1. 2
      order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java
  2. 6
      order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java
  3. 9
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestApiV6.java
  4. 32
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/EsOutput.java
  5. 57
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/IsInput.java
  6. 16
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/PoCommonRequestParam.java
  7. 16
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/PoCommonResponseParam.java
  8. 68
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjMxSap.java
  9. 91
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjReqSap.java
  10. 57
      order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java

@ -1856,6 +1856,8 @@ public enum OrderInfoContentEnum {
/**
* 发票接口相关状态 V3
*/
INVOICE_ERROR_CODE_OP_S("S", "成功"),
INVOICE_ERROR_CODE_OP_E("E", "失败"),
INVOICE_ERROR_CODE_010000_V3("010000", "发票请求接收成功"),
INVOICE_ERROR_CODE_010001_V3("010001", "发票开具请求数据错误,订单请求批次号已存在"),
INVOICE_ERROR_CODE_010002_V3("010002", "发票开具请求数据错误,订单请求流水号已存在"),

@ -384,7 +384,11 @@ public enum OrderInfoEnum {
ORDER_SOURCE_8("8", "供应链"),
ORDER_SOURCE_9("9", "发票修复"),
ORDER_SOURCE_10("10", "作废重开"),
/**
* 系统来源(SAP:SAP)
*/
SYS_SOURCE_SAP("SAP","SAP"),
/**
* 订单类型0:原始订单,1:拆分后订单,2:合并后订单,3:系统冲红订单,4:自动开票订单,5:作废重开订单;6:历史数据订单;7:发票修复数据

@ -12,6 +12,8 @@ import com.dxhy.order.constant.ConfigurerInfo;
import com.dxhy.order.consumer.constant.RespStatusEnum;
import com.dxhy.order.consumer.openapi.protocol.CheckResult;
import com.dxhy.order.consumer.openapi.protocol.CommonRequestParam;
import com.dxhy.order.consumer.openapi.protocol.po.PoCommonRequestParam;
import com.dxhy.order.consumer.openapi.protocol.po.PoCommonResponseParam;
import com.dxhy.order.consumer.openapi.protocol.v4.commodity.SpxxcxRspBO;
import com.dxhy.order.consumer.openapi.protocol.v4.commodity.SpxxtbReqBO;
import com.dxhy.order.consumer.openapi.protocol.v4.commodity.SpxxtbRspBO;
@ -27,6 +29,7 @@ import com.dxhy.order.consumer.openapi.protocol.v5.order.DdfpcxRspV5;
import com.dxhy.order.consumer.openapi.protocol.v5.order.DdpcxxRspV5;
import com.dxhy.order.consumer.openapi.protocol.v6.hzqrd.HzqrdRspV6;
import com.dxhy.order.consumer.openapi.service.*;
import com.dxhy.order.consumer.utils.BeanTransitionUtils;
import com.dxhy.order.exception.OrderReceiveException;
import com.dxhy.order.utils.JsonUtils;
import io.swagger.annotations.Api;
@ -190,9 +193,11 @@ public class InvoiceRestApiV6 {
if(ConfigurerInfo.GENERATE_QD_INVOICE.equals(interfaceName)){
//全电开票接口
DdpcxxReqBO ddpcxxReq = JsonUtils.getInstance().parseObject(reqStr, DdpcxxReqBO.class);
PoCommonRequestParam requestParam = JsonUtils.getInstance().parseObject(reqStr, PoCommonRequestParam.class);
DdpcxxReqBO ddpcxxReq = BeanTransitionUtils.transitionPoKpReq(requestParam);
DdpcxxRspV5 ddpcxxRspV5 = interfaceServiceV6.generateQdInvoiceV6(ddpcxxReq, secretId, null);
returnJsonString = JsonUtils.getInstance().toJsonString(ddpcxxRspV5);
PoCommonResponseParam poCommonResponseParam = BeanTransitionUtils.transitionPoKpResp(ddpcxxRspV5);
returnJsonString = JsonUtils.getInstance().toJsonString(poCommonResponseParam);
} else if (ConfigurerInfo.GETORDERINFOANDINVOICEINFO.equals(interfaceName)){
//订单和发票数据查询接口

@ -0,0 +1,32 @@
package com.dxhy.order.consumer.openapi.protocol.po;
import lombok.Data;
/**
* @Description: PO输出参数
* @Author liufeilong
* @Date 2023-02-06
**/
@Data
public class EsOutput {
/**
* 外围系统数据唯一标识
*/
private String BSKEY;
/**
* SAP数据唯一标识
*/
private String SAPKEY;
/**
* 数据处理标识(S成功E失败)
*/
private String ZTYPE;
/**
* 数据处理描述
*/
private String ZMESSAGE;
/**
* 业务报文
*/
private Object ZDATA;
}

@ -0,0 +1,57 @@
package com.dxhy.order.consumer.openapi.protocol.po;
import lombok.Data;
/**
* @Description: PO输入参数
* @Author liufeilong
* @Date 2023-02-06
**/
@Data
public class IsInput {
/**
* 外围系统
*/
private String SYSID;
/**
* 接口业务ID
*/
private String IFYWID;
/**
* 外围系统数据唯一标识
*/
private String BSKEY;
/**
* SAP数据唯一标识
*/
private String SAPKEY;
/**
* 组织机构代码
*/
private String ZORG;
/**
* SAP模块编码OA用
*/
private String ZFILED1;
/**
* 预留字段
*/
private String ZFILED2;
/**
* 预留字段
*/
private String ZFILED3;
/**
* 预留字段
*/
private String ZFILED4;
/**
* SAP Client
*/
private String ZFILED5;
/**
* 业务参数
*/
private Object ZDATA;
}

@ -0,0 +1,16 @@
package com.dxhy.order.consumer.openapi.protocol.po;
import lombok.Data;
/**
* @Description: PO接口公共请求参数
* @Author liufeilong
* @Date 2023-02-06
**/
@Data
public class PoCommonRequestParam {
/**
* IsInput
*/
private IsInput ISINPUT;
}

@ -0,0 +1,16 @@
package com.dxhy.order.consumer.openapi.protocol.po;
import lombok.Data;
/**
* @Description: PO接口公共响应参数
* @Author liufeilong
* @Date 2023-02-06
**/
@Data
public class PoCommonResponseParam {
/**
* ES_OUTPUT
*/
private EsOutput ESOUTPUT;
}

@ -0,0 +1,68 @@
package com.dxhy.order.consumer.openapi.protocol.po.generateinvoice.sap;
import lombok.Data;
/**
* @Description: SAP发票开具明细实体
* @Author liufeilong
* @Date 2023-02-06
**/
@Data
public class FpkjMxSap {
/**
* 结算单号
*/
private String ZJSDH;
/**
* 结算单行号
*/
private String ZJSDHH;
/**
* 一般标记
*/
private String ZSFZKH;
/**
* 物料编号
*/
private String MATNR;
/**
* 数量单位
*/
private String ZSLDW;
/**
* 数量
*/
private String ZZSL;
/**
* 税额
*/
private String ZTAX;
/**
* 单价(SAP)
*/
private String ZZDJ;
/**
* 不含税金额(SAP)
*/
private String ZBHSJE;
/**
* 税额(SAP)
*/
private String ZZSE;
/**
* 含税金额
*/
private String ZHSJE;
/**
* 产品名称
*/
private String ZCPMC;
/**
* 批号
*/
private String CHARG;
/**
* 矿别
*/
private String KTYPE;
}

@ -0,0 +1,91 @@
package com.dxhy.order.consumer.openapi.protocol.po.generateinvoice.sap;
import com.dxhy.order.consumer.openapi.protocol.po.PoCommonRequestParam;
import lombok.Data;
/**
* @Description: SAP发票开具请求实体
* @Author liufeilong
* @Date 2023-02-06
**/
@Data
public class FpkjReqSap {
/**
* 结算单号
*/
private String ZJSDH;
/**
* 报账单号
*/
private String ZBZDH;
/**
* 数据来源
*/
private String ZSJLY;
/**
* 操作状态
*/
private String ZCZZT;
/**
* 发票类型
*/
private String ZFPLX;
/**
* 公司代码
*/
private String BUKRS;
/**
* 购方编码
*/
private String ZGFBH;
/**
* 不含税金额(SAP)
*/
private String ZBHSJE;
/**
* 税额(SAP)
*/
private String ZZSE;
/**
* 含税金额
*/
private String ZHSJE;
/**
* 备注
*/
private String ZZBZ;
/**
* 收款人名称
*/
private String ZSKRXM;
/**
* 复核人姓名
*/
private String ZFHRXM;
/**
* 开票人姓名
*/
private String ZKPRXM;
/**
* 是否红字
*/
private String ZSFHZ;
/**
* 员工姓名
*/
private String PENAM;
/**
* 开票凭证号
*/
private String ZKPPZH;
/**
* 凭证中的过账日期
*/
private String ZGZRQ;
/**
* 行项目结构
*/
private FpkjMxSap ITITEM;
}

@ -14,6 +14,11 @@ import com.dxhy.order.consumer.openapi.protocol.Response;
import com.dxhy.order.consumer.openapi.protocol.cpy.*;
import com.dxhy.order.consumer.openapi.protocol.invoice.DeprecateInvoicesRspBO;
import com.dxhy.order.consumer.openapi.protocol.order.*;
import com.dxhy.order.consumer.openapi.protocol.po.EsOutput;
import com.dxhy.order.consumer.openapi.protocol.po.IsInput;
import com.dxhy.order.consumer.openapi.protocol.po.PoCommonRequestParam;
import com.dxhy.order.consumer.openapi.protocol.po.PoCommonResponseParam;
import com.dxhy.order.consumer.openapi.protocol.po.generateinvoice.sap.FpkjReqSap;
import com.dxhy.order.consumer.openapi.protocol.sld.*;
import com.dxhy.order.consumer.openapi.protocol.v4.commodity.SpxxBO;
import com.dxhy.order.consumer.openapi.protocol.v4.commodity.SpxxtbReqBO;
@ -22,6 +27,7 @@ import com.dxhy.order.consumer.openapi.protocol.v4.invalid.ZfxxRspBO;
import com.dxhy.order.consumer.openapi.protocol.v4.invoice.*;
import com.dxhy.order.consumer.openapi.protocol.v4.order.*;
import com.dxhy.order.consumer.openapi.protocol.v4.taxequipment.SksbxxtbReqBO;
import com.dxhy.order.consumer.openapi.protocol.v5.order.DdpcxxRspV5;
import com.dxhy.order.consumer.openapi.protocol.v6.order.QdFjysBO;
import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO;
import com.dxhy.order.exception.OrderReceiveException;
@ -3188,5 +3194,56 @@ public class BeanTransitionUtils {
orderInvoiceInfo.setEmailPushStatus(oldOrderInvoiceInfo.getEmailPushStatus());
return orderInvoiceInfo;
}
/**
* @Description: 将PO接口开票请求参数转换成标准开票请求参数
* @Param: [requestParam]
* @Return: com.dxhy.order.consumer.openapi.protocol.v4.order.DdpcxxReqBO
* @Author: liufeilong
* @Date: 2023-02-06
*/
public static DdpcxxReqBO transitionPoKpReq(PoCommonRequestParam requestParam){
DdpcxxReqBO ddpcxxReqBO = new DdpcxxReqBO();
DdpcxxBO ddpcxxBO = new DdpcxxBO();
List<DdzxxBO> ddzxxList = new ArrayList<>();
DdzxxBO ddzxxBO = new DdzxxBO();
DdtxxBO ddtxxBO = new DdtxxBO();
List<DdmxxxBO> ddmxList = new ArrayList<>();
if(OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(requestParam.getISINPUT().getSYSID())){
IsInput isinput = requestParam.getISINPUT();
FpkjReqSap req = (FpkjReqSap)isinput.getZDATA();
ddpcxxBO.setDDQQPCH(isinput.getSAPKEY());
//TODO lfl 20230206 业务数据待转换
}
ddzxxBO.setDDTXX(ddtxxBO);
ddzxxBO.setDDMXXX(ddmxList);
ddzxxList.add(ddzxxBO);
ddpcxxReqBO.setDDPCXX(ddpcxxBO);
return ddpcxxReqBO;
}
/**
* @Description: 将标准开票响应参数转换成PO接口开票响应参数
* @Param: [ddpcxxRspV5]
* @Return: com.dxhy.order.consumer.openapi.protocol.po.PoCommonResponseParam
* @Author: liufeilong
* @Date: 2023-02-06
*/
public static PoCommonResponseParam transitionPoKpResp(DdpcxxRspV5 ddpcxxRspV5){
PoCommonResponseParam poCommonResponseParam = new PoCommonResponseParam();
EsOutput esOutput = new EsOutput();
esOutput.setBSKEY(ddpcxxRspV5.getDDQQPCH());
esOutput.setSAPKEY(ddpcxxRspV5.getDDQQPCH());
if(OrderInfoContentEnum.INVOICE_ERROR_CODE_010000_V3.getKey().equals(ddpcxxRspV5.getZTDM())){
esOutput.setZTYPE(OrderInfoContentEnum.INVOICE_ERROR_CODE_OP_S.getKey());
}else{
esOutput.setZTYPE(OrderInfoContentEnum.INVOICE_ERROR_CODE_OP_E.getKey());
}
esOutput.setZMESSAGE(ddpcxxRspV5.getZTXX());
poCommonResponseParam.setESOUTPUT(esOutput);
return poCommonResponseParam;
}
}

Loading…
Cancel
Save