OBP GwMetric 조회범위 제한 설정
This commit is contained in:
@@ -2,6 +2,9 @@ package com.eactive.eai.rms.data.entity.onl.apim.obp;
|
||||
|
||||
import com.eactive.apim.portal.obp.entity.ObpGwMetric;
|
||||
import com.eactive.apim.portal.obp.repository.ObpGwMetricRepository;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -50,6 +53,24 @@ public class ObpGwMetricService {
|
||||
return repository.findByTimesliceGreaterThanEqual(timeslice);
|
||||
}
|
||||
|
||||
/**
|
||||
* 특정 시간대 이후의 GwMetric 데이터 조회 (row 수 제한)
|
||||
*
|
||||
* @param timeslice 조회 시작 시간대
|
||||
* @param limit 최대 조회 건수 (0이면 무제한)
|
||||
* @return 조회된 지표 목록 (timeslice ASC 정렬)
|
||||
*/
|
||||
public List<ObpGwMetric> findByTimesliceGreaterThanEqual(LocalDateTime timeslice, int limit) {
|
||||
if (limit <= 0) {
|
||||
// 무제한 조회 (기존 동작 유지)
|
||||
return repository.findByTimesliceGreaterThanEqual(timeslice);
|
||||
} else {
|
||||
// 제한적 조회 (timeslice ASC 정렬 + limit)
|
||||
Pageable pageable = PageRequest.of(0, limit, Sort.by(Sort.Order.asc("timeslice")));
|
||||
return repository.findByTimesliceGreaterThanEqual(timeslice, pageable);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 엔티티 저장 (INSERT 또는 UPDATE)
|
||||
*/
|
||||
|
||||
@@ -55,7 +55,7 @@ public class ObpGwMetricController extends BaseRestController {
|
||||
produces = JSON_CONTENT_TYPE
|
||||
)
|
||||
@ResponseBody
|
||||
public String getGwMetricsAfterTimesliceV2(
|
||||
public String getGwMetricsAfterTimeslice(
|
||||
@PathVariable("timeslice") String timeslice,
|
||||
@PathVariable("providerCode") String providerCode,
|
||||
@RequestParam(value = "pretty", required = false) Boolean pretty) {
|
||||
|
||||
@@ -10,6 +10,7 @@ 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.ext.kjb.common.KjbPropertyHolder;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
@@ -314,12 +315,27 @@ public class ObpGwMetricManService extends BaseService {
|
||||
/**
|
||||
* 특정 시간대 이후의 GwMetric 데이터 조회 (REST API용)
|
||||
* after-timeslice 엔드포인트에서 사용
|
||||
*
|
||||
* <p>조회 범위 제한:</p>
|
||||
* <ul>
|
||||
* <li>pageSize 값을 KjbProperty.apiGwMetricPageSize에서 읽어옴 (기본값: 10000)</li>
|
||||
* <li>0일 경우 무제한 조회</li>
|
||||
* <li>정렬: timeslice ASC (오래된 데이터부터 반환)</li>
|
||||
* </ul>
|
||||
*/
|
||||
public List<ObpGwMetricDTO> findByTimesliceAfter(LocalDateTime timeslice) {
|
||||
DataSourceContextHolder.setDataSourceType(
|
||||
DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.MONITORING));
|
||||
|
||||
List<ObpGwMetric> entities = obpGwMetricService.findByTimesliceGreaterThanEqual(timeslice);
|
||||
// KjbProperty에서 pageSize 읽기
|
||||
Integer pageSize = KjbPropertyHolder.get().getApiGwMetricPageSize();
|
||||
if (pageSize == null) {
|
||||
pageSize = 10000; // 기본값 (null 안전 처리)
|
||||
}
|
||||
|
||||
// Service 호출 (limit 적용)
|
||||
List<ObpGwMetric> entities = obpGwMetricService.findByTimesliceGreaterThanEqual(timeslice, pageSize);
|
||||
|
||||
return entities.stream()
|
||||
.map(ObpGwMetricDTO::from)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Reference in New Issue
Block a user