feat:完成接口回调

gongquanlin 2 years ago committed by WangQi
parent f3b5567f27
commit b0ec664b8c
  1. 11
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/buyer/protocol/GmfxxtbReqBO.java
  2. 7
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/buyer/protocol/GmfxxtbRspBO.java
  3. 72
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestApiV6.java
  4. 142
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestSDEnregy.java
  5. 4
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v4/grouptax/GroupTaxReqBO.java
  6. 4
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v4/grouptax/GroupTaxRespBO.java
  7. 6
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/DATABO.java
  8. 8
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/DATAINFOSBO.java
  9. 29
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/ESBBO.java
  10. 14
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/SDEnergyMdmBaseBO.java
  11. 42
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/protocol/v6/sdenergy/SDEnergyMdmBaseRespBO.java
  12. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/InterfaceServiceV3.java
  13. 27
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV3.java

@ -37,4 +37,15 @@ public class GmfxxtbReqBO extends GmfxxBO implements Serializable {
* 山能 MDM 客户API 里的开票税号字段DESC49
*/
private String INVOICE_TAXNO;
/**
* 山能MDM 客户API里的code
*/
private String CODE;
/**
* 山能MDM 客户API里的UUID
*/
private String UUID;
}

@ -45,6 +45,13 @@ public class GmfxxtbRspBO extends BuyerResponseV4BO implements Serializable {
*/
private String GMFMC;
/**
* 山能MDM CODE
*/
private String CODE;
private String UUID;
/**
* 静态方法的方式设置字段ZTDM和ZTXX的值
*

@ -323,42 +323,42 @@ public class InvoiceRestApiV6 {
} else if (ConfigurerInfo.SDENERGY_MDM_KS_SYNC_GROUP_TAX_CODE.equals(interfaceName)) {
// 同步物料信息
SDEnergyMdmBaseBO baseBO = JSONObject.parseObject(reqStr, SDEnergyMdmBaseBO.class);
List<MdmSyncGroupTaxCodeReqBO> list = new ArrayList<>();
GroupTaxRespBO respBO = GroupTaxRespBO.build(OrderInfoContentEnum.SYNC_GROUP_TAX_009996);
try {
// 逐级判断是否为空,直到取到DATAINFO
list = (List<MdmSyncGroupTaxCodeReqBO>) Optional.of(baseBO)
.map(SDEnergyMdmBaseBO::getESB)
.map(ESBBO::getDATA)
.map(DATABO::getDATAINFOS)
.map(DATAINFOSBO::getDATAINFO)
.map(i -> {
// 转成List<MdmSyncGroupTaxCodeReqBO>
return i.stream().map(j -> {
return JSONObject.parseObject(JSONObject.toJSONString(j), MdmSyncGroupTaxCodeReqBO.class);
}).collect(Collectors.toList());
})
.orElse(new ArrayList<MdmSyncGroupTaxCodeReqBO>());
// 进行同步
List<GroupTaxReqBO> reqBOList = list.stream().map(i -> {
GroupTaxReqBO temp = new GroupTaxReqBO();
temp.setSpmc(i.getDESC1());
temp.setMs(i.getDESCSHORT());
temp.setUnit(i.getDESC5());
temp.setEncoding(i.getCODE());
return temp;
}).collect(Collectors.toList());
respBO = interfaceServiceV3.syncGroupTax(reqBOList, secretId);
} catch (Exception e) {
log.error("{}解析列表失败,原始string:{},错误原因{},错误堆栈:{}", LOGGER_MSG, reqStr, e.getMessage(), e.getStackTrace());
}
returnJsonString = JsonUtils.getInstance().toJsonStringNullToEmpty(respBO);
// SDEnergyMdmBaseBO baseBO = JSONObject.parseObject(reqStr, SDEnergyMdmBaseBO.class);
// List<MdmSyncGroupTaxCodeReqBO> list = new ArrayList<>();
// GroupTaxRespBO respBO = GroupTaxRespBO.build(OrderInfoContentEnum.SYNC_GROUP_TAX_009996);
// try {
// // 逐级判断是否为空,直到取到DATAINFO
// list = (List<MdmSyncGroupTaxCodeReqBO>) Optional.of(baseBO)
// .map(SDEnergyMdmBaseBO::getESB)
// .map(ESBBO::getDATA)
// .map(DATABO::getDATAINFOS)
// .map(DATAINFOSBO::getDATAINFO)
// .map(i -> {
// // 转成List<MdmSyncGroupTaxCodeReqBO>
// return i.stream().map(j -> {
// return JSONObject.parseObject(JSONObject.toJSONString(j), MdmSyncGroupTaxCodeReqBO.class);
// }).collect(Collectors.toList());
// })
// .orElse(new ArrayList<MdmSyncGroupTaxCodeReqBO>());
//
// // 进行同步
// List<GroupTaxReqBO> reqBOList = list.stream().map(i -> {
// GroupTaxReqBO temp = new GroupTaxReqBO();
// temp.setSpmc(i.getDESC1());
// temp.setMs(i.getDESCSHORT());
// temp.setUnit(i.getDESC5());
// temp.setEncoding(i.getCODE());
// return temp;
// }).collect(Collectors.toList());
//
// respBO = interfaceServiceV3.syncGroupTax(reqBOList, secretId);
//
// } catch (Exception e) {
// log.error("{}解析列表失败,原始string:{},错误原因{},错误堆栈:{}", LOGGER_MSG, reqStr, e.getMessage(), e.getStackTrace());
// }
//
// returnJsonString = JsonUtils.getInstance().toJsonStringNullToEmpty(respBO);
return returnJsonString = "";
} else {
returnJsonString = "";
}

@ -1,14 +1,20 @@
package com.dxhy.order.consumer.openapi.api;
import com.alibaba.fastjson.JSONObject;
import com.dxhy.order.baseservice.module.buyer.protocol.BuyerResponseV4BO;
import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxtbReqBO;
import com.dxhy.order.baseservice.module.buyer.protocol.GmfxxtbRspBO;
import com.dxhy.order.consumer.openapi.protocol.v6.sdenergy.MdmGmfxxtbMulticodeValuelistBO;
import com.dxhy.order.consumer.openapi.protocol.v6.sdenergy.MdmGmfxxtbReqBO;
import com.dxhy.order.constant.OrderInfoContentEnum;
import com.dxhy.order.consumer.openapi.protocol.v4.ResponseV4BO;
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.*;
import com.dxhy.order.consumer.openapi.service.InterfaceServiceV3;
import com.dxhy.order.exception.OrderReceiveException;
import com.dxhy.order.utils.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -17,8 +23,9 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @Description
@ -30,6 +37,7 @@ import java.util.List;
@RequestMapping("/invoice/api/invoice_sd_energy")
public class InvoiceRestSDEnregy {
private static final String LOGGER_MSG = "(对外接口山能MDM)";
@Resource
private InterfaceServiceV3 interfaceServiceV3;
@ -40,7 +48,22 @@ public class InvoiceRestSDEnregy {
*/
@PostMapping("/sync_buyer_message")
public String syncBuyerMessage(@RequestBody String requestBody) {
List<MdmGmfxxtbReqBO> mdmGmfxxtbReqBOS = JSONObject.parseArray(requestBody, MdmGmfxxtbReqBO.class);
String logUUID = UUID.randomUUID().toString();
log.info("{}[syncBuyerMessage],uuid:{},收到请求报文:{}", LOGGER_MSG, logUUID, requestBody);
SDEnergyMdmBaseBO baseBO = JSONObject.parseObject(requestBody, SDEnergyMdmBaseBO.class);
List<MdmGmfxxtbReqBO> mdmGmfxxtbReqBOS = (List<MdmGmfxxtbReqBO>) Optional.of(baseBO)
.map(SDEnergyMdmBaseBO::getESB)
.map(ESBBO::getDATA)
.map(DATABO::getDATAINFOS)
.map(DATAINFOSBO::getDATAINFO)
.map(i -> {
// 转成List<MdmSyncGroupTaxCodeReqBO>
return i.stream().map(j -> {
return JSONObject.parseObject(JSONObject.toJSONString(j), MdmGmfxxtbReqBO.class);
}).collect(Collectors.toList());
})
.orElse(new ArrayList<MdmGmfxxtbReqBO>());
List<GmfxxtbReqBO> gmfxxtbReqList = new ArrayList<>();
for (MdmGmfxxtbReqBO tempMdmGmfxxtbReqBO : mdmGmfxxtbReqBOS) {
GmfxxtbReqBO gmfxxtbReqBO = new GmfxxtbReqBO();
@ -93,6 +116,113 @@ public class InvoiceRestSDEnregy {
gmfxxtbReqList.add(gmfxxtbReqBO);
}
List<GmfxxtbRspBO> gmfxxtbRspList = interfaceServiceV3.syncBuyerMessage(gmfxxtbReqList, "");
return JsonUtils.getInstance().toJsonStringNullToEmpty(gmfxxtbRspList);
// 构造返回请求
SDEnergyMdmBaseBO result = buildResult(
baseBO,
gmfxxtbRspList,
i -> {
GmfxxtbRspBO t = (GmfxxtbRspBO) i;
SDEnergyMdmBaseRespBO resp = new SDEnergyMdmBaseRespBO();
resp.setCODE(t.getCODE());
resp.setUUID(t.getUUID());
resp.setSYNSTATUS(StringUtils.equals(t.getZTDM(), OrderInfoContentEnum.SUCCESS.getKey()) ? "0" : "1");
resp.setSYNRESULT(t.getZTXX());
return resp;
}
);
String resp = JsonUtils.getInstance().toJsonStringNullToEmpty(result);
log.info("{}[syncGroupTax],uuid:{},返回报文:{}", LOGGER_MSG, logUUID, resp);
return resp;
}
@PostMapping("/sync_group_tax")
public String syncGroupTax(@RequestBody String requestBody) {
String logUUID = UUID.randomUUID().toString();
log.info("{}[syncGroupTax],uuid:{},收到请求报文:{}", LOGGER_MSG, logUUID, requestBody);
SDEnergyMdmBaseBO baseBO = JSONObject.parseObject(requestBody, SDEnergyMdmBaseBO.class);
List<MdmSyncGroupTaxCodeReqBO> list = new ArrayList<>();
List<GroupTaxRespBO> respBO = new ArrayList<>();
try {
// 逐级判断是否为空,直到取到DATAINFO
list = (List<MdmSyncGroupTaxCodeReqBO>) Optional.of(baseBO)
.map(SDEnergyMdmBaseBO::getESB)
.map(ESBBO::getDATA)
.map(DATABO::getDATAINFOS)
.map(DATAINFOSBO::getDATAINFO)
.map(i -> {
// 转成List<MdmSyncGroupTaxCodeReqBO>
return i.stream().map(j -> {
return JSONObject.parseObject(JSONObject.toJSONString(j), MdmSyncGroupTaxCodeReqBO.class);
}).collect(Collectors.toList());
})
.orElse(new ArrayList<MdmSyncGroupTaxCodeReqBO>());
// 进行同步
List<GroupTaxReqBO> reqBOList = list.stream().map(i -> {
GroupTaxReqBO temp = new GroupTaxReqBO();
temp.setSpmc(i.getDESC1());
temp.setMs(i.getDESCSHORT());
temp.setUnit(i.getDESC5());
temp.setEncoding(i.getCODE());
temp.setCODE(i.getCODE());
temp.setUUID(i.getUUID());
return temp;
}).collect(Collectors.toList());
respBO = interfaceServiceV3.syncGroupTax(reqBOList, "");
} catch (Exception e) {
log.error("{}解析列表失败,原始string:{},错误原因{},错误堆栈:{}", LOGGER_MSG, requestBody, e.getMessage(), e.getStackTrace());
}
// 构造返回请求
SDEnergyMdmBaseBO result = buildResult(
baseBO,
respBO,
i -> {
GroupTaxRespBO t = (GroupTaxRespBO) i;
SDEnergyMdmBaseRespBO resp = new SDEnergyMdmBaseRespBO();
resp.setCODE(t.getCode());
resp.setUUID(t.getUuid());
resp.setSYNSTATUS(StringUtils.equals(t.getZTDM(), OrderInfoContentEnum.SUCCESS.getKey()) ? "0" : "1");
resp.setSYNRESULT(t.getZTXX());
return resp;
}
);
String resp = JsonUtils.getInstance().toJsonStringNullToEmpty(result);
log.info("{}[syncGroupTax],uuid:{},返回报文:{}", LOGGER_MSG, logUUID, resp);
return resp;
}
/**
* 统一构造 山能MDM 返回
*
* @param baseBO
* @param respList
* @param handleFunction
* @return
*/
private SDEnergyMdmBaseBO buildResult(SDEnergyMdmBaseBO baseBO, List respList, Function<Object, SDEnergyMdmBaseRespBO> handleFunction) {
DATAINFOSBO requestDATAINFOSBO = (DATAINFOSBO) Optional.of(baseBO)
.map(SDEnergyMdmBaseBO::getESB)
.map(ESBBO::getDATA)
.map(DATABO::getDATAINFOS)
.orElse(DATAINFOSBO.build());
SDEnergyMdmBaseBO respBaseBO = SDEnergyMdmBaseBO.build();
respBaseBO.getESB().setRESULT("S");
respBaseBO.getESB().setDESC("处理完成");
respBaseBO.getESB().getDATA().getDATAINFOS().setPUUID(requestDATAINFOSBO.getPUUID());
List respDataInfo = respBaseBO.getESB().getDATA().getDATAINFOS().getDATAINFO();
// 开始循环处理结果
for (int i = 0; i < respList.size(); i++) {
Object currentBO = respList.get(i);
SDEnergyMdmBaseRespBO baseRespBO = handleFunction.apply(currentBO);
respDataInfo.add(baseRespBO);
}
return respBaseBO;
}
}

@ -25,4 +25,8 @@ public class GroupTaxReqBO {
// 山能MDM中 CODE主编码的值
private String encoding;
private String UUID;
private String CODE;
}

@ -14,6 +14,10 @@ import java.io.Serializable;
@Data
public class GroupTaxRespBO extends ResponseV4BO implements Serializable {
private String uuid;
private String code;
public static GroupTaxRespBO build(OrderInfoContentEnum orderInfoContentEnum) {
GroupTaxRespBO resp = new GroupTaxRespBO();
resp.setZTDM(orderInfoContentEnum.getKey());

@ -4,6 +4,12 @@ package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
public class DATABO {
public static DATABO build() {
DATABO databo = new DATABO();
databo.setDATAINFOS(DATAINFOSBO.build());
return databo;
}
private DATAINFOSBO DATAINFOS;
public void setDATAINFOS(DATAINFOSBO DATAINFOS) {
this.DATAINFOS = DATAINFOS;

@ -3,11 +3,19 @@ package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
import com.alibaba.fastjson.annotation.JSONField;
import java.util.ArrayList;
import java.util.List;
public class DATAINFOSBO {
public static DATAINFOSBO build() {
DATAINFOSBO datainfosbo = new DATAINFOSBO();
datainfosbo.setDATAINFO(new ArrayList());
datainfosbo.setPUUID("");
return datainfosbo;
}
@JSONField(name = "DATAINFO")
private List DATAINFO;
private String PUUID;

@ -2,8 +2,22 @@
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
import com.dxhy.order.consumer.openapi.protocol.v4.sbzx.SbzxztcxRspBO;
public class ESBBO {
public static ESBBO build() {
ESBBO esbbo = new ESBBO();
esbbo.setDATA(DATABO.build());
esbbo.setRESULT("");
esbbo.setDESC("");
return esbbo;
}
private String RESULT;
private String DESC;
private DATABO DATA;
public void setDATA(DATABO DATA) {
this.DATA = DATA;
@ -12,4 +26,19 @@ public class ESBBO {
return DATA;
}
public String getRESULT() {
return RESULT;
}
public void setRESULT(String RESULT) {
this.RESULT = RESULT;
}
public String getDESC() {
return DESC;
}
public void setDESC(String DESC) {
this.DESC = DESC;
}
}

@ -1,16 +1,22 @@
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
public class SDEnergyMdmBaseBO {
private ESBBO ESBBO;
public static SDEnergyMdmBaseBO build() {
SDEnergyMdmBaseBO baseBO = new SDEnergyMdmBaseBO();
baseBO.setESB(ESBBO.build());
return baseBO;
}
private ESBBO ESB;
public void setESB(ESBBO ESBBO) {
this.ESBBO = ESBBO;
this.ESB = ESBBO;
}
public ESBBO getESB() {
return ESBBO;
return ESB;
}
}

@ -0,0 +1,42 @@
package com.dxhy.order.consumer.openapi.protocol.v6.sdenergy;
/**
* @Description 山能mdm返回报文基础BO
* @Author 巩权林
* @Date 2023/2/15 15:18
**/
public class SDEnergyMdmBaseRespBO {
private String CODE;
private String UUID;
private String SYNSTATUS;
private String SYNRESULT;
public void setCODE(String CODE) {
this.CODE = CODE;
}
public String getCODE() {
return CODE;
}
public void setUUID(String UUID) {
this.UUID = UUID;
}
public String getUUID() {
return UUID;
}
public void setSYNSTATUS(String SYNSTATUS) {
this.SYNSTATUS = SYNSTATUS;
}
public String getSYNSTATUS() {
return SYNSTATUS;
}
public void setSYNRESULT(String SYNRESULT) {
this.SYNRESULT = SYNRESULT;
}
public String getSYNRESULT() {
return SYNRESULT;
}
}

@ -381,5 +381,5 @@ public interface InterfaceServiceV3 {
* @param secretId
* @return
*/
GroupTaxRespBO syncGroupTax(List<GroupTaxReqBO> groupTaxReqBO, String secretId);
List<GroupTaxRespBO> syncGroupTax(List<GroupTaxReqBO> groupTaxReqBO, String secretId);
}

@ -2545,6 +2545,8 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
log.error("{}同步购买方信息异常:{}", LOGGER_MSG_V4, e);
GmfxxtbRspBO.build(gmfxxtbRsp, OrderInfoContentEnum.BUYER_MESSAGE_SYNC_ERROR);
}
gmfxxtbRsp.setCODE(gmfxxtbReq.getCODE());
gmfxxtbRsp.setUUID(gmfxxtbReq.getUUID());
gmfxxtbRspList.add(gmfxxtbRsp);
}
return gmfxxtbRspList;
@ -5330,20 +5332,25 @@ public class InterfaceServiceImplV3 implements InterfaceServiceV3 {
* @return
*/
@Override
public GroupTaxRespBO syncGroupTax(List<GroupTaxReqBO> groupTaxReqBO, String secretId) {
GroupTaxRespBO resp = GroupTaxRespBO.build(OrderInfoContentEnum.SUCCESS);
public List<GroupTaxRespBO> syncGroupTax(List<GroupTaxReqBO> groupTaxReqBO, String secretId) {
List<GroupTaxRespBO> resp = new ArrayList<GroupTaxRespBO>();
// 根据商品名称和和商品编码查下商品编码公司是否已经录入了物料编码
try {
for (GroupTaxReqBO tempBO : groupTaxReqBO) {
GroupTaxRespBO tempResp = syncGroupTax(tempBO, secretId);
if (tempResp.isFailed()) {
return tempResp;
}
}
GroupTaxRespBO tempResp = new GroupTaxRespBO();
try {
tempResp = syncGroupTax(tempBO, secretId);
tempResp.setCode(tempBO.getCODE());
tempResp.setUuid(tempBO.getUUID());
resp.add(tempResp);
} catch (OrderReceiveException e) {
log.error("{}同步集团商品税编表异常", LOGGER_MSG_V4, e);
resp.setZTDM(e.getCode());
resp.setZTXX(e.getMessage());
GroupTaxRespBO errorResp = new GroupTaxRespBO();
errorResp.setZTDM(e.getCode());
errorResp.setZTXX(e.getMessage());
errorResp.setCode(tempBO.getCODE());
errorResp.setUuid(tempBO.getUUID());
resp.add(errorResp);
}
}
return resp;

Loading…
Cancel
Save