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/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,
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/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;
}
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