From 6b70e09022def96962493b9d7908468d96947d2a Mon Sep 17 00:00:00 2001 From: liufeilong Date: Thu, 23 Feb 2023 19:21:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8E=A5=E5=85=A5PO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baseservice/config/BaseServiceConfig.java | 12 ++++ .../order/constant/ConfigureConstant.java | 2 + .../java/com/dxhy/order/utils/HttpUtils.java | 11 ++++ .../service/impl/PushInvoiceServiceImpl.java | 14 +++-- .../openapi/api/InvoiceOpenGateRestApi.java | 58 +++++++++++++++++++ .../openapi/api/InvoiceRestApiV6.java | 9 ++- .../consumer/openapi/protocol/po/IsInput.java | 2 +- .../openapi/service/InterfaceServiceV6.java | 9 +++ .../service/impl/InterfaceServiceImplV6.java | 20 +++++++ .../consumer/utils/BeanTransitionUtils.java | 9 ++- 10 files changed, 131 insertions(+), 15 deletions(-) diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java index a05e41a3..b6c1b6c3 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java @@ -212,6 +212,18 @@ public class BaseServiceConfig { */ @Value("${order.openApiNew.apiUrl:}") private String openApiNewApiUrl; + + /** + * 调用山能PO username + */ + @Value("${order.push.po:userName:}") + private String poUserName; + + /** + * 调用山能PO password + */ + @Value("${order.push.po:password:}") + private String poPassword; /** diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/ConfigureConstant.java b/order-management-common/src/main/java/com/dxhy/order/constant/ConfigureConstant.java index 9a79ac47..3a52b82e 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/ConfigureConstant.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/ConfigureConstant.java @@ -463,6 +463,8 @@ public class ConfigureConstant { * 详见对应正数发票及清单 */ public final static String XJZSXHQD = "详见对应正数发票及清单"; + + public final static String POTOKEN = "6_ca323ed526e74edea7e023c0733a9bef"; /** * 数值类型 diff --git a/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java b/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java index 6b37c6f9..01a23b97 100644 --- a/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java +++ b/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java @@ -72,5 +72,16 @@ public class HttpUtils { log.debug("{}以字符串调用get请求url:{},耗时:{}", LOGGER_MSG, url, endTime - startTime); return body; } + + //请求山能PO + public static String sendPo(String url, String request,String userName,String password) { + long startTime = System.currentTimeMillis(); + HttpRequest httpRequest = new HttpRequest(url); + httpRequest.basicAuth(userName,password); + String body = httpRequest.body(request).timeout(300000).execute().body(); + long endTime = System.currentTimeMillis(); + log.debug("{}以字符串调用post请求url:{},耗时:{}", LOGGER_MSG, url, endTime - startTime); + return body; + } } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java index 1b9b09a8..43e57832 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; +import com.dxhy.order.baseservice.config.BaseServiceConfig; import com.dxhy.order.baseservice.module.thirdservice.rabbitmq.service.RabbitMqSendMessageService; import com.dxhy.order.baseservice.module.thirdservice.redis.service.RedisService; import com.dxhy.order.baseservice.module.thirdservice.simsback.service.SimsBackService; @@ -149,6 +150,9 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { @Resource private OrderCommonService apiInvoiceCommonMapperService; + + @Resource + private BaseServiceConfig baseServiceConfig; @Override public R pushRouting(String pushMsg) { @@ -379,7 +383,7 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { String result = ""; if (ConfigurerInfo.INTERFACE_VERSION_V5.equals(pushInfo.getVersionIdent()) || ConfigurerInfo.INTERFACE_VERSION_V6.equals(pushInfo.getVersionIdent())) { - result = HttpUtils.doPost(pushInfo.getPushUrl(), fptsParam); + result = HttpUtils.sendPo(pushInfo.getPushUrl(), fptsParam,baseServiceConfig.getPoUserName(),baseServiceConfig.getPoPassword()); } else { result = HttpUtils.doPost(pushInfo.getPushUrl(), requestMap); } @@ -867,7 +871,7 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { if(OrderInfoEnum.INTERFACE_TYPE_INVOICE_PUSH_STATUS_1.getKey().equals(fpTsMqData.getPushType())){ //发票开具推送 if(OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(xtly)){ - DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content, DdfpzxxV5.class); + DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content.substring(1,content.length()-1), DdfpzxxV5.class); DdfpxxV5 ddfpxx = ddfpzxxV5.getDDFPXX(); List ddmxxx = ddfpzxxV5.getDDMXXX(); FpkjtsReqSap fpkjtsReqSap = new FpkjtsReqSap(); @@ -925,8 +929,7 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { isInput.setZORG(""); isInput.setZFILED5(""); String jsonString = JsonUtils.getInstance().toJsonString(fpkjtsReqSap); - Map map = JsonUtils.getInstance().parseObject(jsonString, Map.class); - isInput.setZDATA(map); + isInput.setZDATA(jsonString); PoCommonRequestParam poCommonRequestParam = new PoCommonRequestParam(); poCommonRequestParam.setISINPUT(isInput); @@ -948,8 +951,7 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { isInput.setZORG(""); isInput.setZFILED5(""); String jsonString = JsonUtils.getInstance().toJsonString(fpzftsReqSap); - Map map = JsonUtils.getInstance().parseObject(jsonString, Map.class); - isInput.setZDATA(map); + isInput.setZDATA(jsonString); PoCommonRequestParam poCommonRequestParam = new PoCommonRequestParam(); poCommonRequestParam.setISINPUT(isInput); diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java index 2dd0f017..908e0adb 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java @@ -2,7 +2,15 @@ package com.dxhy.order.consumer.openapi.api; import com.dxhy.order.constant.ConfigureConstant; import com.dxhy.order.constant.ConfigurerInfo; +import com.dxhy.order.constant.OrderInfoContentEnum; +import com.dxhy.order.constant.OrderInfoEnum; import com.dxhy.order.consumer.config.OpenApiConfig; +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.service.InterfaceServiceV6; +import com.dxhy.order.utils.JsonUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -50,6 +58,56 @@ public class InvoiceOpenGateRestApi { @Resource private OpenApiConfig openApiConfig; + @Resource + private InterfaceServiceV6 interfaceServiceV6; + + /** + * 山能对外接口PO统一入口 + * @param param + * @return + */ + @RequestMapping(path = "/v6/po", method = {RequestMethod.POST, RequestMethod.GET}) + public String orderApiV6(@RequestBody String param, HttpServletRequest request) { + + log.info("{}-山能对外接口PO统一入口,请求数据为:{}", LOGGER_MESSAGE_V6, param); + String token = request.getHeader("token"); + if(StringUtils.isBlank(token) || !ConfigureConstant.POTOKEN.equals(token)){ + return "非法请求,请停止访问!"; + } + //返回数据 + String resultString = ""; + try { + PoCommonRequestParam requestParam = JsonUtils.getInstance().parseObject(param, PoCommonRequestParam.class); + String interfaceName = ""; + if(OrderInfoEnum.INTERFACE_BUSINESS_ID_FPKJ.getKey().equals(requestParam.getISINPUT().getIFYWID())){ + interfaceName = ConfigurerInfo.GENERATE_QD_INVOICE; + }else if(OrderInfoEnum.INTERFACE_BUSINESS_ID_DDZTGX.getKey().equals(requestParam.getISINPUT().getIFYWID())){ + interfaceName = ConfigurerInfo.ORDER_STATUS_UPDATE; + }else { + log.error("{}-山能对外接口PO业务接口ID:{},未定义", LOGGER_MESSAGE_V6, requestParam.getISINPUT().getIFYWID()); + return "请传输正确的业务ID"; + } + //保存请求报文 + interfaceServiceV6.saveRequestData(interfaceName,param); + //调用销项v6业务处理逻辑 + long startTime = System.currentTimeMillis(); + resultString = invoiceRestApiV6.orderApiV6HandingBusiness(interfaceName, param, ""); + long endTime = System.currentTimeMillis(); + log.info("{}-业务处理结果:{},接口耗时为:{}", LOGGER_MESSAGE_V6, resultString, endTime - startTime); + + } catch (Exception e) { + log.error("{}-处理业务出现异常,异常原因为:{}", LOGGER_MESSAGE_V6, e.getMessage()); + PoCommonResponseParam poCommonResponseParam = new PoCommonResponseParam(); + EsOutput esOutput = new EsOutput(); + esOutput.setBSKEY(""); + esOutput.setSAPKEY(""); + esOutput.setZTYPE(OrderInfoContentEnum.INVOICE_ERROR_CODE_OP_E.getKey()); + esOutput.setZMESSAGE(e.getMessage()); + poCommonResponseParam.setES_OUTPUT(esOutput); + return JsonUtils.getInstance().toJsonString(poCommonResponseParam); + } + return resultString; + } /** * 订单对内V6接口 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 84e7d387..47e0e743 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 @@ -10,6 +10,7 @@ import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxtbRspBO; import com.dxhy.order.baseservice.module.thirdservice.user.model.DeptEntity; import com.dxhy.order.baseservice.module.thirdservice.user.service.UserInfoService; import com.dxhy.order.constant.OrderInfoContentEnum; +import com.dxhy.order.consumer.openapi.protocol.po.IsInput; import com.dxhy.order.consumer.openapi.protocol.v4.grouptax.GroupTaxReqBO; import com.dxhy.order.consumer.openapi.protocol.v4.grouptax.GroupTaxRespBO; import com.dxhy.order.consumer.openapi.protocol.v6.sdenergy.*; @@ -55,6 +56,7 @@ import javax.servlet.http.HttpServletResponse; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; @@ -208,9 +210,10 @@ public class InvoiceRestApiV6 { if (ConfigurerInfo.GENERATE_QD_INVOICE.equals(interfaceName)) { //全电开票接口 - PoCommonRequestParam requestParam = JsonUtils.getInstance().parseObject(reqStr, PoCommonRequestParam.class); - DeptEntity deptEntity = userInfoService.querySysDeptEntityByEnterpriseNumbers(requestParam.getISINPUT().getZDATA().get("BUKRS").toString()); - DdpcxxReqBO ddpcxxReq = BeanTransitionUtils.transitionPoKpReq(requestParam,deptEntity); + PoCommonRequestParam poCommonRequestParam = JsonUtils.getInstance().parseObject(reqStr, PoCommonRequestParam.class); + Map zData = JsonUtils.getInstance().parseObject(poCommonRequestParam.getISINPUT().getZDATA(), Map.class); + DeptEntity deptEntity = userInfoService.querySysDeptEntityByEnterpriseNumbers(zData.get("BUKRS").toString()); + DdpcxxReqBO ddpcxxReq = BeanTransitionUtils.transitionPoKpReq(poCommonRequestParam,deptEntity); DdpcxxRspV5 ddpcxxRspV5 = interfaceServiceV6.generateQdInvoiceV6(ddpcxxReq, secretId, null); PoCommonResponseParam poCommonResponseParam = BeanTransitionUtils.transitionPoKpResp(ddpcxxRspV5); returnJsonString = JsonUtils.getInstance().toJsonString(poCommonResponseParam); 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 index e5608d81..b2453a25 100644 --- 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 @@ -54,6 +54,6 @@ public class IsInput { /** * 业务参数 */ - private Map ZDATA; + private String ZDATA; } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/InterfaceServiceV6.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/InterfaceServiceV6.java index 6e290f82..988c00db 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/InterfaceServiceV6.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/InterfaceServiceV6.java @@ -39,4 +39,13 @@ public interface InterfaceServiceV6 { * @Date: 2023-02-08 */ PoCommonResponseParam updateOrderStatus(PoCommonRequestParam requestParam, String secretId); + + /** + * @Description: 保存PO请求数据 + * @Param: [interfaceName, IS_INPUT] + * @Return: void + * @Author: liufeilong + * @Date: 2023-02-22 + */ + void saveRequestData(String interfaceName, String param); } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java index 85a013ea..a4f54a67 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java @@ -4,7 +4,9 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.dxhy.order.constant.*; +import com.dxhy.order.consumer.dao.InterfaceRequestDataMapper; 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.v4.order.DdpcxxReqBO; @@ -18,14 +20,18 @@ import com.dxhy.order.consumer.openapi.service.AllocateInvoiceInterfaceServiceV3 import com.dxhy.order.consumer.openapi.service.InterfaceServiceV6; import com.dxhy.order.invoice.config.InvoiceConfig; import com.dxhy.order.invoice.utils.HttpInvoiceRequestUtilQd; +import com.dxhy.order.model.InterfaceRequestData; import com.dxhy.order.model.newsk.InvoiceRequestParam; import com.dxhy.order.utils.DecimalCalculateUtil; +import com.dxhy.order.utils.DistributedKeyMaker; +import com.dxhy.order.utils.JsonUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -42,6 +48,8 @@ public class InterfaceServiceImplV6 implements InterfaceServiceV6 { private AllocateInvoiceInterfaceServiceV3 allocateInvoiceInterfaceServiceV3; @Resource private InvoiceConfig invoiceConfig; + @Resource + private InterfaceRequestDataMapper interfaceRequestDataMapper; @Override public DdpcxxRspV5 generateQdInvoiceV6(DdpcxxReqBO ddpcxxReq, String secretId, String kpjh) { @@ -89,6 +97,18 @@ public class InterfaceServiceImplV6 implements InterfaceServiceV6 { return poCommonResponseParam; } + @Override + public void saveRequestData(String interfaceName, String param) { + PoCommonRequestParam poCommonRequestParam = JsonUtils.getInstance().parseObject(param, PoCommonRequestParam.class); + InterfaceRequestData data = new InterfaceRequestData(); + data.setId(DistributedKeyMaker.generateShotKey()); + data.setYwlx(interfaceName); + data.setBatchId(poCommonRequestParam.getISINPUT().getBSKEY()); + data.setRequestData(param); + data.setCreateTime(new Date()); + interfaceRequestDataMapper.insert(data); + } + private HzqrdRspV6 queryRedConfirmationList(String reqUrl, String reqParam, String logName){ HzqrdRspV6 hzqrdRspV6 = new HzqrdRspV6(); hzqrdRspV6.setZTDM(InterfaceEnum.INTERFACE_V5_STATUS_009999.getKey()); 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 8d51d37d..68183c2c 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 @@ -3215,7 +3215,8 @@ public class BeanTransitionUtils { * @Author: liufeilong * @Date: 2023-02-06 */ - public static DdpcxxReqBO transitionPoKpReq(PoCommonRequestParam requestParam,DeptEntity deptEntity){ + public static DdpcxxReqBO transitionPoKpReq(PoCommonRequestParam poCommonRequestParam,DeptEntity deptEntity){ + IsInput isinput = poCommonRequestParam.getISINPUT(); DdpcxxReqBO ddpcxxReqBO = new DdpcxxReqBO(); DdpcxxBO ddpcxxBO = new DdpcxxBO(); List ddzxxList = new ArrayList<>(); @@ -3223,10 +3224,8 @@ public class BeanTransitionUtils { DdtxxBO ddtxxBO = new DdtxxBO(); List ddmxList = new ArrayList<>(); - if(OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(requestParam.getISINPUT().getSYSID())){ - IsInput isinput = requestParam.getISINPUT(); - Map zdata = isinput.getZDATA(); - String zdataString = JsonUtils.getInstance().toJsonString(zdata); + if(OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(isinput.getSYSID())){ + String zdataString = isinput.getZDATA(); FpkjReqSap req = JsonUtils.getInstance().parseObject(zdataString, FpkjReqSap.class); //批次信息 ddpcxxBO.setDDQQPCH(isinput.getSAPKEY());