From f6022809767553902133bb897b341211bf603e0b Mon Sep 17 00:00:00 2001 From: daekuk Date: Fri, 9 Jan 2026 11:19:29 +0900 Subject: [PATCH 01/15] =?UTF-8?q?XSS=20=ED=95=84=ED=84=B0=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B8=ED=95=9C=20()=20=ED=91=9C=EA=B8=B0=EC=98=A4=EB=A5=98?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/transform2/transform2ManDetail.jsp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/WebContent/jsp/onl/admin/rule/transform2/transform2ManDetail.jsp b/WebContent/jsp/onl/admin/rule/transform2/transform2ManDetail.jsp index ed96fd4..d37ab64 100644 --- a/WebContent/jsp/onl/admin/rule/transform2/transform2ManDetail.jsp +++ b/WebContent/jsp/onl/admin/rule/transform2/transform2ManDetail.jsp @@ -705,11 +705,22 @@ $("input[name=eaiSvcName]").val('${param.eaiSvcName }'); var rawDesc = '${param.eaiSvcDesc}'; + + // XSS filter 값 복구 + function decodeHTMLEntities(text) { + if (!text) return ""; + var textArea = document.createElement('textarea'); + textArea.innerHTML = text; + return textArea.value; + } + + var cleanDesc = decodeURIComponent(rawDesc); + cleanDesc = decodeHTMLEntities(cleanDesc); - if (rawDesc && rawDesc !== "") { - $("input[name=eaiSvcDesc]").val(decodeURIComponent(rawDesc)); + if (cleanDesc) { + $("input[name=eaiSvcDesc]").val(cleanDesc); } else { - $("input[name=eaiSvcDesc]").val(""); + $("input[name=eaiSvcDesc]").val(""); } //$("input[name=cnvsnDesc]").val('${param.cnvsnDesc }'); From aa8f5083e0988a27d94b1c0e19126fc96ead6e42 Mon Sep 17 00:00:00 2001 From: daekuk Date: Fri, 9 Jan 2026 11:34:05 +0900 Subject: [PATCH 02/15] =?UTF-8?q?-=20searchGuid=20=EB=A5=BC=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EC=A7=80=20=EC=95=8A=EA=B3=A0=20keymgtmsgctn?= =?UTF-8?q?t=20=EB=A5=BC=20=EC=82=AC=EC=9A=A9,=20=EA=B2=80=EC=83=89=20?= =?UTF-8?q?=EC=8B=9C=20guidEvent()=20=ED=95=98=EC=A7=80=EC=95=8A=EA=B2=8C?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/jsp/onl/transaction/tracking/trackingMan.jsp | 1 - 1 file changed, 1 deletion(-) diff --git a/WebContent/jsp/onl/transaction/tracking/trackingMan.jsp b/WebContent/jsp/onl/transaction/tracking/trackingMan.jsp index 0a49b40..01e9965 100644 --- a/WebContent/jsp/onl/transaction/tracking/trackingMan.jsp +++ b/WebContent/jsp/onl/transaction/tracking/trackingMan.jsp @@ -482,7 +482,6 @@ $("input[name^=search]").keydown(function (key) { if (key.keyCode == 13) { - guidEvent(); $("#btn_search").click(); } }); From b5034f7e03ae3ac9a4af8bcc3aae6f4b0ae4733e Mon Sep 17 00:00:00 2001 From: cho Date: Fri, 9 Jan 2026 14:58:13 +0900 Subject: [PATCH 03/15] =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../outboundFixedCredentialMan.jsp | 130 +++++++++ .../outboundFixedCredentialManDetail.jsp | 252 ++++++++++++++++++ .../OutboundFixedCredentialController.java | 106 ++++++++ 3 files changed, 488 insertions(+) create mode 100644 WebContent/jsp/onl/admin/authoutbound/outboundFixedCredentialMan.jsp create mode 100644 WebContent/jsp/onl/admin/authoutbound/outboundFixedCredentialManDetail.jsp create mode 100644 src/main/java/com/eactive/eai/rms/onl/manage/authoutbound/OutboundFixedCredentialController.java diff --git a/WebContent/jsp/onl/admin/authoutbound/outboundFixedCredentialMan.jsp b/WebContent/jsp/onl/admin/authoutbound/outboundFixedCredentialMan.jsp new file mode 100644 index 0000000..30c5adf --- /dev/null +++ b/WebContent/jsp/onl/admin/authoutbound/outboundFixedCredentialMan.jsp @@ -0,0 +1,130 @@ +<%@ page language="java" contentType="text/html; charset=utf-8"%> +<%@ page import="java.io.*"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> +<%@ include file="/jsp/common/include/localemessage.jsp" %> +<% + response.setHeader("Pragma", "No-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Expires", "0"); +%> + + + + + + + + + +
+
+ +
+
+
+ + +
+
${rmsMenuName}
+ + + + + + + + +
<%= localeMessage.getString("adapter.adptrBzwkGroupName") %>
+
+
+
+
+ + + diff --git a/WebContent/jsp/onl/admin/authoutbound/outboundFixedCredentialManDetail.jsp b/WebContent/jsp/onl/admin/authoutbound/outboundFixedCredentialManDetail.jsp new file mode 100644 index 0000000..4d8689d --- /dev/null +++ b/WebContent/jsp/onl/admin/authoutbound/outboundFixedCredentialManDetail.jsp @@ -0,0 +1,252 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" %> +<%@ page import="java.io.*" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> +<%@ include file="/jsp/common/include/localemessage.jsp" %> +<% + response.setHeader("Pragma", "No-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Expires", "0"); +%> + + + + + + + + + " rel="stylesheet" /> + + " rel="stylesheet"/> + " rel="stylesheet"/> + + " rel="stylesheet" /> + + " rel="stylesheet" /> + + + + " rel="stylesheet"/> + + + + +
+
+ +
+
+
+ + + +
+
${rmsMenuName}
+ +
+
+
+ BASIC OPTIONS +
+
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ --> +
+
+ +
+ + + visibility + +
+
+
+
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/authoutbound/OutboundFixedCredentialController.java b/src/main/java/com/eactive/eai/rms/onl/manage/authoutbound/OutboundFixedCredentialController.java new file mode 100644 index 0000000..3a9e986 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/onl/manage/authoutbound/OutboundFixedCredentialController.java @@ -0,0 +1,106 @@ +package com.eactive.eai.rms.onl.manage.authoutbound; + +import com.eactive.eai.agent.command.CommonCommand; +import com.eactive.eai.rms.common.base.OnlBaseAnnotationController; +import com.eactive.eai.rms.common.login.SessionManager; +import com.eactive.eai.rms.common.vo.GridResponse; +import com.eactive.eai.rms.onl.manage.comm.property.PropertyGroupUI; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; +import java.util.stream.Collectors; + +@Controller +public class OutboundFixedCredentialController extends OnlBaseAnnotationController { + enum CommandType { RELOAD, DELETE }; + + public static final Log logger = LogFactory.getLog(OutboundFixedCredentialController.class); + + @Autowired + OutboundOAuthCredentialManService service ; + + @GetMapping(value = "/onl/admin/authoutbound/outboundFixedCredentialMan.view") + public void view() { + } + + @GetMapping(value = "/onl/admin/authoutbound/outboundFixedCredentialMan.view", params = "cmd=DETAIL") + public String viewDetail() { + return "/onl/admin/authoutbound/outboundFixedCredentialManDetail"; + } + + @PostMapping(value= "/onl/admin/authoutbound/outboundFixedCredentialMan.json", params = "cmd=LIST") + public ResponseEntity>selectList(String searchAdapterGroupName, Pageable pageable) { + Page page = service.selectList(pageable, searchAdapterGroupName); + Page filteredPage = + new PageImpl<>( + page.filter(i -> "fixed_token".equals(i.getGrantType())) + .stream() + .collect(Collectors.toList()), + pageable, + page.getTotalElements() // 또는 filtered.size() + ); + return ResponseEntity.ok(new GridResponse<>(filteredPage)); + } + + @PostMapping(value = "/onl/admin/authoutbound/outboundFixedCredentialMan.json", params = "cmd=DETAIL") + public ResponseEntity selectDetail(String adapterGroupName) throws Exception { + OutboundOAuthCredentialUI outboundOAuthCredentialUI = service.selectDetail(adapterGroupName); + return ResponseEntity.ok(outboundOAuthCredentialUI); + } + + @PostMapping(value= "/onl/admin/authoutbound/outboundFixedCredentialMan.json",params = "cmd=LIST_DETAIL_COMBO") + public ResponseEntity> selectDetailCombo() throws Exception { + Map map = service.selectDetailCombo(); + return ResponseEntity.ok(map); + } + + @PostMapping(value = "/onl/admin/authoutbound/outboundFixedCredentialMan.json", params = "cmd=INSERT") + public ResponseEntity insert(OutboundOAuthCredentialUI outboundOAuthCredentialUI) throws Exception { + service.insert(outboundOAuthCredentialUI); + commandOAuthInfo(CommandType.RELOAD, outboundOAuthCredentialUI.getAdapterGroupName()); + return ResponseEntity.ok().build(); + } + + @PostMapping(value = "/onl/admin/authoutbound/outboundFixedCredentialMan.json", params = "cmd=UPDATE") + public ResponseEntity update(OutboundOAuthCredentialUI outboundOAuthCredentialUI) throws Exception { + service.update(outboundOAuthCredentialUI); + commandOAuthInfo(CommandType.RELOAD, outboundOAuthCredentialUI.getAdapterGroupName()); + return ResponseEntity.ok().build(); + } + + @PostMapping(value = "/onl/admin/authoutbound/outboundFixedCredentialMan.json", params = "cmd=DELETE") + public ResponseEntity delete(String adapterGroupName) throws Exception { + service.delete(adapterGroupName); + commandOAuthInfo(CommandType.DELETE, adapterGroupName); + return ResponseEntity.ok().build(); + } + + private boolean commandOAuthInfo(CommandType commandType, String adapterGroupName) { + String commandClass ; + + if(CommandType.DELETE == commandType){ + commandClass = "com.eactive.eai.agent.authoutbound.RemoveOutboundOAuthCredentialCommand"; + }else{ + commandClass = "com.eactive.eai.agent.authoutbound.ReloadOutboundOAuthCredentialCommand"; + } + logger.warn("Command:" + commandType + ", Target: " + adapterGroupName); + CommonCommand command = new CommonCommand(commandClass, adapterGroupName); + try { + agentUtilService.broadcast(command); + } catch (Exception e) { + logger.warn("Command error", e); + return false; + } + return true; + } +} From bef46c674264f44010428862d21fa4cc6d6df5ba Mon Sep 17 00:00:00 2001 From: daekuk Date: Sat, 10 Jan 2026 14:56:23 +0900 Subject: [PATCH 04/15] =?UTF-8?q?-=20FLAT=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=EB=A5=BC=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EA=B8=B8?= =?UTF-8?q?=EC=9D=B4=20=EA=B8=B0=EC=A4=80=EC=9C=BC=EB=A1=9C=20JSON/XML=20?= =?UTF-8?q?=ED=8F=AC=EB=A7=B7=EC=9C=BC=EB=A1=9C=20=EB=B3=80=ED=99=98?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EB=B3=B4=EC=97=AC=EC=A3=BC=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tracking/trackingManDetail.jsp | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp b/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp index e954f51..0951b54 100644 --- a/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp +++ b/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp @@ -28,6 +28,8 @@ var eaiSvcSerno = urlParams.get("eaiSvcSerno"); var logPrcssSerno = urlParams.get("logPrcssSerno"); let fullMessageData; + let layoutInfo = []; + let bzwkdatatntInfo; var eaiSvcCode = ""; @@ -198,6 +200,8 @@ const isInboundWithoutNet = !json.GSTATSYSADPTRBZWKGROUPNAME.includes('NET'); const isOutboundWithoutNet = !json.PSVSYSADPTRBZWKGROUPNAME.includes('NET'); fullMessageData = json.FULLMESSAGEDATA; + layoutInfo = json.standardHeader; + bzwkdatatntInfo = json.BZWKDATATNT; if((isInboundPart && isInboundWithoutNet) || (isOutboundPart && isOutboundWithoutNet)){ selectHttpLog(url, prcsDate, json.EAISVCSERNO.trim(), logPrcssSerno); @@ -353,6 +357,10 @@ $('#btn_pretty_body').click(function(){ const syntax = $('#selectBodySyntax').val(); + + // FLAT view를 위해 생성된 데이터 -> 기존 업무데이터 + bodyCodeEditor.setValue(bzwkdatatntInfo); + const value = bodyCodeEditor.getValue(); let prettyValue = value; if(syntax === 'JSN'){ @@ -392,6 +400,7 @@ $('#btn_pretty_body').css('display', 'block'); bodyCodeEditor.setOption("mode", "application/json"); }else if(syntax === 'XML'){ + $('#btn_pretty_body').css('display', 'block'); $('#btn_pretty_body').css('display', 'block'); bodyCodeEditor.setOption("mode", "application/xml"); }else{ @@ -789,6 +798,78 @@ $(document).ready(function() { alert('전체 전문 복사되었습니다.') }); + // FLAT 데이터를 전문정보로 잘라서 JSON / XML VIEW 로 볼 수 있는 버튼 + $('#btn_convert_view').click(function() { + var type = $('select[id=selectBodySyntax]').val(); + + if (!fullMessageData || !layoutInfo) { + alert("데이터가 없습니다."); + return; + } + + parserCommon(fullMessageData, layoutInfo, type); + }); + + function parserCommon(flatData, layoutInfo, type) { + var cursor = 0; + var parsedList = []; + + layoutInfo.forEach(function(field) { + var fieldLen = field.length; + + if (fieldLen > 0) { + var rawValue = flatData.substring(cursor, cursor + fieldLen); + + parsedList.push({ + engName: field.name, + korName: field.desc || field.name, + value: rawValue // trim 금지. + }); + + cursor += fieldLen; + } + }); + + // CodeMirror 에디터에 값 세팅 + var finalString = ""; + + if (type == "JSN") { + + var jsonResult = {}; + + parsedList.forEach(function(item) { + jsonResult[item.engName] = { + "한글명": item.korName, + "값": item.value + }; + }); + + finalString = JSON.stringify(jsonResult, null, 4); + + } else if (type == "XML") { + + var xmlResult = "\n"; + + parsedList.forEach(function(item) { + var cleanTagName = item.korName.replace(/[^a-zA-Z0-9가-힣]/g, ""); + if (!cleanTagName) cleanTagName = item.engName; + + xmlResult += "\t<" + cleanTagName + ">" + item.value + "\n"; + }); + xmlResult += ""; + + finalString = xmlResult; + + } else { + finalString = flatData; + } + + bodyCodeEditor.setValue(finalString); + $('#selectBodySyntax').val(type).trigger('change'); + +// console.log("변환 완료:", parsedList); + } + }); @@ -905,6 +986,9 @@ html,hbody { + + + + API 명 + + <%=localeMessage.getString("tracking.logprcssserno")%>
@@ -657,8 +658,11 @@ --> + <%=localeMessage.getString("tracking.eaisvcserno_tmp")%> + + <%=localeMessage.getString("tracking.keymgtmsgctnt")%> - + <%-- <%=localeMessage.getString("tracking.orgGUID")%> --%> diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java index aad5b34..5c11fce 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java @@ -8,12 +8,6 @@ import java.util.stream.Collectors; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; -import org.apache.commons.lang3.StringUtils; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Repository; - import com.eactive.eai.data.entity.onl.logger.EAILog; import com.eactive.eai.data.entity.onl.logger.EAILogId; import com.eactive.eai.data.entity.onl.logger.QEAILog; @@ -26,6 +20,12 @@ import com.querydsl.core.types.dsl.EntityPathBase; import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Repository; + @Repository public class EAILogRepositoryImpl implements EAILogRepository { @@ -43,26 +43,43 @@ public class EAILogRepositoryImpl implements EAILogRepository { EntityPathBase entityPathBase = new EntityPathBase<>(clazz, qeaiLog.getMetadata().getName()); QEAIMessageEntity qeaiMessageEntity = QEAIMessageEntity.eAIMessageEntity; + + // Count Query + JPAQuery countQuery = new JPAQueryFactory(em) + .from(entityPathBase) + .leftJoin(qeaiMessageEntity) + .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eaisvcname)); + + appendConditions(eaiLogSearch, qeaiLog, entityPathBase, qeaiMessageEntity, countQuery); - JPAQuery query = new JPAQueryFactory(em).from(entityPathBase); - appendConditions(eaiLogSearch, qeaiLog, entityPathBase, query); - - long totalCount = query.select(qeaiLog.id.msgdpstyms.count()).fetchOne(); + long totalCount = countQuery.select(qeaiLog.id.msgdpstyms.count()).fetchOne(); if (totalCount == 0) { return new PageImpl<>(new ArrayList<>(), pageable, 0); } + + // List Query 분리 + JPAQuery listQuery = new JPAQueryFactory(em) + .from(entityPathBase) + .leftJoin(qeaiMessageEntity) + .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eaisvcname)); - List list = query + List list = listQuery // .select(Projections.constructor(EAILogDto.class, qeaiLog, qeaiMessageEntity.eaisvcdesc)) .select(Projections.constructor(EAILogDto.class, - qeaiLog.id, qeaiLog.trackasiskey1ctnt, qeaiLog.trackasiskey2ctnt, qeaiLog.keymgtmsgctnt, - qeaiLog.eaisvcname, qeaiLog.extbizcd, qeaiLog.refkey, qeaiLog.clientname, - qeaiLog.orgname, qeaiLog.msgprcssyms, qeaiLog.companycode, qeaiLog.eaierrctnt, + qeaiLog.id, + qeaiLog.trackasiskey1ctnt, + qeaiLog.trackasiskey2ctnt, + qeaiLog.keymgtmsgctnt, + qeaiLog.eaisvcname, + qeaiLog.extbizcd, + qeaiLog.refkey, + qeaiLog.clientname, + qeaiLog.orgname, + qeaiLog.msgprcssyms, + qeaiLog.companycode, + qeaiLog.eaierrctnt, qeaiMessageEntity.eaisvcdesc)) - .from(entityPathBase) - .leftJoin(qeaiMessageEntity) - .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eaisvcname)) .orderBy(qeaiLog.id.msgdpstyms.desc(), qeaiLog.id.eaisvcserno.asc(), qeaiLog.id.logprcssserno.asc()) .limit(1000) .fetch(); @@ -73,9 +90,15 @@ public class EAILogRepositoryImpl implements EAILogRepository { public Map countDetailedTransactions(Class clazz, EAILogSearch eaiLogSearch) { QEAILog qeaiLog = QEAILog.eAILog; EntityPathBase entityPathBase = new EntityPathBase<>(clazz, qeaiLog.getMetadata().getName()); + + QEAIMessageEntity qeaiMessageEntity = QEAIMessageEntity.eAIMessageEntity; - JPAQuery query = new JPAQueryFactory(em).from(entityPathBase); - appendConditions(eaiLogSearch, qeaiLog, entityPathBase, query); + JPAQuery query = new JPAQueryFactory(em) + .from(entityPathBase) + .leftJoin(qeaiMessageEntity) + .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eAIMessageEntity.eaisvcname)); + + appendConditions(eaiLogSearch, qeaiLog, entityPathBase, qeaiMessageEntity, query); List results = query.select( qeaiLog.id.logprcssserno, // 로그 처리 상태 @@ -91,8 +114,7 @@ public class EAILogRepositoryImpl implements EAILogRepository { return reult; } - private void appendConditions(EAILogSearch eaiLogSearch, QEAILog qeaiLog, EntityPathBase entityPathBase, JPAQuery query) { - + private void appendConditions(EAILogSearch eaiLogSearch, QEAILog qeaiLog, EntityPathBase entityPathBase, QEAIMessageEntity qeaiMessageEntity, JPAQuery query) { if (StringUtils.equalsIgnoreCase(eaiLogSearch.getAuthChk(), "Y")) { QUserBusiness qUserBusiness = QUserBusiness.userBusiness; JPAQuery subQuery = new JPAQueryFactory(em) @@ -127,6 +149,10 @@ public class EAILogRepositoryImpl implements EAILogRepository { if (StringUtils.isNotBlank(eaiLogSearch.getSearchEaiSvcName())) { query.where(qeaiLog.eaisvcname.containsIgnoreCase(eaiLogSearch.getSearchEaiSvcName())); } + + if (StringUtils.isNotBlank(eaiLogSearch.getSearchEaiSvcDesc())) { + query.where(qeaiMessageEntity.eaisvcdesc.containsIgnoreCase(eaiLogSearch.getSearchEaiSvcDesc())); + } if (StringUtils.isNotBlank(eaiLogSearch.getSearchKeyMgtMsgCtnt())) { query.where(qeaiLog.keymgtmsgctnt.contains(eaiLogSearch.getSearchKeyMgtMsgCtnt())); diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java index 4caf25a..e7fce94 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java @@ -15,6 +15,7 @@ public class EAILogSearch { private String searchEaiBzwkDstcd; private String searchEaiSvcSerno; private String searchEaiSvcName; + private String searchEaiSvcDesc; private String searchKeyMgtMsgCtnt; private String searchTrackAsisKey1Ctnt; private String searchTrackAsisKey2Ctnt; From a8a89217e707d9ffbd2634c492fc38bf063fa740 Mon Sep 17 00:00:00 2001 From: daekuk Date: Sat, 10 Jan 2026 15:23:31 +0900 Subject: [PATCH 06/15] =?UTF-8?q?-=20FLAT=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=EB=A5=BC=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EA=B8=B8?= =?UTF-8?q?=EC=9D=B4=20=EA=B8=B0=EC=A4=80=EC=9C=BC=EB=A1=9C=20JSON/XML=20?= =?UTF-8?q?=ED=8F=AC=EB=A7=B7=EC=9C=BC=EB=A1=9C=20=EB=B3=80=ED=99=98?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EB=B3=B4=EC=97=AC=EC=A3=BC=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tracking/trackingManDetail.jsp | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp b/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp index e954f51..0951b54 100644 --- a/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp +++ b/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp @@ -28,6 +28,8 @@ var eaiSvcSerno = urlParams.get("eaiSvcSerno"); var logPrcssSerno = urlParams.get("logPrcssSerno"); let fullMessageData; + let layoutInfo = []; + let bzwkdatatntInfo; var eaiSvcCode = ""; @@ -198,6 +200,8 @@ const isInboundWithoutNet = !json.GSTATSYSADPTRBZWKGROUPNAME.includes('NET'); const isOutboundWithoutNet = !json.PSVSYSADPTRBZWKGROUPNAME.includes('NET'); fullMessageData = json.FULLMESSAGEDATA; + layoutInfo = json.standardHeader; + bzwkdatatntInfo = json.BZWKDATATNT; if((isInboundPart && isInboundWithoutNet) || (isOutboundPart && isOutboundWithoutNet)){ selectHttpLog(url, prcsDate, json.EAISVCSERNO.trim(), logPrcssSerno); @@ -353,6 +357,10 @@ $('#btn_pretty_body').click(function(){ const syntax = $('#selectBodySyntax').val(); + + // FLAT view를 위해 생성된 데이터 -> 기존 업무데이터 + bodyCodeEditor.setValue(bzwkdatatntInfo); + const value = bodyCodeEditor.getValue(); let prettyValue = value; if(syntax === 'JSN'){ @@ -392,6 +400,7 @@ $('#btn_pretty_body').css('display', 'block'); bodyCodeEditor.setOption("mode", "application/json"); }else if(syntax === 'XML'){ + $('#btn_pretty_body').css('display', 'block'); $('#btn_pretty_body').css('display', 'block'); bodyCodeEditor.setOption("mode", "application/xml"); }else{ @@ -789,6 +798,78 @@ $(document).ready(function() { alert('전체 전문 복사되었습니다.') }); + // FLAT 데이터를 전문정보로 잘라서 JSON / XML VIEW 로 볼 수 있는 버튼 + $('#btn_convert_view').click(function() { + var type = $('select[id=selectBodySyntax]').val(); + + if (!fullMessageData || !layoutInfo) { + alert("데이터가 없습니다."); + return; + } + + parserCommon(fullMessageData, layoutInfo, type); + }); + + function parserCommon(flatData, layoutInfo, type) { + var cursor = 0; + var parsedList = []; + + layoutInfo.forEach(function(field) { + var fieldLen = field.length; + + if (fieldLen > 0) { + var rawValue = flatData.substring(cursor, cursor + fieldLen); + + parsedList.push({ + engName: field.name, + korName: field.desc || field.name, + value: rawValue // trim 금지. + }); + + cursor += fieldLen; + } + }); + + // CodeMirror 에디터에 값 세팅 + var finalString = ""; + + if (type == "JSN") { + + var jsonResult = {}; + + parsedList.forEach(function(item) { + jsonResult[item.engName] = { + "한글명": item.korName, + "값": item.value + }; + }); + + finalString = JSON.stringify(jsonResult, null, 4); + + } else if (type == "XML") { + + var xmlResult = "\n"; + + parsedList.forEach(function(item) { + var cleanTagName = item.korName.replace(/[^a-zA-Z0-9가-힣]/g, ""); + if (!cleanTagName) cleanTagName = item.engName; + + xmlResult += "\t<" + cleanTagName + ">" + item.value + "\n"; + }); + xmlResult += ""; + + finalString = xmlResult; + + } else { + finalString = flatData; + } + + bodyCodeEditor.setValue(finalString); + $('#selectBodySyntax').val(type).trigger('change'); + +// console.log("변환 완료:", parsedList); + } + }); @@ -905,6 +986,9 @@ html,hbody { + + + + API 명 + + <%=localeMessage.getString("tracking.logprcssserno")%>
@@ -657,8 +658,11 @@ --> + <%=localeMessage.getString("tracking.eaisvcserno_tmp")%> + + <%=localeMessage.getString("tracking.keymgtmsgctnt")%> - + <%-- <%=localeMessage.getString("tracking.orgGUID")%> --%> diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java index aad5b34..5c11fce 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java @@ -8,12 +8,6 @@ import java.util.stream.Collectors; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; -import org.apache.commons.lang3.StringUtils; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Repository; - import com.eactive.eai.data.entity.onl.logger.EAILog; import com.eactive.eai.data.entity.onl.logger.EAILogId; import com.eactive.eai.data.entity.onl.logger.QEAILog; @@ -26,6 +20,12 @@ import com.querydsl.core.types.dsl.EntityPathBase; import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Repository; + @Repository public class EAILogRepositoryImpl implements EAILogRepository { @@ -43,26 +43,43 @@ public class EAILogRepositoryImpl implements EAILogRepository { EntityPathBase entityPathBase = new EntityPathBase<>(clazz, qeaiLog.getMetadata().getName()); QEAIMessageEntity qeaiMessageEntity = QEAIMessageEntity.eAIMessageEntity; + + // Count Query + JPAQuery countQuery = new JPAQueryFactory(em) + .from(entityPathBase) + .leftJoin(qeaiMessageEntity) + .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eaisvcname)); + + appendConditions(eaiLogSearch, qeaiLog, entityPathBase, qeaiMessageEntity, countQuery); - JPAQuery query = new JPAQueryFactory(em).from(entityPathBase); - appendConditions(eaiLogSearch, qeaiLog, entityPathBase, query); - - long totalCount = query.select(qeaiLog.id.msgdpstyms.count()).fetchOne(); + long totalCount = countQuery.select(qeaiLog.id.msgdpstyms.count()).fetchOne(); if (totalCount == 0) { return new PageImpl<>(new ArrayList<>(), pageable, 0); } + + // List Query 분리 + JPAQuery listQuery = new JPAQueryFactory(em) + .from(entityPathBase) + .leftJoin(qeaiMessageEntity) + .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eaisvcname)); - List list = query + List list = listQuery // .select(Projections.constructor(EAILogDto.class, qeaiLog, qeaiMessageEntity.eaisvcdesc)) .select(Projections.constructor(EAILogDto.class, - qeaiLog.id, qeaiLog.trackasiskey1ctnt, qeaiLog.trackasiskey2ctnt, qeaiLog.keymgtmsgctnt, - qeaiLog.eaisvcname, qeaiLog.extbizcd, qeaiLog.refkey, qeaiLog.clientname, - qeaiLog.orgname, qeaiLog.msgprcssyms, qeaiLog.companycode, qeaiLog.eaierrctnt, + qeaiLog.id, + qeaiLog.trackasiskey1ctnt, + qeaiLog.trackasiskey2ctnt, + qeaiLog.keymgtmsgctnt, + qeaiLog.eaisvcname, + qeaiLog.extbizcd, + qeaiLog.refkey, + qeaiLog.clientname, + qeaiLog.orgname, + qeaiLog.msgprcssyms, + qeaiLog.companycode, + qeaiLog.eaierrctnt, qeaiMessageEntity.eaisvcdesc)) - .from(entityPathBase) - .leftJoin(qeaiMessageEntity) - .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eaisvcname)) .orderBy(qeaiLog.id.msgdpstyms.desc(), qeaiLog.id.eaisvcserno.asc(), qeaiLog.id.logprcssserno.asc()) .limit(1000) .fetch(); @@ -73,9 +90,15 @@ public class EAILogRepositoryImpl implements EAILogRepository { public Map countDetailedTransactions(Class clazz, EAILogSearch eaiLogSearch) { QEAILog qeaiLog = QEAILog.eAILog; EntityPathBase entityPathBase = new EntityPathBase<>(clazz, qeaiLog.getMetadata().getName()); + + QEAIMessageEntity qeaiMessageEntity = QEAIMessageEntity.eAIMessageEntity; - JPAQuery query = new JPAQueryFactory(em).from(entityPathBase); - appendConditions(eaiLogSearch, qeaiLog, entityPathBase, query); + JPAQuery query = new JPAQueryFactory(em) + .from(entityPathBase) + .leftJoin(qeaiMessageEntity) + .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eAIMessageEntity.eaisvcname)); + + appendConditions(eaiLogSearch, qeaiLog, entityPathBase, qeaiMessageEntity, query); List results = query.select( qeaiLog.id.logprcssserno, // 로그 처리 상태 @@ -91,8 +114,7 @@ public class EAILogRepositoryImpl implements EAILogRepository { return reult; } - private void appendConditions(EAILogSearch eaiLogSearch, QEAILog qeaiLog, EntityPathBase entityPathBase, JPAQuery query) { - + private void appendConditions(EAILogSearch eaiLogSearch, QEAILog qeaiLog, EntityPathBase entityPathBase, QEAIMessageEntity qeaiMessageEntity, JPAQuery query) { if (StringUtils.equalsIgnoreCase(eaiLogSearch.getAuthChk(), "Y")) { QUserBusiness qUserBusiness = QUserBusiness.userBusiness; JPAQuery subQuery = new JPAQueryFactory(em) @@ -127,6 +149,10 @@ public class EAILogRepositoryImpl implements EAILogRepository { if (StringUtils.isNotBlank(eaiLogSearch.getSearchEaiSvcName())) { query.where(qeaiLog.eaisvcname.containsIgnoreCase(eaiLogSearch.getSearchEaiSvcName())); } + + if (StringUtils.isNotBlank(eaiLogSearch.getSearchEaiSvcDesc())) { + query.where(qeaiMessageEntity.eaisvcdesc.containsIgnoreCase(eaiLogSearch.getSearchEaiSvcDesc())); + } if (StringUtils.isNotBlank(eaiLogSearch.getSearchKeyMgtMsgCtnt())) { query.where(qeaiLog.keymgtmsgctnt.contains(eaiLogSearch.getSearchKeyMgtMsgCtnt())); diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java index 4caf25a..e7fce94 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java @@ -15,6 +15,7 @@ public class EAILogSearch { private String searchEaiBzwkDstcd; private String searchEaiSvcSerno; private String searchEaiSvcName; + private String searchEaiSvcDesc; private String searchKeyMgtMsgCtnt; private String searchTrackAsisKey1Ctnt; private String searchTrackAsisKey2Ctnt; From ff318b3ff11e366fc1a904aac589b4194fcbc29a Mon Sep 17 00:00:00 2001 From: daekuk Date: Sat, 10 Jan 2026 15:27:15 +0900 Subject: [PATCH 08/15] =?UTF-8?q?Revert=20"-=20API=20=ED=95=9C=EA=B8=80?= =?UTF-8?q?=EB=AA=85(eaisvcdesc)=20=EA=B2=80=EC=83=89=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit f8af1f24019d289adac8ef1fd86105933473b37f. --- .../onl/transaction/tracking/trackingMan.jsp | 10 +-- .../onl/logger/EAILogRepositoryImpl.java | 68 ++++++------------- .../data/entity/onl/logger/EAILogSearch.java | 1 - 3 files changed, 24 insertions(+), 55 deletions(-) diff --git a/WebContent/jsp/onl/transaction/tracking/trackingMan.jsp b/WebContent/jsp/onl/transaction/tracking/trackingMan.jsp index df76159..01e9965 100644 --- a/WebContent/jsp/onl/transaction/tracking/trackingMan.jsp +++ b/WebContent/jsp/onl/transaction/tracking/trackingMan.jsp @@ -617,9 +617,8 @@ - API 명 - - + <%=localeMessage.getString("tracking.eaisvcserno_tmp")%> + <%=localeMessage.getString("tracking.logprcssserno")%>
@@ -658,11 +657,8 @@ --> - <%=localeMessage.getString("tracking.eaisvcserno_tmp")%> - - <%=localeMessage.getString("tracking.keymgtmsgctnt")%> - + <%-- <%=localeMessage.getString("tracking.orgGUID")%> --%> diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java index 5c11fce..aad5b34 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java @@ -8,6 +8,12 @@ import java.util.stream.Collectors; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Repository; + import com.eactive.eai.data.entity.onl.logger.EAILog; import com.eactive.eai.data.entity.onl.logger.EAILogId; import com.eactive.eai.data.entity.onl.logger.QEAILog; @@ -20,12 +26,6 @@ import com.querydsl.core.types.dsl.EntityPathBase; import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; -import org.apache.commons.lang3.StringUtils; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Repository; - @Repository public class EAILogRepositoryImpl implements EAILogRepository { @@ -43,43 +43,26 @@ public class EAILogRepositoryImpl implements EAILogRepository { EntityPathBase entityPathBase = new EntityPathBase<>(clazz, qeaiLog.getMetadata().getName()); QEAIMessageEntity qeaiMessageEntity = QEAIMessageEntity.eAIMessageEntity; - - // Count Query - JPAQuery countQuery = new JPAQueryFactory(em) - .from(entityPathBase) - .leftJoin(qeaiMessageEntity) - .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eaisvcname)); - - appendConditions(eaiLogSearch, qeaiLog, entityPathBase, qeaiMessageEntity, countQuery); - long totalCount = countQuery.select(qeaiLog.id.msgdpstyms.count()).fetchOne(); + JPAQuery query = new JPAQueryFactory(em).from(entityPathBase); + appendConditions(eaiLogSearch, qeaiLog, entityPathBase, query); + + long totalCount = query.select(qeaiLog.id.msgdpstyms.count()).fetchOne(); if (totalCount == 0) { return new PageImpl<>(new ArrayList<>(), pageable, 0); } - - // List Query 분리 - JPAQuery listQuery = new JPAQueryFactory(em) - .from(entityPathBase) - .leftJoin(qeaiMessageEntity) - .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eaisvcname)); - List list = listQuery + List list = query // .select(Projections.constructor(EAILogDto.class, qeaiLog, qeaiMessageEntity.eaisvcdesc)) .select(Projections.constructor(EAILogDto.class, - qeaiLog.id, - qeaiLog.trackasiskey1ctnt, - qeaiLog.trackasiskey2ctnt, - qeaiLog.keymgtmsgctnt, - qeaiLog.eaisvcname, - qeaiLog.extbizcd, - qeaiLog.refkey, - qeaiLog.clientname, - qeaiLog.orgname, - qeaiLog.msgprcssyms, - qeaiLog.companycode, - qeaiLog.eaierrctnt, + qeaiLog.id, qeaiLog.trackasiskey1ctnt, qeaiLog.trackasiskey2ctnt, qeaiLog.keymgtmsgctnt, + qeaiLog.eaisvcname, qeaiLog.extbizcd, qeaiLog.refkey, qeaiLog.clientname, + qeaiLog.orgname, qeaiLog.msgprcssyms, qeaiLog.companycode, qeaiLog.eaierrctnt, qeaiMessageEntity.eaisvcdesc)) + .from(entityPathBase) + .leftJoin(qeaiMessageEntity) + .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eaisvcname)) .orderBy(qeaiLog.id.msgdpstyms.desc(), qeaiLog.id.eaisvcserno.asc(), qeaiLog.id.logprcssserno.asc()) .limit(1000) .fetch(); @@ -90,15 +73,9 @@ public class EAILogRepositoryImpl implements EAILogRepository { public Map countDetailedTransactions(Class clazz, EAILogSearch eaiLogSearch) { QEAILog qeaiLog = QEAILog.eAILog; EntityPathBase entityPathBase = new EntityPathBase<>(clazz, qeaiLog.getMetadata().getName()); - - QEAIMessageEntity qeaiMessageEntity = QEAIMessageEntity.eAIMessageEntity; - JPAQuery query = new JPAQueryFactory(em) - .from(entityPathBase) - .leftJoin(qeaiMessageEntity) - .on(qeaiLog.eaisvcname.eq(qeaiMessageEntity.eAIMessageEntity.eaisvcname)); - - appendConditions(eaiLogSearch, qeaiLog, entityPathBase, qeaiMessageEntity, query); + JPAQuery query = new JPAQueryFactory(em).from(entityPathBase); + appendConditions(eaiLogSearch, qeaiLog, entityPathBase, query); List results = query.select( qeaiLog.id.logprcssserno, // 로그 처리 상태 @@ -114,7 +91,8 @@ public class EAILogRepositoryImpl implements EAILogRepository { return reult; } - private void appendConditions(EAILogSearch eaiLogSearch, QEAILog qeaiLog, EntityPathBase entityPathBase, QEAIMessageEntity qeaiMessageEntity, JPAQuery query) { + private void appendConditions(EAILogSearch eaiLogSearch, QEAILog qeaiLog, EntityPathBase entityPathBase, JPAQuery query) { + if (StringUtils.equalsIgnoreCase(eaiLogSearch.getAuthChk(), "Y")) { QUserBusiness qUserBusiness = QUserBusiness.userBusiness; JPAQuery subQuery = new JPAQueryFactory(em) @@ -149,10 +127,6 @@ public class EAILogRepositoryImpl implements EAILogRepository { if (StringUtils.isNotBlank(eaiLogSearch.getSearchEaiSvcName())) { query.where(qeaiLog.eaisvcname.containsIgnoreCase(eaiLogSearch.getSearchEaiSvcName())); } - - if (StringUtils.isNotBlank(eaiLogSearch.getSearchEaiSvcDesc())) { - query.where(qeaiMessageEntity.eaisvcdesc.containsIgnoreCase(eaiLogSearch.getSearchEaiSvcDesc())); - } if (StringUtils.isNotBlank(eaiLogSearch.getSearchKeyMgtMsgCtnt())) { query.where(qeaiLog.keymgtmsgctnt.contains(eaiLogSearch.getSearchKeyMgtMsgCtnt())); diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java index e7fce94..4caf25a 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogSearch.java @@ -15,7 +15,6 @@ public class EAILogSearch { private String searchEaiBzwkDstcd; private String searchEaiSvcSerno; private String searchEaiSvcName; - private String searchEaiSvcDesc; private String searchKeyMgtMsgCtnt; private String searchTrackAsisKey1Ctnt; private String searchTrackAsisKey2Ctnt; From da7598d2101c698c7156ea65d6d43248646978b8 Mon Sep 17 00:00:00 2001 From: daekuk Date: Sat, 10 Jan 2026 15:30:49 +0900 Subject: [PATCH 09/15] =?UTF-8?q?Revert=20"-=20FLAT=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EB=A5=BC=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20?= =?UTF-8?q?=EA=B8=B8=EC=9D=B4=20=EA=B8=B0=EC=A4=80=EC=9C=BC=EB=A1=9C=20JSO?= =?UTF-8?q?N/XML=20=ED=8F=AC=EB=A7=B7=EC=9C=BC=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=ED=99=98=ED=95=98=EC=97=AC=20=EB=B3=B4=EC=97=AC=EC=A3=BC?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit bef46c674264f44010428862d21fa4cc6d6df5ba. --- .../tracking/trackingManDetail.jsp | 84 ------------------- 1 file changed, 84 deletions(-) diff --git a/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp b/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp index 0951b54..e954f51 100644 --- a/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp +++ b/WebContent/jsp/onl/transaction/tracking/trackingManDetail.jsp @@ -28,8 +28,6 @@ var eaiSvcSerno = urlParams.get("eaiSvcSerno"); var logPrcssSerno = urlParams.get("logPrcssSerno"); let fullMessageData; - let layoutInfo = []; - let bzwkdatatntInfo; var eaiSvcCode = ""; @@ -200,8 +198,6 @@ const isInboundWithoutNet = !json.GSTATSYSADPTRBZWKGROUPNAME.includes('NET'); const isOutboundWithoutNet = !json.PSVSYSADPTRBZWKGROUPNAME.includes('NET'); fullMessageData = json.FULLMESSAGEDATA; - layoutInfo = json.standardHeader; - bzwkdatatntInfo = json.BZWKDATATNT; if((isInboundPart && isInboundWithoutNet) || (isOutboundPart && isOutboundWithoutNet)){ selectHttpLog(url, prcsDate, json.EAISVCSERNO.trim(), logPrcssSerno); @@ -357,10 +353,6 @@ $('#btn_pretty_body').click(function(){ const syntax = $('#selectBodySyntax').val(); - - // FLAT view를 위해 생성된 데이터 -> 기존 업무데이터 - bodyCodeEditor.setValue(bzwkdatatntInfo); - const value = bodyCodeEditor.getValue(); let prettyValue = value; if(syntax === 'JSN'){ @@ -400,7 +392,6 @@ $('#btn_pretty_body').css('display', 'block'); bodyCodeEditor.setOption("mode", "application/json"); }else if(syntax === 'XML'){ - $('#btn_pretty_body').css('display', 'block'); $('#btn_pretty_body').css('display', 'block'); bodyCodeEditor.setOption("mode", "application/xml"); }else{ @@ -798,78 +789,6 @@ $(document).ready(function() { alert('전체 전문 복사되었습니다.') }); - // FLAT 데이터를 전문정보로 잘라서 JSON / XML VIEW 로 볼 수 있는 버튼 - $('#btn_convert_view').click(function() { - var type = $('select[id=selectBodySyntax]').val(); - - if (!fullMessageData || !layoutInfo) { - alert("데이터가 없습니다."); - return; - } - - parserCommon(fullMessageData, layoutInfo, type); - }); - - function parserCommon(flatData, layoutInfo, type) { - var cursor = 0; - var parsedList = []; - - layoutInfo.forEach(function(field) { - var fieldLen = field.length; - - if (fieldLen > 0) { - var rawValue = flatData.substring(cursor, cursor + fieldLen); - - parsedList.push({ - engName: field.name, - korName: field.desc || field.name, - value: rawValue // trim 금지. - }); - - cursor += fieldLen; - } - }); - - // CodeMirror 에디터에 값 세팅 - var finalString = ""; - - if (type == "JSN") { - - var jsonResult = {}; - - parsedList.forEach(function(item) { - jsonResult[item.engName] = { - "한글명": item.korName, - "값": item.value - }; - }); - - finalString = JSON.stringify(jsonResult, null, 4); - - } else if (type == "XML") { - - var xmlResult = "\n"; - - parsedList.forEach(function(item) { - var cleanTagName = item.korName.replace(/[^a-zA-Z0-9가-힣]/g, ""); - if (!cleanTagName) cleanTagName = item.engName; - - xmlResult += "\t<" + cleanTagName + ">" + item.value + "\n"; - }); - xmlResult += ""; - - finalString = xmlResult; - - } else { - finalString = flatData; - } - - bodyCodeEditor.setValue(finalString); - $('#selectBodySyntax').val(type).trigger('change'); - -// console.log("변환 완료:", parsedList); - } - }); @@ -986,9 +905,6 @@ html,hbody { - - -