Add Compliance History Value Change Manage Step

This commit is contained in:
hyojin kim 2025-12-31 09:59:25 +09:00
부모 020f16035b
커밋 1d2a3c53c8

파일 보기

@ -26,6 +26,12 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.web.reactive.function.client.WebClient;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Map;
@Slf4j
@Configuration
public class ComplianceImportRangeJobConfig extends BaseMultiStepJobConfig<ComplianceDto, ComplianceEntity> {
@ -76,7 +82,8 @@ public class ComplianceImportRangeJobConfig extends BaseMultiStepJobConfig<Compl
return jobBuilder
.start(complianceImportRangeStep()) // 1단계 실행
.next(currentComplianceUpdateStep()) // 2단계 실행 (1단계 실패 실행 )
.next(complianceLastExecutionUpdateStep()) // 3단계: 모두 완료 , BATCH_LAST_EXECUTION 마지막 성공일자 업데이트
.next(complianceHistoryValueChangeManageStep()) // 3단계 실행 (2단계 실패 실행 )
.next(complianceLastExecutionUpdateStep()) // 4단계: 모두 완료 , BATCH_LAST_EXECUTION 마지막 성공일자 업데이트
.build();
}
@ -132,7 +139,44 @@ public class ComplianceImportRangeJobConfig extends BaseMultiStepJobConfig<Compl
}
/**
* 3단계: 모든 스텝 성공 배치 실행 로그(날짜) 업데이트
* 3단계: Compliance History Value Change 관리
*/
@Bean
public Tasklet complianceHistoryValueChangeManageTasklet() {
return (contribution, chunkContext) -> {
log.info(">>>>> Compliance History Value Change Manage 프로시저 호출 시작");
// 1. 입력 포맷 타겟 포맷 정의
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SS'Z'");
DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
Map<String, String> params = batchDateService.getRiskComplianceApiDateParams(getApiKey());
// 2. String -> LocalDateTime (또는 OffsetDateTime) -> String 변환
String rawFromDate = params.get("fromDate");
String rawToDate = params.get("toDate");
String startDt = LocalDateTime.parse(rawFromDate, inputFormatter).format(targetFormatter);
String endDt = LocalDateTime.parse(rawToDate, inputFormatter).format(targetFormatter);
log.info("Compliance History Value Change Manage 프로시저 변수 : 시작일: {}, 종료일: {}", startDt, endDt);
// 3. 프로시저 호출 (SQL 인젝션 방지를 위해 Prepared Statement 방식 권장)
jdbcTemplate.execute(String.format("CALL snp.sp_sync_compliance_history('%s', '%s')", startDt, endDt));
log.info(">>>>> Compliance History Value Change Manage 프로시저 호출 완료");
return RepeatStatus.FINISHED;
};
}
@Bean(name = "ComplianceHistoryValueChangeManageStep")
public Step complianceHistoryValueChangeManageStep() {
return new StepBuilder("ComplianceHistoryValueChangeManageStep", jobRepository)
.tasklet(complianceHistoryValueChangeManageTasklet(), transactionManager)
.build();
}
/**
* 4단계: 모든 스텝 성공 배치 실행 로그(날짜) 업데이트
*/
@Bean
public Tasklet complianceLastExecutionUpdateTasklet() {