From ef3ad91defc687ff1c553e22c0d87112139c57d0 Mon Sep 17 00:00:00 2001 From: ahah525 Date: Mon, 7 Nov 2022 22:27:12 +0900 Subject: [PATCH] =?UTF-8?q?#29=20-=20Refactor:=20=EC=9E=A5=EC=95=A0=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=EC=9D=84=20=EA=B3=A0=EB=A0=A4=ED=95=B4=20Job?= =?UTF-8?q?Parameters(year,month)=EB=A1=9C=20=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EB=A7=A4=EC=9D=BC=20=EC=98=A4=EC=A0=84=204=EC=8B=9C=EC=97=90?= =?UTF-8?q?=20=EB=B0=B0=EC=B9=98=EC=8B=A4=ED=96=89=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EA=B2=83=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MakeRebateOrderItemJobConfig.java | 14 +++--------- .../mutbooks/scheduler/JobScheduler.java | 22 +++++++++++++------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/3Week_Mission/mutbooks/src/main/java/com/example/mutbooks/job/makeRebateOrderItem/MakeRebateOrderItemJobConfig.java b/3Week_Mission/mutbooks/src/main/java/com/example/mutbooks/job/makeRebateOrderItem/MakeRebateOrderItemJobConfig.java index e8b830d..b415498 100644 --- a/3Week_Mission/mutbooks/src/main/java/com/example/mutbooks/job/makeRebateOrderItem/MakeRebateOrderItemJobConfig.java +++ b/3Week_Mission/mutbooks/src/main/java/com/example/mutbooks/job/makeRebateOrderItem/MakeRebateOrderItemJobConfig.java @@ -68,20 +68,12 @@ public Step makeRebateOrderItemStep1( @StepScope @Bean public RepositoryItemReader orderItemReader( - @Value("#{jobParameters[createDate]}") String createDateStr + @Value("#{jobParameters[year]}") int year, + @Value("#{jobParameters[month]}") int month ) { log.info("orderItemReader 실행"); + log.info("%d-%d".formatted(year, month)); // 1. 정산 데이터를 생성할 날짜 범위 구하기 - // 이번 달 15일에 생성해야하는 정산 데이터 날짜 범위 = 저번 달 1일 ~ 말일 - LocalDateTime createDate = Ut.date.parse(createDateStr); -// LocalDateTime targetDate = createDate.minusMonths(1); - LocalDateTime targetDate = createDate; - - log.info(String.valueOf(createDate)); - log.info(String.valueOf(targetDate)); - - int year = targetDate.getYear(); - int month = targetDate.getMonthValue(); int endDay = Ut.date.getEndDay(year, month); LocalDateTime startOfDay = Ut.date.getStartOfDay(year, month, 1); // 해당일자의 시작일시 LocalDateTime endOfDay = Ut.date.getEndOfDay(year, month, endDay); // 해당일자의 종료일시 diff --git a/3Week_Mission/mutbooks/src/main/java/com/example/mutbooks/scheduler/JobScheduler.java b/3Week_Mission/mutbooks/src/main/java/com/example/mutbooks/scheduler/JobScheduler.java index 4284b2f..7cecd7f 100644 --- a/3Week_Mission/mutbooks/src/main/java/com/example/mutbooks/scheduler/JobScheduler.java +++ b/3Week_Mission/mutbooks/src/main/java/com/example/mutbooks/scheduler/JobScheduler.java @@ -1,7 +1,6 @@ package com.example.mutbooks.scheduler; import com.example.mutbooks.job.makeRebateOrderItem.MakeRebateOrderItemJobConfig; -import com.example.mutbooks.util.Ut; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.batch.core.Job; @@ -28,18 +27,18 @@ public class JobScheduler { private final MakeRebateOrderItemJobConfig makeRebateOrderItemJobConfig; private final Job makeRebateOrderItemJob; // 빈으로 등록한 Job 을 주입받아 사용 - //매 분 00초마다 실행 - @Scheduled(cron = "0 * * * * *") - // 매달 15일 오전 4시 0분 0초마다 Job 실행 -// @Scheduled(cron = "0 0 4 15 * *") + // 매달 15일 오전 4시에 Job 실행해야하지만, 오류를 고려하여 매일 오전 4시에 실행 +// @Scheduled(cron = "0 0 4 * * *") // TODO: 운영시 주석 해제 + @Scheduled(cron = "30 * * * * *") // 개발용(매분 30초마다 실행) public void runJob() { log.info("scheduler 실행 " + String.valueOf(LocalDateTime.now())); // 현재 일시 LocalDateTime -> String 변환한 값을 Job Parameter 에 담기 Map confMap = new HashMap<>(); - String createDateStr = Ut.date.format(LocalDateTime.now()); - confMap.put("createDate", new JobParameter(createDateStr)); + LocalDateTime rebateDate = getMakeRebateDataDateTime(); + confMap.put("year", new JobParameter((long) rebateDate.getYear())); + confMap.put("month", new JobParameter((long) rebateDate.getMonthValue())); JobParameters jobParameters = new JobParameters(confMap); try { @@ -54,4 +53,13 @@ public void runJob() { throw new RuntimeException(e); } } + + // jobParameter 값 생성 + public LocalDateTime getMakeRebateDataDateTime() { + // 정산 데이터 생성 날짜 범위(15일 이후 = 1달 전, 15일 이전 = 2달 전) + // TODO : 운영시 주석 해제 +// return LocalDateTime.now().getDayOfMonth() >= 15 ? +// LocalDateTime.now().minusMonths(1) : LocalDateTime.now().minusMonths(2); + return LocalDateTime.now(); // 개발용 + } }