From f10f5ce08e231bccc23aab9fae333b36d76c6c3a Mon Sep 17 00:00:00 2001 From: eastargh Date: Thu, 30 Jul 2026 11:44:19 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=ED=98=95=EC=83=81=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=97=B0=EB=8F=99=EC=8B=9C=20API=20=EC=8A=A4=ED=8E=99=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../loader/controller/LoaderController.java | 34 ++++++++++++++++++- .../onl/loader/vo/InterfaceDeployPack.java | 3 ++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/eactive/eai/rms/onl/loader/controller/LoaderController.java b/src/main/java/com/eactive/eai/rms/onl/loader/controller/LoaderController.java index ee71591..4e20f89 100644 --- a/src/main/java/com/eactive/eai/rms/onl/loader/controller/LoaderController.java +++ b/src/main/java/com/eactive/eai/rms/onl/loader/controller/LoaderController.java @@ -8,6 +8,7 @@ import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -26,6 +27,10 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; +import com.eactive.apim.portal.apispec.entity.ApiSpecInfo; +import com.eactive.apim.portal.apispec.service.ApiSpecInfoService; +import com.eactive.eai.rms.onl.transaction.apim.mapping.ApiSpecUIMapper; +import com.eactive.eai.rms.onl.transaction.apim.ui.ApiSpecInfoUI; import com.eactive.eai.agent.command.Command; import com.eactive.eai.agent.command.CommonCommand; import com.eactive.eai.common.util.DatetimeUtil; @@ -105,6 +110,12 @@ public class LoaderController implements InterceptorSkipController { @Autowired private TransformDeployService transformDeployService; + @Autowired + private ApiSpecInfoService apiSpecInfoService; + + @Autowired + private ApiSpecUIMapper apiSpecUIMapper; + /** * 형상관리에서 layout을 로딩한다. @@ -1481,6 +1492,17 @@ public class LoaderController implements InterceptorSkipController { } } + // 4. API 스펙 정보(ptl_api_spec_info) 추가 (감사(audit) 컬럼은 제외) + Optional optSpecInfo = apiSpecInfoService.findById(interfaceId); + if (optSpecInfo.isPresent()) { + ApiSpecInfoUI specInfo = apiSpecUIMapper.mapToUI(optSpecInfo.get()); + specInfo.setCreatedBy(null); + specInfo.setCreatedDate(null); + specInfo.setLastModifiedBy(null); + specInfo.setLastModifiedDate(null); + interfaceDeployPack.setSpecInfo(specInfo); + } + ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerModule(new JavaTimeModule()); objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); @@ -1545,7 +1567,17 @@ public class LoaderController implements InterceptorSkipController { transformDeployService.saveDeploy(transformDeploy); agentUtilService.broadcast(new CommonCommand( "com.eactive.eai.agent.transformer.ReloadTransformCommand", transformDeploy.getCnvsnname())); } - + + ApiSpecInfoUI specInfoUI = interfaceDeployPack.getSpecInfo(); + if (specInfoUI != null && StringUtils.isNotBlank(specInfoUI.getApiId())) { + ApiSpecInfo specInfo = apiSpecUIMapper.mapToEntity(specInfoUI); + if (apiSpecInfoService.findById(specInfo.getApiId()).isPresent()) { + apiSpecInfoService.updateById(specInfo.getApiId(), specInfo); + } else { + apiSpecInfoService.create(specInfo); + } + } + Map result = new HashMap(); String status = "success"; result.put("status", status); diff --git a/src/main/java/com/eactive/eai/rms/onl/loader/vo/InterfaceDeployPack.java b/src/main/java/com/eactive/eai/rms/onl/loader/vo/InterfaceDeployPack.java index 0d948c3..bfaaf46 100644 --- a/src/main/java/com/eactive/eai/rms/onl/loader/vo/InterfaceDeployPack.java +++ b/src/main/java/com/eactive/eai/rms/onl/loader/vo/InterfaceDeployPack.java @@ -3,6 +3,7 @@ package com.eactive.eai.rms.onl.loader.vo; import com.eactive.eai.rms.onl.loader.intf.deploy.EAIMessageDeploy; import com.eactive.eai.rms.onl.loader.layout.deploy.LayoutDeploy; import com.eactive.eai.rms.onl.loader.transform.deploy.TransformDeploy; +import com.eactive.eai.rms.onl.transaction.apim.ui.ApiSpecInfoUI; import lombok.Data; import java.util.ArrayList; @@ -15,4 +16,6 @@ public class InterfaceDeployPack { private List layoutDeployList = new ArrayList<>(); private List transformDeployList = new ArrayList<>(); + + private ApiSpecInfoUI specInfo; } From 628ab01c130b30414db949f28886ff8dbf6f0a8f Mon Sep 17 00:00:00 2001 From: eastargh Date: Thu, 30 Jul 2026 13:53:47 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=EA=B7=B8=EB=A6=AC=EB=93=9C=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsp/onl/admin/authserver/clientManDetail.jsp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/WebContent/jsp/onl/admin/authserver/clientManDetail.jsp b/WebContent/jsp/onl/admin/authserver/clientManDetail.jsp index 8cbbf2f..289f994 100644 --- a/WebContent/jsp/onl/admin/authserver/clientManDetail.jsp +++ b/WebContent/jsp/onl/admin/authserver/clientManDetail.jsp @@ -82,8 +82,10 @@ apiDesc: api.eaiSvcDesc }; }); + // addJSONData는 datatype:"local" 그리드의 p.data를 채우지 않아, 헤더 클릭 정렬 시 p.data(빈 배열) 기준으로 다시 그려지며 행이 사라짐. + // setGridParam({data:...}).trigger('reloadGrid')로 채워야 정렬이 정상 동작함. $("#selectedApiGrid").jqGrid("clearGridData"); - $("#selectedApiGrid")[0].addJSONData(gridData); + $("#selectedApiGrid").jqGrid('setGridParam', {data: gridData}).trigger('reloadGrid'); var data = json; $("#btn_gen_id").hide(); @@ -133,15 +135,14 @@ var selectedApiGrid = $("#selectedApiGrid"); selectedApiGrid.jqGrid({ datatype: "local", - gridview: true, // 성능 향상 - rownumbers: true, // 가상 인덱스 + rownumbers: true, // 가상 인덱스 rownumWidth: 40, colNames: ['API ID', 'API 이름'], colModel: [ {name: 'apiId', index: 'apiId', width: 100, align: 'center'}, {name: 'apiDesc', index: 'apiDesc', width: 100, align: 'center'} ], - rowNum: -1, + rowNum: 9999, // rowList: [10, 20, 30], // pager: '#selectedApiGridPager', // sortname: 'apiId', @@ -156,8 +157,8 @@ } }); - selectedApiGrid.jqGrid('setLabel', 'rn', 'No'); // 가상 인덱스 ColNames - + selectedApiGrid.jqGrid('setLabel', 'rn', 'No'); // 가상 인덱스 ColNames + $.ajax({ type: "POST", url: url, From ca8d46c7b8b5aa4ad816fd271631422a3fa4c302 Mon Sep 17 00:00:00 2001 From: eastargh Date: Thu, 30 Jul 2026 14:58:18 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EC=B5=9C=EC=A2=85=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=EC=9D=BC=EC=8B=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/jsp/common/acl/user/userMan.jsp | 12 +++++++----- WebContent/jsp/common/acl/user/userManDetail.jsp | 8 ++++++-- .../eai/rms/common/acl/user/mapper/UserUIMapper.java | 2 ++ .../eactive/eai/rms/common/acl/user/ui/UserUI.java | 10 ++++++++++ src/main/resources/message/LocaleMessage.properties | 1 + .../resources/message/LocaleMessage_en.properties | 1 + .../resources/message/LocaleMessage_ko.properties | 1 + 7 files changed, 28 insertions(+), 7 deletions(-) diff --git a/WebContent/jsp/common/acl/user/userMan.jsp b/WebContent/jsp/common/acl/user/userMan.jsp index f2a8629..a70dee0 100644 --- a/WebContent/jsp/common/acl/user/userMan.jsp +++ b/WebContent/jsp/common/acl/user/userMan.jsp @@ -40,16 +40,18 @@ $(document).ready(function() { '<%= localeMessage.getString("user.roleName") %>', '<%= localeMessage.getString("user.status") %>', '<%= localeMessage.getString("user.createOn") %>', + '<%= localeMessage.getString("user.lastLoginYms") %>', '<%= localeMessage.getString("user.depart") %>', '<%= localeMessage.getString("user.teamName") %>', '<%= localeMessage.getString("user.position") %>' ], colModel:[ - { name : 'USERID' , align:'center' ,sortable:false }, - { name : 'USERNAME' , align:'center' }, - { name : 'ROLEIDNFINAME' , align:'center' }, - { name : 'STATUS' , align:'center', formatter: userStatusFormat }, - { name : 'LASTAMNDYMS' , align:'center', formatter: timeStampFormat }, + { name : 'USERID' , align:'center', width: 100, sortable:false }, + { name : 'USERNAME' , align:'center', width: 100 }, + { name : 'ROLEIDNFINAME' , align:'center', width: 300 }, + { name : 'STATUS' , align:'center', width: 80, formatter: userStatusFormat }, + { name : 'REGDYMS' , align:'center', width: 120, formatter: timeStampFormat }, + { name : 'LASTLOGINYMS' , align:'center', width: 120, formatter: timeStampFormat }, { name : 'DVSNNAME' , align:'center', hidden: true }, { name : 'TEAMNAME' , align:'center', hidden: true }, { name : 'JOBTLNAME' , align:'center', hidden: true } diff --git a/WebContent/jsp/common/acl/user/userManDetail.jsp b/WebContent/jsp/common/acl/user/userManDetail.jsp index cd5202b..666a6b8 100644 --- a/WebContent/jsp/common/acl/user/userManDetail.jsp +++ b/WebContent/jsp/common/acl/user/userManDetail.jsp @@ -88,7 +88,8 @@ function detail(key){ $(tag+"[name="+name+"]").val(data[name.toUpperCase()] ? data[name.toUpperCase()].trim():""); }); - $("input[name=LASTAMNDYMS]").inputmask("9999-99-99 99:99:99",{'autoUnmask':true}); + $("input[name=REGDYMS]").inputmask("9999-99-99 99:99:99",{'autoUnmask':true}); + $("input[name=LASTLOGINYMS]").inputmask("9999-99-99 99:99:99",{'autoUnmask':true}); /* $("input[name=SECONDMENTSTDT]").inputmask("9999-99-99",{'autoUnmask':true}); $("input[name=SECONDMENTENDT]").inputmask("9999-99-99",{'autoUnmask':true}); */ @@ -334,7 +335,10 @@ $(document).ready(function() { <%= localeMessage.getString("user.fieldAgentName") %> --%> - <%= localeMessage.getString("user.createOn") %> + <%= localeMessage.getString("user.createOn") %> + + + <%= localeMessage.getString("user.lastLoginYms") %> <%-- <%= localeMessage.getString("user.secondmentbrncd") %> diff --git a/src/main/java/com/eactive/eai/rms/common/acl/user/mapper/UserUIMapper.java b/src/main/java/com/eactive/eai/rms/common/acl/user/mapper/UserUIMapper.java index 20c3015..2472e45 100644 --- a/src/main/java/com/eactive/eai/rms/common/acl/user/mapper/UserUIMapper.java +++ b/src/main/java/com/eactive/eai/rms/common/acl/user/mapper/UserUIMapper.java @@ -24,6 +24,8 @@ public interface UserUIMapper extends GenericMapper { @Mapping(source = "secondmentstdt", target = "SECONDMENTSTDT") @Mapping(source = "secondmentendt", target = "SECONDMENTENDT") @Mapping(source = "allowip", target = "allowIp") + @Mapping(source = "lastloginyms", target = "LASTLOGINYMS") + @Mapping(source = "regdyms", target = "REGDYMS") UserUI toVo(UserInfo entity); @Override diff --git a/src/main/java/com/eactive/eai/rms/common/acl/user/ui/UserUI.java b/src/main/java/com/eactive/eai/rms/common/acl/user/ui/UserUI.java index 84085eb..52517ca 100644 --- a/src/main/java/com/eactive/eai/rms/common/acl/user/ui/UserUI.java +++ b/src/main/java/com/eactive/eai/rms/common/acl/user/ui/UserUI.java @@ -82,4 +82,14 @@ public class UserUI { @JsonProperty("STATUS") private String status; // 사용자계정상태 + + @JsonProperty("LASTLOGINYMS") + @JsonFormat(pattern = LocalDateTimeFormatters.FORMAT_YYYYMMDDHHMMSS_14) + @DateTimeFormat(pattern = "yyyyMMddHHmmss") + private LocalDateTime LASTLOGINYMS; // 최종로그인일시 + + @JsonProperty("REGDYMS") + @JsonFormat(pattern = LocalDateTimeFormatters.FORMAT_YYYYMMDDHHMMSS_14) + @DateTimeFormat(pattern = "yyyyMMddHHmmss") + private LocalDateTime REGDYMS; // 등록일시 } diff --git a/src/main/resources/message/LocaleMessage.properties b/src/main/resources/message/LocaleMessage.properties index 49397e1..5bf34ca 100644 --- a/src/main/resources/message/LocaleMessage.properties +++ b/src/main/resources/message/LocaleMessage.properties @@ -2398,6 +2398,7 @@ user.checkRequired2 = Please enter the user name. user.checkRequired3 = Please enter the password. user.createBy = Create By user.createOn = Creation Time +user.lastLoginYms = Last Login Time user.depCode = Department Code user.depart = Department user.eaiGrupCd = EAI group code diff --git a/src/main/resources/message/LocaleMessage_en.properties b/src/main/resources/message/LocaleMessage_en.properties index 10d384c..15d2fe5 100644 --- a/src/main/resources/message/LocaleMessage_en.properties +++ b/src/main/resources/message/LocaleMessage_en.properties @@ -2560,6 +2560,7 @@ user.checkRequired2 = Please enter the user name. user.checkRequired3 = Please enter the password. user.createBy = Create By user.createOn = Creation Time +user.lastLoginYms = Last Login Time user.depCode = Department Code user.depart = Department user.eaiGrupCd = EAI group code diff --git a/src/main/resources/message/LocaleMessage_ko.properties b/src/main/resources/message/LocaleMessage_ko.properties index 3db3156..57a5ada 100644 --- a/src/main/resources/message/LocaleMessage_ko.properties +++ b/src/main/resources/message/LocaleMessage_ko.properties @@ -2661,6 +2661,7 @@ user.checkRequired4 = \uC811\uC18D \uD5C8\uC6A9 IP\uB97C \uD655\uC778\uD558\u user.checkRequired5 = \uC0AC\uC6A9\uC790 \uACC4\uC815 \uC0C1\uD0DC\uB97C \uD655\uC778\uD558\uC5EC \uC8FC\uC2ED\uC2DC\uC624.. user.createBy = \uB4F1\uB85D\uC778 user.createOn = \uB4F1\uB85D\uC77C\uC2DC +user.lastLoginYms = \uCD5C\uC885\uB85C\uADF8\uC778\uC77C\uC2DC user.depCode = \uBD80\uC810\uCF54\uB4DC user.depart = \uBD80\uC11C\uBA85 user.eaiGrupCd = EAI\uADF8\uB8F9\uD68C\uC0AC\uCF54\uB4DC