diff --git a/src/main/java/com/snp/batch/jobs/compliance/batch/config/ComplianceImportRangeJobConfig.java b/src/main/java/com/snp/batch/jobs/compliance/batch/config/ComplianceImportRangeJobConfig.java index 1298b16..130cab7 100644 --- a/src/main/java/com/snp/batch/jobs/compliance/batch/config/ComplianceImportRangeJobConfig.java +++ b/src/main/java/com/snp/batch/jobs/compliance/batch/config/ComplianceImportRangeJobConfig.java @@ -43,7 +43,7 @@ public class ComplianceImportRangeJobConfig extends BaseMultiStepJobConfig { +public class EventImportJobConfig extends BaseMultiStepJobConfig { private final JdbcTemplate jdbcTemplate; private final WebClient maritimeApiWebClient; @@ -32,6 +36,10 @@ public class EventImportJobConfig extends BaseJobConfig createReader() { return new EventDataReader(maritimeApiWebClient, jdbcTemplate, batchDateService); @@ -85,4 +101,25 @@ public class EventImportJobConfig extends BaseJobConfig { + log.info(">>>>> 모든 스텝 성공: BATCH_LAST_EXECUTION 업데이트 시작"); + + jdbcTemplate.execute(getBatchUpdateSql()); + + log.info(">>>>> BATCH_LAST_EXECUTION 업데이트 완료"); + return RepeatStatus.FINISHED; + }; + } + @Bean(name = "EventLastExecutionUpdateStep") + public Step eventLastExecutionUpdateStep() { + return new StepBuilder("EventLastExecutionUpdateStep", jobRepository) + .tasklet(eventLastExecutionUpdateTasklet(), transactionManager) + .build(); + } + } diff --git a/src/main/java/com/snp/batch/jobs/event/batch/reader/EventDataReader.java b/src/main/java/com/snp/batch/jobs/event/batch/reader/EventDataReader.java index aae9195..c1e0cfd 100644 --- a/src/main/java/com/snp/batch/jobs/event/batch/reader/EventDataReader.java +++ b/src/main/java/com/snp/batch/jobs/event/batch/reader/EventDataReader.java @@ -44,7 +44,7 @@ public class EventDataReader extends BaseApiReader { } protected String getApiKey() { - return "EVENT_IMPORT_JOB"; + return "EVENT_IMPORT_API"; } // 배치 처리 상태 @@ -66,7 +66,7 @@ public class EventDataReader extends BaseApiReader { log.info("Event API 호출"); EventResponse response = callEventApiWithBatch(); // 2-1. Event List 에서 EventID List 추출 - // TODO: 2-2. Event List 에서 Map> 추출 + // 2-2. Event List 에서 Map> 추출 eventIds = extractEventIdList(response); log.info("EvnetId List 추출 완료 : {} 개", eventIds.size()); @@ -168,11 +168,6 @@ public class EventDataReader extends BaseApiReader { int totalBatches = (int) Math.ceil((double) eventIds.size() / batchSize); try { if (data == null) { - // 3. ✨ 배치 성공 시 상태 업데이트 (트랜잭션 커밋 직전에 실행) - LocalDate successDate = LocalDate.now(); // 현재 배치 실행 시점의 날짜 (Reader의 toDay와 동일한 값) - batchDateService.updateLastSuccessDate(getApiKey(), successDate); - log.info("batch_last_execution update 완료 : {}", getApiKey()); - log.info("[{}] 전체 {} 개 배치 처리 완료", getReaderName(), totalBatches); log.info("[{}] 총 {} 개의 Event ID에 대한 API 호출 종료", getReaderName(), eventIds.size()); diff --git a/src/main/java/com/snp/batch/jobs/event/batch/repository/EventRepositoryImpl.java b/src/main/java/com/snp/batch/jobs/event/batch/repository/EventRepositoryImpl.java index 5cbe1e0..687f56e 100644 --- a/src/main/java/com/snp/batch/jobs/event/batch/repository/EventRepositoryImpl.java +++ b/src/main/java/com/snp/batch/jobs/event/batch/repository/EventRepositoryImpl.java @@ -47,7 +47,7 @@ public class EventRepositoryImpl extends BaseJdbcRepository { private final EventRepository eventRepository; - protected String getApiKey() {return "EVENT_IMPORT_JOB";} public EventDataWriter(EventRepository eventRepository) { super("EventRepository"); this.eventRepository = eventRepository; diff --git a/src/main/java/com/snp/batch/jobs/risk/batch/config/RiskImportRangeJobConfig.java b/src/main/java/com/snp/batch/jobs/risk/batch/config/RiskImportRangeJobConfig.java index 7b1d2f0..0086faf 100644 --- a/src/main/java/com/snp/batch/jobs/risk/batch/config/RiskImportRangeJobConfig.java +++ b/src/main/java/com/snp/batch/jobs/risk/batch/config/RiskImportRangeJobConfig.java @@ -38,7 +38,8 @@ public class RiskImportRangeJobConfig extends BaseMultiStepJobConfig