Merge branch 'dev' into gongquanlin

release
gongquanlin 2 years ago
commit 4bbe639218
  1. 12
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java
  2. 9
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/UserCenterConfig.java
  3. 8
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/user/service/UserInfoService.java
  4. 26
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/user/service/impl/UserInfoServiceImpl.java
  5. 2
      order-management-common/src/main/java/com/dxhy/order/constant/ConfigureConstant.java
  6. 37
      order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java
  7. 65
      order-management-common/src/main/java/com/dxhy/order/model/InterfaceRequestData.java
  8. 23
      order-management-common/src/main/java/com/dxhy/order/utils/CommonUtils.java
  9. 11
      order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java
  10. 19
      order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/InterfaceRequestDataMapper.java
  11. 71
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java
  12. 58
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceOpenGateRestApi.java
  13. 13
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestApiV6.java
  14. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/po/IsInput.java
  15. 9
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/InterfaceServiceV6.java
  16. 20
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java
  17. 54
      order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java
  18. 121
      order-management-consumer/src/main/resources/mybatis/mapper/InterfaceRequestDataMapper.xml

@ -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;
/**

@ -117,6 +117,15 @@ public class UserCenterConfig {
public String configQueryBigBOrgInfoByCode() {
return dbUserInfoUrl + "/api/dept/queryOrgInfoByCode";
}
/**
* 根据组织编码获取销方信息
*
* @return
*/
public String configQueryBigBOrgInfoByEnterpriseNumbers() {
return dbUserInfoUrl + "/api/dept/queryDeptInfoByEnterpriseNumber";
}
/**
* 推送大B日志消息

@ -78,6 +78,14 @@ public interface UserInfoService {
* @return
*/
DeptEntity querySysDeptEntityByTaxplayercode(String taxpayerCode);
/**
* 根据组织编号获取组织信息
*
* @param enterpriseNumbers
* @return
*/
DeptEntity querySysDeptEntityByEnterpriseNumbers(String enterpriseNumbers);
/**
* 获取企业初始化信息

@ -264,7 +264,31 @@ public class UserInfoServiceImpl implements UserInfoService {
}
return null;
}
@Override
public DeptEntity querySysDeptEntityByEnterpriseNumbers(String enterpriseNumbers) {
Map<String, String> paraMap = new HashMap<>(2);
paraMap.put("enterpriseNumber", enterpriseNumbers);
Map<String, String> headMap = new HashMap<>(2);
headMap.put("Content-Type", ConfigureConstant.STRING_APPLICATION_JSON);
try {
String queryTaxInfo = userCenterConfig.configQueryBigBOrgInfoByEnterpriseNumbers();
log.info("{},获取企业信息的接口,url:{},入参:{}", LOGGER_MSG, queryTaxInfo, JsonUtils.getInstance().toJsonString(paraMap));
String result = HttpUtils.doPostWithHeader(queryTaxInfo, JsonUtils.getInstance().toJsonString(paraMap), headMap);
log.info("{}调用用户信息获取信息为:{}", LOGGER_MSG, result);
if (StringUtils.isNotBlank(result)) {
JSONObject jsonObject = JSON.parseObject(result);
if (!jsonObject.isEmpty() && ConfigureConstant.STRING_0000.equals(jsonObject.get(OrderManagementConstant.CODE))) {
return JsonUtils.getInstance().parseObject(jsonObject.getString(OrderManagementConstant.DATA), DeptEntity.class);
}
}
} catch (Exception e) {
log.error("{}调用用户信息获取服务异常:{}", LOGGER_MSG, e);
return null;
}
return null;
}
@Override
public DeptEntity querySysDeptEntityFromUrl(String taxpayerCode, String taxpayerName, String entId) {
Map<String, String> paraMap = new HashMap<>(2);

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

@ -32,6 +32,12 @@ public enum OrderInfoEnum {
FPHXZ_CODE_2("2", "被折扣行"),
FPHXZ_CODE_6("6", "清单红字发票"),
/**
* 山能发票行性质 1正常行2折扣行
*/
SN_FPHXZ_CODE_1("1", "正常行"),
SN_FPHXZ_CODE_2("2", "折扣行"),
/**
* 全电发票行性质 00正常行01折扣行02被折扣行
*/
@ -338,7 +344,18 @@ public enum OrderInfoEnum {
TICKET_POOL_INVOICE_TYPE_04("04", "增值税普通发票"),
TICKET_POOL_INVOICE_TYPE_10("10", "增值税电子普通发票"),
TICKET_POOL_INVOICE_TYPE_08("08", "增值税电子专用发票"),
/**
* 山能业务系统发票类型
* 1-增值税普通发票
* 0-增值税专用发票
* 2-增值税电子普通发票
* 待补全全电发票类型"
*/
SN_INVOICE_TYPE_0("0", "增值税专用发票"),
SN_INVOICE_TYPE_1("1", "增值税普通发票"),
SN_INVOICE_TYPE_2("2", "增值税电子普通发票"),
/**
* 开票类型0蓝票1红票
*/
@ -1214,15 +1231,15 @@ public enum OrderInfoEnum {
/**
* 接口业务ID
* FI006 金税平台将金税开票信息返回SAP的接口(ERP-FI-INT-033)
* FI007 SAP销售结算信息传给金税系统(ERP-FI-INT-034)
* FI008 金税发票作废信息返回到SAP(ERP-FI-INT-041)
* FI010 销售结算报账单的驳回状态传给发票系统(ERP-FI-INT-046)
*/
INTERFACE_BUSINESS_ID_FPKJTS("FI006","发票开具回推"),
INTERFACE_BUSINESS_ID_FPKJ("FI007","发票开具"),
INTERFACE_BUSINESS_ID_FPZFTS("FI008","发票作废回推"),
INTERFACE_BUSINESS_ID_DDZTGX("FI010","订单状态更新"),
* FI006 FI843 金税平台将金税开票信息返回SAP的接口(ERP-FI-INT-033)
* FI007 FI840 SAP销售结算信息传给金税系统(ERP-FI-INT-034)
* FI008 FI844 金税发票作废信息返回到SAP(ERP-FI-INT-041)
* FI010 FI841 销售结算报账单的驳回状态传给发票系统(ERP-FI-INT-046)
*/
INTERFACE_BUSINESS_ID_FPKJTS("FI843","发票开具回推"),
INTERFACE_BUSINESS_ID_FPKJ("FI840","发票开具"),
INTERFACE_BUSINESS_ID_FPZFTS("FI844","发票作废回推"),
INTERFACE_BUSINESS_ID_DDZTGX("FI841","订单状态更新"),
;
/**

@ -0,0 +1,65 @@
package com.dxhy.order.model;
import java.util.Date;
public class InterfaceRequestData {
private String id;
private String xtly;
private String ywlx;
private String batchId;
private Date createTime;
private String requestData;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getXtly() {
return xtly;
}
public void setXtly(String xtly) {
this.xtly = xtly == null ? null : xtly.trim();
}
public String getYwlx() {
return ywlx;
}
public void setYwlx(String ywlx) {
this.ywlx = ywlx == null ? null : ywlx.trim();
}
public String getBatchId() {
return batchId;
}
public void setBatchId(String batchId) {
this.batchId = batchId == null ? null : batchId.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getRequestData() {
return requestData;
}
public void setRequestData(String requestData) {
this.requestData = requestData == null ? null : requestData.trim();
}
}

@ -355,6 +355,29 @@ public class CommonUtils {
log.debug("{}旧版本发票种类转换为新税控发票种类,请求参数为:{},输出参数为:{}", LOGGER_MSG, fpzldm, fplxdm);
return fplxdm;
}
/**
* 山能业务系统发票种类转标品开票接口发票种类代码
* @param fpzldm
* @return
*/
public static String transSnFplxdm(String fpzldm) {
String fplxdm;
if (OrderInfoEnum.SN_INVOICE_TYPE_0.getKey().equals(fpzldm)) {
//增值税专用发票
fplxdm = OrderInfoEnum.ORDER_INVOICE_TYPE_004.getKey();
} else if (OrderInfoEnum.SN_INVOICE_TYPE_1.getKey().equals(fpzldm)) {
//增值税普通发票
fplxdm = OrderInfoEnum.ORDER_INVOICE_TYPE_007.getKey();
} else if (OrderInfoEnum.SN_INVOICE_TYPE_2.getKey().equals(fpzldm)) {
//增值税电子普通发票
fplxdm = OrderInfoEnum.ORDER_INVOICE_TYPE_026.getKey();
} else {
fplxdm = fpzldm;
}
log.debug("{}山能业务系统发票种类转换为标品开票接口发票种类,请求参数为:{},输出参数为:{}", LOGGER_MSG, fpzldm, fplxdm);
return fplxdm;
}
/**

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

@ -0,0 +1,19 @@
package com.dxhy.order.consumer.dao;
import com.dxhy.order.model.InterfaceRequestData;
public interface InterfaceRequestDataMapper {
int deleteByPrimaryKey(String id);
int insert(InterfaceRequestData record);
int insertSelective(InterfaceRequestData record);
InterfaceRequestData selectByPrimaryKey(String id);
int updateByPrimaryKeySelective(InterfaceRequestData record);
int updateByPrimaryKeyWithBLOBs(InterfaceRequestData record);
int updateByPrimaryKey(InterfaceRequestData record);
}

@ -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;
@ -28,6 +29,7 @@ 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.generateinvoicepush.sap.FpkjtsMxSap;
import com.dxhy.order.consumer.openapi.protocol.po.generateinvoicepush.sap.FpkjtsReqSap;
import com.dxhy.order.consumer.openapi.protocol.po.voidinvoicepush.sap.FpzftsReqSap;
import com.dxhy.order.consumer.openapi.protocol.v4.ResponseV4BO;
@ -38,7 +40,9 @@ import com.dxhy.order.consumer.openapi.protocol.v4.push.*;
import com.dxhy.order.consumer.openapi.protocol.v5.DxhyInterfaceResponse;
import com.dxhy.order.consumer.openapi.protocol.v5.invalid.ZffptsV5;
import com.dxhy.order.consumer.openapi.protocol.v5.invalid.ZffpxxV5;
import com.dxhy.order.consumer.openapi.protocol.v5.order.DdfpxxV5;
import com.dxhy.order.consumer.openapi.protocol.v5.order.DdfpzxxV5;
import com.dxhy.order.consumer.openapi.protocol.v5.order.DdmxxxV5;
import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO;
import com.dxhy.order.consumer.openapi.service.CommonDisposeService;
import com.dxhy.order.consumer.openapi.service.InterfaceServiceV5;
@ -65,6 +69,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
@ -145,6 +150,9 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
@Resource
private OrderCommonService apiInvoiceCommonMapperService;
@Resource
private BaseServiceConfig baseServiceConfig;
@Override
public R pushRouting(String pushMsg) {
@ -327,7 +335,7 @@ public class PushInvoiceServiceImpl implements PushInvoiceService {
boolean sendPushDelay = false;
String errorMsg = "";
//TODO lfl 系统来源待赋值
String xtly = "";
String xtly = "SAP";
try {
//查询多个推送地址
@ -375,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);
}
@ -863,10 +871,57 @@ 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();
//TODO lfl 发票推送数据转换
List<FpkjtsMxSap> itemList = new ArrayList<>();
//主信息
fpkjtsReqSap.setZJSDH(ddfpxx.getDDH());
fpkjtsReqSap.setZFPDM(ddfpxx.getFPDM());
fpkjtsReqSap.setZFPHM(ddfpxx.getFPHM());
//TODO lfl 发票类型需要做转换
fpkjtsReqSap.setZFPLX(ddfpxx.getFPLXDM());
fpkjtsReqSap.setZXFBM(ddfpxx.getXHFSBH());
fpkjtsReqSap.setZGFBH(ddfpxx.getGMFSBH());
fpkjtsReqSap.setZBHSJEY(ddfpxx.getHJJE());
fpkjtsReqSap.setZZSEY(ddfpxx.getHJSE());
fpkjtsReqSap.setZHSJEY(ddfpxx.getJSHJ());
fpkjtsReqSap.setZZBZ(ddfpxx.getBZ());
fpkjtsReqSap.setZFPZT(ConfigureConstant.STRING_1);//0-作废、1-正常
fpkjtsReqSap.setZKPRQ(ddfpxx.getKPRQ());
fpkjtsReqSap.setZGFMC(ddfpxx.getGMFMC());
fpkjtsReqSap.setZGFSH(ddfpxx.getGMFSBH());
fpkjtsReqSap.setZXFMC(ddfpxx.getXHFMC());
fpkjtsReqSap.setZXFSH(ddfpxx.getXHFSBH());
fpkjtsReqSap.setZTID(ddfpxx.getFPDM()+ddfpxx.getFPHM()+ddfpxx.getFPLXDM());
fpkjtsReqSap.setZGFZH(ddfpxx.getGMFZH());
fpkjtsReqSap.setZGFDH(ddfpxx.getGMFDH());
fpkjtsReqSap.setZXFDH(ddfpxx.getXHFDH());
fpkjtsReqSap.setZXFZH(ddfpxx.getXHFZH());
fpkjtsReqSap.setZGSDM("");
fpkjtsReqSap.setZYWDJ("");
//明细信息
ddmxxx.stream().forEach(f -> {
FpkjtsMxSap detail = new FpkjtsMxSap();
detail.setZJSDH(ddfpxx.getDDH());
detail.setZFPDM(ddfpxx.getFPDM());
detail.setZFPHM(ddfpxx.getFPHM());
detail.setZFPHH(f.getXH());
detail.setMATNR("");
detail.setZGGXH(f.getGGXH());
detail.setZSLDW(f.getDW());
detail.setZZSL(f.getSPSL());
detail.setZTAX(f.getSL());
detail.setZBHSJEY(f.getJE());
detail.setZZSEY(f.getSE());
detail.setZHSJEY(new BigDecimal(f.getJE()).add(new BigDecimal(f.getSE())).toString());
detail.setINVOICEDATE(ddfpxx.getKPRQ());
detail.setINVOICETYPE(ddfpxx.getFPLXDM());
detail.setZHWMC(f.getXMMC());
detail.setZSM("");
});
fpkjtsReqSap.setITITEM(itemList);
IsInput isInput = new IsInput();
isInput.setSYSID(OrderInfoEnum.SYS_SIGN_FP.getKey());
isInput.setIFYWID(OrderInfoEnum.INTERFACE_BUSINESS_ID_FPKJTS.getKey());
@ -874,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);
@ -897,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接口

@ -7,7 +7,10 @@ import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxcxReqBO;
import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxcxRspBO;
import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxtbReqBO;
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.*;
@ -53,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;
@ -86,6 +90,9 @@ public class InvoiceRestApiV6 {
@Resource
private InterfaceServiceV6 interfaceServiceV6;
@Resource
private UserInfoService userInfoService;
/**
* 统一SDK对外接口方法
@ -203,8 +210,10 @@ public class InvoiceRestApiV6 {
if (ConfigurerInfo.GENERATE_QD_INVOICE.equals(interfaceName)) {
//全电开票接口
PoCommonRequestParam requestParam = JsonUtils.getInstance().parseObject(reqStr, PoCommonRequestParam.class);
DdpcxxReqBO ddpcxxReq = BeanTransitionUtils.transitionPoKpReq(requestParam);
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());

@ -10,6 +10,7 @@ import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxCommonBO;
import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxtbReqBO;
import com.dxhy.order.baseservice.module.commodity.model.CommodityCodeEntity;
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.*;
import com.dxhy.order.consumer.openapi.protocol.Response;
import com.dxhy.order.consumer.openapi.protocol.cpy.*;
@ -19,6 +20,7 @@ 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.FpkjMxSap;
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;
@ -55,6 +57,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import javax.annotation.Resource;
import java.text.DecimalFormat;
import java.util.*;
@ -3212,7 +3215,8 @@ public class BeanTransitionUtils {
* @Author: liufeilong
* @Date: 2023-02-06
*/
public static DdpcxxReqBO transitionPoKpReq(PoCommonRequestParam requestParam){
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<>();
@ -3220,19 +3224,55 @@ 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());
//TODO lfl 20230206 业务数据待转换
ddpcxxBO.setNSRSBH(deptEntity.getTaxpayerCode());
ddpcxxBO.setFPLXDM(CommonUtils.transSnFplxdm(req.getZFPLX()));
ddpcxxBO.setKPFS(ConfigureConstant.STRING_1);
//订单头信息
ddtxxBO.setDDQQLSH(isinput.getSAPKEY());
ddtxxBO.setKPLX(req.getZSFHZ());
ddtxxBO.setXHFSBH(deptEntity.getTaxpayerCode());
ddtxxBO.setXHFMC(deptEntity.getName());
ddtxxBO.setXHFDZ(deptEntity.getTaxpayerAddress());
ddtxxBO.setXHFDH(deptEntity.getTaxpayerPhone());
ddtxxBO.setXHFYH(deptEntity.getTaxpayerBank());
ddtxxBO.setXHFZH(deptEntity.getTaxpayerAccount());
ddtxxBO.setGMFBM(req.getZGFBH());
ddtxxBO.setKPR(req.getZKPRXM());
ddtxxBO.setSKR(req.getZSKRXM());
ddtxxBO.setFHR(req.getZFHRXM());
ddtxxBO.setJSHJ(req.getZHSJE());
ddtxxBO.setHJJE(req.getZBHSJE());
ddtxxBO.setHJSE(req.getZZSE());
ddtxxBO.setDDH(req.getZJSDH());
//明细信息
List<FpkjMxSap> ititem = req.getITITEM();
for(int i=0;i < ititem.size();i++){
FpkjMxSap detail = ititem.get(i);
DdmxxxBO ddmxxxBO = new DdmxxxBO();
ddmxxxBO.setXH(i+1+"");
ddmxxxBO.setFPHXZ("0");
ddmxxxBO.setZXBM(detail.getMATNR());
ddmxxxBO.setXMMC(detail.getZCPMC());
ddmxxxBO.setGGXH(detail.getCHARG());
ddmxxxBO.setDW(detail.getZSLDW());
ddmxxxBO.setSPSL(detail.getZZSL());
ddmxxxBO.setDJ(detail.getZZDJ());
ddmxxxBO.setJE(detail.getZBHSJE());
ddmxxxBO.setHSBZ("0");
ddmxxxBO.setSE(detail.getZZSE());
ddmxList.add(ddmxxxBO);
}
}
ddzxxBO.setDDTXX(ddtxxBO);
ddzxxBO.setDDMXXX(ddmxList);
ddzxxList.add(ddzxxBO);
ddpcxxReqBO.setDDPCXX(ddpcxxBO);
ddpcxxReqBO.setDDZXX(ddzxxList);
return ddpcxxReqBO;
}

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dxhy.order.consumer.dao.InterfaceRequestDataMapper" >
<resultMap id="BaseResultMap" type="com.dxhy.order.model.InterfaceRequestData" >
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="xtly" property="xtly" jdbcType="VARCHAR" />
<result column="ywlx" property="ywlx" jdbcType="VARCHAR" />
<result column="batch_id" property="batchId" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
</resultMap>
<resultMap id="ResultMapWithBLOBs" type="com.dxhy.order.model.InterfaceRequestData" extends="BaseResultMap" >
<result column="request_data" property="requestData" jdbcType="LONGVARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, xtly, ywlx, batch_id, create_time
</sql>
<sql id="Blob_Column_List" >
request_data
</sql>
<select id="selectByPrimaryKey" resultMap="ResultMapWithBLOBs" parameterType="java.lang.String" >
select
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from interface_request_data
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
delete from interface_request_data
where id = #{id,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="com.dxhy.order.model.InterfaceRequestData" >
insert into interface_request_data (id, xtly, ywlx,
batch_id, create_time, request_data
)
values (#{id,jdbcType=VARCHAR}, #{xtly,jdbcType=VARCHAR}, #{ywlx,jdbcType=VARCHAR},
#{batchId,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{requestData,jdbcType=LONGVARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.dxhy.order.model.InterfaceRequestData" >
insert into interface_request_data
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="xtly != null" >
xtly,
</if>
<if test="ywlx != null" >
ywlx,
</if>
<if test="batchId != null" >
batch_id,
</if>
<if test="createTime != null" >
create_time,
</if>
<if test="requestData != null" >
request_data,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=VARCHAR},
</if>
<if test="xtly != null" >
#{xtly,jdbcType=VARCHAR},
</if>
<if test="ywlx != null" >
#{ywlx,jdbcType=VARCHAR},
</if>
<if test="batchId != null" >
#{batchId,jdbcType=VARCHAR},
</if>
<if test="createTime != null" >
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="requestData != null" >
#{requestData,jdbcType=LONGVARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.dxhy.order.model.InterfaceRequestData" >
update interface_request_data
<set >
<if test="xtly != null" >
xtly = #{xtly,jdbcType=VARCHAR},
</if>
<if test="ywlx != null" >
ywlx = #{ywlx,jdbcType=VARCHAR},
</if>
<if test="batchId != null" >
batch_id = #{batchId,jdbcType=VARCHAR},
</if>
<if test="createTime != null" >
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="requestData != null" >
request_data = #{requestData,jdbcType=LONGVARCHAR},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="com.dxhy.order.model.InterfaceRequestData" >
update interface_request_data
set xtly = #{xtly,jdbcType=VARCHAR},
ywlx = #{ywlx,jdbcType=VARCHAR},
batch_id = #{batchId,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
request_data = #{requestData,jdbcType=LONGVARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.dxhy.order.model.InterfaceRequestData" >
update interface_request_data
set xtly = #{xtly,jdbcType=VARCHAR},
ywlx = #{ywlx,jdbcType=VARCHAR},
batch_id = #{batchId,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=VARCHAR}
</update>
</mapper>
Loading…
Cancel
Save