광주은행 표준전문 관련 작업

This commit is contained in:
yunjy-hp
2025-12-09 13:47:00 +09:00
parent 3dd7c141f7
commit 616b2a36f3
9 changed files with 735 additions and 26 deletions
@@ -3,6 +3,7 @@ package com.eactive.eai.custom.message;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import com.eactive.eai.common.util.DatetimeUtil;
import org.apache.commons.lang3.StringUtils;
import com.eactive.eai.common.server.Keys;
@@ -19,8 +20,6 @@ import com.eactive.eai.common.util.UUID;
*/
public final class GUIDGeneratorKJB {
private static final DateTimeFormatter SDF_YYYYMMDDHHMMSS = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
/*
* 그룹사코드(3) + 호스트명(8) + 서버구분번호(2) + 일자(8) + 전문생성시간(6) + 일련번호(6) + 시스템경로번호(3, '001')
*/
@@ -34,18 +33,34 @@ public final class GUIDGeneratorKJB {
}
public synchronized static String getGUID(String groupCmpCd) {
if (StringUtils.isEmpty(groupCmpCd)) groupCmpCd = "034"; //광주은행 그룹회사코드 "034"
String nowDateTime = SDF_YYYYMMDDHHMMSS.format(ZonedDateTime.now());
String strSeq = StringUtils.leftPad(String.valueOf(seq), 6, '0') ;
String guid = groupCmpCd + UNIQUE_NUM + nowDateTime + strSeq + "001";
String guid = groupCmpCd + UNIQUE_NUM;
guid = guid + DatetimeUtil.getCurrentDateTime();
seq++;
if (seq > 999999) {
if(seq < 10) {
guid = guid + "00000" + seq;
}
else if(seq < 100) {
guid = guid + "0000" + seq;
}
else if(seq < 1000) {
guid = guid + "000" + seq;
}
else if(seq < 10000) {
guid = guid + "00" + seq;
}
else if(seq < 100000) {
guid = guid + "0" + seq;
}
else {
guid = guid + seq;
}
seq ++;
if(seq > 999999) {
seq = 1;
}
return guid;
return guid + "001";
}
private static String UNIQUE_NUM;
@@ -65,7 +65,7 @@ public class InterfaceMapperKJB extends DefaultInterfaceMapper {
@Override
public String getOrgGuid(StandardMessage standardMessage) {
String orgGuid = getItemValue(standardMessage, getPath(GUID_ORG));
String orgGuid = getItemValue(standardMessage, getPath(GUID));
if (orgGuid.length() == 36) {
orgGuid = orgGuid.substring(0, 33);
}
@@ -0,0 +1,185 @@
package com.eactive.eai.custom.message;
import com.eactive.eai.adapter.AdapterGroupVO;
import com.eactive.eai.adapter.AdapterManager;
import com.eactive.eai.common.dao.Keys;
import com.eactive.eai.common.server.EAIServerManager;
import com.eactive.eai.common.util.DatetimeUtil;
import com.eactive.eai.common.util.Logger;
import com.eactive.eai.common.util.MessageUtil;
import com.eactive.eai.common.util.StringUtil;
import com.eactive.eai.inbound.processor.ProcessVO;
import com.eactive.eai.inbound.processor.Processor;
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.DefaultStandardMessageCoordinator;
import com.eactive.eai.message.service.InterfaceMapper;
import com.ext.eai.common.stdmessage.STDMessageKeys;
import org.apache.commons.lang.StringUtils;
import java.net.UnknownHostException;
import java.util.Properties;
public class StandardMessageCoordinatorKJB extends DefaultStandardMessageCoordinator {
private static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
public static final String DEFAULT_LENGTH = "00000745";
private static final String MESSAGE_PART = "Message";
private static final String MESSAGE_PART_HEADER_PART = "Message.Msg_Header";
private static final String MESSAGE_PART_MSG_HEDR_KNCD = "Message.Msg_Header.MSG_HEDR_KNCD";
private static final String MESSAGE_PART_MSG_HEDR_LEN = "Message.Msg_Header.MSG_HEDR_LEN";
private static final String MESSAGE_PART_BODY_PART = "Message.Msg_Body";
private static final String MESSAGE_PART_OUTPUT_MSG_CD = "Message.Msg_Body.OUTPUT_MSG_CD";
private static final String MESSAGE_PART_OUTPUT_MSG_CTNT = "Message.Msg_Body.OUTPUT_MSG_CTNT";
private static final String COMMON_PART_GROUP_CMD_CD = "Common.Service_info.GROUP_CMP_CD";
private static final String COMMON_PART_OTSD_CHNL_INST_CD = "Common.Service_info.OTSD_CHNL_INST_CD";
private static final String DATA_HEADER_DATA_HEDR_LEN = "Data_Part.Data_Header.DATA_HEDR_LEN";
@Override
public void coordinateAfterParsing(StandardMessage standardMessage, Object paramObject, Properties prop) {
}
@Override
public void coordinateBeforeStandardMessageSend(StandardMessage standardMessage, String msgType, String charset) {
makeupDataHeaderLength(standardMessage, charset);
}
@Override
public void coordinateBeforeResponse(StandardMessage standardMessage, ProcessVO processVO, Properties prop, String charset) {
makeupDataHeaderLength(standardMessage, charset);
}
@Override
public void coordinateAfterCreateMessageByRule(StandardMessage standardMessage, Object paramObject, Properties prop) {
// guid 설정
StandardMessageManager standardManager = StandardMessageManager.getInstance();
InterfaceMapper mapper = standardManager.getMapper();
//GUID 설정
String groupCmdCd = standardMessage.findItemValue(COMMON_PART_GROUP_CMD_CD);
String guid = GUIDGeneratorKJB.getGUID(groupCmdCd);
mapper.setGuid(standardMessage, guid);
StandardItem dataHeaderEtc = standardMessage.findItem("Data_Part.Data_Header_Etc");
dataHeaderEtc.setHidden(true);
//기관코드, 텔러번호 설정
//Adapter에 셋팅된 기관코드를 셋팅한다.
String adapterGroupName = prop.getProperty(Processor.ADAPTER_GROUP_NAME);
AdapterManager adapterManager = AdapterManager.getInstance();
AdapterGroupVO adptGrpVO = adapterManager.getAdapterGroupVO(adapterGroupName);
// Adapter의 기관코드를 얻어온다.
//TODO: 기관코드의 경우 현재 EAPIM 시스템에 컬럼은 있으나 설정을 사용하지 않고있으므로 불필요 할 경우 사용하지 않는다, 필요 할 경우 추가한다.
String inAdapterOsidInstiNo = adptGrpVO.getOsidInstiNo();
if(inAdapterOsidInstiNo != null && inAdapterOsidInstiNo.trim().length() > 0) {
standardMessage.setData(COMMON_PART_OTSD_CHNL_INST_CD, inAdapterOsidInstiNo);
if (logger.isDebug()) {
logger.debug("FIELD SET " + COMMON_PART_OTSD_CHNL_INST_CD + " << "+inAdapterOsidInstiNo);
}
}
//2012-12-17 나영채 차장 타발요청에만 셋팅해달라고 요청
//전문요청일자
standardMessage.setData("Common.BizProc_Info.MESG_DMAN_DT", DatetimeUtil.getCurrentDate());
//전문요청시간
standardMessage.setData("Common.BizProc_Info.MESG_DMAN_TKTM", DatetimeUtil.getTime8());
//2012-07-24 임의 로 영업일자에 system시간 설정
standardMessage.setData("Common.BizProc_Info.BZOP_DT", DatetimeUtil.getCurrentDate());
EAIServerManager eaiServerManager = EAIServerManager.getInstance();
//비표준일경우 시스템 운영환경 구분코드를 셋팅한다.
standardMessage.setData("Common.Service_info.SYS_OPRT_ENV_DVCD", getSysOprtEnvDvcd(eaiServerManager));
//헤더부 최초전송IP주소 FRST_TRNM_IPAD
try {
standardMessage.setData("Header.Src_System.FRST_TRNM_IPAD", java.net.InetAddress.getLocalHost().getHostAddress());
} catch (UnknownHostException e) {
}
}
@Override
public boolean coordinateSetStandardMessageError(StandardMessage standardMessage, InterfaceMapper mapper,
String errCode, String errMsg) {
mapper.setResponseType(standardMessage, STDMessageKeys.RESPONSE_TYPE_CODE_E);
mapper.setSendRecvDivision(standardMessage, STDMessageKeys.SEND_RECV_CD_RECV);
StandardItem messagePart = standardMessage.findItem(MESSAGE_PART);
messagePart.setHidden(false);
messagePart.setSize(1);
StandardItem messageHeaderPart = standardMessage.findItem(MESSAGE_PART_HEADER_PART);
messageHeaderPart.setSize(1);
StandardItem messageBodyPart = standardMessage.findItem(MESSAGE_PART_BODY_PART);
messageBodyPart.setSize(1);
errCode = StringUtils.defaultString(errCode);
String siteErrCode = MessageUtil.getTobeCode(errCode);
String siteErrMessage;
switch(errCode) {
case("RECEAIIRP070"):
siteErrMessage = "거래 통제 되었습니다.";
break;
default:
siteErrMessage = MessageUtil.getTobeMessage(errCode);
break;
}
mapper.setErrorCode(standardMessage, siteErrCode);
standardMessage.setData(MESSAGE_PART_MSG_HEDR_KNCD, "EM");
standardMessage.setData(MESSAGE_PART_MSG_HEDR_LEN, DEFAULT_LENGTH);
standardMessage.setData(MESSAGE_PART_OUTPUT_MSG_CD, siteErrCode);
//Message.Msg_Body.OUTPUT_MSG_CTNT
mapper.setErrorMsg(standardMessage, siteErrMessage);
return false;
}
@Override
public void coordinateAfterRecvNonStdSyncResponse(StandardMessage responseMessage) {
StandardItem messagePart = responseMessage.findItem(MESSAGE_PART);
messagePart.setHidden(false);
messagePart.setSize(1);
StandardItem messageHeaderPart = responseMessage.findItem(MESSAGE_PART_HEADER_PART);
messageHeaderPart.setSize(1);
StandardItem messageBodyPart = responseMessage.findItem(MESSAGE_PART_BODY_PART);
messageBodyPart.setSize(1);
responseMessage.setData(MESSAGE_PART_MSG_HEDR_KNCD, "NM");
responseMessage.setData(MESSAGE_PART_MSG_HEDR_LEN, DEFAULT_LENGTH);
responseMessage.setData(MESSAGE_PART_OUTPUT_MSG_CD, "100000 ");
responseMessage.setData(MESSAGE_PART_OUTPUT_MSG_CTNT, "정상처리 되었습니다.");
}
public String getSysOprtEnvDvcd(EAIServerManager eaiServerManager) {
String result = "";
if (eaiServerManager.isPEAIServer()){ //운영
result = STDMessageKeys.SYS_OPRT_ENV_DVCD_ONLINE;
}else if (eaiServerManager.isDEAIServer()){ //개발
result = STDMessageKeys.SYS_OPRT_ENV_DVCD_DEV;
}else if (eaiServerManager.isSEAIServer()){ //테스트/검증
result = STDMessageKeys.SYS_OPRT_ENV_DVCD_TESTSTAGE;
}
return result;
}
private static void makeupDataHeaderLength(StandardMessage standardMessage, String charset) {
String dataBytesLengthStr = null;
try {
dataBytesLengthStr = String.valueOf(standardMessage.getBizDataBytes(charset).length);
String dataHeaderLength = StringUtils.leftPad(dataBytesLengthStr, 8, '0');
standardMessage.setData(DATA_HEADER_DATA_HEDR_LEN, dataHeaderLength);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}