From a6e7d1adb3bce816c06a2fad7fe8432bf40cd8e8 Mon Sep 17 00:00:00 2001 From: eastargh Date: Thu, 11 Jun 2026 11:38:38 +0900 Subject: [PATCH 1/7] =?UTF-8?q?=EC=95=84=EC=9B=83=EB=B0=94=EC=9A=B4?= =?UTF-8?q?=EB=93=9C=20URL=20restoption=20type=20=ED=8C=90=EB=8B=A8?= =?UTF-8?q?=EC=8B=9C=20{}=EC=95=88=EC=97=90=20.=EB=8F=84=20=ED=8F=AC?= =?UTF-8?q?=ED=95=A8=EB=90=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eai/rms/onl/transaction/apim/ApiInterfaceService.java | 2 +- .../onl/transaction/simpleinterface/SimpleInterfaceService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java b/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java index 0c7b620..decd49c 100644 --- a/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java +++ b/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java @@ -565,7 +565,7 @@ public class ApiInterfaceService extends OnlBaseService { restOption.setMethod(outboundHttpMethod); restOption.setExtraPath(outboundRestPath); - String pathType = outboundRestPath.matches(".*\\{[_a-zA-Z]+\\}.*") ? "variableUrlRequest" : "simpleRequest"; + String pathType = outboundRestPath.matches(".*\\{[_a-zA-Z.]+\\}.*") ? "variableUrlRequest" : "simpleRequest"; restOption.setType(pathType); if (StringUtils.isNotBlank(contentType)) { diff --git a/src/main/java/com/eactive/eai/rms/onl/transaction/simpleinterface/SimpleInterfaceService.java b/src/main/java/com/eactive/eai/rms/onl/transaction/simpleinterface/SimpleInterfaceService.java index 3e415a1..14ec212 100644 --- a/src/main/java/com/eactive/eai/rms/onl/transaction/simpleinterface/SimpleInterfaceService.java +++ b/src/main/java/com/eactive/eai/rms/onl/transaction/simpleinterface/SimpleInterfaceService.java @@ -400,7 +400,7 @@ public class SimpleInterfaceService extends OnlBaseService { jsonObject.put("method", outboundHttpMethod); jsonObject.put("extraPath", outboundRestPath); - String pathType = outboundRestPath.matches(".*\\{[a-zA-Z]+\\}.*") ? "variableUrlRequest" : "simpleRequest"; + String pathType = outboundRestPath.matches(".*\\{[_a-zA-Z.]+\\}.*") ? "variableUrlRequest" : "simpleRequest"; jsonObject.put("type", pathType); restOption = jsonObject.toString(); return restOption; From 164ab92919feaeb49ee02d4b21dcb6fce3cf12d5 Mon Sep 17 00:00:00 2001 From: eastargh Date: Fri, 12 Jun 2026 09:27:08 +0900 Subject: [PATCH 2/7] =?UTF-8?q?BAP=20=EC=84=9C=EB=B2=84=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=EC=A1=B0=ED=9A=8C=20=EC=BF=BC=EB=A6=AC=EC=97=90=20row?= =?UTF-8?q?num=3D1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/eactive/eai/rms/bap/manage/common/ServerMan-oracle.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/com/eactive/eai/rms/bap/manage/common/ServerMan-oracle.xml b/src/main/resources/com/eactive/eai/rms/bap/manage/common/ServerMan-oracle.xml index 3bf0f0c..eed9c57 100644 --- a/src/main/resources/com/eactive/eai/rms/bap/manage/common/ServerMan-oracle.xml +++ b/src/main/resources/com/eactive/eai/rms/bap/manage/common/ServerMan-oracle.xml @@ -23,7 +23,6 @@ FLOVRSEVRNAME AS "FAILOVERSVRNM", HOSTNAME AS "HOSTNAME" FROM $schemaId$.TSEAIBP03 - WHERE ROWNUM = 1 \ No newline at end of file From ac0d081a9ace635080eefed07c839fa7d7bead66 Mon Sep 17 00:00:00 2001 From: eastargh Date: Fri, 12 Jun 2026 10:18:39 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=20=EC=95=84=EC=9B=83=EB=B0=94=EC=9A=B4=EB=93=9C=20pat?= =?UTF-8?q?h=EC=97=90=20{}=20=ED=8F=AC=ED=95=A8=EC=8B=9C=20variableUrlRequ?= =?UTF-8?q?est=EB=A1=9C=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eai/rms/onl/transaction/apim/ApiInterfaceService.java | 2 +- .../onl/transaction/simpleinterface/SimpleInterfaceService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java b/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java index decd49c..89b6bbb 100644 --- a/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java +++ b/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java @@ -565,7 +565,7 @@ public class ApiInterfaceService extends OnlBaseService { restOption.setMethod(outboundHttpMethod); restOption.setExtraPath(outboundRestPath); - String pathType = outboundRestPath.matches(".*\\{[_a-zA-Z.]+\\}.*") ? "variableUrlRequest" : "simpleRequest"; + String pathType = outboundRestPath.matches(".*\\{.+\\}.*") ? "variableUrlRequest" : "simpleRequest"; restOption.setType(pathType); if (StringUtils.isNotBlank(contentType)) { diff --git a/src/main/java/com/eactive/eai/rms/onl/transaction/simpleinterface/SimpleInterfaceService.java b/src/main/java/com/eactive/eai/rms/onl/transaction/simpleinterface/SimpleInterfaceService.java index 14ec212..ff70543 100644 --- a/src/main/java/com/eactive/eai/rms/onl/transaction/simpleinterface/SimpleInterfaceService.java +++ b/src/main/java/com/eactive/eai/rms/onl/transaction/simpleinterface/SimpleInterfaceService.java @@ -400,7 +400,7 @@ public class SimpleInterfaceService extends OnlBaseService { jsonObject.put("method", outboundHttpMethod); jsonObject.put("extraPath", outboundRestPath); - String pathType = outboundRestPath.matches(".*\\{[_a-zA-Z.]+\\}.*") ? "variableUrlRequest" : "simpleRequest"; + String pathType = outboundRestPath.matches(".*\\{.+\\}.*") ? "variableUrlRequest" : "simpleRequest"; jsonObject.put("type", pathType); restOption = jsonObject.toString(); return restOption; From 54291e5cbb7a0be01ffb7fc8a2aa84be98397ea2 Mon Sep 17 00:00:00 2001 From: eastargh Date: Mon, 15 Jun 2026 13:16:23 +0900 Subject: [PATCH 4/7] =?UTF-8?q?ums=20=EA=B4=80=EB=A0=A8=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MonitoringPropertyManService.java | 1 + .../ext/djb/apistatus/ApiStatusService.java | 2 +- .../ext/djb/inflow/InflowTokenService.java | 2 +- .../rms/ext/djb/{util => ums}/UmsManager.java | 2 +- .../rms/ext/djb/ums/service/UmsService.java | 390 ++++++++++++++++++ .../eai/rms/ext/djb/ums/vo/EmailDataVO.java | 67 +++ .../eai/rms/ext/djb/ums/vo/SmsDataVO.java | 67 +++ .../eai/rms/ext/djb/ums/vo/StdHeadVO.java | 61 +++ .../eai/rms/ext/djb/ums/vo/SwingCommonVO.java | 19 + .../eai/rms/ext/djb/ums/vo/SwingDataVO.java | 21 + .../ext/djb/ums/vo/SwingReceiverDataVO.java | 22 + .../service/ums/UmsDispatchService.java | 28 +- 12 files changed, 656 insertions(+), 26 deletions(-) rename src/main/java/com/eactive/eai/rms/ext/djb/{util => ums}/UmsManager.java (98%) create mode 100644 src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java create mode 100644 src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/EmailDataVO.java create mode 100644 src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SmsDataVO.java create mode 100644 src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/StdHeadVO.java create mode 100644 src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingCommonVO.java create mode 100644 src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingDataVO.java create mode 100644 src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingReceiverDataVO.java diff --git a/src/main/java/com/eactive/eai/rms/common/property/MonitoringPropertyManService.java b/src/main/java/com/eactive/eai/rms/common/property/MonitoringPropertyManService.java index 1bf3869..3cde4d8 100644 --- a/src/main/java/com/eactive/eai/rms/common/property/MonitoringPropertyManService.java +++ b/src/main/java/com/eactive/eai/rms/common/property/MonitoringPropertyManService.java @@ -35,6 +35,7 @@ public class MonitoringPropertyManService extends BaseService { public MonitoringPropertyGroupUI selectDetail(String prptyGroupName) { MonitoringPropertyGroup propertyGroup = propertyGroupService.getById(prptyGroupName); + propertyGroup.getMonitoringProperties().sort(Comparator.comparing(p -> p.getId().getPrptyName())); return propertyGroupMapper.toVo(propertyGroup); } diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/apistatus/ApiStatusService.java b/src/main/java/com/eactive/eai/rms/ext/djb/apistatus/ApiStatusService.java index 9d7f215..55615ad 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/apistatus/ApiStatusService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/apistatus/ApiStatusService.java @@ -15,7 +15,7 @@ import com.eactive.apim.portal.template.entity.MessageCode; import com.eactive.eai.rms.data.entity.man.role.Role; import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatus; import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatusEvent; -import com.eactive.eai.rms.ext.djb.util.UmsManager; +import com.eactive.eai.rms.ext.djb.ums.UmsManager; @Service diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/inflow/InflowTokenService.java b/src/main/java/com/eactive/eai/rms/ext/djb/inflow/InflowTokenService.java index 4859ee4..5b00c96 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/inflow/InflowTokenService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/inflow/InflowTokenService.java @@ -11,7 +11,7 @@ import org.springframework.transaction.annotation.Transactional; import com.eactive.apim.portal.template.entity.MessageCode; import com.eactive.eai.rms.data.entity.man.role.Role; import com.eactive.eai.rms.data.entity.onl.djb.inflow.InflowTokenInsufficient; -import com.eactive.eai.rms.ext.djb.util.UmsManager; +import com.eactive.eai.rms.ext.djb.ums.UmsManager; @Service diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/util/UmsManager.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/UmsManager.java similarity index 98% rename from src/main/java/com/eactive/eai/rms/ext/djb/util/UmsManager.java rename to src/main/java/com/eactive/eai/rms/ext/djb/ums/UmsManager.java index 64d5111..67c238e 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/util/UmsManager.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/UmsManager.java @@ -1,4 +1,4 @@ -package com.eactive.eai.rms.ext.djb.util; +package com.eactive.eai.rms.ext.djb.ums; import java.util.HashMap; import java.util.List; diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java new file mode 100644 index 0000000..b932514 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java @@ -0,0 +1,390 @@ +package com.eactive.eai.rms.ext.djb.ums.service; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.Charset; +import java.security.SecureRandom; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.eactive.apim.portal.template.entity.MessageRequest; +import com.eactive.eai.common.util.SystemUtil; +import com.eactive.eai.rms.ext.djb.ums.vo.EmailDataVO; +import com.eactive.eai.rms.ext.djb.ums.vo.SmsDataVO; +import com.eactive.eai.rms.ext.djb.ums.vo.StdHeadVO; +import com.eactive.eai.rms.ext.djb.ums.vo.SwingCommonVO; +import com.eactive.eai.rms.ext.djb.ums.vo.SwingDataVO; +import com.eactive.eai.rms.ext.djb.ums.vo.SwingReceiverDataVO; +import com.eactive.ext.kjb.common.KjbProperty; +import com.eactive.ext.kjb.common.KjbPropertyHolder; +import com.google.gson.Gson; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class UmsService { + //public final static int[] ALLOW_CHANNELS = { MessageCode.Channels.SWING.getValue() }; + + private static final Gson gson = new Gson(); + + private static volatile UmsService instance; + + private static final String SYS_DVCD = "OPA"; + + private UmsService() { + // 싱글톤 + } + + public static UmsService getInstance() { + if (instance == null) { + synchronized (UmsService.class) { + if (instance == null) { + instance = new UmsService(); + } + } + } + return instance; + } + + private KjbProperty getProperty() { + return KjbPropertyHolder.get(); + } + +// public static boolean isAllowChannel(MessageRequest message) { +// for (int channel : ALLOW_CHANNELS) { +// if ((message.getMessageCode().getChannels() & channel) == channel) { +// return true; +// } +// } +// return false; +// } + + + public boolean send(MessageRequest messageRequest) throws Exception { + if (messageRequest == null) { + throw new IllegalArgumentException("messageRequest is null"); + } + +// if (MessageCode.Channels.SWING.getValue() != (messageRequest.getMessageCode().getChannels() & MessageCode.Channels.SWING.getValue())) { +// log.error("지원하지 않는 발송 채널 - {}", messageRequest.getMessageCode().toString()); +// throw new IllegalArgumentException("지원하지 않는 발송 채널 - " + messageRequest.getMessageCode().toString()); +// } + + this.httpConnection(messageRequest); + + return true; + } + + + private void httpConnection(MessageRequest messageRequest) throws Exception { + HttpURLConnection conn = null; + BufferedReader br = null; + + try { + URL url = new URL(this.getHostUrl(messageRequest)); + int timeoutValue = 5 * 1000; // 타임아웃 설정을 위한 값 (단위: ms) + // Charset charset = Charset.forName("UTF-8"); + Charset charset = Charset.forName("MS949"); + + StringBuffer sb = null; + String bodyData = this.makeBodyData(messageRequest); + + String responseData = ""; + String method = bodyData.isEmpty() ? "GET" : "POST"; + conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod(method); // 전송방식 + // conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); + conn.setRequestProperty("Content-Type", "application/json; charset=MS949"); + conn.setConnectTimeout(timeoutValue); // 연결 타임아웃 설정(5초) + conn.setReadTimeout(timeoutValue); // 읽기 타임아웃 설정(5초) + conn.setDoOutput(true); + + // POst 방식인 경우에만 + if (method.equals("POST")) { + OutputStream os = conn.getOutputStream(); + byte requestData[] = bodyData.getBytes(charset); + os.write(requestData); + os.close(); + } + + if (log.isDebugEnabled()) { + log.debug("getContentType();" + conn.getContentType()); // 응답 콘텐츠 유형 구하기 + log.debug("getResponsecode();" + conn.getResponseCode()); // 응답 코드 구하기 + log.debug("getResponseMessage():" + conn.getResponseMessage()); // 응답 메세지 구하기 + } + + // http 요청 후 응답 받은 데이타를 버퍼에 쌓는다 + if (conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) { + br = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset)); + } else { + br = new BufferedReader(new InputStreamReader(conn.getErrorStream(), charset)); + } + + String inputLine; + sb = new StringBuffer(); + while ((inputLine = br.readLine()) != null) { + sb.append(inputLine); + } + + responseData = sb.toString(); + } finally { + // http 요청 및 응답 완료 후 BufferedReader를 닫는다 + if (br != null) { + br.close(); + } + if (conn != null) { + conn.disconnect(); + } + } + } + + + private String getHostUrl(MessageRequest messageRequest) { + KjbProperty prop = getProperty(); + String hostUrl = ""; + if ("SWING".equals(messageRequest.getMessageType()) ) { + hostUrl = prop.getUmsSwingUrl(); + } else if ("SMS".equals(messageRequest.getMessageType()) || "KAKAO".equals(messageRequest.getMessageType())) { + hostUrl = prop.getUmsSmsUrl(); + } else if ("EMAIL".equals(messageRequest.getMessageType())) { + hostUrl = prop.getUmsEmailUrl(); + } + return hostUrl; + } + + private String makeBodyData(MessageRequest messageRequest) { + + KjbProperty prop = getProperty(); + + // 리턴값 + String rtnVal = ""; + + // guID 및 날짜 시간 정보 + String jsonData[] = this.makeStdGuidInfo(); + + // 표준 헤더 + StdHeadVO stdHeadVO = new StdHeadVO(); + stdHeadVO.setNxgn_stnd_idfr("JERA"); + stdHeadVO.setGuid(jsonData[2]); + stdHeadVO.setGuid_prgs_no("1"); + stdHeadVO.setStnd_mesg_ver("R10"); + stdHeadVO.setOrtr_guid(jsonData[2]); + stdHeadVO.setSect_ecrpt_yn("N"); + stdHeadVO.setFrst_trnm_ipad(prop.getUmsWasIpAddress()); + stdHeadVO.setFrst_trnm_ipv4_addr(prop.getUmsWasIpAddress()); + stdHeadVO.setFrst_trnm_mac(prop.getUmsWasMacAddress()); + stdHeadVO.setFrst_mesg_dman_dt(jsonData[0]); + stdHeadVO.setFrst_mesg_dman_time(jsonData[1]); + stdHeadVO.setFrst_trnm_sys_dvcd(SYS_DVCD); + stdHeadVO.setTrnm_sys_dvcd(SYS_DVCD); + stdHeadVO.setDman_rspn_dvcd("S"); // 요청응답구분코드 S:요청 R:응답 + stdHeadVO.setSys_env_dvcd(SystemUtil.getSysOperEvirnDstcd()); // D:개발 T:테스트 P:운영 + stdHeadVO.setTx_tycd("O"); // O:온라인 B:배치 + stdHeadVO.setSynz_dvcd("S"); // S:동기 A:비동기 + stdHeadVO.setChnl_tycd(""); // 채널유형코드 TODO: 값 채울것!! + stdHeadVO.setHmab_dvcd("1"); // 내외구분코드 1:내부 2:외부(타발) + + if ("SWING".equals(messageRequest.getMessageType()) ) { + // 표준 헤더 + stdHeadVO.setTx_id(prop.getUmsSwingTxId()); // 거래ID + stdHeadVO.setIf_id(prop.getUmsSwingIfId()); // 인터페이스ID + + // 스윙챗 알림 공용 + SwingCommonVO swiComVO = new SwingCommonVO(); + swiComVO.setClientld(prop.getUmsSwingClientId()); + swiComVO.setClientSecret(prop.getUmsSwingClientSecret()); + swiComVO.setCompanyCode("CB"); + swiComVO.setRequestUniqueKey(this.genrateRandomStringNumber26()); + + // 스윙챗 알림 데이터 + SwingDataVO swiDataVO = new SwingDataVO(); + swiDataVO.setNotiCode("CNO_FEP_HMP_0002"); + swiDataVO.setNotiTitle("알림"); + swiDataVO.setNotiContent(messageRequest.getMessage()); + + // 스윙챗 알림 데이터 + List swiReDataVOList = new ArrayList(); + SwingReceiverDataVO receiver = new SwingReceiverDataVO(); + receiver.setCode(messageRequest.getMessengerId()); + swiReDataVOList.add(receiver); + + swiDataVO.setReceiverInfo(swiReDataVOList); + + String header = gson.toJson(stdHeadVO); + String common = gson.toJson(swiComVO); + String data = gson.toJson(swiDataVO); + + // 헤더 + 데이터 + rtnVal = "{\"HEAD\":" + header + " ,\r\n" + "\"DATA\":\r\n" + " [" + "{\r\n" + + " \"data_dvcd\":\"IO\", \r\n" + " \"BIZ_DATA\":\r\n" + " {\r\n" + + " \"common\":\r\n" + common + ",\r\n" + " \"data\":" + data + + " }\r\n" + " }\r\n" + " ]\r\n" + "}"; + + } else if ("SMS".equals(messageRequest.getMessageType()) + || "KAKAO".equals(messageRequest.getMessageType())) { + // 표준 헤더 + stdHeadVO.setTx_id(prop.getUmsSmsTxId()); // 거래ID + stdHeadVO.setIf_id(prop.getUmsSmsIfId()); // 인터페이스ID + + // Sms 데이터 + SmsDataVO dataVO = new SmsDataVO(); + dataVO.setSnd_dman_dt(jsonData[0]); + dataVO.setSnd_dman_id(""); + dataVO.setSnd_dvcd("EAI"); + dataVO.setMsg_titl(""); + dataVO.setMsg_ctnt(messageRequest.getMessage()); + dataVO.setRecvr_no(messageRequest.getPhone()); + dataVO.setSndn_no("15880079"); //발신번호 + dataVO.setSnd_empno("999999"); //요청자 + dataVO.setSnd_emp_dprm_cd("157"); //요청부서코드 + if ("SMS".equals(messageRequest.getMessageType())) { + dataVO.setLtrs_snd_tycd("1"); // 1:SMS 2:LMS/MMS + dataVO.setMsg_snd_tycd("0000"); // 알림톡 메세지 종류 0000:SMS, 1000:LMS, 1008:알림톡, .... + } else if ("KAKAO".equals(messageRequest.getMessageType())) { + dataVO.setLtrs_snd_tycd("2"); // 1:SMS 2:LMS/MMS + dataVO.setMsg_snd_tycd("1008"); // 알림톡 메세지 종류 0000:SMS, 1000:LMS, 1008:알림톡, .... + dataVO.setAlmtk_snd_prfl_key(""); // 플러스친구아이디 + dataVO.setAlmtk_tmplt_cd(""); // 템플릿코드 + dataVO.setAlmtk_err_ltrs_snd_yn("Y"); // 오류자문자발송여부 + dataVO.setAlmtk_btn_trnm_tycd("2"); // 카카오버튼전송방식 1-format string 2-JSON 3-XML + } + dataVO.setSms_trnm_bzwk_dvcd(""); //업무구분코드 + dataVO.setSms_bzwk_dcls_dvcd(""); //업무세분코드 + dataVO.setSms_sys_dvcd("83"); //시스템코드 + dataVO.setTx_dt(jsonData[0]); //거래일자 + dataVO.setTx_tktm(jsonData[1].substring(0,6)); //거래시간 + + List dataList = new ArrayList(); + dataList.add(dataVO); + + String header = gson.toJson(stdHeadVO); + String data = gson.toJson(dataList); + + // 헤더 + 데이터 + rtnVal = "{\"HEAD\":" + header + " ,\r\n" + "\"DATA\":\r\n" + " [" + "{\r\n" + + " \"data_dvcd\":\"IO\", \r\n" + " \"BIZ_DATA\":\r\n" + " {\r\n" + + " \"ums_if_data_ncnt\":1, \r\n" + + " \"ums_if_data\":" + data + + " }\r\n" + " }\r\n" + " ]\r\n" + "}"; + + } else if ("EMAIL".equals(messageRequest.getMessageType())) { + // 표준 헤더 + stdHeadVO.setTx_id(prop.getUmsEmailTxId()); // 거래ID + stdHeadVO.setIf_id(prop.getUmsEmailIfId()); // 인터페이스ID + + // 이메일 데이터 + EmailDataVO dataVO = new EmailDataVO(); + dataVO.setUms_evnt_id(""); // UMS이벤트ID(필수) + dataVO.setSnd_dman_dt(jsonData[0]); + dataVO.setSnd_dman_id(""); + dataVO.setSnd_dman_sno("1"); + dataVO.setEmail_titl(messageRequest.getSubject()); // 메일제목 + dataVO.setCstno(""); // 고객번호(필수) + dataVO.setSendr_emaddr(""); // 발신자 이메일 + dataVO.setSendr_nm(""); // 발신자 이름 + dataVO.setSndbk_emaddr(""); // 리턴 이메일 + dataVO.setRecvr_emaddr(messageRequest.getEmail()); // 수신자 이메일(필수) + dataVO.setRecvr_nm(messageRequest.getUsername()); // 수신자명(필수) + dataVO.setTmplt_mpng_info(messageRequest.getMessage()); // 탬플릿매핑정보 + dataVO.setTmplt_mpng_rptt_info(""); // 탬플릿매핑반복정보 + dataVO.setSnd_empno(""); // 발신자ID(필수) + dataVO.setSnd_emp_dprm_cd(""); // 발신자부서코드(필수) + dataVO.setBzwk_cd(""); // 업무구분코드 + dataVO.setSub_bzwk_cd(""); // 업무세부코드 + dataVO.setSys_dvcd(SYS_DVCD); + dataVO.setTx_dt(jsonData[0]); //거래일자 + dataVO.setTx_tktm(jsonData[1].substring(0,6)); //거래시간 + + List dataList = new ArrayList(); + dataList.add(dataVO); + + String header = gson.toJson(stdHeadVO); + String data = gson.toJson(dataList); + + // 헤더 + 데이터 + rtnVal = "{\"HEAD\":" + header + " ,\r\n" + "\"DATA\":\r\n" + " [" + "{\r\n" + + " \"data_dvcd\":\"IO\", \r\n" + " \"BIZ_DATA\":\r\n" + " {\r\n" + + " \"ums_if_data_ncnt\":1, \r\n" + + " \"ums_if_data\":" + data + + " }\r\n" + " }\r\n" + " ]\r\n" + "}"; + } + + log.debug(rtnVal); + + return rtnVal; + } + + + private String[] makeStdGuidInfo() { + // 리턴값 + String rtnVal[] = new String[3]; + + // 현재시간 + Date currentDate = new Date(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String formattedDate = sdf.format(currentDate); + + rtnVal[0] = formattedDate.substring(0,8); + rtnVal[1] = formattedDate.substring(8); + + // 랜던값 + String random20 = this.genrateRandomStringNumber20(); + + rtnVal[2] = formattedDate + SYS_DVCD + random20; + + return rtnVal; + } + + + private String genrateRandomStringNumber20() { + String rtnVal= ""; + + StringBuilder buffer= new StringBuilder(10); + + // 랜덤값 + String characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + + // 랜덤객체 생성 + SecureRandom random = new SecureRandom(); + + // 반복문 + for (int i= 0;i< 10;i++) { + // 랜덤수 + int randomIndex = random.nextInt(characters.length()); + + // 생성된 랜덤값 + char randomChar = characters.charAt(randomIndex); + + // 랜덤값 저장 + buffer.append(randomChar); + } + + // 랜덤객체 재생성 + random = new SecureRandom(); + + // 난수 10개 생성 + int random10 = (int) (Math.pow(10, 9) + random.nextDouble() * Math.pow(10, 9)); + + // 문자 숫자 조합(10) + 숫자(10) + rtnVal = buffer.toString() + Integer.toString(random10); + + //리턴 + return rtnVal; + } + + private String genrateRandomStringNumber26() { + StringBuilder buffer = new StringBuilder(26); + String characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789"; + SecureRandom random = new SecureRandom(); + for (int i = 0; i < 26; i++) { + buffer.append(characters.charAt(random.nextInt(characters.length()))); + } + return buffer.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/EmailDataVO.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/EmailDataVO.java new file mode 100644 index 0000000..defecc5 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/EmailDataVO.java @@ -0,0 +1,67 @@ +package com.eactive.eai.rms.ext.djb.ums.vo; + +import lombok.Data; + +@Data +public class EmailDataVO { + + /** UMS이벤트ID */ + private String ums_evnt_id; + + /** 발송요청일자 */ + private String snd_dman_dt; + + /** UUID */ + private String snd_dman_id; + + /** 발송요청순번 */ + private String snd_dman_sno; + + /** 메일제목 */ + private String email_titl; + + /** 고객번호 */ + private String cstno; + + /** 발신자 이메일 */ + private String sendr_emaddr; + + /** 발신자 이름 */ + private String sendr_nm; + + /** 리턴 이메일 */ + private String sndbk_emaddr; + + /** 수신자 이메일 */ + private String recvr_emaddr; + + /** 수신자명 */ + private String recvr_nm; + + /** 탬플릿매핑정보 */ + private String tmplt_mpng_info; + + /** 탬플릿매핑반복정보 */ + private String tmplt_mpng_rptt_info; + + /** 발신자ID */ + private String snd_empno; + + /** 발신자부서코드 */ + private String snd_emp_dprm_cd; + + /** 업무구분코드 */ + private String bzwk_cd; + + /** 업무세부코드 */ + private String sub_bzwk_cd; + + /** 시스템코드 */ + private String sys_dvcd; + + /** 거래일자 */ + private String tx_dt; + + /** 거래시간 */ + private String tx_tktm; +} diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SmsDataVO.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SmsDataVO.java new file mode 100644 index 0000000..a2f822c --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SmsDataVO.java @@ -0,0 +1,67 @@ +package com.eactive.eai.rms.ext.djb.ums.vo; + +import lombok.Data; + +@Data +public class SmsDataVO { + + /** 발송요청일자 */ + private String snd_dman_dt; + + /** UUID */ + private String snd_dman_id; + + /** 발송구분 */ + private String snd_dvcd; + + /** 발송타입 */ + private String ltrs_snd_tycd; + + /** LMS 제목 */ + private String msg_titl; + + /** 메세지 */ + private String msg_ctnt; + + /** 수신자번호 */ + private String recvr_no; + + /** 발신번호 */ + private String sndn_no; + + /** 요청자(직원번호) */ + private String snd_empno; + + /** 요청부서코드 */ + private String snd_emp_dprm_cd; + + /** 알림톡 메시지 종류 */ + private String msg_snd_tycd; + + /** 플러스친구아이디 */ + private String almtk_snd_prfl_key; + + /** 템플릿코드 */ + private String almtk_tmplt_cd; + + /** 오류자문자발송여부 */ + private String almtk_err_ltrs_snd_yn; + + /** 카카오톡전송방식 */ + private String almtk_btn_trnm_tycd; + + /** 업무구분 코드 */ + private String sms_trnm_bzwk_dvcd; + + /** 업무세부코드 */ + private String sms_bzwk_dcls_dvcd; + + /** 시스템코드 */ + private String sms_sys_dvcd; + + /** 거래일자 */ + private String tx_dt; + + /** 거래시간 */ + private String tx_tktm; +} diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/StdHeadVO.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/StdHeadVO.java new file mode 100644 index 0000000..0f6675a --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/StdHeadVO.java @@ -0,0 +1,61 @@ +package com.eactive.eai.rms.ext.djb.ums.vo; + +import lombok.Data; + +@Data +public class StdHeadVO { + + private String nxgn_stnd_idfr; + + private String guid; + + private String guid_prgs_no; + + private String stnd_mesg_ver; + + private String ortr_guid; + + private String sect_ecrpt_yn; + + private String frst_trnm_ipad; + + private String frst_trnm_ipv4_addr; + + private String frst_trnm_mac; + + private String frst_mesg_dman_dt; + + private String frst_mesg_dman_time; + + private String frst_trnm_sys_dvcd; + + private String trnm_sys_dvcd; + + private String dman_rspn_dvcd; + + private String sys_env_dvcd; + + private String tx_tycd; + + private String synz_dvcd; + + private String tx_id; + + private String osdch_dvcd; + + private String chnl_tycd; + + private String if_id; + + private String hmab_dvcd; + + private String tx_brcd; + + private String tlrno; + + private String insl_brcd; + + private String blng_brcd; + + private String mgmt_brcd; +} diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingCommonVO.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingCommonVO.java new file mode 100644 index 0000000..cbb9b36 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingCommonVO.java @@ -0,0 +1,19 @@ +package com.eactive.eai.rms.ext.djb.ums.vo; + +import lombok.Data; + +@Data +public class SwingCommonVO { + + /** 클라이업트 D */ + private String clientld; + + /** 클라이언트 시크릿 */ + private String clientSecret; + + /** 회사코드 */ + private String companyCode; + + /** 요청고유키 */ + private String requestUniqueKey; +} diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingDataVO.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingDataVO.java new file mode 100644 index 0000000..60bd2b6 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingDataVO.java @@ -0,0 +1,21 @@ +package com.eactive.eai.rms.ext.djb.ums.vo; + +import java.util.List; + +import lombok.Data; + +@Data +public class SwingDataVO { + + /** 알림코드 */ + private String notiCode; + + /** 알림제목 */ + private String notiTitle; + + /** 알림내용 */ + private String notiContent; + + /** 수신자정보 */ + private List receiverInfo; +} diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingReceiverDataVO.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingReceiverDataVO.java new file mode 100644 index 0000000..2d2a25d --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/vo/SwingReceiverDataVO.java @@ -0,0 +1,22 @@ +package com.eactive.eai.rms.ext.djb.ums.vo; + +import lombok.Data; + +@Data +public class SwingReceiverDataVO { + + /** 알림코드 */ + private String name; + + /** 알림제목 */ + private String type; + + /** 알림내용 */ + private String companyCode; + + /** 수신자정보 */ + private String code; + + /** 상품명 */ + private String prdNm; +} diff --git a/src/main/java/com/eactive/eai/rms/onl/common/service/ums/UmsDispatchService.java b/src/main/java/com/eactive/eai/rms/onl/common/service/ums/UmsDispatchService.java index d257a68..10a3728 100644 --- a/src/main/java/com/eactive/eai/rms/onl/common/service/ums/UmsDispatchService.java +++ b/src/main/java/com/eactive/eai/rms/onl/common/service/ums/UmsDispatchService.java @@ -19,9 +19,7 @@ import org.springframework.transaction.support.TransactionTemplate; import com.eactive.apim.portal.template.entity.MessageRequest; import com.eactive.apim.portal.template.repository.MessageRequestRepository; -import com.eactive.ext.djb.ums.DjbMessengerService; -import com.eactive.ext.kjb.ums.KjbEmailSendModule; -import com.eactive.ext.kjb.ums.KjbUmsService; +import com.eactive.eai.rms.ext.djb.ums.service.UmsService; import lombok.extern.slf4j.Slf4j; @@ -43,6 +41,8 @@ public class UmsDispatchService { private EntityManager entityManager; private final MessageRequestRepository messageRequestRepository; + + private final UmsService umsService; @Autowired public UmsDispatchService( @@ -60,6 +60,7 @@ public class UmsDispatchService { new ThreadPoolExecutor.CallerRunsPolicy() ); this.transactionTemplate = new TransactionTemplate(transactionManager); + this.umsService = UmsService.getInstance(); log.debug("UmsDispatchService initialized with thread pool - core: {}, max: {}, queue: {}", CORE_POOL_SIZE, MAX_POOL_SIZE, QUEUE_CAPACITY); } @@ -71,17 +72,6 @@ public class UmsDispatchService { log.info("UmsDispatchService initialized - KjbUmsService and KjbEmailSendModule ready via singleton"); } - private DjbMessengerService getMessengerService() { - return DjbMessengerService.getInstance(); - } - - private KjbUmsService getUmsService() { - return KjbUmsService.getInstance(); - } - - private KjbEmailSendModule getEmailModule() { - return KjbEmailSendModule.getInstance(); - } @SuppressWarnings("unchecked") @Transactional(transactionManager = "transactionManagerForEMS") @@ -138,15 +128,7 @@ public class UmsDispatchService { try { transactionTemplate.execute(status -> { try { - if (DjbMessengerService.isAllowChannel(message)) { - getMessengerService().send(message); - } - if (KjbUmsService.isAllowChannel(message)) { - getUmsService().send(message); - } - if (KjbEmailSendModule.isAllowChannel(message)) { - getEmailModule().sendEmail(message); - } + umsService.send(message); updateMessageStatus(message, "SENT"); return null; } catch (Exception e) { From b5eb63448aea035641bcfaae6d5116dd6fa4ab03 Mon Sep 17 00:00:00 2001 From: eastargh Date: Mon, 15 Jun 2026 17:52:34 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20?= =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EB=8D=B0=EC=9D=B4=ED=83=80=ED=83=80?= =?UTF-8?q?=EC=9E=85=20Boolean=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/jsp/onl/admin/rule/layoutManDetail.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp b/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp index 61ca8a4..9fb1e00 100644 --- a/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp +++ b/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp @@ -34,7 +34,7 @@ , {id:'LLLVAR',name:'[ISO8583] LLLVAR'}, {id:'LLLLVAR',name:'[ISO8583] LLLLVAR'}, {id:'BINARY',name:'[ISO8583] BINARY'}, {id:'LLBIN',name:'[ISO8583] LLBIN'} , {id:'LLLBIN',name:'[ISO8583] LLLBIN'}]; - const basicDataTypes = [{id:'BigDecimal',name:'BigDecimal'},{id:'String',name:'String'}]; + const basicDataTypes = [{id:'BigDecimal',name:'BigDecimal'},{id:'String',name:'String'},{id:'Boolean',name:'Boolean'}]; function gridRenderingInit() { $('#effectGrid').jqGrid({ From eee7f46aa7e0ac980e4db314a78bae7b4ef11ee3 Mon Sep 17 00:00:00 2001 From: eastargh Date: Tue, 16 Jun 2026 11:10:36 +0900 Subject: [PATCH 6/7] =?UTF-8?q?ums=20=EA=B4=80=EB=A0=A8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/ApiStatusChangedEventHandler.java | 43 +++++++ .../event/InflowTokenFailedEventHandler.java | 43 +++++++ .../rms/ext/djb/ums/service/UmsService.java | 108 +++++------------- .../service/ums/UmsDispatchService.java | 8 +- 4 files changed, 123 insertions(+), 79 deletions(-) create mode 100644 src/main/java/com/eactive/eai/rms/ext/djb/ums/event/ApiStatusChangedEventHandler.java create mode 100644 src/main/java/com/eactive/eai/rms/ext/djb/ums/event/InflowTokenFailedEventHandler.java diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/event/ApiStatusChangedEventHandler.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/event/ApiStatusChangedEventHandler.java new file mode 100644 index 0000000..fd059a5 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/event/ApiStatusChangedEventHandler.java @@ -0,0 +1,43 @@ +package com.eactive.eai.rms.ext.djb.ums.event; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.stereotype.Component; + +import com.eactive.apim.portal.template.entity.MessageCode; +import com.eactive.apim.portal.template.service.MessageEventHandler; +import com.eactive.apim.portal.template.service.MessageRecipient; +import com.eactive.apim.portal.template.service.MessageSendEvent; + +@Component +public class ApiStatusChangedEventHandler implements MessageEventHandler { + + @Override + public MessageCode getKey() { + return MessageCode.API_STATUS_CHANGED; + } + + @Override + public boolean allowAdditionalRecipients() { + return true; + } + + @Override + public String getDisplayName() { + return "API 상태 변화"; + } + + @Override + public String getDescription() { + return "
사용 가능 변수:

" + + "
- message 알림 메시지

"; + } + + @Override + public MessageSendEvent createEvent(Object source, MessageRecipient recipient, Map params) { + Map eventParams = new HashMap<>(); + eventParams.put("message", (String) params.get("message")); + return new MessageSendEvent(source, MessageCode.API_STATUS_CHANGED, recipient, eventParams); + } +} diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/event/InflowTokenFailedEventHandler.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/event/InflowTokenFailedEventHandler.java new file mode 100644 index 0000000..fb059e0 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/event/InflowTokenFailedEventHandler.java @@ -0,0 +1,43 @@ +package com.eactive.eai.rms.ext.djb.ums.event; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.stereotype.Component; + +import com.eactive.apim.portal.template.entity.MessageCode; +import com.eactive.apim.portal.template.service.MessageEventHandler; +import com.eactive.apim.portal.template.service.MessageRecipient; +import com.eactive.apim.portal.template.service.MessageSendEvent; + +@Component +public class InflowTokenFailedEventHandler implements MessageEventHandler { + + @Override + public MessageCode getKey() { + return MessageCode.INFLOW_TOKEN_FAILED; + } + + @Override + public boolean allowAdditionalRecipients() { + return true; + } + + @Override + public String getDisplayName() { + return "유량제어 토큰 획득 실패"; + } + + @Override + public String getDescription() { + return "
사용 가능 변수:

" + + "
- message 알림 메시지

"; + } + + @Override + public MessageSendEvent createEvent(Object source, MessageRecipient recipient, Map params) { + Map eventParams = new HashMap<>(); + eventParams.put("message", (String) params.get("message")); + return new MessageSendEvent(source, MessageCode.INFLOW_TOKEN_FAILED, recipient, eventParams); + } +} diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java index b932514..08a0129 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java @@ -11,70 +11,42 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import org.springframework.stereotype.Service; + +import com.eactive.apim.portal.portalproperty.service.PortalPropertyService; import com.eactive.apim.portal.template.entity.MessageRequest; import com.eactive.eai.common.util.SystemUtil; +import com.eactive.eai.rms.data.entity.man.monitoringProperty.service.MonitoringPropertyService; import com.eactive.eai.rms.ext.djb.ums.vo.EmailDataVO; import com.eactive.eai.rms.ext.djb.ums.vo.SmsDataVO; import com.eactive.eai.rms.ext.djb.ums.vo.StdHeadVO; import com.eactive.eai.rms.ext.djb.ums.vo.SwingCommonVO; import com.eactive.eai.rms.ext.djb.ums.vo.SwingDataVO; import com.eactive.eai.rms.ext.djb.ums.vo.SwingReceiverDataVO; -import com.eactive.ext.kjb.common.KjbProperty; -import com.eactive.ext.kjb.common.KjbPropertyHolder; import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; @Slf4j +@Service public class UmsService { - //public final static int[] ALLOW_CHANNELS = { MessageCode.Channels.SWING.getValue() }; - + private static final Gson gson = new Gson(); - - private static volatile UmsService instance; - + private static final String SYS_DVCD = "OPA"; - - private UmsService() { - // 싱글톤 + private final MonitoringPropertyService propertyService; + + public UmsService(MonitoringPropertyService propertyService) { + this.propertyService = propertyService; } - public static UmsService getInstance() { - if (instance == null) { - synchronized (UmsService.class) { - if (instance == null) { - instance = new UmsService(); - } - } - } - return instance; - } - - private KjbProperty getProperty() { - return KjbPropertyHolder.get(); - } - -// public static boolean isAllowChannel(MessageRequest message) { -// for (int channel : ALLOW_CHANNELS) { -// if ((message.getMessageCode().getChannels() & channel) == channel) { -// return true; -// } -// } -// return false; -// } - - public boolean send(MessageRequest messageRequest) throws Exception { if (messageRequest == null) { throw new IllegalArgumentException("messageRequest is null"); } -// if (MessageCode.Channels.SWING.getValue() != (messageRequest.getMessageCode().getChannels() & MessageCode.Channels.SWING.getValue())) { -// log.error("지원하지 않는 발송 채널 - {}", messageRequest.getMessageCode().toString()); -// throw new IllegalArgumentException("지원하지 않는 발송 채널 - " + messageRequest.getMessageCode().toString()); -// } - this.httpConnection(messageRequest); return true; @@ -84,9 +56,11 @@ public class UmsService { private void httpConnection(MessageRequest messageRequest) throws Exception { HttpURLConnection conn = null; BufferedReader br = null; - + log.debug("<<>>:" + messageRequest.toString()); try { - URL url = new URL(this.getHostUrl(messageRequest)); + String host = propertyService.getPropertyValue("Monitoring", "djb.ums."+messageRequest.getMessageType().toLowerCase()+".url", ""); + + URL url = new URL(host); int timeoutValue = 5 * 1000; // 타임아웃 설정을 위한 값 (단위: ms) // Charset charset = Charset.forName("UTF-8"); Charset charset = Charset.forName("MS949"); @@ -144,23 +118,8 @@ public class UmsService { } - private String getHostUrl(MessageRequest messageRequest) { - KjbProperty prop = getProperty(); - String hostUrl = ""; - if ("SWING".equals(messageRequest.getMessageType()) ) { - hostUrl = prop.getUmsSwingUrl(); - } else if ("SMS".equals(messageRequest.getMessageType()) || "KAKAO".equals(messageRequest.getMessageType())) { - hostUrl = prop.getUmsSmsUrl(); - } else if ("EMAIL".equals(messageRequest.getMessageType())) { - hostUrl = prop.getUmsEmailUrl(); - } - return hostUrl; - } private String makeBodyData(MessageRequest messageRequest) { - - KjbProperty prop = getProperty(); - // 리턴값 String rtnVal = ""; @@ -175,9 +134,9 @@ public class UmsService { stdHeadVO.setStnd_mesg_ver("R10"); stdHeadVO.setOrtr_guid(jsonData[2]); stdHeadVO.setSect_ecrpt_yn("N"); - stdHeadVO.setFrst_trnm_ipad(prop.getUmsWasIpAddress()); - stdHeadVO.setFrst_trnm_ipv4_addr(prop.getUmsWasIpAddress()); - stdHeadVO.setFrst_trnm_mac(prop.getUmsWasMacAddress()); + stdHeadVO.setFrst_trnm_ipad(propertyService.getPropertyValue("Monitoring", "djb.ums.was_ip_address", "")); + stdHeadVO.setFrst_trnm_ipv4_addr(propertyService.getPropertyValue("Monitoring", "djb.ums.was_ip_address", "")); + stdHeadVO.setFrst_trnm_mac(propertyService.getPropertyValue("Monitoring", "djb.ums.was_mac_address", "")); stdHeadVO.setFrst_mesg_dman_dt(jsonData[0]); stdHeadVO.setFrst_mesg_dman_time(jsonData[1]); stdHeadVO.setFrst_trnm_sys_dvcd(SYS_DVCD); @@ -186,18 +145,17 @@ public class UmsService { stdHeadVO.setSys_env_dvcd(SystemUtil.getSysOperEvirnDstcd()); // D:개발 T:테스트 P:운영 stdHeadVO.setTx_tycd("O"); // O:온라인 B:배치 stdHeadVO.setSynz_dvcd("S"); // S:동기 A:비동기 - stdHeadVO.setChnl_tycd(""); // 채널유형코드 TODO: 값 채울것!! + stdHeadVO.setChnl_tycd(""); // 채널유형코드 stdHeadVO.setHmab_dvcd("1"); // 내외구분코드 1:내부 2:외부(타발) + stdHeadVO.setIf_id(messageRequest.getEaiInterfaceId()); // 인터페이스ID + stdHeadVO.setTx_id(messageRequest.getServiceId()); // 거래ID - if ("SWING".equals(messageRequest.getMessageType()) ) { - // 표준 헤더 - stdHeadVO.setTx_id(prop.getUmsSwingTxId()); // 거래ID - stdHeadVO.setIf_id(prop.getUmsSwingIfId()); // 인터페이스ID + if ("MESSENGER".equals(messageRequest.getMessageType()) ) { // 스윙챗 알림 공용 SwingCommonVO swiComVO = new SwingCommonVO(); - swiComVO.setClientld(prop.getUmsSwingClientId()); - swiComVO.setClientSecret(prop.getUmsSwingClientSecret()); + swiComVO.setClientld(propertyService.getPropertyValue("Monitoring", "djb.ums.messenger.client_id", "")); + swiComVO.setClientSecret(propertyService.getPropertyValue("Monitoring", "djb.ums.messenger.client_secret", "")); swiComVO.setCompanyCode("CB"); swiComVO.setRequestUniqueKey(this.genrateRandomStringNumber26()); @@ -225,11 +183,9 @@ public class UmsService { + " \"common\":\r\n" + common + ",\r\n" + " \"data\":" + data + " }\r\n" + " }\r\n" + " ]\r\n" + "}"; - } else if ("SMS".equals(messageRequest.getMessageType()) + } + else if ("SMS".equals(messageRequest.getMessageType()) || "KAKAO".equals(messageRequest.getMessageType())) { - // 표준 헤더 - stdHeadVO.setTx_id(prop.getUmsSmsTxId()); // 거래ID - stdHeadVO.setIf_id(prop.getUmsSmsIfId()); // 인터페이스ID // Sms 데이터 SmsDataVO dataVO = new SmsDataVO(); @@ -240,8 +196,8 @@ public class UmsService { dataVO.setMsg_ctnt(messageRequest.getMessage()); dataVO.setRecvr_no(messageRequest.getPhone()); dataVO.setSndn_no("15880079"); //발신번호 - dataVO.setSnd_empno("999999"); //요청자 - dataVO.setSnd_emp_dprm_cd("157"); //요청부서코드 + dataVO.setSnd_empno(""); //요청자 + dataVO.setSnd_emp_dprm_cd(""); //요청부서코드 if ("SMS".equals(messageRequest.getMessageType())) { dataVO.setLtrs_snd_tycd("1"); // 1:SMS 2:LMS/MMS dataVO.setMsg_snd_tycd("0000"); // 알림톡 메세지 종류 0000:SMS, 1000:LMS, 1008:알림톡, .... @@ -272,10 +228,8 @@ public class UmsService { + " \"ums_if_data\":" + data + " }\r\n" + " }\r\n" + " ]\r\n" + "}"; - } else if ("EMAIL".equals(messageRequest.getMessageType())) { - // 표준 헤더 - stdHeadVO.setTx_id(prop.getUmsEmailTxId()); // 거래ID - stdHeadVO.setIf_id(prop.getUmsEmailIfId()); // 인터페이스ID + } + else if ("EMAIL".equals(messageRequest.getMessageType())) { // 이메일 데이터 EmailDataVO dataVO = new EmailDataVO(); diff --git a/src/main/java/com/eactive/eai/rms/onl/common/service/ums/UmsDispatchService.java b/src/main/java/com/eactive/eai/rms/onl/common/service/ums/UmsDispatchService.java index 10a3728..02bc0c0 100644 --- a/src/main/java/com/eactive/eai/rms/onl/common/service/ums/UmsDispatchService.java +++ b/src/main/java/com/eactive/eai/rms/onl/common/service/ums/UmsDispatchService.java @@ -19,6 +19,8 @@ import org.springframework.transaction.support.TransactionTemplate; import com.eactive.apim.portal.template.entity.MessageRequest; import com.eactive.apim.portal.template.repository.MessageRequestRepository; +import com.eactive.eai.rms.common.datasource.DataSourceContextHolder; +import com.eactive.eai.rms.common.datasource.DataSourceTypeManager; import com.eactive.eai.rms.ext.djb.ums.service.UmsService; import lombok.extern.slf4j.Slf4j; @@ -47,9 +49,11 @@ public class UmsDispatchService { @Autowired public UmsDispatchService( @Qualifier("transactionManagerForEMS") PlatformTransactionManager transactionManager, - MessageRequestRepository messageRequestRepository + MessageRequestRepository messageRequestRepository, + UmsService umsService ) { this.messageRequestRepository = messageRequestRepository; + this.umsService = umsService; this.executorService = new ThreadPoolExecutor( CORE_POOL_SIZE, @@ -60,7 +64,6 @@ public class UmsDispatchService { new ThreadPoolExecutor.CallerRunsPolicy() ); this.transactionTemplate = new TransactionTemplate(transactionManager); - this.umsService = UmsService.getInstance(); log.debug("UmsDispatchService initialized with thread pool - core: {}, max: {}, queue: {}", CORE_POOL_SIZE, MAX_POOL_SIZE, QUEUE_CAPACITY); } @@ -156,5 +159,6 @@ public class UmsDispatchService { message.setRequestStatus(status); message.setSentDate(LocalDateTime.now()); entityManager.merge(message); + entityManager.flush(); } } \ No newline at end of file From fafe7e45cb35b7475cdc54f6b390b6c4845777d5 Mon Sep 17 00:00:00 2001 From: eastargh Date: Tue, 16 Jun 2026 13:19:10 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=EC=84=9C=EB=B2=84=EB=AA=85=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/jsp/common/screen/emergency.jsp | 4 ++-- WebContent/jsp/common/screen/top_04.jsp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/WebContent/jsp/common/screen/emergency.jsp b/WebContent/jsp/common/screen/emergency.jsp index b0d1252..b98632b 100644 --- a/WebContent/jsp/common/screen/emergency.jsp +++ b/WebContent/jsp/common/screen/emergency.jsp @@ -353,10 +353,10 @@ -