//package com.ext.eai.common.stdmessage;
//
//import com.eactive.eai.common.dao.Keys;
//import com.eactive.eai.common.exception.ExceptionUtil;
//import com.eactive.eai.common.message.*;
//import com.eactive.eai.common.message.MessageType;
//import com.eactive.eai.common.server.EAIServerManager;
//import com.eactive.eai.common.util.*;
//import com.eactive.eai.inbound.error.InboundErrorKeys;
//import com.eactive.eai.inbound.processor.ProcessVO;
//import com.eactive.eai.inbound.processor.RequestProcessorException;
//import com.eactive.eai.transformer.layout.Layout;
//import com.eactive.eai.transformer.message.*;
//import com.eactive.eai.util.SimHeaderUtil;
//import com.ext.eai.common.stdmessage.parser.STDMessageParser;
//import com.ext.eai.common.stdmessage.parser.STDMessageParserFactory;
//import com.ext.eai.common.stdmessage.parser.STDMessageParserType;
//import org.apache.commons.lang3.StringUtils;
//import org.json.simple.JSONArray;
//import org.json.simple.JSONObject;
//import org.json.simple.JSONValue;
//
//import java.io.UnsupportedEncodingException;
//import java.net.UnknownHostException;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//
///**
//* 1. 기능 :EAI Message 와 표준전문 변환 class
//* 2. 처리 개요 : EAI 메시지 와 표준전문 상호 변환
//* 3. 주의사항 :
//* @author  :
//* @version : v 1.0.0
//* @see :
//* @since   :
//*  :
//*/
//public class ExtMessageConverter {
//	//출력 매체부 관련
//	private static final String FIELD_OTPT_MDCL_LIST = "otptMdclList";
//	private static final String FIELD_OTPT_MDCL_DAT = "OTPT_MDCL_DAT";
//	private static final String FIELD_OTPT_MDCL_INTF_ID = "OTPT_MDCL_INTF_ID";
//	private static final String DEFAULT_ENCODE = "euc-kr";
//	/**
//     * Default Logger
//     */
//    static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
//
//	public ExtMessageConverter() {
//		super();
//	}
//	//데이터 받으면 필요 (100,300 전에 필요)
//	private static ExtMessage toExtMessage(ExtMessage extmessage,Object stdmessage) {
//		boolean isFEP = EAIServerManager.getInstance().isFEP();
//		String systemType = EAIServerManager.getInstance().getSystemType();
//
//		if (stdmessage instanceof STDMessage) {
//			STDMessage stdmsg = (STDMessage)stdmessage;
//
//
//			//stdheader 와 stdcommon 의 field 값을 셋팅
//			HashMap<String,Object> map = new HashMap<String,Object>();
//			HashMap<String,Object> hdr = stdmsg.getKeyValues(STDMessage.STDHEADER);
////			HashMap<String,Object> com = stdmsg.getKeyValues(STDMessage.STDCOMMON);
//
//			if (hdr != null) map.putAll(hdr);
////			if (com != null) map.putAll(com);
//			extmessage.setFullheaders(map);
//
//			//이후 부터는 stdmsg 에서 가져오던걸 extmessage 에서 가져오는 걸로 변경
////			extmessage.setGuidKey(extmessage.getFullHeaderString("stdcommon.groupCmpCd"));
//			extmessage.setGuid(extmessage.getFullHeaderString("stdheader.global_id").substring(0,UUIDGenerator.GUID_LENGTH));
////			extmessage.setOrgGuid(extmessage.getFullHeaderString("stdcommon.ortrGuid"));
//			extmessage.setGuidSeq(new Integer(extmessage.getFullHeaderString("stdheader.global_id").substring(UUIDGenerator.GUID_LENGTH,UUIDGenerator.GUID_LENGTH + UUIDGenerator.GUID_SEQ_LENGTH)));
//
//			//계정계 서비스ID
//			extmessage.setServiceId(extmessage.getFullHeaderString(ExtMessageKeys.GROUP_STD_HEADER+"."+ExtMessageKeys.FIELD_SERVICE_ID));
////			//응답받을 정상 서비스ID
////			extmessage.setReturnServiceId(extmessage.getFullHeaderString("stdcommon.procsRsltRcmsSrvcId"));
////			//응답받을 오류 서비스ID
////			extmessage.setErrorServiceId("");
//
//
//			/**
//			 * 인터페이스관련 시작
//			 */
//			//인터페이스
//			extmessage.setSystemType(systemType);
//			String ifId = extmessage.getFullHeaderString(ExtMessageKeys.GROUP_STD_HEADER+"."+ExtMessageKeys.FIELD_SERVICE_ID) ;
//			if(StringUtils.isNotBlank(ifId))extmessage.setInterfaceId(ifId);
//
//
//			//인스턴스ID
//			extmessage.setInstanceId(EAIServerManager.getInstance().getInstId());
//			//세션ID
//			String sessionId = extmessage.getFullHeaderString("stdheader.Session_id");
//			extmessage.setSessionId(sessionId);
//
//			//요청응답관련 : S/R
//			if (StringUtils.isBlank(extmessage.getSendRecv())) {
//				String mesgDmanDvcd = extmessage.getFullHeaderString("stdheader.return_gubun");
//				if (StringUtils.isNotBlank(mesgDmanDvcd))
//					extmessage.setSendRecv(mesgDmanDvcd);
//			}
//
//			//내외부 구분 코드  : 1(내부로)/2(외부로)
////			String hmabDvcd = extmessage.getFullHeaderString("stdcommon.hmabDvcd");
//			String hmabDvcd = "1";
//			if (isFEP) {
//				// TODO 하나캐피탈 POC 준비로 임시로 2로 처리
//				hmabDvcd = "2";
//			}
//			if(StringUtils.isNotBlank(hmabDvcd)) extmessage.setDirection(hmabDvcd);
//
//			/**
//			 * 인터페이스관련 종료
//			 */
//
//			/**
//			 * 운영환경구분코드
//			 *
//			 * engine
//			 * 운영 (O), 스테이징(S), 개발(D), DR(R), LOCAL(L), SIM(E)
//			 *
//			 * 사이트(전북)
//			 * 운영(O) , 스테이징(S), 개발(D), DR(R), 로컬(L), SIM(E)
//*/
////			extmessage.setOperationEnv(extmessage.getFullHeaderString("stdcommon.sysOprtEnvDvcd"));
//
//			//최초요청IP주소
//			extmessage.setFirstRequestSysIp(extmessage.getFullHeaderString("stdheader.ip_addr"));
//
//			//복원여부
////			extmessage.setRecoverYn(extmessage.getFullHeaderString("stdcommon.ortrRestrYn"));
//
//			//기관코드
//			extmessage.setInstitutionCode(extmessage.getFullHeaderString("stdheader.com_code")); //그룹사코드
//
//			//타임아웃
////			extmessage.setTotalTimeout(extmessage.getFullHeaderString("stdheader.gnrzTmotTktm"));
//
//			//extmessage.setDate(stdmsg.getData("stdcommon.txDt"));  //날짜
//			//extmessage.setTime(stdmsg.getData("stdcommon.txTime"));//시간
//
////			/**
////			 * extMessage 에서 에러코드는 표준전문 에러 응답때문에 필요
////			 */
////			extmessage.setErrorCode(extmessage.getFullHeaderString("stdheader.msg_id"));
////			extmessage.setErrorMessage(extmessage.getFullHeaderString("stdheader.msg_nm"));
//
////			/**
////			 * 우체국
////			 * 거래 형태 - MCI만 구분필요할꺼라고 보여짐
////			 * G : 일반거래
////			 * P : PUSH거래
////			 * D : Dummy 응답
////			 * M : 대량거래(Mass)
////			 * K : Ack응답
////			 */
////			String TLGR_TYP_DVSN_CD = stdmsg.getData(ExtMessageKeys.GROUP_STD_HEADER+"."+ExtMessageKeys.FIELD_TLGR_TYP_DVSN_CD);
////			if ("D".equals(TLGR_TYP_DVSN_CD)) {
////				extmessage.setDummy(true);
////			}else if ("P".equals(TLGR_TYP_DVSN_CD)) {
////				extmessage.setPush(true);
////			}else if ("M".equals(TLGR_TYP_DVSN_CD)) {
////				extmessage.setMass(true);
////			}else if ("G".equals(TLGR_TYP_DVSN_CD)) {
////				extmessage.setNormal(true);
////			}
//			/**
//			 * 전북
//			 */
//			//String TRAN_TYPE = stdmsg.getData(ExtMessageKeys.GROUP_STD_COMMON+"."+ExtMessageKeys.FIELD_TRAN_TYPE);
//			extmessage.setNormal(true);
//
////			extmessage.setTargetGroup("1");
//
//			extmessage.setStdMessage(stdmessage);
//
//			extmessage.setUserId( extmessage.getFullHeaderString(ExtMessageKeys.GROUP_STD_HEADER+"."+ExtMessageKeys.FIELD_USERID) );
//
//			/**
//			 * MCI 전옹 시작 ??
//			 */
//			//extmessage.setRofcCode(  );
//			//extmessage.setBrnCode(  );
//			//extmessage.setRspsAprvProcCode(  );
//			//extmessage.setPushDvsnCode(  );
//			//extmessage.setPushRcvrList();
////			try {
////				String aprvUserId = stdmsg.getData("commonHeader.approveList[0].RPNB_USERID");
////				extmessage.setAprvUserId( aprvUserId );
////			}
////			catch(Exception e) {
////				extmessage.setAprvUserId( null );
////			}
//
//			/**
//			 * MCI 전용 종료 ??
//			 */
//
//			//처리결과 구분코드 : NR/ER
//			//extmessage.setResponseType( extmessage.getFullHeaderString("stdcommon.procsRsltDvcd") );
//
//			//대외업무구분코드
////			String extBizCode = ifId == null || ifId.length() < 3 ? "" : ifId.substring(0,3);
////			if (extBizCode == null) extBizCode ="";
////			extmessage.setExtBizCode(extBizCode);
//
//			//거래처리구분코드 : S/A/D
//			//extmessage.setSyncAsyncType( extmessage.getFullHeaderString("stdcommon.txSynzDvcd") );
//
//		}
//		return extmessage;
//
//	}
//	//전송하기전에 필요(200,400 전에 셋팅 필요)
//	private static Object fromExtMessage(ExtMessage extmessage,Object stdmessage) {
//
//		boolean isFEP = EAIServerManager.getInstance().isFEP();
//		//eai.systemType = MCI/EAI/FEP
////		String systemType = EAIServerManager.getInstance().getSystemType();
//
//		//inst.Name에서 추출
////		String serverType = EAIServerManager.getInstance().getServerType();
//
//		STDMessage stdmsg = null;
//		if (stdmessage instanceof STDMessage) {
//			stdmsg = (STDMessage)stdmessage;
//
//			//extmessage에 셋팅했던 값을 stdmsg에 일괄적으로 셋팅
//			HashMap<String,Object> map = extmessage.getFullheaders();
//			for(String key : map.keySet()) {
//				stdmsg.setObjectData(key, map.get(key));
//			}
//			//위쪽 일괄 매핑시 엔진에서 사용하지는 않지만 변경한값이 매핑(엔진에서 직접 extmessage.setFullheader 에 셋팅
//			//아래쪽은 일괄적으로 셋팅한 값위에 엔진에서 변경한 값 매핑
//
////			stdmsg.setData("stdcommon.groupCmpCd",extmessage.getGuidKey());
//			//전북은 GUID(33) + 일련번호(3)
//			stdmsg.setData("stdheader.global_id",extmessage.getGuid()+ StringUtils.leftPad(Integer.toString(extmessage.getGuidSeq()), UUIDGenerator.GUID_SEQ_LENGTH,'0'));
////			stdmsg.setData("stdcommon.ortrGuid",extmessage.getOrgGuid()) ;
//
//			//계정계 서비스ID
//			stdmsg.setData(ExtMessageKeys.GROUP_STD_HEADER+"."+ExtMessageKeys.FIELD_SERVICE_ID,extmessage.getServiceId());
//			//응답받을 정상 서비스ID
////			stdmsg.setData("stdcommon.procsRsltRcmsSrvcId",extmessage.getReturnServiceId()) ;
//			//응답받을 오류 서비스ID
//			//stdmsg.setData("stdcommon.procsRsltRcmsSrvcId",extmessage.getErrorServiceId()) ;
//
////			String eaiTranName      = stdmsg.getEaiTranName();
////			if (eaiTranName == null) {
////				eaiTranName = stdmsg.getData("systemHeader.MCI_INTF_ID");
////			}
//
////			stdmsg.setData("stdcommon.ifId",extmessage.getInterfaceId());
//			//인스턴스ID
//			//stdmsg.setData("",extmessage.getInstanceId());
//			//세션ID
//			//stdmsg.setData("",extmessage.getSessionId());
//
//			//요청응답관련 : S/R
//			if (StringUtils.isBlank(stdmsg.getData("stdheader.return_gubun"))) {
//				stdmsg.setData("stdheader.return_gubun", extmessage.getSendRecv());
//			}
//			//내외부 구분 코드  : 1(내부로)/2(외부로) 바뀔일이 없음
////			stdmsg.setData("stdcommon.hmabDvcd",extmessage.getDirection());
//
//			//운영환경구분코드
////			stdmsg.setData("stdcommon.sysOprtEnvDvcd",extmessage.getOperationEnv());
//
//			//최초요청IP주소 : 바뀔일이 없음
//			stdmsg.setData("stdheader.ip_addr",extmessage.getFirstRequestSysIp());
//
//			//복원여부 : 바뀔일 없음
////			stdmsg.setData("stdcommon.ortrRestrYn",extmessage.getRecoverYn());
//
//			//기관코드
//			stdmsg.setData("stdheader.com_code",extmessage.getInstitutionCode());
//
//			//타임아웃
////			stdmsg.setData("stdheader.gnrzTmotTktm",extmessage.getTotalTimeout());
//
//			//extmessage.setDate((stdmsg.getData("systemHeader.TLGR_DMND_DT")).substring(0,8));  //날짜
//			//extmessage.setTime((stdmsg.getData("systemHeader.TLGR_DMND_DT")).substring(8,17));    //시간
//
////			stdmsg.setData("systemHeader.TLGR_DMND_DT",extmessage.getDate() + extmessage.getTime());
//			//stdmsg.setData("stdcommon.txDt",extmessage.getDate());
//			//stdmsg.setData("stdcommon.txTime",extmessage.getTime());
//
//////			stdmsg.setData("systemHeader.msg_id",extmessage.getErrorCode());
//////			stdmsg.setData("systemHeader.msg_nm",extmessage.getErrorMessage());
//
//			//extmessage.setTargetGroup("1");
//
//			stdmsg.setData(ExtMessageKeys.GROUP_STD_HEADER+"."+ExtMessageKeys.FIELD_USERID,extmessage.getUserId());
//
////			stdmsg.setData("stdcommon.procsRsltDvcd",extmessage.getResponseType());
//
//			//대외업무구분코드
//			//stdmsg.setData("",extmessage.getExtBizCode());
//
//			//거래처리구분코드
////			stdmsg.setData("stdcommon.txSynzDvcd",extmessage.getSyncAsyncType());
//
//			//최초전송시스템코드
////			String ifSysCode =stdmsg.getData("stdheader.frstTrnmSysCd");
////			if (StringUtils.isBlank(ifSysCode) && StringUtils.isNotBlank(serverType) ){
////				stdmsg.setData("stdheader.frstTrnmSysCd",serverType.toUpperCase());
////			}
//
//			//전송시스템코드
//			stdmsg.setData("stdheader.Inter_chn", EAIServerManager.getInstance().getSystemGubun());
//			
//			//전송시각
//			stdmsg.setData("stdheader.send_tm", DatetimeUtil.getCurrentTimeMillis());
//		}
//		return (Object)stdmsg;
//	}
//	/**
//	 * STDMessage 를 ExtMessage로 변환 하는 메소드
//	 * stdMessage는 사이트별 표준메시지임
//	 *
//	 * 사용처
//	 *  1. requestProcess에서 요청/응답 전문 컨버젼
//	 *  (getExtMessageForNonStandard,getExtMessageForStandard)
//	 *  2. requestProcess에서 복원할때 컨버젼
//	 *  3. outboundProcess에서 응답받은 전문 컨버젼
//	 * @param extmessage
//	 * @param stdmessage
//	 * @param isStandard
//	 * @return
//	 * @throws Exception
//	 */
////	private static ExtMessage toExtMessage(ExtMessage extmessage,Object stdmessage, boolean isStandard) throws Exception {
////
////		boolean isFEP = EAIServerManager.getInstance().isFEP();
////		String systemType = EAIServerManager.getInstance().getSystemType();
////
////		if (stdmessage instanceof STDMessage) {
////			STDMessage stdmsg = (STDMessage)stdmessage;
////			extmessage.setGuidKey(stdmsg.getData("stdcommon.groupCmpCd"));
////			extmessage.setGuid(stdmsg.getData("stdheader.guid").substring(0,33));
////			extmessage.setOrgGuid(stdmsg.getData("stdcommon.ortrGuid"));
////			extmessage.setGuidSeq(new Integer(stdmsg.getData("stdheader.guid").substring(33,3)));
////
////			//계정계 서비스ID
////			extmessage.setServiceId(stdmsg.getData(ExtMessageKeys.GROUP_STD_COMMON+"."+ExtMessageKeys.FIELD_SERVICE_ID));
////			//응답받을 정상 서비스ID
////			extmessage.setReturnServiceId(stdmsg.getData("stdcommon.procsRsltRcmsSrvcId"));
////			//응답받을 오류 서비스ID
////			extmessage.setErrorServiceId("");
////
////
////			/**
////			 * 인터페이스관련 시작
////			 */
////			//인터페이스
////			extmessage.setSystemType(systemType);
////			extmessage.setInterfaceId( stdmsg.getData("stdcommon.ifId") );
////			//인스턴스ID
////			extmessage.setInstanceId("");
////			//세션ID
////			extmessage.setSessionId("");
////
////			//요청응답관련 : S/R
////			extmessage.setSendRecv(stdmsg.getData("stdheader.mesgDmanDvcd"));
////			//내외부 구분 코드  : 1(내부로)/2(외부로)
////			extmessage.setDirection(stdmsg.getData("stdcommon.hmabDvcd"));
////			/**
////			 * 인터페이스관련 종료
////			 */
////
////			/**
////			 * 운영환경구분코드
////			 *
////			 * engine
////			 * 운영 (O), 스테이징(S), 개발(D), DR(R), LOCAL(L), SIM(E)
////			 *
////			 * 사이트(전북)
////			 * 운영(O) , 스테이징(S), 개발(D), DR(R), 로컬(L), SIM(E)
////			 */
////			extmessage.setOperationEnv(stdmsg.getData("stdcommon.sysOprtEnvDvcd"));
////
////			//최초요청IP주소
////			extmessage.setFirstRequestSysIp(stdmsg.getData("stdheader.frstTrnmIpad"));
////
////			//복원여부
////			extmessage.setRecoverYn(stdmsg.getData("stdcommon.ortrRestrYn"));
////
////			//기관코드
////			extmessage.setInstitutionCode(stdmsg.getData("stdcommon.otsdChnlInstCd"));
////
////			//타임아웃
////			extmessage.setTotalTimeout(stdmsg.getData("stdheader.gnrzTmotTktm"));
////
////			//extmessage.setDate(stdmsg.getData("stdcommon.txDt"));  //날짜
////			//extmessage.setTime(stdmsg.getData("stdcommon.txTime"));//시간
////
////			/**
////			 * extMessage 에서 에러코드는 표준전문 에러 응답때문에 필요
////			 */
////			extmessage.setErrorCode(stdmsg.getData("stdcommon.errCd"));
////			//extmessage.setErrorMessage(stdmsg.getData("stdcommon.errSysCd"));
////
//////			/**
//////			 * 우체국
//////			 * 거래 형태 - MCI만 구분필요할꺼라고 보여짐
//////			 * G : 일반거래
//////			 * P : PUSH거래
//////			 * D : Dummy 응답
//////			 * M : 대량거래(Mass)
//////			 * K : Ack응답
//////			 */
//////			String TLGR_TYP_DVSN_CD = stdmsg.getData(ExtMessageKeys.GROUP_STD_HEADER+"."+ExtMessageKeys.FIELD_TLGR_TYP_DVSN_CD);
//////			if ("D".equals(TLGR_TYP_DVSN_CD)) {
//////				extmessage.setDummy(true);
//////			}else if ("P".equals(TLGR_TYP_DVSN_CD)) {
//////				extmessage.setPush(true);
//////			}else if ("M".equals(TLGR_TYP_DVSN_CD)) {
//////				extmessage.setMass(true);
//////			}else if ("G".equals(TLGR_TYP_DVSN_CD)) {
//////				extmessage.setNormal(true);
//////			}
////			/**
////			 * 전북
////			 */
////			//String TRAN_TYPE = stdmsg.getData(ExtMessageKeys.GROUP_STD_COMMON+"."+ExtMessageKeys.FIELD_TRAN_TYPE);
////			extmessage.setNormal(true);
////
////
////			extmessage.setTargetGroup("1");
////
////			extmessage.setStdMessage(stdmessage);
////
////			extmessage.setUserId( stdmsg.getData(ExtMessageKeys.GROUP_STD_COMMON+"."+ExtMessageKeys.FIELD_USERID) );
////
////			/**
////			 * MCI 전옹 시작 ??
////			 */
////			//extmessage.setRofcCode(  );
////			//extmessage.setBrnCode(  );
////
////			//extmessage.setRspsAprvProcCode(  );
////
////			//extmessage.setPushDvsnCode(  );
////
////			//extmessage.setPushRcvrList();
////
////
//////			try {
//////				String aprvUserId = stdmsg.getData("commonHeader.approveList[0].RPNB_USERID");
//////				extmessage.setAprvUserId( aprvUserId );
//////			}
//////			catch(Exception e) {
//////				extmessage.setAprvUserId( null );
//////			}
////
////			/**
////			 * MCI 전용 종료 ??
////			 */
////
////			//처리결과 구분코드 : NR/ER
////			extmessage.setResponseType( stdmsg.getData("stdcommon.procsRsltDvcd") );
////
////			//대외업무구분코드
////			String extBizCode = stdmsg.getData("stdcommon.ifId").substring(0,3);
////			if (extBizCode == null) extBizCode ="";
////			extmessage.setExtBizCode(extBizCode);
////
////
////			//거래처리구분코드 : S/A/D
////			extmessage.setSyncAsyncType( stdmsg.getData("stdcommon.txSynzDvcd") );
////
////		}
////		return extmessage;
////	}
//
//	/**
//	 * ExtMessage를 STDMessage로 변환하는 메소드
//	 * stdMessage는 사이트별 표준메시지임
//	 * 사용처(예상)
//	 * 1.Logging
//	 * 2.전송전
//	 * 3.
//	 * @param extmessage
//	 * @param stdmessage
//	 * @return
//	 * @throws Exception
//	 */
////	private static Object fromExtMessage(ExtMessage extmessage,Object stdmessage) {
////
////		boolean isFEP = EAIServerManager.getInstance().isFEP();
////		//eai.systemType = MCI/EAI/FEP
////		String systemType = EAIServerManager.getInstance().getSystemType();
////
////		//inst.Name에서 추출
////		String serverType = EAIServerManager.getInstance().getServerType();
////
////		STDMessage stdmsg = null;
////		if (stdmessage instanceof STDMessage) {
////			stdmsg = (STDMessage)stdmessage;
////			stdmsg.setData("stdcommon.groupCmpCd",extmessage.getGuidKey());
////			//전북은 GUID(33) + 일련번호(3)
////			stdmsg.setData("stdheader.guid",extmessage.getGuid()+ StringUtils.leftPad(Integer.toString(extmessage.getGuidSeq()), 3,'0'));
////			stdmsg.setData("stdcommon.ortrGuid",extmessage.getOrgGuid()) ;
////
////			//계정계 서비스ID
////			stdmsg.setData(ExtMessageKeys.GROUP_STD_COMMON+"."+ExtMessageKeys.FIELD_SERVICE_ID,extmessage.getServiceId());
////			//응답받을 정상 서비스ID
////			stdmsg.setData("stdcommon.procsRsltRcmsSrvcId",extmessage.getReturnServiceId()) ;
////			//응답받을 오류 서비스ID
////			//stdmsg.setData("stdcommon.procsRsltRcmsSrvcId",extmessage.getErrorServiceId()) ;
////
//////			String eaiTranName      = stdmsg.getEaiTranName();
//////			if (eaiTranName == null) {
//////				eaiTranName = stdmsg.getData("systemHeader.MCI_INTF_ID");
//////			}
////
////			stdmsg.setData("stdcommon.ifId",extmessage.getInterfaceId());
////			//인스턴스ID
////			//stdmsg.setData("",extmessage.getInstanceId());
////			//세션ID
////			//stdmsg.setData("",extmessage.getSessionId());
////
////			//요청응답관련 : S/R
////			stdmsg.setData("stdheader.mesgDmanDvcd",extmessage.getSendRecv());
////			//내외부 구분 코드  : 1(내부로)/2(외부로) 바뀔일이 없음
////			stdmsg.setData("stdcommon.hmabDvcd",extmessage.getDirection());
////
////			//운영환경구분코드
////			stdmsg.setData("stdcommon.sysOprtEnvDvcd",extmessage.getOperationEnv());
////
////			//최초요청IP주소 : 바뀔일이 없음
////			stdmsg.setData("stdheader.frstTrnmIpad",extmessage.getFirstRequestSysIp());
////
////			//복원여부 : 바뀔일 없음
////			stdmsg.setData("stdcommon.ortrRestrYn",extmessage.getRecoverYn());
////
////			//기관코드
////			stdmsg.setData("stdcommon.otsdChnlInstCd",extmessage.getInstitutionCode());
////
////			//타임아웃
////			stdmsg.setData("stdheader.gnrzTmotTktm",extmessage.getTotalTimeout());
////
////			//extmessage.setDate((stdmsg.getData("systemHeader.TLGR_DMND_DT")).substring(0,8));  //날짜
////			//extmessage.setTime((stdmsg.getData("systemHeader.TLGR_DMND_DT")).substring(8,17));    //시간
////
//////			stdmsg.setData("systemHeader.TLGR_DMND_DT",extmessage.getDate() + extmessage.getTime());
////			//stdmsg.setData("stdcommon.txDt",extmessage.getDate());
////			//stdmsg.setData("stdcommon.txTime",extmessage.getTime());
////
////			stdmsg.setData("stdcommon.errCd",extmessage.getErrorCode());
////
////			//extmessage.setTargetGroup("1");
////
////			stdmsg.setData(ExtMessageKeys.GROUP_STD_COMMON+"."+ExtMessageKeys.FIELD_USERID,extmessage.getUserId());
////
////			stdmsg.setData("stdcommon.procsRsltDvcd",extmessage.getResponseType());
////
////			//대외업무구분코드
////			//stdmsg.setData("",extmessage.getExtBizCode());
////
////			//거래처리구분코드
////			stdmsg.setData("stdcommon.txSynzDvcd",extmessage.getSyncAsyncType());
////
////			//최초전송시스템코드
////			String ifSysCode =stdmsg.getData("stdheader.frstTrnmSysCd");
////			if (StringUtils.isBlank(ifSysCode) && StringUtils.isNotBlank(serverType) ){
////				stdmsg.setData("stdheader.frstTrnmSysCd",serverType.toUpperCase());
////			}
////
////			//전송시스템코드
////			if (StringUtils.isNotBlank(serverType) ){
////				stdmsg.setData("stdheader.trnmSysCd",serverType.toUpperCase());
////			}
////		}
////		return (Object)stdmsg;
////	}
//	/**
//	 * 비표준 전문을 사이트별 표준메시지에 맞게 기본값 셋팅
//	 * @param stdmessage
//	 * @param message 
//	 * @param selectedkey
//	 * @param msgRcvTm
//	 * @return
//	 */
//	private static STDMessage setDefaultValues(STDMessage stdmessage, ProcessVO vo, Object bizMsg) {
//		//비표준 셋팅과 표준셋팅을 구별해야됨
//
//		stdmessage.setBwkSvcKey(vo.getSelectedKey());
//
//		String systemType = EAIServerManager.getInstance().getSystemType();
//		String serverType = EAIServerManager.getInstance().getServerType();
//
//		String instanceId = EAIServerManager.getInstance().getInstId();
//
//
//		// 통합전문고유번호 - GUID
////		String groupCmpCd = stdmessage.getData("stdcommon.groupCmpCd");
////		if(StringUtils.isBlank(groupCmpCd)) groupCmpCd = "NON" ;
//		String userId = vo.getInAdapterUserEmpid();
//		if (StringUtils.isBlank(userId)) {
//			userId = EAIServerManager.getInstance().getSystemType() + "0000000";
//		}
//		String guid = UUIDGenerator.getGUID(userId);
//		//stdmessage.setData("stdcommon.ortrGuid",guid); //최초GUID
//		stdmessage.setData("stdheader.global_id",guid+"01");//GUID
//		
//		stdmessage.setData(ExtMessageKeys.GROUP_STD_HEADER + "." + ExtMessageKeys.FIELD_SERVICE_ID,
//				stdmessage.getEaiTranName()); // 거래코드
//
//		stdmessage.setData("stdheader.service_tn", "0"); // 거래구분
//		stdmessage.setData("stdheader.encrypt_yn", "01"); // 전문암호화여부
//
////		//전문요청일자
////		stdmessage.setData("stdcommon.mesgDmanDt",DatetimeUtil.getCurrentDate());
////		//전문요청시간
////		stdmessage.setData("stdcommon.mesgDmanTktm",DatetimeUtil.getTime8());
//		stdmessage.setData("stdheader.recv_tm",DatetimeUtil.getCurrentTimeMillis());
//
////		stdmessage.setData("stdcommon.langDvcd","KOR");//다국어 구분코드
//		
//		stdmessage.setData("stdheader.Inter_chn", EAIServerManager.getInstance().getSystemGubun());
//		stdmessage.setData("stdheader.return_value", STDMessageKeys.RESPONSE_TYPE_CODE_N);
//
////		stdmessage.setSTDData(new STDData());
////		//데이터헤더 종류코드
////		stdmessage.getSTDData().setDataHedrKncd("IO");
//
////		//2012-07-24 임의 로 영업일자에 system시간 설정
////		stdmessage.setData("stdcommon.bzopDt",DatetimeUtil.getCurrentDate());
////
////		//2013-02-01 나영채 차장
////		stdmessage.setData("stdcommon.atmcClsnDvcd","0");
////		//2013-05-29 나영채 차장 -타발거래에 셋팅요청 - 파출수납부점구분코드
////		stdmessage.setData("stdcommon.dspcRcvBrnDvcd","00");
////
////
////		//비표준일경우 시스템 운영환경 구분코드를 셋팅한다.
////		stdmessage.setData("stdcommon.sysOprtEnvDvcd",EAIServerManager.getInstance().getSystemEnvTypeConvert());
////
////		//2013-06-04
////		//String mesgVerNo = std.getProperty(PropManagerKeys.MESG_VER_NO, DEFAULT_VERSION);
////		Properties prop = PropManager.getInstance().getProperties("STDMESSAGE");
////		String gnrzTmotTktm = prop.getProperty("GNRZ_TMOT_TKTM", "070");
////		String txTmotTktm = prop.getProperty("TX_TMOT_TKTM", "060");
//
//
//		//헤더부 전문버전번호	MESG_VER_NO
//		//stdmessage.getSTDHeader().setMesgVerNo(mesgVerNo);
//		//헤더부 최초전송IP주소	FRST_TRNM_IPAD
//		String ip="";
//		try {
//			ip = java.net.InetAddress.getLocalHost().getHostAddress();
//		} catch (UnknownHostException e1) {
//			
//			e1.printStackTrace();
//		}
//		stdmessage.setData("stdheader.ip_addr",ip);
////		//헤더부 총괄타임아웃시간	GNRZ_TMOT_TKTM
////		stdmessage.setData("stdheader.gnrzTmotTktm",gnrzTmotTktm);
////		//헤더부 거래타임아웃시간	TX_TMOT_TKTM
////		stdmessage.setData("stdheader.txTmotTktm",txTmotTktm);
//
//		if (EAIServerManager.getInstance().isFEP()){
//			//---------------------------------------------------
//			// 기동 어댑터의 대외기관코드 값이 존재하면 그값으로 설정한다.
//			//---------------------------------------------------
//			if(StringUtils.isNotBlank(vo.getInAdapterOsidInstiNo())) {
////				stdmessage.setData("stdcommon.otsdChnlInstCd",vo.getInAdapterOsidInstiNo());//대외연계기관코드
//				stdmessage.setData("stdheader.com_code",vo.getInAdapterOsidInstiNo());//대외연계기관코드
////				if (logger.isDebug()) {
////					logger.debug("RequestProcessor] SET STDMessage OsidInstiCd ["+stdmessage.getData("stdcommon.otsdChnlInstCd")+"]" );
////				}
//			}
//			if(StringUtils.isNotBlank(vo.getInAdapterUserEmpid())) {
//				stdmessage.setData("stdheader.usr_id",vo.getInAdapterUserEmpid()); //사용자ID
//				if (logger.isDebug()) {
//					logger.debug("RequestProcessor] SET STDMessage Tlrno ["+stdmessage.getData("stdheader.usr_id")+"]" );
//				}
//			}
//		}
//		
//		int bizMsgLength = 0;
//		if (bizMsg instanceof byte[]) {
//			bizMsgLength = ((byte[])bizMsg).length;
//		} else if (bizMsg instanceof String) {
//			try {
//				bizMsgLength = ((String) bizMsg).getBytes(DEFAULT_ENCODE).length;
//			} catch (UnsupportedEncodingException e) {
//				logger.error(e.getMessage());
//			}
//		}
//		stdmessage.setData("stdheader.msg_len", String.format("%06d", STDMessage.STD_HEADER_LENGTH + bizMsgLength - 6));
//
//		return stdmessage;
//	}
//	/**
//	 * 사이트별 표준메시지가 들어왔을경우 ExtMessage로 변환하는 메소드
//	 * requestProcess에서만 쓰임
//	 * @param message
//	 * @param orgMessage
//	 * @param adptrMsgType
//	 * @return
//	 * @throws Exception
//	 */
//	public static ExtMessage getExtMessageForStandard(Object message, String adptrMsgType) throws Exception {
//		STDMessage stdmessage = null;
//		String[] msgArgs = null;
//		String rspErrorCode = EAIMessageKeys.EAI_DEFAULT_CODE;
//		String rspErrorMsg = "";
//
//		STDMessageParser parser = STDMessageParserFactory.createPaserFactory(adptrMsgType);
//		if (parser == null){
//			msgArgs = new String[1];
//			msgArgs[0] = message.getClass().getName();
//			rspErrorCode = "RECEAIIRP009";
//			rspErrorMsg = ExceptionUtil.make(rspErrorCode, msgArgs);
//			if (logger.isError()) logger.error(rspErrorMsg);
//			throw new RequestProcessorException(rspErrorMsg);
//		}
//		stdmessage = parser.convert(message);
//
//		message = parser.getDataValue(message, false, stdmessage);
//
//		// 표준일 경우 수신거래코드를 EAI거래코드에 설정한다.
//		//stdmessage.setEAITranName(stdmessage.getData()KBCommon().getTelgmRecvTranCd());
//		//?????
//		
//		// 메세지 수신시각 설정
//		stdmessage.setData("stdheader.recv_tm", DatetimeUtil.getCurrentTimeMillis());
//
//		ExtMessage extMessage = new ExtMessage();
//		extMessage.setBizData(new Object[] {message});
////		extMessage = toExtMessage(extMessage, (Object)stdmessage, true);
//		extMessage = toExtMessage(extMessage, (Object)stdmessage);
//
//
//		//SA 매핑문제
//		String guid = extMessage.getGuid();
///*		if(guid == null || guid.trim().length() != UUIDGenerator.GUID_LENGTH) {
//			if (logger.isError()) {
//				logger.error("RequestProcessor] Received STDMessage's GUID ["+guid+"] is INVALID GUID. -" + extMessage.getInterfaceId());
//				logger.error("RequestProcessor] Check Request Server Message");
//			}
//			throw new RequestProcessorException("Invalid GUID Length");
//		}
//*/
//
//		return extMessage;
//	}
//
//	/**
//	 * 비표준메시지가 들어왔을경우 ExtMessage로 변환하는 메소드
//	 * @param message
//	 * @param orgMessage1
//	 * @param key
//	 * @param inAdapterOsidInstiNo
//	 * @param msgRcvTm
//	 * @param adapterGroupName
//	 * @param adapterName
//	 * @return
//	 * @throws Exception
//	 */
//	public static ExtMessage getExtMessageForNonStandard(Object message, Object orgMessage1,ProcessVO vo
//			/*,String key, String inAdapterOsidInstiNo,String inAdapterUserEmpid , long msgRcvTm
//			,String adapterGroupName, String adapterName*/) throws Exception {
//		/**
//		 * key = vo.getSelectedKey()
//		 * inAdapterOsidInstiNo = vo.getInAdapterOsidInstiNo()
//		 * inAdapterUserEmpid   =
//		 * msgRcvTm = vo.getErrTm()
//		 * adapterGroupName = vo.getAdapterGroupName()
//		 * adapterName      = vo.getAdapterName()
//		 */
//		STDMessage stdmessage = null;
//		STDMessageManager stdMessageManager = STDMessageManager.getInstance();
//		stdmessage = stdMessageManager.getSTDMessage(vo.getSelectedKey());
//		if(stdmessage == null) {
//			return null;
//		}
//		else
//		{
//			//표준전문에 셋팅 하는게 맞을까 ext메시지로 변경해서 하는게 맞을까?
//			stdmessage = setDefaultValues(stdmessage, vo, message);
//			if (logger.isDebug()) logger.debug("RequestProcessor] Set STDMessage Runtime Info\n" + stdmessage.toFixedString() );
//		}
//		ExtMessage extMessage = new ExtMessage();
//		extMessage.setBizData(new Object[] {message});
//
//		extMessage = toExtMessage(extMessage, (Object)stdmessage);
//
//		/**
//		 * 20220408 비표준 인터페이스ID 설정 this.interfaceId.trim() + this.sendRecv + this.direction;
//		 */
//		extMessage.setInterfaceId(stdmessage.getEaiTranName());
//		extMessage.setSendRecv(stdmessage.getEaiSendRecv()); //요청응답관련 : S/R
//		extMessage.setDirection(stdmessage.getEaiDirection()); //내외부 구분 코드  : 1(내부로)/2(외부로)
//		//extMessage.setea .setEAIServiceCode(extMessage.getEAIServiceCode());
////		stdmessage.
//		return extMessage;
//	}
//	/**
//	 * async sync 응답일 경우 표준전문셋팅
//	 * @param guidLogPrefix
//	 * @param reqEaiMsg
//	 * @param resEaiMsg
//	 * @return
//	 */
//	public static EAIMessage setAsyncSyncResponseForStandard(String guidLogPrefix,EAIMessage reqEaiMsg, EAIMessage resEaiMsg) {
//		ExtMessage extMessage = resEaiMsg.getExtMsg();
//
//		STDMessage stdmessage = (STDMessage)extMessage.getStdMessage();
////        stdmessage.getKBHeader().setTelgmDmndDstcd(STDMessageKeys.TELGMDMNDDSTCD_RECV);
//		//확인필요
//		extMessage.setSendRecv(STDMessageKeys.SEND_RECV_CD_RECV);
//		extMessage.setStdMessage(stdmessage);
//		resEaiMsg.setExtMsg(extMessage);
//		//---------------------------------------------------
//		return resEaiMsg;
//	}
//	/**
//	 * 위의 메소드와 확인필요
//	 * baseFC에서 setGUID()
//	 * CICS
//	 * kbmessage.getKBHeader().setCicsTrncd(cicsTrncd);
//	 * 중계채널구분코드
//	 * kbmessage.getKBCommon().setRelayChnlDstcd("02");
//	 * 원거래 복원시 수신LU명 (STND-RECV-LU-NAME) 8바이트 Blank로 초기화 요망(A-S 포함)
//	 * kbmessage.getKBCommon().setRecvLuName("        ");
//	 */
//
//	/**
//	 *
//	 * @param guidLogPrefix
//	 * @param reqEaiMsg
//	 * @param resEaiMsg
//	 * @return
//	 */
//	//outboundCtrlCallService, setTopicResult 에서 같이씀
//	public static EAIMessage setResponseForOutbound(EAIMessage resEaiMsg) {
//		ExtMessage extMessage = resEaiMsg.getExtMsg();
//
//        STDMessage stdmessage = (STDMessage)extMessage.getStdMessage();
//        //stdmessage.getKBHeader().setTelgmDmndDstcd(STDMessageKeys.TELGMDMNDDSTCD_RECV);
//        extMessage.setSendRecv(STDMessageKeys.SEND_RECV_CD_RECV);
//        
//        // ???????
//        //fromExtMessage(extMessage, stdmessage);
//
//        extMessage.setStdMessage(stdmessage);
//        resEaiMsg.setExtMsg(extMessage);
//
//        return resEaiMsg;
//	}
//	/**
//	 * 표준전문일경우 응답로그값 설정
//	 * @param reqEaiMsg
//	 * @param resEaiMsg
//	 * @param adptrMsgType
//	 * @param resBytes
//	 * @return
//	 * @throws Exception
//	 */
//	public static EAIMessage setRcvLogInfo(EAIMessage reqEaiMsg,EAIMessage resEaiMsg, String adptrMsgType, byte[] resBytes) throws Exception{
//        //String kesaSeq = reqEaiMsg.getKbMsg().getKesaSeq();
//        STDMessageParser parser = STDMessageParserFactory.createPaserFactory(adptrMsgType);
//		if(parser == null) {
//			throw new Exception("Parser not found - " + adptrMsgType);
//		}
//		byte[] message = null;
//		STDMessage stdmessage = null;
//		if (MessageType.UJSON.equals(adptrMsgType) ) { //출력매체부 관련
//			/*
//			 * 현재 resBytes의 JSON 객체를 파싱해서 출력 매체부 extMsg에 셋팅 후 resBytes에서 제거
//			 */
//	    	String jsonString = new String(resBytes, MessageType.UJSON_ENCODE);
//	    	JSONObject messageObj = (JSONObject) JSONValue.parse(jsonString);
//	    	JSONObject headerObj =  (JSONObject) messageObj.get("Header");
//	    	JSONObject dataHeaderObj =  (JSONObject) headerObj.get("dataHeader");
//	    	JSONObject terminalInfoObj =  (JSONObject) dataHeaderObj.get("terminalInfo");
//	    	List<OtptMdclVO> otptMdclDatList = new ArrayList<OtptMdclVO>();
//
//	    	/*
//	    	 * 전문에서 출력 매체 부의 인터페이스 별 데이터부 추출 및 제거
//	    	 */
//	    	if(terminalInfoObj.containsKey(FIELD_OTPT_MDCL_LIST)) {
//	    		JSONArray otptMdclList = (JSONArray) terminalInfoObj.get(FIELD_OTPT_MDCL_LIST);
//	    		if(otptMdclList != null && otptMdclList.size() > 0){
//	    			for (int i = 0; i < otptMdclList.size(); i++) {
//	    				JSONObject childJson = (JSONObject) otptMdclList.get(i);
//	    				String interfaceId = (String) childJson.get(FIELD_OTPT_MDCL_INTF_ID);
//	    				JSONObject otptMdclDat = (JSONObject) childJson.remove(FIELD_OTPT_MDCL_DAT);
//	    				otptMdclDatList.add(new OtptMdclVO(interfaceId, otptMdclDat));
//	    				//빈 JSON OBJECT로 치환
//	    				childJson.put(FIELD_OTPT_MDCL_DAT, new JSONObject());
//					}
//	    		}
//	    	}
//
//			stdmessage = parser.convert(messageObj);
//	//		if( STDMessageKeys.TELGMDMNDDSTCD_RECV.equals(stdmessage.getKBHeader().getTelgmDmndDstcd()) ) {
//	//			message = parser.getDataValue(resBytes, false);
//	//		}
//	//		else {
//	//			message = parser.getDataValue(resBytes, true);
//	//		}
//			message = parser.getDataValue(messageObj, false);
//		}else { //출력매체부가 없을경우
//			stdmessage = parser.convert(resBytes);
//			message = parser.getDataValue(resBytes, false);
//		}
//
//		// 수신시각 설정
//		stdmessage.setData("stdheader.recv_tm",DatetimeUtil.getCurrentTimeMillis());
//
//		ExtMessage extMessage = new ExtMessage();
//		extMessage.setBizData(new Object[] {message});
//
////		extMessage = toExtMessage(extMessage, (Object)stdmessage, true);
//		extMessage = toExtMessage(extMessage, (Object)stdmessage);
//    	/* 출력 매체 부 extMessage에 셋팅
//    	 */
////		extMessage.setOtptMdclDatList(otptMdclDatList);
//		resEaiMsg.setExtMsg(extMessage);
//		return resEaiMsg;
//	}
//
//	/**
//	 * 타입에 맞는 사이트별 표준메시지 형태의 데이터 로 변경
//	 * @param inAdapterMsgType
//	 * @param adptrMsgType
//	 * @param reqBytes
//	 * @param reqEaiMsg
//	 * @return
//	 * @throws Exception
//	 */
//	public static byte[] makeStandardMessage(String inAdapterMsgType,String adptrMsgType, byte[] reqBytes,EAIMessage reqEaiMsg) throws Exception{
//        STDMessage stdmessage = (STDMessage) reqEaiMsg.getExtMsg().getStdMessage();
////        reqBytes = stdmessage.toFixedBytes(inAdapterMsgType, adptrMsgType, reqBytes, MessageType.UJSON_ENCODE);
//        reqBytes = stdmessage.toFixedBytes( reqBytes);
//        return reqBytes;
//	}
//	public static byte[] addSimHeader(String inAdapterMsgType,String adptrMsgType, byte[] reqBytes,EAIMessage reqEaiMsg) throws Exception{
//		return SimHeaderUtil.addSimHeader(reqEaiMsg.getEAISvcCd(),reqEaiMsg.getExtMsg().getInstitutionCode(), reqBytes);
//	}
//
//	/**
//	 * 사이트별 표준메시지에서 업무데이터 추출(응답)
//	 * @param adptrMsgType
//	 * @param resBytes
//	 * @return
//	 * @throws Exception
//	 */
//	public static byte[] getBizMessage(String adptrMsgType, byte[] resBytes) throws Exception{
//		STDMessageParser parser = STDMessageParserFactory.createPaserFactory(adptrMsgType);
//		if(parser == null) {
//			throw new Exception("Parser not found - " + adptrMsgType);
//		}
//		return parser.getDataValue(resBytes, false);
//	}
//
//	@SuppressWarnings("unchecked")
//	public static Object getReturnObject(EAIMessage retEaiMsg, Object message, Object retMsgObject,
//			String adptrMsgPtrnCd, String adptrMsgType, String uuid) {
//
//		if(com.eactive.eai.adapter.Keys.IF_STANDARD.equals(adptrMsgPtrnCd)) {
//
//			String targetAdptrMsgType = MessageType.ASC;
//	        STDMessage stdmessage = (STDMessage)fromExtMessage(retEaiMsg.getExtMsg(), retEaiMsg.getExtMsg().getStdMessage());
////	        if(retMsgObject == null) {
////				if (logger.isWarn()) logger.warn("ExceptionHandler 결과 데이터가 NULL 입니다. - "+uuid);
////				retMsgObject = "";
////			}
////	        String resDataString = null ;
////	        if(retMsgObject instanceof byte[]) {
////	        	try {
////	        		resDataString = new String((byte[])retMsgObject, MessageType.UJSON_ENCODE);
////				} catch (UnsupportedEncodingException e) {
////					if (logger.isWarn()) logger.error("String 변환 오류 "+uuid, e);
////				}
////	        } else if(retMsgObject instanceof String) {
////	        	resDataString = (String) retMsgObject;
////	        } else {
////	        	resDataString = "";
////	        }
////
////        	/*
////        	 * 출력 매체 부 작업
////        	 * JSON 변환 후 ExtMsg에 보관 한 출력 매체부를 추가
////        	 */
////	        JSONObject messageObj = stdmessage.toJSONObject(resDataString);
////        	//JSONObject messageObj = (JSONObject) JSONValue.parse(resJsonString);
////        	JSONObject headerObj =  (JSONObject) messageObj.get("Header");
////        	JSONObject dataHeaderObj =  (JSONObject) headerObj.get("dataHeader");
////        	JSONObject terminalInfoObj =  (JSONObject) dataHeaderObj.get("terminalInfo");
////        	/*
////        	 * 전문에 출력 매체 부의 인터페이스 별 데이터부 적재
////        	 */
////        	List<OtptMdclVO> otptMdclDatList = retEaiMsg.getExtMsg().getOtptMdclDatList();
////        	if(otptMdclDatList != null && otptMdclDatList.size() > 0){
////        		JSONArray otptMdclList = (JSONArray) terminalInfoObj.get(FIELD_OTPT_MDCL_LIST);
////        		if(otptMdclList != null && otptMdclList.size() > 0){
////        			for (int i = 0; i < otptMdclList.size(); i++) {
////        				JSONObject childJson = (JSONObject) otptMdclList.get(i);
////        				OtptMdclVO otptMdclDatVo = (OtptMdclVO) otptMdclDatList.get(i);
////        				JSONObject otptMdclDat = (JSONObject) otptMdclDatVo.getOtptMdclDat();
////        				if(otptMdclDat != null){
////        					childJson.put(FIELD_OTPT_MDCL_DAT, otptMdclDat);
////        				}
////        			}
////        		}
////        	}
////
////        	String rtnJsonString = messageObj.toJSONString();
////        	Object rtnObj = null;
////        	if(message instanceof String) {
////        		rtnObj =  rtnJsonString;
////        	}else {
////        		try {
////					rtnObj =  rtnJsonString.getBytes(MessageType.UJSON_ENCODE);
////				} catch (UnsupportedEncodingException e) {
////					if (logger.isWarn()) logger.error("String 변환 오류 "+uuid, e);
////					if(retMsgObject instanceof byte[]) {
////						rtnObj = retMsgObject;
////					}
////				}
////        	}
////        	return rtnObj;
//
//
//			if(message instanceof byte[]) {
//				if(retMsgObject == null) {
//					if (logger.isWarn()) logger.warn("ExceptionHandler 결과 데이터가 NULL 입니다. - "+uuid);
//					retMsgObject = new byte[0];
//				}
//
//				byte[] byteResponse = null;
//				if(retMsgObject instanceof byte[]) {
//					byteResponse = (byte[])retMsgObject;
//				}
//				else if(retMsgObject instanceof String) {
//					byteResponse = ((String)retMsgObject).getBytes();
//				}
//
//				if(retMsgObject instanceof byte[]) {
////					return stdmessage.toFixedBytes(adptrMsgType,targetAdptrMsgType, byteResponse, "euc-kr");
//					return stdmessage.toFixedBytes(byteResponse);
//				} else {
////					return stdmessage.toFixedBytes(adptrMsgType,targetAdptrMsgType, null, "euc-kr");
//					return stdmessage.toFixedBytes( null);
//				}
//			} else if(message instanceof String) {
//				if(retMsgObject == null) {
//					if (logger.isWarn()) logger.warn("ExceptionHandler 결과 데이터가 NULL 입니다. - "+uuid);
//					retMsgObject = "";
//				}
//
//				String strResponse = null;
//
//				if(retMsgObject instanceof String) {
//					strResponse = (String)retMsgObject;
//				}
//				else if(retMsgObject instanceof byte[]) {
//					strResponse = new String((byte[])retMsgObject);
//				}
//
//				if(retMsgObject instanceof String) {
////					return stdmessage.toFixedString(adptrMsgType,targetAdptrMsgType, strResponse, "euc-kr");
//					return stdmessage.toFixedString(strResponse, DEFAULT_ENCODE);
//				}
//				else {
////					return stdmessage.toFixedString(adptrMsgType,targetAdptrMsgType, "", "euc-kr");
//					return stdmessage.toFixedString( "", DEFAULT_ENCODE);
//				}
//			}
//			else {
////				return stdmessage.toFixedString(adptrMsgType,targetAdptrMsgType, "", "euc-kr");
//				return stdmessage.toFixedString( "", DEFAULT_ENCODE);
//			}
//		}
//		else {
//			//-------------------------------------------------
//			// 비표준 XML의 경우를 고려하여
//			// XML Header의 유무를 확인해야 한다. (한진호 대리 요청)
//			// 2007.10.29 - 이동훈
//			//-------------------------------------------------
//			// 비표준 XML일 경우 XML Header Tag의 존재여부를 확인하여 없는 경우 추가해야 한다.
//			if(MessageType.XML.equals(adptrMsgType) || MessageType.UXML.equals(adptrMsgType)) {
//				String encode = MessageType.XML_ENCODE;
//				if(MessageType.UXML.equals(adptrMsgType)) {
//					encode = MessageType.UXML_ENCODE;
//				}
//
//				if(message instanceof byte[]) {
//					if(retMsgObject == null) {
//						return new byte[0];
//					}
//					else  {
//						String xmlString = null;
//						try {
//							xmlString = new String( (byte[])retMsgObject, encode );
//						} catch (UnsupportedEncodingException e) {
//							xmlString = new String( (byte[])retMsgObject);
//						}
//						if(xmlString.indexOf("<?") == -1 && xmlString.indexOf("?>") == -1) {
//							xmlString = "<?xml version=\"1.0\" encoding=\""+ encode +"\"?>"
//								+ xmlString;
//						}
//						byte[] responseBytes = null;
//						try {
//							responseBytes = xmlString.getBytes(encode);
//						} catch (UnsupportedEncodingException e) {
//							responseBytes = xmlString.getBytes();
//						}
//						return responseBytes;
//					}
//				}
//				else if(message instanceof String) {
//					if(retMsgObject == null) {
//						return "";
//					}
//					else {
//						String xmlString = (String)retMsgObject;
//						if(xmlString.indexOf("<?") == -1 && xmlString.indexOf("?>") == -1) {
//							xmlString = "<?xml version=\"1.0\" encoding=\""+ encode +"\"?>"
//								+ xmlString;
//						}
//						return xmlString;
//					}
//				}
//				else {
//					return retMsgObject;
//				}
//			}
//			else {
//				return retMsgObject;
//			}
//		}
//	}
//	/**
//	 * 저장된 표준전문헤더를 복원해서 사이트에 맞게 셋팅해야됨
//	 * 현재는 float으로 동작함
//	 * JSON 이나 XML은 고려해야됨
//	 * @param traceKey
//	 * @param orgMessage
//	 * @param isNKESA
//	 * @param dbString
//	 * @return
//	 * @throws Exception
//	 */
//	public static ExtMessage getStoredMessageHeader(String traceKey, ExtMessage orgMessage, String dbString , String extBizCd ) throws Exception{
//        ExtMessage orgExtMessage = (ExtMessage) ObjectUtil.deepCopy(orgMessage);
//        STDMessage orgSTDMessage = (STDMessage)orgExtMessage.getStdMessage();
//
//		STDMessageParser parser = STDMessageParserFactory.createPaserFactory(STDMessageParserType.ASC.toString());
//		if (parser == null) {
//			throw new Exception("STDMessageParser not found - " + STDMessageParserType.ASC.toString());
//		}
//		STDMessage dbStdMessage = parser.convert(dbString, false);
//
////		String eaiTranName = extMessage.getInterfaceId();
////		String applCd = eaiTranName.substring(0,3);
//		String applCd = extBizCd;
//
//        if(dbStdMessage != null) {
//
//        	/**
//        	 * 요청표준전문의 정상응답/오류응답은
//        	 * 표준전문의 당방응답정상여부로 판단
//        	 */
////        	boolean isSuccess = true;
////
////        	String normYn = orgSTDMessage.getData("dataHeader.externalInfo.OTWD_RSPNS_NORM_YN");
////
////        	if (normYn != null && "N".equals(normYn)){
////        		isSuccess = false;
////        	}
//
//        	//TODO 이걸 여기에 넣은게 낳은지 변경하고 넣는제 낳은지 판단필요
//        	dbStdMessage.setData("stdheader.return_gubun", STDMessageKeys.SEND_RECV_CD_RECV);
////        	dbStdMessage.setData("stdcommon.hmabDvcd", "1");
//        	//2012-07-17협의
//        	//당발응답에 서비스ID가 있으면 당발응답 서비스ID로 셋팅
//        	//당발응답에 서비스ID가 없으면 당발요청의 처리결과수신 서비스ID를 서비스ID로 셋팅
////        	if (StringUtils.isBlank(orgMessage.getServiceId())){
////        		dbStdMessage.setData("stdcommon.ifId", dbStdMessage.getData("stdcommon.procsRsltRcmsSrvcId") );
////        	}else{
////        		dbStdMessage.setData("stdcommon.ifId", orgMessage.getServiceId());
////        	}
//
////        	if (isSuccess) {//정상일경우에
////        		//dbStdMessage.setData("dataHeader.externalInfo.OTWD_RSPNS_NORM_YN", "Y" );
////        	}else {
////        		//dbStdMessage.setData("systemHeader.DLNG_ID", dbStdMessage.getData("systemHeader.ERR_RSPNS_RCPTN_DLNG_ID") );
////        		dbStdMessage.setData("dataHeader.externalInfo.OTWD_RSPNS_NORM_YN", "N" );
////        	}
//        	//채널구분코드 대외이관에서 싯팅하던거 원복
//        	//dbStdMessage.setData("systemHeader.CHNL_DVSN_CD", orgSTDMessage.getData("systemHeader.CHNL_DVSN_CD"));
//
////        	message.getKBHeader().setTelgmDmndDstcd(STDMessageKeys.TELGMDMNDDSTCD_RECV);
//
//        	// 2020.03.03 NKESA가 아닌 경우에만 값을 변경한다.
////        	if(!isNKESA) {
////        		message.getKBCommon().setInoPartlDstcd(STDMessageKeys.WTINEXTNLDSTCD_IN);
////        	}
//
//        	if(logger.isDebug()) {
//        		logger.debug("================================================================");
//        		logger.debug("STDMessageMapper] - Restored STDMessage["+traceKey+"]");
//        		logger.debug(dbStdMessage.toString());
//        		logger.debug("================================================================");
//        		logger.debug("================================================================");
//        		logger.debug("STDMessageMapper] - Current STDMessage");
//        		logger.debug(orgMessage.toString());
//        		logger.debug("================================================================");
//        	}
//
//        	if(logger.isDebug()) {
//
//        		logger.debug("================================================================");
//        		logger.debug("STDMessageMapper] - Converted STDMessage");
//        		logger.debug(dbStdMessage.toString());
//        		logger.debug("================================================================");
//        	}
//        	//복원이기 때문에 비표준
////        	ExtMessage result = toExtMessage(orgExtMessage, dbStdMessage,false);
//        	ExtMessage result = toExtMessage(orgExtMessage, dbStdMessage);
//        	result.nextGuidSeq();
//        	return result;
//        }
//        else {
//        	if(logger.isWarn()) {
//        		logger.warn("STDMessage is NULL - " + dbStdMessage);
//        	}
//        	throw new Exception("복원 실패");
//        }
//	}
//	/**
//	 * 복원을 저장하기 위해서 Flat 전문을 만드는 메소드
//	 * 현재는 float으로 동작함
//	 * JSON 이나 XML은 고려해야됨
//	 * @param extMessage
//	 * @return
//	 * @throws Exception
//	 */
//	public static String setStoredMessageHeader(ExtMessage extMessage ) throws Exception{
//        STDMessage stdmessage = (STDMessage)fromExtMessage(extMessage, extMessage.getStdMessage());
//		return stdmessage.toFixedHeaderString();
//	}
//	/**
//	 * DB 로그 저장시 masking하기 위해서
//	 * @param message
//	 * @param bizMsg
//	 * @param l
//	 * @param logPssSno
//	 * @param tgtAdptrMsgPtrnCd
//	 * @param svcTsmtUsgTp
//	 * @param psvItfTp
//	 * @return
//	 * @throws Exception
//	 */
//	public static String makeMaskData(EAIMessage message, Object bizMsg, Layout l,  int logPssSno, String tgtAdptrMsgPtrnCd
//			, String svcTsmtUsgTp, String psvItfTp) throws Exception {
//		String bizMsgStr="";
//		Message msg = MessageFactory.getFactory().getMessage(l.getName());
//		if("XML".equals(l.getLayoutType().getName())) {
//	    	if (logger.isInfo()) logger.info("EAILogDAO] XML Message Masking - "+ message.getEAISvcCd()+" - "+ logPssSno);
//
//	    	String xmlString = "";
//	        if(bizMsg instanceof byte[]) {
//	            xmlString = new String((byte[])bizMsg);
//	        } else {
//	            xmlString = (String)bizMsg;
//	        }
//
//	        String rootItemName = ((XMLMessage)msg).getLayout().getRootItem().getName();
//            xmlString = MessageUtil.removeXMLHeader(xmlString);
//            xmlString = "<"+rootItemName+">"+xmlString+"</"+rootItemName+">";
//            msg.setData(xmlString);
//            bizMsgStr  = MessageUtil.removeXMLRootItem(msg.toLogString(), rootItemName);
//	    }
//	    else if("JSON".equals(l.getLayoutType().getName())) {
//	    	if (logger.isInfo()) logger.info("EAILogDAO] JSON Message Masking - "+ message.getEAISvcCd()+" - "+ logPssSno);
//	    	String jsonString = "";
//
//	        if(bizMsg instanceof byte[]) {
//	        	jsonString = new String((byte[])bizMsg, JSONMessage.encode);
//	        } else {
//	        	jsonString = (String)bizMsg;
//	        }
//
//	        String rootItemName = ((JSONMessage)msg).getLayout().getRootItem().getName();
//	    	 jsonString = MessageUtil.addJsonRootItem(jsonString, rootItemName);
//	         msg.setData(jsonString);
//	         bizMsgStr  = MessageUtil.removeJsonRootItem(msg.toLogString(), rootItemName);;
//	    }
//	    else if("UJSON".equals(l.getLayoutType().getName())) {
//	    	if (logger.isInfo()) logger.info("EAILogDAO] UJSON Message Masking - "+ message.getEAISvcCd()+" - "+ logPssSno);
//
//	    	String jsonString = "";
//
//	        if(bizMsg instanceof byte[]) {
//	        	jsonString = new String((byte[])bizMsg, UJSONMessage.encode);
//	        } else {
//	        	jsonString = (String)bizMsg;
//	        }
//
//	        String rootItemName = ((UJSONMessage)msg).getLayout().getRootItem().getName();
//        	 jsonString = MessageUtil.addJsonRootItem(jsonString, rootItemName);
//             msg.setData(jsonString);
//             bizMsgStr  = MessageUtil.removeJsonRootItem(msg.toLogString(), rootItemName);;
//	    }
//	    else if("EBCDIC".equals(l.getLayoutType().getName())) {
//	    	if (logger.isInfo()) logger.info("EAILogDAO] EBCDIC Message Masking - "+ message.getEAISvcCd()+" - "+ logPssSno);
//
//	    	byte[] orgBytes = (byte[])bizMsg;
//	    	byte[] msgBytes = null;
//	    	byte[] header = null;
//
//    		msg.setData(bizMsg);
//            bizMsgStr  = ((BytesMessage)msg).toLogString(true);
//	    }
//	    else if( "BYTES".equals(l.getLayoutType().getName()) ) {
//	    	if (logger.isInfo()) logger.info("EAILogDAO] BYTES Message Masking - "+ logPssSno);
//	    	byte[] orgBytes = (byte[])bizMsg;
//	    	byte[] msgBytes = null;
//	    	byte[] header = null;
//
//	    	if (logger.isInfo()) logger.info("EAILogDAO] BYTES Standard Header Type = " + tgtAdptrMsgPtrnCd);
//
//        	if (logger.isInfo()) logger.info("EAILogDAO] "+l.getLayoutType().getName()+" Message Masking - "+ message.getEAISvcCd()+" - "+ logPssSno);
//        	msg.setData(bizMsg);
//			bizMsgStr  = msg.toLogString();
//	    }
//	    else {
//	        msg.setData(bizMsg);
//	        bizMsgStr  = msg.toLogString();
//	    }
//		return bizMsgStr;
//	}
//
//    public static String getSTDLog(ExtMessage extmessage) throws Exception {
//    	STDMessage stdmessage = (STDMessage) extmessage.getStdMessage();
//    	return stdmessage.toFixedHeaderString();
//    }
//    /**
//     * 송신메시지 설정
//     * @param eaiMessage
//     * @return
//     */
//    public static byte[] normalAsyncSend(EAIMessage eaiMessage,String msgType) throws Exception{
//    	ExtMessage extMessage = eaiMessage.getExtMsg();
////		//--------------------------------------------------------------------
////		// 취급요청거래일 경우
////		// 에러코드를 다르게 설정
////		//--------------------------------------------------------------------
////		// 취급요청 (S_2) (S_3) -> 내외부구분코드가 2(대외),3(공동망)일 수 있다
//////		if(STDMessageKeys.TELGMDMNDDSTCD_SEND.equals( kbmessage.getKBHeader().getTelgmDmndDstcd() )
//////			&& !STDMessageKeys.WTINEXTNLDSTCD_IN.equals( kbmessage.getKBCommon().getInoPartlDstcd() )){
////		if(STDMessageKeys.SEND_RECV_CD_SEND.equals( extMessage.getSendRecv() )
////				&& !STDMessageKeys.DIRECTION_IN.equals( extMessage.getDirection() )){
////
//////			String prcssRtdTranCd = kbmessage.getKBCommon().getPrcssRtdTranCd();
////			String prcssRtdTranCd = extMessage.getReturnServiceId();
////
////			if(prcssRtdTranCd != null && prcssRtdTranCd.length() >= 14) {
////				String cicsTrncd = prcssRtdTranCd.substring(0,4);
////				String telgmRecvTranCd = prcssRtdTranCd.substring(4,14);
////
//////				kbmessage.getKBHeader().setCicsTrncd(cicsTrncd);
//////				kbmessage.getKBCommon().setTelgmRecvTranCd(telgmRecvTranCd);
////				//TOBE 표준전문 확인 필요
//////				kbmessage.getKBHeader().setCicsTrncd(cicsTrncd);
////				extMessage.setServiceId(telgmRecvTranCd);
////				if(logger.isDebug()) {
//////					logger.debug("ErrorResponseSender] - CicsTrncd ["+kbmessage.getKBHeader().getCicsTrncd()+"]");
//////					logger.debug("ErrorResponseSender] - TelgmRecvTranCd ["+kbmessage.getKBCommon().getTelgmRecvTranCd()+"]");
//////					logger.debug("ErrorResponseSender] - CicsTrncd ["+kbmessage.getKBHeader().getCicsTrncd()+"]");
////					logger.debug("ErrorResponseSender] - TelgmRecvTranCd ["+extMessage.getServiceId()+"]");
////				}
////			}
////			//TODO 표준전문 확인필요
//////			kbmessage.getKBCommon().setRecvLuName("        ");
////		}
//
//        // eLink 내부에서는 GUID 진행번호를 분리
//		// ExtMessage 에서는 분리
//		// STDMessage 에서는 사이트에 맞게 변경처리
//		String guid = extMessage.getGuid();
//		int seq = extMessage.getGuidSeq();
//
//        if (logger.isDebug()) logger.debug("ErrorResponseSender] Current GUID ["+guid+ "]["+seq+"]");
//        extMessage.nextGuidSeq();
//        seq = extMessage.getGuidSeq();
//        if (logger.isDebug()) logger.debug("ErrorResponseSender] ADD PATHSEQ GUID ["+guid+ "]["+seq+"]");
//        extMessage.setGuidSeq(seq);
//
//		//--------------------------------------------------------------------
//
////		Object message = eaiMessage.getBizMsg()[0];
//		Object message = eaiMessage.getExtMsg().getBizData()[0];
//
//		byte[] reqBytes = null;
//
//		STDMessage stdmessage = (STDMessage)extMessage.getStdMessage();
//
//		if(message instanceof byte[]) {
////			if( MessageType.EBC.equals(msgType) ) {
////				reqBytes = stdmessage.toFixedEbcdicBytes( (byte[])message );
////			}
////			else if( MessageType.ASC.equals(msgType) ) {
////				reqBytes = stdmessage.toFixedBytes( (byte[])message );
////			}
////			if( MessageType.XML.equals(msgType) ) {
////				reqBytes = stdmessage.toXMLBytes( (byte[])message );
////			}
////			reqBytes = stdmessage.toFixedBytes( (byte[])message, "euc-kr");
//			reqBytes = stdmessage.toFixedBytes( (byte[])message);
//		}
//		else {
//			throw new Exception("업무데이터타입이 전문이 아닙니다.");
//		}
//		return reqBytes;
//    }
//    /**
//     * 거래통제에의한 표준전문응답
//     * @param retEaiMsg
//     * @param message
//     * @param adptrMsgPtrnCd
//     * @param adptrMsgType
//     * @param uuid
//     * @return
//     * @throws Exception
//     */
//    public static Object getRestrictedResponse(EAIMessage retEaiMsg, Object message,
//			String adptrMsgType, String uuid) {
//    	ExtMessage extmessage = retEaiMsg.getExtMsg();
//    	STDMessage stdmessage = (STDMessage) fromExtMessage(extmessage, extmessage.getStdMessage());
//    	String errorMessage = ExceptionUtil.make(EAIMessageKeys.EAI_BLOCKED_CODE, new String[]{retEaiMsg.getEAISvcCd()});
//    	stdmessage = setInternalError(stdmessage,STDMessageKeys.ERROR_CODE_VALUE, errorMessage) ;
//		if(message instanceof byte[]) {
//			if(message == null) {
//				if (logger.isWarn()) logger.warn("ExceptionHandler 결과 데이터가 NULL 입니다. - "+uuid);
//				message = new byte[0];
//			}
//			if(message instanceof byte[]) {
////				if(MessageType.XML.equals(adptrMsgType)) {
////					return stdmessage.toXMLBytes( (byte[])message, MessageType.XML_ENCODE );
////				}
////				else if(MessageType.UXML.equals(adptrMsgType)) {
////					return stdmessage.toXMLBytes( (byte[])message, MessageType.UXML_ENCODE );
////				}
////				else if(MessageType.ASC.equals(adptrMsgType)) {
////					try {
////						return stdmessage.toFixedBytes(( (byte[]) message) );
////					} catch(Exception e) {
////						return (byte[]) message;
////					}
////				}
////				else if(MessageType.EBC.equals(adptrMsgType)) {
////					try {
////						return stdmessage.toFixedEbcdicBytes(( (byte[]) message) );
////					} catch(Exception e) {
////						return (byte[]) message;
////					}
////				}
////				else if(MessageType.JSON.equals(adptrMsgType)) {
////					return stdmessage.toJSONBytes( (byte[])message );
////				}
////				else if(MessageUtil.isUTF8(adptrMsgType)) {
////					return stdmessage.toJSONBytes( (byte[])message, MessageType.UJSON_ENCODE);
////				}
////				else {
////					return message;
////				}
////				return stdmessage.toFixedBytes( (byte[])message, "euc-kr");
//				return stdmessage.toFixedBytes( (byte[])message);
//			}
//			else {
////				return stdmessage.toFixedString( "" ).getBytes("euc-kr");
//				return stdmessage.toFixedString( "" ).getBytes();
//			}
//		} else if(message instanceof String) {
//			if(message == null) {
//				if (logger.isWarn()) logger.warn("ExceptionHandler 결과 데이터가 NULL 입니다. - "+uuid);
//				message = "";
//			}
//			if(message instanceof String) {
////				if(MessageType.XML.equals(adptrMsgType)) {
////					return stdmessage.toXMLString( (String)message, MessageType.XML_ENCODE );
////				}
////				else if(MessageType.UXML.equals(adptrMsgType)) {
////					return stdmessage.toXMLString( (String)message, MessageType.UXML_ENCODE );
////				}
////				else if(MessageType.ASC.equals(adptrMsgType)) {
////					try {
////						return stdmessage.toFixedString(( (String) message) );
////					} catch(Exception e) {
////						return (byte[]) message;
////					}
////				}
////				else if(MessageType.JSON.equals(adptrMsgType)) {
////					return stdmessage.toJSONString( (String)message );
////				}
////				else if(MessageType.UJSON.equals(adptrMsgType)) {
////					return stdmessage.toJSONString( (String)message );
////				}
////				else {
////					return message;
////				}
//				return stdmessage.toFixedString( (String)message );
//			}
//			else {
////				return stdmessage.toFixedString( "" ).getBytes("euc-kr");
//				return stdmessage.toFixedString( "" ).getBytes();
//			}
//		}
//		else {
//			return stdmessage.toFixedString("");
//		}
//    }
//    public static String getTellerId(Object message, String messageType) throws Exception {
//		STDMessageParser parser = STDMessageParserFactory.createPaserFactory(messageType);
//		STDMessage std = parser.convert(message);
////		return std.getKBCommon().getUserEmpid();
//		return std.getData("stdheader.usr_id");
//    }
//    public static byte[] getInboundErrorResponseForStandard(ExtMessage extMessage, String errCode, String errMsg) {
//		extMessage.nextGuidSeq();;
//		extMessage.setSendRecv(STDMessageKeys.SEND_RECV_CD_RECV);
//		extMessage.setErrorCode(errCode);
//
//		STDMessage stdmessage = (STDMessage)fromExtMessage(extMessage,extMessage.getStdMessage());
//		stdmessage = setInternalError(stdmessage, errCode, errMsg);
//		try {
//			return stdmessage.toFixedString().getBytes("euc-kr");
//		} catch (UnsupportedEncodingException e) {
//			logger.warn("use default encoding - ", e);
//			return stdmessage.toFixedString().getBytes();
//		}
//    }
//
//    public static byte[] getDuplicateLoginResponseForStandard(ExtMessage extMessage, String errCode, String errMsg, String siteErrCode, String siteErrMessage) {
//		extMessage.nextGuidSeq();
//		extMessage.setSendRecv(STDMessageKeys.SEND_RECV_CD_RECV);
//		extMessage.setErrorCode(errCode);
//
//		STDMessage stdmessage = (STDMessage)fromExtMessage(extMessage,extMessage.getStdMessage());
//		stdmessage.setMessage(siteErrCode, siteErrMessage, errMsg);
//		//stdmessage.setData("systemHeader.RSPNS_SYS_CD", EAIServerManager.getInstance().getServerType().toUpperCase());
//		//stdmessage.setData("systemHeader.TLGR_RSPNS_DT", DatetimeUtil.getCurrentTimeMillis());
//
//		stdmessage.setData("stdheader.return_value",STDMessageKeys.RESPONSE_TYPE_CODE_E);//시스템오류
////		if (STDMessageKeys.ERROR_CODE_VALUE.equals(errCode)) {
////		}else {
////			stdmessage.setData("systemHeader.RSPNS_RSLT_DVSN_CD","T");//타임아웃오류
////		}
//		try {
////			return stdmessage.toFixedString().getBytes(MessageType.UJSON_ENCODE);
//			return stdmessage.toFixedString().getBytes(DEFAULT_ENCODE);
//		} catch (UnsupportedEncodingException e) {
//			logger.warn("use default encoding - ", e);
////			return stdmessage.toFixedString().getBytes("euc-kr");
//			return stdmessage.toFixedString().getBytes();
//		}
//    }
//
//    /**
//     * 에러 발생시 표준전문에 셋팅해야 되는 것들
//     * 1. 메시지 헤더 생성 (messageHeader)
//     * 2. 시스템 헤더 설정(systemHeader)
//     *   2.1 응답시스템코드
//     *   2.2 전문응답일시
//     *   2.3 응답결과구분코드
//     *   2.4 메시지발생시스템코드
//     *   2.5 메시지코드
//     *   2.6 guid 일련번호 증가
//     */
//    private static STDMessage setInternalError(STDMessage std,String errCode, String errMsg) {
//		String siteErrCode = getSiteCode(errCode);
//		String siteErrMessage = getSiteMessage(errCode);
//		std.setMessage(siteErrCode,siteErrMessage, errMsg);
//		//std.setData("systemHeader.RSPNS_SYS_CD", EAIServerManager.getInstance().getServerType().toUpperCase());
//		//std.setData("systemHeader.TLGR_RSPNS_DT", DatetimeUtil.getCurrentTimeMillis());
//
//		std.setData("stdheader.return_value",STDMessageKeys.RESPONSE_TYPE_CODE_E);//시스템오류
////		if (STDMessageKeys.ERROR_CODE_VALUE.equals(errCode)) {
////		}else {
////			std.setData("systemHeader.RSPNS_RSLT_DVSN_CD","T");//타임아웃오류
////		}
//		//std.setData("systemHeader.MSG_GENT_SYS_CODE", EAIServerManager.getInstance().getServerType().toUpperCase());
//		//std.setData("systemHeader.MSG_CD", siteErrCode);
//		std.setData("stdheader.msg_id", siteErrCode);
//		std.setData("stdheader.msg_nm", siteErrMessage);
//		
//		return std;
//    }
//
//    public static ExtMessage setErrorMsg(ExtMessage ext,String errCode, String errMsg) {
//		STDMessage std = (STDMessage)ext.getStdMessage();
//		std.setData("stdheader.Inter_chn", EAIServerManager.getInstance().getSystemGubun());
//		std.setData("stdheader.return_gubun", STDMessageKeys.SEND_RECV_CD_RECV);
//		std.setData("stdheader.global_id",ext.getGuid()+ StringUtils.leftPad(Integer.toString(ext.getGuidSeq()), UUIDGenerator.GUID_SEQ_LENGTH,'0'));
//		
//		std = setInternalError(std, errCode, errMsg);
////		try {
////			std.setSTDData(null);
////		} catch (Exception e) {
////			
////			e.printStackTrace();
////		}
//		ext.setStdMessage(std);
//		return toExtMessage(ext, std);
//    }
//    public static String getSiteCode(String oldErrCode){
//    	if ("".equals(oldErrCode)){
//    		return STDMessageKeys.ERROR_CODE_VALUE;
//    	}
//    	if ("RECEAIOSA777,RECEAIOHP003,RECEAIOSP004,RECEAIOTC913,RECEAIOSA010,RECEAIOEP010,RECEAIOHP010,RECEAIOSP010,RECEAIOTP010".indexOf(oldErrCode) >= 0 ){  //TIMEOUT일경우
//    		return STDMessageKeys.TIMEOUT_CODE_VALUE;
//    	}else{
//    		return STDMessageKeys.ERROR_CODE_VALUE;
//    	}
//    }
//    public static String getSiteMessage(String oldErrCode){
//    	if ("".equals(oldErrCode)){
//    		return "시스템오류가 발생하였습니다.";
//    	}
//    	if ("RECEAIOSA777,RECEAIOHP003,RECEAIOSP004,RECEAIOTC913,RECEAIOSA010,RECEAIOEP010,RECEAIOHP010,RECEAIOSP010,RECEAIOTP010".indexOf(oldErrCode) >= 0 ){  //TIMEOUT일경우
//    		return "타임아웃오류가 발생하였습니다.";
//    	}else{
//    		return "시스템오류가 발생하였습니다.";
//    	}
//    }
//    public static ExtMessage getParsing(Object message, String messageType) throws Exception {
//		STDMessageParser parser = STDMessageParserFactory.createPaserFactory(messageType);
//		STDMessage std = parser.convert(message);
//		ExtMessage ext = new ExtMessage();
//		return toExtMessage(ext, std);
//    }
//
//    public static byte[] toJsonBytes(ExtMessage extMessage, String encode) {
//    	STDMessage stdMsg = (STDMessage)extMessage.getStdMessage();
//    	byte[] bizData = (byte[])extMessage.getBizData()[0];
//    	STDMessage resultStdMsg = (STDMessage)ExtMessageConverter.fromExtMessage(extMessage, stdMsg);
////    	return resultStdMsg.toFixedBytes(bizData, encode);
//    	return resultStdMsg.toFixedBytes(bizData);
//    }
//    public static STDMessage setSTDMessageDefault(STDMessage vo, String version, String systemEnvType, String serverType, boolean isFEP,String chnlCode){
//    	vo.setData("stdheader.Inter_chn", EAIServerManager.getInstance().getSystemGubun());
////        vo.setData("stdheder.mesgVerNo", version);//버전
//////    	if(isFEP){
//////    		vo.setData("systemHeader.CHNL_DVSN_CD", chnlCode);//채널구분
//////    	}
////    	vo.setData("stdcommon.sysOprtEnvDvcd", systemEnvType);//환경정보구분
////    	//vo.setData("systemHeader.FRST_DMND_APLC_SYS_CD", serverType.toUpperCase());//최초요청어플리케이션시스템코드
////    	vo.setData("stdheader.trnmSysCd", serverType.toUpperCase());//요청시스템코드
//    	return vo;
//    }
////    public static String getRealHeader(ExtMessage extmessage) throws Exception {
////    	STDMessage std = (STDMessage)extmessage.getStdMessage();
////    	if (std == null) return "";
////    	return std.toJSONHeaderString();
////    }
//    public static ExtMessage setTimeoutCode(ExtMessage ext,String timeoutCode) {
//    	STDMessage std = (STDMessage)ext.getStdMessage();
//    	//std.setData("systemHeader.TMOT_CD",timeoutCode);
//    	ext.setStdMessage(std);
//    	return ext;
//    }
//    public static boolean validation(ExtMessage extMessage,ProcessVO vo) {
//    	STDMessage std = (STDMessage)extMessage.getStdMessage();
//		/**
//		 * eai에만 userID셋팅 에서 USERID가 없을경우 오류처리로 변경 20211013
//		 */
//		String userId = std.getData("stdheader.usr_id");
//		if (StringUtils.isBlank(userId)){
//			String systemType = EAIServerManager.getInstance().getSystemType();
//			String interfaceId = std.getData("stdheader.service_id");
//			vo.setRspErrorCode("RECEAIIRP110");
//			vo.setRspErrorMsg(ExceptionUtil.make(vo.getRspErrorCode(), new String[]{interfaceId,"USERID"}));
//			vo.setErrTypeCode(InboundErrorKeys.IN_ERROR);
//			return false;
//		}
//
//    	return true;
//    }
////    public static ExtMessage setTimeForNonStandard(ExtMessage ext) {
////    	STDMessage std = (STDMessage)ext.getStdMessage();
////		//정상셋팅
////        //표준전문이 아닐경우
////        //전문응답일자	MESG_RSPN_DT
////        //전문응답시간	MESG_RSPN_TKTM
////    	std.setData("stdcommon.mesgRspnDt",DatetimeUtil.getCurrentDate());
////    	std.setData("stdcommon.mesgRspnTktm",DatetimeUtil.getTime8());
////
////    	ext.setStdMessage(std);
////    	return ext;
////    }
//    public static void convertExtMsg2STDMsg(ExtMessage extMsg ) {
//    	STDMessage stdmessage =  (STDMessage)extMsg.getStdMessage();
//    	STDMessage rstdmessage =  (STDMessage) fromExtMessage(extMsg,stdmessage);
//    	extMsg.setStdMessage(rstdmessage);
//
//    }
//    public static ExtMessage convertSTDMsg2ExtMsg(ExtMessage extMsg ) {
//    	STDMessage stdmessage =  (STDMessage)extMsg.getStdMessage();
//    	ExtMessage extMessage =  toExtMessage(extMsg,stdmessage);
//    	return extMessage;
//    }
//    
//    /**
//     * 하나캐피탈 POC 표준전문 전용
//     * @param extMsg
//     */
//	public static void setStdGuid(ExtMessage extMsg) {
//		try {
//			((STDMessage) extMsg.getStdMessage()).setData("stdheader.global_id", extMsg.getGuid()
//					+ StringUtils.leftPad(Integer.toString(extMsg.getGuidSeq()), UUIDGenerator.GUID_SEQ_LENGTH, '0'));
//		} catch (Exception e) {
//			logger.error(e.getMessage());
//		}
//	}
//}
