로그조회시 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())) { if (StringUtils.isNotBlank(eaiLogSearch.getSearchGuid())) {
query query.where(qeaiLog.pguid.eq(eaiLogSearch.getSearchGuid()));
.where(qeaiLog.pguid.eq(eaiLogSearch.getSearchGuid()))
.where(qeaiLog.id.logprcssserno.eq(eaiLogSearch.getSearchLogPrcssSerno())); // 처리단계(logprcssserno)를 명시적으로 선택한 경우에만 추가로 좁힌다.
// 하나의 GUID는 처리단계(100/200/300/400)별로 여러 로그 행에 걸쳐 존재하므로,
// 선택하지 않았으면 해당 GUID의 모든 단계를 조회한다.
if (StringUtils.isNotBlank(eaiLogSearch.getSearchLogPrcssSerno())) {
query.where(qeaiLog.id.logprcssserno.eq(eaiLogSearch.getSearchLogPrcssSerno()));
}
return; return;
} }
@@ -13,6 +13,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.eactive.eai.common.util.UUIDGenerator;
import com.eactive.eai.data.RollingTable; import com.eactive.eai.data.RollingTable;
import com.eactive.eai.data.entity.onl.logger.EAILog; import com.eactive.eai.data.entity.onl.logger.EAILog;
import com.eactive.eai.data.entity.onl.logger.EAILogId; import com.eactive.eai.data.entity.onl.logger.EAILogId;
@@ -38,19 +39,36 @@ public class EAILogServiceImpl implements EAILogService {
@Override @Override
public Page<EAILogDto> findAll(Pageable pageable, EAILogSearch eaiLogSearch) { 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); EAILog eaiLog = (EAILog) applicationContext.getBean(RollingTable.class, EAILog.class, time);
Page<EAILogDto> eaiLogDtos = eaiLogRepository.findAll(eaiLog.getClass(), pageable, eaiLogSearch); Page<EAILogDto> eaiLogDtos = eaiLogRepository.findAll(eaiLog.getClass(), pageable, eaiLogSearch);
return eaiLogDtos; return eaiLogDtos;
} }
public Map<String, Long> getTransactionCounts(EAILogSearch eaiLogSearch) { 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); EAILog eaiLog = (EAILog) applicationContext.getBean(RollingTable.class, EAILog.class, time);
Map<String, Long> detailedCounts = eaiLogRepository.countDetailedTransactions(eaiLog.getClass(), eaiLogSearch); Map<String, Long> detailedCounts = eaiLogRepository.countDetailedTransactions(eaiLog.getClass(), eaiLogSearch);
return detailedCounts; 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 @Override
public EAILogDto getById(EAILogId eaiLogId) { public EAILogDto getById(EAILogId eaiLogId) {
long time = CommonUtil.getCalendar(eaiLogId.getMsgdpstyms()).getTimeInMillis(); long time = CommonUtil.getCalendar(eaiLogId.getMsgdpstyms()).getTimeInMillis();