feat: 接入PO

liufeilong 2 years ago committed by WangQi
parent 18d6ac2d68
commit f9f84f31ea
  1. 12
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java
  2. 2
      order-management-common/src/main/java/com/dxhy/order/constant/ConfigureConstant.java
  3. 11
      order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java
  4. 14
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java
  5. 58
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java
  6. 9
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestApiV6.java
  7. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/IsInput.java
  8. 9
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/InterfaceServiceV6.java
  9. 20
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java
  10. 9
      order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.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;
/**

@ -463,6 +463,8 @@ public class ConfigureConstant {
* 详见对应正数发票及清单
*/
public final static String XJZSXHQD = "详见对应正数发票及清单";
public final static String POTOKEN = "6_ca323ed526e74edea7e023c0733a9bef";
/**
* 数值类型

@ -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;
}
}

@ -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<DdmxxxV5> 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);

@ -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接口

@ -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);

@ -54,6 +54,6 @@ public class IsInput {
/**
* 业务参数
*/
private Map<String,Object> ZDATA;
private String ZDATA;
}

@ -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);
}

@ -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());

@ -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<DdzxxBO> ddzxxList = new ArrayList<>();
@ -3223,10 +3224,8 @@ public class BeanTransitionUtils {
DdtxxBO ddtxxBO = new DdtxxBO();
List<DdmxxxBO> ddmxList = new ArrayList<>();
if(OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(requestParam.getISINPUT().getSYSID())){
IsInput isinput = requestParam.getISINPUT();
Map<String, Object> 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());

Loading…
Cancel
Save