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 { + + +