From 540ebdaf1f12c53d8e668472166e3aa3af9fda16 Mon Sep 17 00:00:00 2001 From: curry772 Date: Wed, 12 Aug 2026 09:41:52 +0900 Subject: [PATCH] =?UTF-8?q?=EC=96=B4=EB=8C=91=ED=84=B0=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=ED=95=B8=EB=93=A4=EB=9F=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DJbCommonAdapterErrorMsgHandler.java | 99 +++++++++++++++++++ .../handler/ErpAdapterErrorMsgHandler.java | 63 ++++++------ 2 files changed, 132 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/eactive/eai/custom/adapter/handler/DJbCommonAdapterErrorMsgHandler.java diff --git a/src/main/java/com/eactive/eai/custom/adapter/handler/DJbCommonAdapterErrorMsgHandler.java b/src/main/java/com/eactive/eai/custom/adapter/handler/DJbCommonAdapterErrorMsgHandler.java new file mode 100644 index 0000000..746694f --- /dev/null +++ b/src/main/java/com/eactive/eai/custom/adapter/handler/DJbCommonAdapterErrorMsgHandler.java @@ -0,0 +1,99 @@ +package com.eactive.eai.custom.adapter.handler; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Properties; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.adapter.handler.TemplateCodeConvertAdapterErrorMsgHandler; +import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey; +import com.eactive.eai.common.message.EAIMessage; +import com.eactive.eai.common.message.EAIMessageKeys; +import com.eactive.eai.common.util.MessageUtil; +import com.eactive.eai.custom.message.StandardMessageCoordinatorDJB; +import com.eactive.eai.message.StandardItem; +import com.eactive.eai.message.StandardMessage; +import com.eactive.eai.message.manager.StandardMessageManager; +import com.eactive.eai.message.service.InterfaceMapper; +import com.eactive.eai.util.JsonPathUtil; +import com.fasterxml.jackson.databind.JsonNode; + +public class DJbCommonAdapterErrorMsgHandler extends TemplateCodeConvertAdapterErrorMsgHandler { + + /** + * 표준 -> 비표준 거래 아웃바운드 어댑터에서 Exception이 발생했을 때, Outbound Process 응답 메시지 생성 + */ + @Override + public Object generateOutboundErrorResponseMessage(String outboundadapterGroupName, String outboundadapterName, + Properties callProp, Object outboundRequestData, EAIMessage resEaiMsg) throws Exception { + + StandardMessage standardMessage = resEaiMsg.getStandardMessage(); + + @SuppressWarnings("unchecked") + Map map = (Map) callProp.get(HttpAdapterServiceKey.OUTBOUND_PROPERTY_MAP); + Object responseMessage = map.get(HttpAdapterServiceKey.OUTBOUND_RESPONSE_MESSAGE); + String rspErrCd = resEaiMsg.getRspErrCd(); + String errorCode = StringUtils.defaultString(MessageUtil.getTobeCode(rspErrCd)); + String errorMsg = StringUtils.defaultString(MessageUtil.getTobeMessage(rspErrCd)); + String errorDesc = StringUtils.defaultString(MessageUtil.getTobeDesc(rspErrCd)); + String errorLoc = StringUtils.substring(resEaiMsg.getRspErrMsg(), 0, 200); + + JsonNode jsonNode = JsonPathUtil.toTree(responseMessage); + + if (jsonNode != null) { + if(jsonNode.has("rspCode")) + errorCode = jsonNode.get("rspCode").asText(); + + if(jsonNode.has("rspMsg")) + errorMsg = jsonNode.get("rspMsg").asText(); + + if(jsonNode.has("outpMsgDesc")) + errorDesc = jsonNode.get("outpMsgDesc").asText(); + + } + + // msg_dvcd = EM (에러메시지) + standardMessage.setData(StandardMessageCoordinatorDJB.MSG_DVCD, "EM"); + + // 출력속성코드 = 1(팝업) + standardMessage.setData(StandardMessageCoordinatorDJB.MSG_OUTP_ATRB_CD, "1"); + + StandardMessageManager manager = StandardMessageManager.getInstance(); + InterfaceMapper mapper = manager.getMapper(); + + // mapper 에러코드 설정 + mapper.setErrorCode(standardMessage, errorCode); + mapper.setErrorMsg(standardMessage, errorMsg); + + // MSG_LIST 1건 구성 + StandardItem msgList = standardMessage.findItem(StandardMessageCoordinatorDJB.MSG_LIST); + if(msgList == null) { + standardMessage.setData(StandardMessageCoordinatorDJB.MSG_LIST_ROWCNT, "1"); + msgList = standardMessage.findItem(StandardMessageCoordinatorDJB.MSG_LIST); + } + + if (msgList != null) { + msgList.setSize(1); + LinkedHashMap row = msgList.getArrayChilds(0, true); + if (row != null) { + if (row.containsKey("outp_msg_cd")) + row.get("outp_msg_cd").setValue(errorCode); + if (row.containsKey("outp_msg_ctnt")) + row.get("outp_msg_ctnt").setValue(errorMsg); + if (row.containsKey("outp_msg_desc")) + row.get("outp_msg_desc").setValue(errorDesc); + if (row.containsKey("err_occu_loct")) + row.get("err_occu_loct").setValue(errorLoc); + } + } + + // 성공 처리 처럼 진행한다. + resEaiMsg.setRspErrCd(EAIMessageKeys.EAI_SUCCESS_CODE, false); + + // 응답 메시지 리턴 + return ""; + + } + +} diff --git a/src/main/java/com/eactive/eai/custom/adapter/handler/ErpAdapterErrorMsgHandler.java b/src/main/java/com/eactive/eai/custom/adapter/handler/ErpAdapterErrorMsgHandler.java index ec53d92..e7b16f8 100644 --- a/src/main/java/com/eactive/eai/custom/adapter/handler/ErpAdapterErrorMsgHandler.java +++ b/src/main/java/com/eactive/eai/custom/adapter/handler/ErpAdapterErrorMsgHandler.java @@ -2,47 +2,50 @@ package com.eactive.eai.custom.adapter.handler; import java.util.Properties; -import org.apache.commons.lang3.StringUtils; - import com.eactive.eai.adapter.handler.TemplateCodeConvertAdapterErrorMsgHandler; import com.eactive.eai.common.message.EAIMessage; -import com.eactive.eai.common.util.Logger; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.eactive.eai.common.message.EAIMessageKeys; +import com.eactive.eai.custom.message.StandardMessageCoordinatorDJB; +import com.eactive.eai.message.StandardItem; +import com.eactive.eai.message.StandardMessage; +import com.eactive.eai.message.manager.StandardMessageManager; +import com.eactive.eai.message.service.InterfaceMapper; public class ErpAdapterErrorMsgHandler extends TemplateCodeConvertAdapterErrorMsgHandler { - private static final Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER); - - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - + /** + * 표준 -> 비표준 거래 + * 아웃바운드 어댑터에서 Exception이 발생했을 때, Outbound Process 응답 메시지 생성 + */ @Override - public Object generateNonStandardErrorResponseMessage(String inboundAdapterGroupName, String inboundAdapterName, - Properties callProp, Object outboundRequestData, EAIMessage resEaiMsg) throws Exception { + public Object generateOutboundErrorResponseMessage(String outboundadapterGroupName, + String outboundadapterName, Properties callProp, Object outboundRequestData, EAIMessage resEaiMsg) + throws Exception { + + StandardMessage standardMessage = resEaiMsg.getStandardMessage(); + // msg_dvcd = EM (에러메시지) + standardMessage.setData(StandardMessageCoordinatorDJB.MSG_DVCD, "NM"); - Object responseMsessage = super.generateNonStandardErrorResponseMessage(inboundAdapterGroupName, - inboundAdapterName, callProp, outboundRequestData, resEaiMsg); + // 출력속성코드 = 1(팝업) + standardMessage.setData(StandardMessageCoordinatorDJB.MSG_OUTP_ATRB_CD, "1"); - logger.debug("generateNonStandardErrorResponseMessage - {}", responseMsessage); + // MSG_LIST 1건 구성 + standardMessage.setData(StandardMessageCoordinatorDJB.MSG_LIST_ROWCNT, "0"); + StandardItem msgPart = standardMessage.findItem("MSG"); + msgPart.getChilds().remove("MSG_LIST"); - if (!(responseMsessage instanceof String)) { - return responseMsessage; - } + StandardMessageManager manager = StandardMessageManager.getInstance(); + InterfaceMapper mapper = manager.getMapper(); + + // mapper 에러코드 설정 + mapper.setErrorCode(standardMessage, ""); + mapper.setErrorMsg(standardMessage, "처리오류"); - String jsonStr = (String) responseMsessage; - if (StringUtils.isBlank(jsonStr)) { - return responseMsessage; - } + // 성공 처리 처럼 진행한다. + resEaiMsg.setRspErrCd(EAIMessageKeys.EAI_SUCCESS_CODE, false); + + return null; - JsonNode rootNode = OBJECT_MAPPER.readTree(jsonStr); - - boolean modified = false; - - if (modified) { - responseMsessage = OBJECT_MAPPER.writeValueAsString(rootNode); - } - - return responseMsessage; } }