diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java index e5d8e6cf..0737e992 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.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", "发票开具请求数据错误,订单请求流水号已存在"), diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java index 3b544f0d..ab3feb30 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java @@ -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:发票修复数据) diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestApiV6.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestApiV6.java index c1c7b1f0..6ece7b1a 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestApiV6.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestApiV6.java @@ -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)){ //订单和发票数据查询接口 diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/EsOutput.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/EsOutput.java new file mode 100644 index 00000000..5f5bc2a4 --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/EsOutput.java @@ -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; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/IsInput.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/IsInput.java new file mode 100644 index 00000000..0a5bdb1c --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/IsInput.java @@ -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; + +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/PoCommonRequestParam.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/PoCommonRequestParam.java new file mode 100644 index 00000000..eeb66776 --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/PoCommonRequestParam.java @@ -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; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/PoCommonResponseParam.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/PoCommonResponseParam.java new file mode 100644 index 00000000..9ac87b40 --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/PoCommonResponseParam.java @@ -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; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjMxSap.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjMxSap.java new file mode 100644 index 00000000..9757bb1b --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjMxSap.java @@ -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; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjReqSap.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjReqSap.java new file mode 100644 index 00000000..2be894ee --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/generateinvoice/sap/FpkjReqSap.java @@ -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; + + +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java index 42a16322..6e767119 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java @@ -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 ddzxxList = new ArrayList<>(); + DdzxxBO ddzxxBO = new DdzxxBO(); + DdtxxBO ddtxxBO = new DdtxxBO(); + List 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; + } }