From 759379dc382934a70aaf139ff9d671b36060a64f Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 12 Jul 2023 12:27:21 +0700 Subject: [PATCH] Create schedule cron tasks --- .../task/schedule/ScheduleTask.java | 57 +++++++++++++++++++ .../schedule/config/ScheduleTaskConfig.java | 27 +++++++++ 2 files changed, 84 insertions(+) create mode 100644 jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/ScheduleTask.java create mode 100644 jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/ScheduleTask.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/ScheduleTask.java new file mode 100644 index 00000000..74381968 --- /dev/null +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/ScheduleTask.java @@ -0,0 +1,57 @@ +package com.jasamedika.medifirst2000.task.schedule; + +import com.jasamedika.medifirst2000.service.KalenderService; +import com.jasamedika.medifirst2000.service.PegawaiJadwalKerjaService; +import com.jasamedika.medifirst2000.service.SlipGajiService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +/** + * @author Salman + * @since 12 Jul 2023 + */ +@Component +public class ScheduleTask { + + private static final Logger LOGGER = LoggerFactory.getLogger(ScheduleTask.class); + + @Autowired + private KalenderService kalenderService; + + @Autowired + private PegawaiJadwalKerjaService pegawaiJadwalKerjaService; + + @Autowired + private SlipGajiService slipGajiService; + + @Scheduled(cron = "0 0 23 L JUN ? 2034/1") + public void generateKalender() { + LOGGER.info("Generate kalender tahun {}", + LocalDate.now().plusYears(1).format(DateTimeFormatter.ofPattern("yyyy"))); + + kalenderService.generateAndSaveKalender(); + } + + @Scheduled(cron = "0 0 0 1 * ? *") + public void genarateJadwalPegawaiNonShift() { + LOGGER.info("Generate jadwal pegawai bulan {}", + LocalDate.now().format(DateTimeFormatter.ofPattern("MM-yyyy"))); + + pegawaiJadwalKerjaService.autoSaveJadwalKerjaNonShift(); + } + + @Scheduled(cron = "0 0 0 1 * ? *") + public void initiateSlipGaji() { + LOGGER.info("Initiate template slip gaji bulan {}", + LocalDate.now().format(DateTimeFormatter.ofPattern("MM-yyyy"))); + + slipGajiService.init(); + } + +} diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java new file mode 100644 index 00000000..bd9e3826 --- /dev/null +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java @@ -0,0 +1,27 @@ +package com.jasamedika.medifirst2000.task.schedule.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; + +/** + * @author Salman + * @since 12 Jul 2023 + */ +@Configuration +@EnableScheduling +@ComponentScan("com.jasamedika.medifirst2000.task") +public class ScheduleTaskConfig { + + @Bean + public TaskScheduler taskScheduler() { + ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); + threadPoolTaskScheduler.setPoolSize(5); + threadPoolTaskScheduler.setThreadNamePrefix("ThreadPoolTaskScheduler"); + return threadPoolTaskScheduler; + } + +}