Compare commits
5 Commits
5b940717c4
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| f400f0322f | |||
| d0cd8118f3 | |||
| 07e65c055b | |||
| af8a9cca51 | |||
| 39a09d0f5d |
@@ -1004,7 +1004,9 @@
|
||||
['sample', 'mock', 'gw'].map(v =>
|
||||
`<label class="inline-flex items-center gap-1 text-sm mr-3"><input type="radio" name="portal-rt" data-portal-rt="${v}" ${rt === v ? 'checked' : ''}> ${v === 'gw' ? 'GW' : v}</label>`
|
||||
).join('') +
|
||||
`<div class="mt-2 text-xs text-slate-500">실제 호출 주소: <code id="resolved-call-url" class="font-mono text-slate-700 break-all">${escapeHtml(resolvedCallUrl())}</code></div>` +
|
||||
(rt === 'sample'
|
||||
? `<div class="mt-2 text-xs text-slate-500">응답 샘플을 바로 리턴합니다.</div>`
|
||||
: `<div class="mt-2 text-xs text-slate-500">실제 호출 주소: <code id="resolved-call-url" class="font-mono text-slate-700 break-all">${escapeHtml(resolvedCallUrl())}</code></div>`) +
|
||||
(rt === 'gw' ? `<div class="mt-1 text-xs text-slate-400">GW 주소는 포탈 설정(PTL_PROPERTY, 그룹 Portal)의 <code class="font-mono">djb.gateway.base-url</code> 값을 사용합니다.</div>` : '') +
|
||||
'</div>') +
|
||||
(rt === 'mock' ? fieldRow('Mock Server URL', input(p.mockUrl || '', 'data-portal="mockUrl"', { placeholder: 'https://mock.example.com' }), { hint: 'Mock 응답을 제공할 서버의 기본 URL. 응답 유형이 Mock 일 때 개발자포탈이 이 주소로 요청을 전달하고, Swagger 스펙의 서버 주소로도 사용됩니다.' }) : '')
|
||||
|
||||
@@ -25,7 +25,7 @@ $(document).ready(function() {
|
||||
datatype:"json",
|
||||
mtype: 'POST',
|
||||
url: url,
|
||||
postData : { cmd : 'LIST', searchName: $('input[name=searchName]').val()},
|
||||
postData : { cmd : 'LIST', searchName: $('input[name=searchName]').val(), searchUseYn: $('select[name=searchUseYn]').val()},
|
||||
colNames:['<%= localeMessage.getString("infAdpConMan.adaNm") %>',
|
||||
'<%= localeMessage.getString("infAdpConMan.adaDes") %>',
|
||||
'<%= localeMessage.getString("infAdpConMan.thrPerSecond") %>',
|
||||
@@ -62,6 +62,7 @@ $(document).ready(function() {
|
||||
url2 += '&menuId='+'${param.menuId}';
|
||||
//검색값
|
||||
url2 += '&searchName='+$("input[name=searchName]").val();
|
||||
url2 += '&searchUseYn='+$("select[name=searchUseYn]").val();
|
||||
//key값
|
||||
url2 += '&name='+name;
|
||||
goNav(url2);
|
||||
@@ -80,7 +81,7 @@ $(document).ready(function() {
|
||||
resizeJqGridWidth('grid','content_middle','1000');
|
||||
|
||||
$("#btn_search").click(function(){
|
||||
$("#grid").setGridParam({ postData: { searchName: $('input[name=searchName]').val()}, page:1 }).trigger("reloadGrid");
|
||||
$("#grid").setGridParam({ postData: { searchName: $('input[name=searchName]').val(), searchUseYn: $('select[name=searchUseYn]').val()}, page:1 }).trigger("reloadGrid");
|
||||
});
|
||||
$("#btn_new").click(function(){
|
||||
var url2 = url_view;
|
||||
@@ -126,6 +127,16 @@ $(document).ready(function() {
|
||||
<tr>
|
||||
<th style="width:180px;"><%= localeMessage.getString("infAdpConMan.adaNm") %></th>
|
||||
<td><input type="text" name="searchName" value="${param.searchName}"></td>
|
||||
<th style="width:180px;"><%= localeMessage.getString("infAdpConMan.useYn") %></th>
|
||||
<td>
|
||||
<div class="select-style">
|
||||
<select name="searchUseYn">
|
||||
<option value="">전체</option>
|
||||
<option value="1">사용함</option>
|
||||
<option value="0">사용안함</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -25,7 +25,7 @@ $(document).ready(function() {
|
||||
datatype:"json",
|
||||
mtype: 'POST',
|
||||
url: url,
|
||||
postData : { cmd : 'LIST', searchName: $('input[name=searchName]').val()},
|
||||
postData : { cmd : 'LIST', searchName: $('input[name=searchName]').val(), searchUseYn: $('select[name=searchUseYn]').val()},
|
||||
colNames:['클라이언트 ID',
|
||||
'클라이언트명',
|
||||
'<%= localeMessage.getString("infAdpConMan.thrPerSecond") %>',
|
||||
@@ -62,6 +62,7 @@ $(document).ready(function() {
|
||||
url2 += '&menuId='+'${param.menuId}';
|
||||
//검색값
|
||||
url2 += '&searchName='+$("input[name=searchName]").val();
|
||||
url2 += '&searchUseYn='+$("select[name=searchUseYn]").val();
|
||||
//key값
|
||||
url2 += '&name='+name;
|
||||
goNav(url2);
|
||||
@@ -80,7 +81,7 @@ $(document).ready(function() {
|
||||
resizeJqGridWidth('grid','content_middle','1000');
|
||||
|
||||
$("#btn_search").click(function(){
|
||||
$("#grid").setGridParam({ postData: { searchName: $('input[name=searchName]').val()}, page:1 }).trigger("reloadGrid");
|
||||
$("#grid").setGridParam({ postData: { searchName: $('input[name=searchName]').val(), searchUseYn: $('select[name=searchUseYn]').val()}, page:1 }).trigger("reloadGrid");
|
||||
});
|
||||
$("#btn_new").click(function(){
|
||||
var url2 = url_view;
|
||||
@@ -90,7 +91,8 @@ $(document).ready(function() {
|
||||
url2 += '&menuId='+'${param.menuId}';
|
||||
//검색값
|
||||
url2 += '&searchName=';
|
||||
|
||||
url2 += '&searchUseYn='+$('select[name=searchUseYn]').val();
|
||||
|
||||
goNav(url2);
|
||||
});
|
||||
|
||||
@@ -124,6 +126,16 @@ $(document).ready(function() {
|
||||
<tr>
|
||||
<th style="width:180px;">클라이언트명</th>
|
||||
<td><input type="text" name="searchName" value="${param.searchName}"></td>
|
||||
<th style="width:180px;">사용여부</th>
|
||||
<td>
|
||||
<div class="select-style">
|
||||
<select name="searchUseYn">
|
||||
<option value="">전체</option>
|
||||
<option value="1">사용함</option>
|
||||
<option value="0">사용안함</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -494,11 +494,6 @@ $(document).ready(function() {
|
||||
<span class="bucket-summary-value" id="summaryThreshold">0<span class="unit">req</span></span>
|
||||
<span class="bucket-summary-sub" id="summaryThresholdCalc"></span>
|
||||
</div>
|
||||
<div class="bucket-summary-item">
|
||||
<span class="bucket-summary-label">적용 API</span>
|
||||
<span class="bucket-summary-value" id="summaryActiveApi">0<span class="unit">개</span></span>
|
||||
<span class="bucket-summary-sub" id="summaryActiveApiList"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -47,27 +47,40 @@ function groupNameFormat(cellvalue, options, rowObject) {
|
||||
return strVal;
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$(document).ready(function() {
|
||||
$("input[name=searchStartYYYYMMDD],input[name=searchEndYYYYMMDD]").inputmask("yyyy-mm-dd",{'autoUnmask':true});
|
||||
|
||||
$("input[name=searchStartTime],input[name=searchEndTime]").inputmask("hh:mm:ss",{'autoUnmask':true});
|
||||
|
||||
$("input[name=searchStartYYYYMMDD]").each(function(){
|
||||
if ($(this).val() == undefined || $(this).val() == null || $(this).val() == ""){
|
||||
$(this).val(getToday());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$("input[name=searchEndYYYYMMDD]").each(function(){
|
||||
if ($(this).val() == undefined || $(this).val() == null || $(this).val() == ""){
|
||||
$(this).val(getToday());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||
|
||||
|
||||
$("input[name=searchStartTime]").each(function(){
|
||||
if ($(this).val() == undefined || $(this).val() == null || $(this).val() == ""){
|
||||
$(this).val("000000");
|
||||
}
|
||||
});
|
||||
|
||||
$("input[name=searchEndTime]").each(function(){
|
||||
if ($(this).val() == undefined || $(this).val() == null || $(this).val() == ""){
|
||||
$(this).val("235959");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||
|
||||
var start = $("input[name=searchStartYYYYMMDD]").val().replace(/-/gi,"");
|
||||
var end = $("input[name=searchEndYYYYMMDD]").val().replace(/-/gi,"");
|
||||
|
||||
|
||||
gridPostData["searchStartDate"] = start;
|
||||
gridPostData["searchEndDate"] = end;
|
||||
|
||||
@@ -132,18 +145,20 @@ $(document).ready(function() {
|
||||
resizeJqGridWidth('grid','content_middle','1000');
|
||||
|
||||
$("#btn_search").click(function(){
|
||||
var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||
|
||||
var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||
|
||||
var start = $("input[name=searchStartYYYYMMDD]").val().replace(/-/gi,"");
|
||||
var end = $("input[name=searchEndYYYYMMDD]").val().replace(/-/gi,"");
|
||||
|
||||
if(start > end){
|
||||
var startTime = $("input[name=searchStartTime]").val();
|
||||
var endTime = $("input[name=searchEndTime]").val();
|
||||
|
||||
if((start + startTime) > (end + endTime)){
|
||||
alert("조회기간을 확인해주세요.");
|
||||
return false;
|
||||
}
|
||||
$("input[name=searchStartDate]").val(start);
|
||||
$("input[name=searchEndDate]").val(end);
|
||||
|
||||
|
||||
postData["searchStartDate"] = start;
|
||||
postData["searchEndDate"] = end;
|
||||
|
||||
@@ -197,14 +212,24 @@ $(document).ready(function() {
|
||||
<tbody>
|
||||
<tr>
|
||||
<th style="width:180px;"><%= localeMessage.getString("infConHstMan.date") %></th>
|
||||
<td>
|
||||
<td colspan="5">
|
||||
<input type="text" name="searchStartYYYYMMDD" id="startDatepicker" readonly="readonly" value="" size="10" style="width:80px; border:1px solid #ebebec;">
|
||||
~
|
||||
<input type="text" name="searchStartTime" value="" size="8" style="width:70px; border:1px solid #ebebec;">
|
||||
~
|
||||
<input type="text" name="searchEndYYYYMMDD" value="" id="endDatepicker" size="10" readonly="readonly" style="width:80px; border:1px solid #ebebec;">
|
||||
<input type="text" name="searchEndTime" value="" size="8" style="width:70px; border:1px solid #ebebec;">
|
||||
<input type="hidden" name="searchStartDate" value="" style="width:0px;">
|
||||
<input type="hidden" name="searchEndDate" value="" style="width:0px;">
|
||||
</td>
|
||||
</tr>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width:180px;"><%= localeMessage.getString("infConHstMan.instNm") %></th>
|
||||
<td><input type="text" name="searchInstanceName" value="${param.searchInstanceName}"></td>
|
||||
<th style="width:180px;"><%= localeMessage.getString("infConHstMan.eaiSvcCd") %></th>
|
||||
<td><input type="text" name="searchApiName" value="${param.searchApiName}"></td>
|
||||
<th style="width:180px;"><%= localeMessage.getString("infConHstMan.adpGrpNm") %></th>
|
||||
<td><input type="text" name="searchAdapterGroupName" value="${param.searchAdapterGroupName}"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
@@ -88,7 +88,7 @@ $(document).ready(function() {
|
||||
datatype:"json",
|
||||
mtype: 'POST',
|
||||
url: url,
|
||||
postData : { cmd : 'LIST', searchGroupName: $('input[name=searchGroupName]').val()},
|
||||
postData : { cmd : 'LIST', searchGroupName: $('input[name=searchGroupName]').val(), searchUseYn: $('select[name=searchUseYn]').val()},
|
||||
colNames:['그룹 ID',
|
||||
'그룹명',
|
||||
'초당 임계치',
|
||||
@@ -125,6 +125,7 @@ $(document).ready(function() {
|
||||
url2 += '&menuId='+'${param.menuId}';
|
||||
//검색값
|
||||
url2 += '&searchGroupName='+$("input[name=searchGroupName]").val();
|
||||
url2 += '&searchUseYn='+$("select[name=searchUseYn]").val();
|
||||
//key값
|
||||
url2 += '&groupId='+groupId;
|
||||
goNav(url2);
|
||||
@@ -143,7 +144,7 @@ $(document).ready(function() {
|
||||
resizeJqGridWidth('grid','content_middle','1000');
|
||||
|
||||
$("#btn_search").click(function(){
|
||||
$("#grid").setGridParam({ postData: { searchGroupName: $('input[name=searchGroupName]').val()}, page:1 }).trigger("reloadGrid");
|
||||
$("#grid").setGridParam({ postData: { searchGroupName: $('input[name=searchGroupName]').val(), searchUseYn: $('select[name=searchUseYn]').val()}, page:1 }).trigger("reloadGrid");
|
||||
});
|
||||
$("#btn_new").click(function(){
|
||||
var url2 = url_view;
|
||||
@@ -188,6 +189,16 @@ $(document).ready(function() {
|
||||
<tr>
|
||||
<th style="width:180px;">그룹명</th>
|
||||
<td><input type="text" name="searchGroupName" value="${param.searchGroupName}"></td>
|
||||
<th style="width:180px;">사용여부</th>
|
||||
<td>
|
||||
<div class="select-style">
|
||||
<select name="searchUseYn">
|
||||
<option value="">전체</option>
|
||||
<option value="1">사용함</option>
|
||||
<option value="0">사용안함</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -25,7 +25,7 @@ $(document).ready(function() {
|
||||
datatype:"json",
|
||||
mtype: 'POST',
|
||||
url: url,
|
||||
postData : { cmd : 'LIST', searchName: $('input[name=searchName]').val()},
|
||||
postData : { cmd : 'LIST', searchName: $('input[name=searchName]').val(), searchUseYn: $('select[name=searchUseYn]').val()},
|
||||
colNames:['<%= localeMessage.getString("infIfConMan.ifNm") %>',
|
||||
'<%= localeMessage.getString("infIfConMan.ifDesc") %>',
|
||||
'<%= localeMessage.getString("infAdpConMan.thrPerSecond") %>',
|
||||
@@ -62,6 +62,7 @@ $(document).ready(function() {
|
||||
url2 += '&menuId='+'${param.menuId}';
|
||||
//검색값
|
||||
url2 += '&searchName='+$("input[name=searchName]").val();
|
||||
url2 += '&searchUseYn='+$("select[name=searchUseYn]").val();
|
||||
//key값
|
||||
url2 += '&name='+name;
|
||||
goNav(url2);
|
||||
@@ -80,7 +81,7 @@ $(document).ready(function() {
|
||||
resizeJqGridWidth('grid','content_middle','1000');
|
||||
|
||||
$("#btn_search").click(function(){
|
||||
$("#grid").setGridParam({ postData: { searchName: $('input[name=searchName]').val()}, page:1 }).trigger("reloadGrid");
|
||||
$("#grid").setGridParam({ postData: { searchName: $('input[name=searchName]').val(), searchUseYn: $('select[name=searchUseYn]').val()}, page:1 }).trigger("reloadGrid");
|
||||
});
|
||||
$("#btn_new").click(function(){
|
||||
var url2 = url_view;
|
||||
@@ -126,6 +127,16 @@ $(document).ready(function() {
|
||||
<tr>
|
||||
<th style="width:180px;"><%= localeMessage.getString("infIfConMan.ifNm") %></th>
|
||||
<td><input type="text" name="searchName" value="${param.searchName}"></td>
|
||||
<th style="width:180px;"><%= localeMessage.getString("infAdpConMan.useYn") %></th>
|
||||
<td>
|
||||
<div class="select-style">
|
||||
<select name="searchUseYn">
|
||||
<option value="">전체</option>
|
||||
<option value="1">사용함</option>
|
||||
<option value="0">사용안함</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -1545,9 +1545,9 @@
|
||||
<button type="button" class="cssbtn" id="btn_delete" level="W" status="DETAIL"><i class="material-icons">delete</i> <%= localeMessage.getString("button.delete") %></button>
|
||||
<button type="button" class="cssbtn" id="btn_modify" level="R" status="DETAIL,NEW"><i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %></button>
|
||||
<!-- v1: 기존 API 스펙 (모달) — 기능 비교용 복원 -->
|
||||
<button type="button" class="cssbtn" id="btn_api_spec" level="R" status="DETAIL,NEW"><i class="material-icons">description</i> API 스펙(삭제예정)</button>
|
||||
<button type="button" class="cssbtn" id="btn_api_spec" level="R" status="DETAIL"><i class="material-icons">description</i> API 스펙(삭제예정)</button>
|
||||
<!-- v2: 신규 OpenAPI Spec (새 탭) -->
|
||||
<button type="button" class="cssbtn" id="btn_openapi_spec" level="R" status="DETAIL,NEW"><i class="material-icons">api</i> OpenAPI Spec</button>
|
||||
<button type="button" class="cssbtn" id="btn_openapi_spec" level="R" status="DETAIL"><i class="material-icons">api</i> OpenAPI Spec</button>
|
||||
<button type="button" class="cssbtn" id="btn_previous" level="R" status="DETAIL,NEW"><i class="material-icons">arrow_back</i> <%= localeMessage.getString("button.previous") %></button>
|
||||
</div>
|
||||
<div class="title" id="title" style="font-size:1.4em">${rmsMenuName}</div>
|
||||
|
||||
@@ -36,7 +36,7 @@ class MonitoringContextImpl implements MonitoringContext {
|
||||
@Autowired
|
||||
private MonitoringContextDAO monitoringContextDAO;
|
||||
|
||||
private Properties properties = null;
|
||||
private Properties properties = new Properties();
|
||||
|
||||
private String instancePropertyGroupName;
|
||||
|
||||
@@ -73,7 +73,10 @@ class MonitoringContextImpl implements MonitoringContext {
|
||||
String hostIp = InetAddress.getLocalHost().getHostAddress();
|
||||
this.instancePropertyGroupName = String
|
||||
.format(MonitoringPropertyGroupService.MONITORING_PROPERTY_KEY_FORMAT, hostIp);
|
||||
this.properties = monitoringContextDAO.getProperties(instancePropertyGroupName);
|
||||
Properties loaded = monitoringContextDAO.getProperties(instancePropertyGroupName);
|
||||
if (loaded != null) {
|
||||
this.properties = loaded;
|
||||
}
|
||||
|
||||
String eaiAgentId = System.getProperty(EAI_AGENTID);
|
||||
if (StringUtils.isBlank(eaiAgentId)) {
|
||||
|
||||
+11
-2
@@ -1,5 +1,6 @@
|
||||
package com.eactive.eai.rms.data.entity.onl.inflow;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
@@ -63,11 +64,19 @@ public class InflowControlLogService
|
||||
|
||||
public Iterable<InflowControlLog> findAll(InflowControlHistoryManUISearch uiSearch) {
|
||||
QInflowControlLog qInflowConfrolLog = QInflowControlLog.inflowControlLog;
|
||||
String startTime = StringUtils.defaultIfEmpty(uiSearch.getSearchStartTime(), "000000");
|
||||
String endTime = StringUtils.defaultIfEmpty(uiSearch.getSearchEndTime(), "235959");
|
||||
BooleanBuilder booleanBuilder = new BooleanBuilder();
|
||||
booleanBuilder
|
||||
.and(qInflowConfrolLog.id.msgdpstyms
|
||||
.between(uiSearch.getSearchStartDate() + "000000000",
|
||||
uiSearch.getSearchEndDate() + "235959999"));
|
||||
.between(uiSearch.getSearchStartDate() + startTime + "000",
|
||||
uiSearch.getSearchEndDate() + endTime + "999"));
|
||||
if (!StringUtils.isEmpty(uiSearch.getSearchInstanceName()))
|
||||
booleanBuilder.and(qInflowConfrolLog.eaisevrinstncname.contains(uiSearch.getSearchInstanceName()));
|
||||
if (!StringUtils.isEmpty(uiSearch.getSearchApiName()))
|
||||
booleanBuilder.and(qInflowConfrolLog.eaisvcname.contains(uiSearch.getSearchApiName()));
|
||||
if (!StringUtils.isEmpty(uiSearch.getSearchAdapterGroupName()))
|
||||
booleanBuilder.and(qInflowConfrolLog.adptrbzwkgroupname.contains(uiSearch.getSearchAdapterGroupName()));
|
||||
return super.repository.findAll(booleanBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
+48
-11
@@ -27,6 +27,8 @@ import com.eactive.eai.rms.onl.manage.inflow.history.InflowControlHistoryManUISe
|
||||
import com.eactive.eai.rms.onl.manage.inflow.inflow.InflowControlManMapper;
|
||||
import com.querydsl.core.BooleanBuilder;
|
||||
import com.querydsl.core.Tuple;
|
||||
import com.querydsl.core.types.dsl.BooleanExpression;
|
||||
import com.querydsl.core.types.dsl.StringPath;
|
||||
import com.querydsl.jpa.impl.JPAQuery;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
|
||||
@@ -46,7 +48,12 @@ public class InflowControlService extends AbstractDataService<InflowControl, Inf
|
||||
@Autowired
|
||||
InflowControlManMapper mapper;
|
||||
|
||||
public Page<InflowControlServiceDto> findAllForAdapter(Pageable pageable, String searchName) {
|
||||
// 유량제어 미설정(useyn null)은 "사용안함" 검색 시 함께 조회되도록 처리
|
||||
private static BooleanExpression useYnCondition(StringPath useYnPath, String searchUseYn) {
|
||||
return "0".equals(searchUseYn) ? useYnPath.eq(searchUseYn).or(useYnPath.isNull()) : useYnPath.eq(searchUseYn);
|
||||
}
|
||||
|
||||
public Page<InflowControlServiceDto> findAllForAdapter(Pageable pageable, String searchName, String searchUseYn) {
|
||||
JPAQueryFactory jpaQueryFactory = new JPAQueryFactory(entityManager);
|
||||
QAdapterGroup qAdapterGroup = QAdapterGroup.adapterGroup;
|
||||
QInflowControl qInflowControl = QInflowControl.inflowControl;
|
||||
@@ -54,6 +61,8 @@ public class InflowControlService extends AbstractDataService<InflowControl, Inf
|
||||
BooleanBuilder boolBuilder = new BooleanBuilder();
|
||||
if (!StringUtils.isEmpty(searchName))
|
||||
boolBuilder.and(qAdapterGroup.adptrbzwkgroupname.contains(searchName));
|
||||
if (!StringUtils.isEmpty(searchUseYn))
|
||||
boolBuilder.and(useYnCondition(qInflowControl.useyn, searchUseYn));
|
||||
|
||||
BooleanBuilder adapterWherePredicate = new BooleanBuilder(qAdapterGroup.adptriodstcd
|
||||
.eq("I")
|
||||
@@ -84,6 +93,10 @@ public class InflowControlService extends AbstractDataService<InflowControl, Inf
|
||||
long totalCount = jpaQueryFactory
|
||||
.select(qAdapterGroup.adptrbzwkgroupname.count())
|
||||
.from(qAdapterGroup)
|
||||
.leftJoin(qInflowControl)
|
||||
.on(qAdapterGroup.adptrbzwkgroupname
|
||||
.eq(qInflowControl.id.name)
|
||||
.and(qInflowControl.id.type.eq(ADAPTER_TYPE_INFLOW)))
|
||||
.where(boolBuilder)
|
||||
.fetchOne();
|
||||
|
||||
@@ -121,17 +134,22 @@ public class InflowControlService extends AbstractDataService<InflowControl, Inf
|
||||
return toDto(qAdapterGroup, qInflowControl, tuple);
|
||||
}
|
||||
|
||||
public Page<InflowControlServiceDto> findAllForInterface(Pageable pageable, String searchName) {
|
||||
public Page<InflowControlServiceDto> findAllForInterface(Pageable pageable, String searchName, String searchUseYn) {
|
||||
JPAQueryFactory jpaQueryFactory = new JPAQueryFactory(entityManager);
|
||||
QInflowControl qInflowControl = QInflowControl.inflowControl;
|
||||
QEAIMessageEntity qEAIMessageEntity = QEAIMessageEntity.eAIMessageEntity;
|
||||
|
||||
BooleanBuilder boolBuilder = new BooleanBuilder();
|
||||
boolBuilder.and(qEAIMessageEntity.eaisvcname.contains(searchName));
|
||||
if (!StringUtils.isEmpty(searchUseYn))
|
||||
boolBuilder.and(useYnCondition(qInflowControl.useyn, searchUseYn));
|
||||
|
||||
List<Tuple> tupleList = jpaQueryFactory
|
||||
.select(qInflowControl, qEAIMessageEntity.eaisvcname, qEAIMessageEntity.eaisvcdesc)
|
||||
.from(qEAIMessageEntity)
|
||||
.leftJoin(qInflowControl)
|
||||
.on(qInflowControl.id.type.eq(INTERFACE_TYPE_INFLOW).and(qInflowControl.id.name.eq(qEAIMessageEntity.eaisvcname)))
|
||||
.where(qEAIMessageEntity.eaisvcname.contains(searchName))
|
||||
.where(boolBuilder)
|
||||
.orderBy(qEAIMessageEntity.eaisvcname.asc())
|
||||
.offset(pageable.getOffset())
|
||||
.limit(pageable.getPageSize())
|
||||
@@ -145,7 +163,9 @@ public class InflowControlService extends AbstractDataService<InflowControl, Inf
|
||||
long totalCount = jpaQueryFactory
|
||||
.select(qEAIMessageEntity.eaisvcname.count())
|
||||
.from(qEAIMessageEntity)
|
||||
.where(qEAIMessageEntity.eaisvcname.contains(searchName))
|
||||
.leftJoin(qInflowControl)
|
||||
.on(qInflowControl.id.type.eq(INTERFACE_TYPE_INFLOW).and(qInflowControl.id.name.eq(qEAIMessageEntity.eaisvcname)))
|
||||
.where(boolBuilder)
|
||||
.fetchOne();
|
||||
return new PageImpl<>(dtoList, pageable, totalCount);
|
||||
}
|
||||
@@ -199,19 +219,24 @@ public class InflowControlService extends AbstractDataService<InflowControl, Inf
|
||||
return toDto(qClientEntity, qInflowControl, tuple);
|
||||
}
|
||||
|
||||
public Page<InflowControlServiceDto> findAllForClient(Pageable pageable, String searchName) {
|
||||
|
||||
public Page<InflowControlServiceDto> findAllForClient(Pageable pageable, String searchName, String searchUseYn) {
|
||||
|
||||
JPAQueryFactory jpaQueryFactory = new JPAQueryFactory(entityManager);
|
||||
QInflowControl qInflowControl = QInflowControl.inflowControl;
|
||||
QClientEntity qClientEntity = QClientEntity.clientEntity;
|
||||
|
||||
BooleanBuilder boolBuilder = new BooleanBuilder();
|
||||
boolBuilder.and(qClientEntity.clientname.contains(searchName));
|
||||
if (!StringUtils.isEmpty(searchUseYn))
|
||||
boolBuilder.and(useYnCondition(qInflowControl.useyn, searchUseYn));
|
||||
|
||||
List<Tuple> tupleList = jpaQueryFactory
|
||||
.select(qInflowControl, qClientEntity.clientid, qClientEntity.clientname)
|
||||
.from(qClientEntity)
|
||||
.leftJoin(qInflowControl)
|
||||
.on(qInflowControl.id.type.eq(CLIENT_TYPE_INFLOW)
|
||||
.and(qInflowControl.id.name.eq(qClientEntity.clientid)))
|
||||
.where(qClientEntity.clientname.contains(searchName))
|
||||
.where(boolBuilder)
|
||||
.orderBy(qClientEntity.clientname.asc())
|
||||
.offset(pageable.getOffset())
|
||||
.limit(pageable.getPageSize())
|
||||
@@ -225,7 +250,10 @@ public class InflowControlService extends AbstractDataService<InflowControl, Inf
|
||||
long totalCount = jpaQueryFactory
|
||||
.select(qClientEntity.clientname.count())
|
||||
.from(qClientEntity)
|
||||
.where(qClientEntity.clientname.contains(searchName))
|
||||
.leftJoin(qInflowControl)
|
||||
.on(qInflowControl.id.type.eq(CLIENT_TYPE_INFLOW)
|
||||
.and(qInflowControl.id.name.eq(qClientEntity.clientid)))
|
||||
.where(boolBuilder)
|
||||
.fetchOne();
|
||||
return new PageImpl<>(dtoList, pageable, totalCount);
|
||||
}
|
||||
@@ -266,12 +294,21 @@ public class InflowControlService extends AbstractDataService<InflowControl, Inf
|
||||
QInflowControlLog qInflowConfrolLog = QInflowControlLog.inflowControlLog;
|
||||
QInflowControlGroup qinflowControlGroup = QInflowControlGroup.inflowControlGroup;
|
||||
|
||||
String startTime = StringUtils.defaultIfEmpty(uiSearch.getSearchStartTime(), "000000");
|
||||
String endTime = StringUtils.defaultIfEmpty(uiSearch.getSearchEndTime(), "235959");
|
||||
|
||||
BooleanBuilder predicate = new BooleanBuilder();
|
||||
predicate
|
||||
.and(qInflowConfrolLog.id.msgdpstyms
|
||||
.between(uiSearch.getSearchStartDate() + "000000000",
|
||||
uiSearch.getSearchEndDate() + "235959999"));
|
||||
|
||||
.between(uiSearch.getSearchStartDate() + startTime + "000",
|
||||
uiSearch.getSearchEndDate() + endTime + "999"));
|
||||
if (!StringUtils.isEmpty(uiSearch.getSearchInstanceName()))
|
||||
predicate.and(qInflowConfrolLog.eaisevrinstncname.contains(uiSearch.getSearchInstanceName()));
|
||||
if (!StringUtils.isEmpty(uiSearch.getSearchApiName()))
|
||||
predicate.and(qInflowConfrolLog.eaisvcname.contains(uiSearch.getSearchApiName()));
|
||||
if (!StringUtils.isEmpty(uiSearch.getSearchAdapterGroupName()))
|
||||
predicate.and(qInflowConfrolLog.adptrbzwkgroupname.contains(uiSearch.getSearchAdapterGroupName()));
|
||||
|
||||
return getJPAQueryFactory()
|
||||
.select(
|
||||
qInflowConfrolLog,
|
||||
|
||||
@@ -43,12 +43,6 @@ public class DjbProperty {
|
||||
)
|
||||
private String apiAllowIpList = "10.15.106.*, 10.14.8.*, 10.15.8.*, 192.168.240.*, 127.0.0.1, 192.168.132.*, 192.168.131.*";
|
||||
|
||||
@DjbPropertyValue(
|
||||
key = "djb.api_gw_metric.page_size",
|
||||
description = "API GW Metric 조회시 페이지 크기 설정 (Integer, 0 = 무한, 기본값 10000)",
|
||||
defaultValue = "10000"
|
||||
)
|
||||
private Integer apiGwMetricPageSize = 10000;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,23 +1,5 @@
|
||||
package com.eactive.eai.rms.onl.apim.obp;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.eactive.apim.portal.apprequest.entity.AppRequest;
|
||||
import com.eactive.apim.portal.apprequest.repository.AppRequestRepository;
|
||||
import com.eactive.apim.portal.obp.entity.ObpGwMetric;
|
||||
@@ -28,7 +10,18 @@ import com.eactive.eai.rms.common.util.CommonUtil;
|
||||
import com.eactive.eai.rms.data.entity.onl.apim.obp.ObpGwMetricJpaDAO;
|
||||
import com.eactive.eai.rms.data.entity.onl.apim.obp.ObpGwMetricService;
|
||||
import com.eactive.eai.rms.data.entity.onl.apim.obp.ObpGwMetricVO;
|
||||
import com.eactive.eai.rms.ext.djb.common.DjbPropertyHolder;
|
||||
//import com.eactive.ext.kjb.common.KjbPropertyHolder;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* ObpGwMetric Man Service - 비즈니스 로직
|
||||
@@ -335,7 +328,7 @@ public class ObpGwMetricManService extends BaseService {
|
||||
DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.MONITORING));
|
||||
|
||||
// KjbProperty에서 pageSize 읽기
|
||||
Integer pageSize = DjbPropertyHolder.get().getApiGwMetricPageSize();
|
||||
Integer pageSize = null; //KjbPropertyHolder.get().getApiGwMetricPageSize();
|
||||
if (pageSize == null) {
|
||||
pageSize = 10000; // 기본값 (null 안전 처리)
|
||||
}
|
||||
|
||||
+2
-2
@@ -59,8 +59,8 @@ public class InflowGroupControlManController extends OnlBaseAnnotationController
|
||||
*/
|
||||
@RequestMapping(value = "/onl/admin/inflow/inflowGroupControlMan.json", params = "cmd=LIST")
|
||||
public ResponseEntity<GridResponse<InflowGroupControlManUI>> selectList(HttpServletRequest request,
|
||||
Pageable pageVo, String searchGroupName) {
|
||||
Page<InflowGroupControlManUI> uiPage = service.selectGroupList(pageVo, searchGroupName);
|
||||
Pageable pageVo, String searchGroupName, String searchUseYn) {
|
||||
Page<InflowGroupControlManUI> uiPage = service.selectGroupList(pageVo, searchGroupName, searchUseYn);
|
||||
return ResponseEntity.ok(new GridResponse<>(uiPage));
|
||||
}
|
||||
|
||||
|
||||
+5
-1
@@ -61,7 +61,7 @@ public class InflowGroupControlManService extends BaseService {
|
||||
/**
|
||||
* 그룹 목록 조회
|
||||
*/
|
||||
public Page<InflowGroupControlManUI> selectGroupList(Pageable pageable, String searchGroupName) {
|
||||
public Page<InflowGroupControlManUI> selectGroupList(Pageable pageable, String searchGroupName, String searchUseYn) {
|
||||
JPAQueryFactory jpaQueryFactory = new JPAQueryFactory(entityManager);
|
||||
QInflowControlGroup qGroup = QInflowControlGroup.inflowControlGroup;
|
||||
|
||||
@@ -69,6 +69,10 @@ public class InflowGroupControlManService extends BaseService {
|
||||
if (!StringUtils.isEmpty(searchGroupName)) {
|
||||
boolBuilder.and(qGroup.groupName.contains(searchGroupName));
|
||||
}
|
||||
if (!StringUtils.isEmpty(searchUseYn)) {
|
||||
// 유량제어 미설정(useYn null)은 "사용안함" 검색 시 함께 조회되도록 처리
|
||||
boolBuilder.and("0".equals(searchUseYn) ? qGroup.useYn.eq(searchUseYn).or(qGroup.useYn.isNull()) : qGroup.useYn.eq(searchUseYn));
|
||||
}
|
||||
|
||||
List<InflowControlGroup> groupList = jpaQueryFactory
|
||||
.selectFrom(qGroup)
|
||||
|
||||
+25
@@ -24,4 +24,29 @@ public class InflowControlHistoryManUISearch {
|
||||
* 유량제어일 끝(20231221)
|
||||
*/
|
||||
private String searchEndDate;
|
||||
|
||||
/**
|
||||
* 유량제어일 시작 시간(000000)
|
||||
*/
|
||||
private String searchStartTime;
|
||||
|
||||
/**
|
||||
* 유량제어일 끝 시간(235959)
|
||||
*/
|
||||
private String searchEndTime;
|
||||
|
||||
/**
|
||||
* 인스턴스명
|
||||
*/
|
||||
private String searchInstanceName;
|
||||
|
||||
/**
|
||||
* API 명
|
||||
*/
|
||||
private String searchApiName;
|
||||
|
||||
/**
|
||||
* 어댑터그룹명
|
||||
*/
|
||||
private String searchAdapterGroupName;
|
||||
}
|
||||
|
||||
+2
-2
@@ -42,8 +42,8 @@ public class InflowAdapterControlManController extends OnlBaseAnnotationControll
|
||||
|
||||
@RequestMapping(value = "/onl/admin/inflow/inflowAdapterControlMan.json", params = "cmd=LIST")
|
||||
public ResponseEntity<GridResponse<InflowControlManUI>> selectList(HttpServletRequest request, Pageable pageVo,
|
||||
String searchName) {
|
||||
Page<InflowControlManUI> uiPage = service.selectAdapterList(pageVo, searchName);
|
||||
String searchName, String searchUseYn) {
|
||||
Page<InflowControlManUI> uiPage = service.selectAdapterList(pageVo, searchName, searchUseYn);
|
||||
return ResponseEntity.ok(new GridResponse<>(uiPage));
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -44,8 +44,8 @@ public class InflowClientControlManController extends OnlBaseAnnotationControlle
|
||||
|
||||
@RequestMapping(value = "/onl/admin/inflow/inflowClientControlMan.json", params = "cmd=LIST")
|
||||
public ResponseEntity<GridResponse<InflowControlManUI>> selectList(HttpServletRequest request, Pageable pageVo,
|
||||
String searchName) {
|
||||
Page<InflowControlManUI> uiPage = service.selectClientList(pageVo, searchName);
|
||||
String searchName, String searchUseYn) {
|
||||
Page<InflowControlManUI> uiPage = service.selectClientList(pageVo, searchName, searchUseYn);
|
||||
return ResponseEntity.ok(new GridResponse<>(uiPage));
|
||||
}
|
||||
|
||||
|
||||
+14
-9
@@ -1,5 +1,6 @@
|
||||
package com.eactive.eai.rms.onl.manage.inflow.inflow;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -16,6 +17,7 @@ import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
|
||||
import com.eactive.eai.data.entity.onl.inflow.InflowControl;
|
||||
import com.eactive.eai.data.entity.onl.inflow.InflowControlId;
|
||||
@@ -50,8 +52,8 @@ public class InflowControlManService extends BaseService {
|
||||
private RestTemplate restTemplate = new RestTemplate();
|
||||
|
||||
// 어댑터 유량제어
|
||||
public Page<InflowControlManUI> selectAdapterList(Pageable pageable, String searchName) {
|
||||
Page<InflowControlServiceDto> dtoList = service.findAllForAdapter(pageable, searchName);
|
||||
public Page<InflowControlManUI> selectAdapterList(Pageable pageable, String searchName, String searchUseYn) {
|
||||
Page<InflowControlServiceDto> dtoList = service.findAllForAdapter(pageable, searchName, searchUseYn);
|
||||
return dtoList.map(mapper::toVo);
|
||||
}
|
||||
|
||||
@@ -84,8 +86,8 @@ public class InflowControlManService extends BaseService {
|
||||
}
|
||||
|
||||
// 인터페이스 유량제어
|
||||
public Page<InflowControlManUI> selectInterfaceList(Pageable pageable, String searchName) {
|
||||
Page<InflowControlServiceDto> dtoList = service.findAllForInterface(pageable, searchName);
|
||||
public Page<InflowControlManUI> selectInterfaceList(Pageable pageable, String searchName, String searchUseYn) {
|
||||
Page<InflowControlServiceDto> dtoList = service.findAllForInterface(pageable, searchName, searchUseYn);
|
||||
return dtoList.map(mapper::toVo);
|
||||
}
|
||||
|
||||
@@ -118,8 +120,8 @@ public class InflowControlManService extends BaseService {
|
||||
|
||||
|
||||
// 클라이언트 유량제어
|
||||
public Page<InflowControlManUI> selectClientList(Pageable pageable, String searchName) {
|
||||
Page<InflowControlServiceDto> dtoList = service.findAllForClient(pageable, searchName);
|
||||
public Page<InflowControlManUI> selectClientList(Pageable pageable, String searchName, String searchUseYn) {
|
||||
Page<InflowControlServiceDto> dtoList = service.findAllForClient(pageable, searchName, searchUseYn);
|
||||
return dtoList.map(mapper::toVo);
|
||||
}
|
||||
|
||||
@@ -181,9 +183,12 @@ public class InflowControlManService extends BaseService {
|
||||
serverStatus.put("serverPort", serverPort);
|
||||
|
||||
try {
|
||||
String url = String.format("http://%s:%s/manage/inflow/%s/%s/bucket-status",
|
||||
serverIp, serverPort, target, targetId);
|
||||
ResponseEntity<Map> response = restTemplate.getForEntity(url, Map.class);
|
||||
URI uri = UriComponentsBuilder.fromHttpUrl(String.format("http://%s:%s/manage/inflow", serverIp, serverPort))
|
||||
.pathSegment(target, targetId, "bucket-status")
|
||||
.build()
|
||||
.encode()
|
||||
.toUri();
|
||||
ResponseEntity<Map> response = restTemplate.getForEntity(uri, Map.class);
|
||||
|
||||
if (response.getBody() != null && Boolean.TRUE.equals(response.getBody().get("success"))) {
|
||||
serverStatus.put("status", "online");
|
||||
|
||||
+2
-2
@@ -42,8 +42,8 @@ public class InflowInterfaceControlManController extends OnlBaseAnnotationContro
|
||||
|
||||
@RequestMapping(value = "/onl/admin/inflow/inflowInterfaceControlMan.json", params = "cmd=LIST")
|
||||
public ResponseEntity<GridResponse<InflowControlManUI>> selectList(HttpServletRequest request, Pageable pageVo,
|
||||
String searchName) {
|
||||
Page<InflowControlManUI> uiPage = service.selectInterfaceList(pageVo, searchName);
|
||||
String searchName, String searchUseYn) {
|
||||
Page<InflowControlManUI> uiPage = service.selectInterfaceList(pageVo, searchName, searchUseYn);
|
||||
return ResponseEntity.ok(new GridResponse<>(uiPage));
|
||||
}
|
||||
|
||||
|
||||
@@ -676,6 +676,7 @@ public class ApiSpecManService {
|
||||
return "integer";
|
||||
case "DECIMAL":
|
||||
case "DOUBLE":
|
||||
case "BIGDECIMAL":
|
||||
return "number";
|
||||
case "BOOLEAN":
|
||||
return "boolean";
|
||||
|
||||
Reference in New Issue
Block a user