로그조회시 GUID입력시 다른 조건 무시
eapim-admin CI / build (push) Has been cancelled

This commit is contained in:
eastargh
2026-08-10 10:42:39 +09:00
parent f59de66d2c
commit 7ebbd7d9e4
2 changed files with 29 additions and 5 deletions
@@ -102,9 +102,15 @@ public class EAILogRepositoryImpl implements EAILogRepository {
}
if (StringUtils.isNotBlank(eaiLogSearch.getSearchGuid())) {
query
.where(qeaiLog.pguid.eq(eaiLogSearch.getSearchGuid()))
.where(qeaiLog.id.logprcssserno.eq(eaiLogSearch.getSearchLogPrcssSerno()));
query.where(qeaiLog.pguid.eq(eaiLogSearch.getSearchGuid()));
// 처리단계(logprcssserno)를 명시적으로 선택한 경우에만 추가로 좁힌다.
// 하나의 GUID는 처리단계(100/200/300/400)별로 여러 로그 행에 걸쳐 존재하므로,
// 선택하지 않았으면 해당 GUID의 모든 단계를 조회한다.
if (StringUtils.isNotBlank(eaiLogSearch.getSearchLogPrcssSerno())) {
query.where(qeaiLog.id.logprcssserno.eq(eaiLogSearch.getSearchLogPrcssSerno()));
}
return;
}
@@ -13,6 +13,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.eactive.eai.common.util.UUIDGenerator;
import com.eactive.eai.data.RollingTable;
import com.eactive.eai.data.entity.onl.logger.EAILog;
import com.eactive.eai.data.entity.onl.logger.EAILogId;
@@ -38,19 +39,36 @@ public class EAILogServiceImpl implements EAILogService {
@Override
public Page<EAILogDto> findAll(Pageable pageable, EAILogSearch eaiLogSearch) {
long time = CommonUtil.getCalendar(eaiLogSearch.getSearchStartTime()).getTimeInMillis();
long time = CommonUtil.getCalendar(resolveTableDate(eaiLogSearch)).getTimeInMillis();
EAILog eaiLog = (EAILog) applicationContext.getBean(RollingTable.class, EAILog.class, time);
Page<EAILogDto> eaiLogDtos = eaiLogRepository.findAll(eaiLog.getClass(), pageable, eaiLogSearch);
return eaiLogDtos;
}
public Map<String, Long> getTransactionCounts(EAILogSearch eaiLogSearch) {
long time = CommonUtil.getCalendar(eaiLogSearch.getSearchStartTime()).getTimeInMillis();
long time = CommonUtil.getCalendar(resolveTableDate(eaiLogSearch)).getTimeInMillis();
EAILog eaiLog = (EAILog) applicationContext.getBean(RollingTable.class, EAILog.class, time);
Map<String, Long> detailedCounts = eaiLogRepository.countDetailedTransactions(eaiLog.getClass(), eaiLogSearch);
return detailedCounts;
}
// GUID로 조회하는 경우, 대상 롤링 테이블을 검색시간이 아닌 GUID 자체에 포함된 시각으로 특정한다.
// GUID 포맷/오프셋은 UUIDGenerator.GUID_DATE_POSITION 기준.
private String resolveTableDate(EAILogSearch eaiLogSearch) {
String guid = eaiLogSearch.getSearchGuid();
if (StringUtils.isNotBlank(guid)) {
int start = UUIDGenerator.GUID_DATE_POSITION;
int end = start + 14; // yyyyMMddHHmmss
if (guid.length() >= end) {
return guid.substring(start, end);
}
}
return eaiLogSearch.getSearchStartTime();
}
@Override
public EAILogDto getById(EAILogId eaiLogId) {
long time = CommonUtil.getCalendar(eaiLogId.getMsgdpstyms()).getTimeInMillis();