From ec963aa4bc7fdf9a5d725b54965ce3f405148f1c Mon Sep 17 00:00:00 2001 From: cha Date: Thu, 17 Jul 2025 08:47:55 +0900 Subject: [PATCH 1/2] =?UTF-8?q?job=20=EC=9C=84=EC=B9=98=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qcast/batch/JobLauncherController.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/interplug/qcast/batch/JobLauncherController.java b/src/main/java/com/interplug/qcast/batch/JobLauncherController.java index eb4fd3d5..f9a904d0 100644 --- a/src/main/java/com/interplug/qcast/batch/JobLauncherController.java +++ b/src/main/java/com/interplug/qcast/batch/JobLauncherController.java @@ -170,31 +170,35 @@ public class JobLauncherController { * 공통 스케줄러 실행 메소드 */ private String executeScheduledJob(String jobName) { + // 1. 가장 먼저 스케줄러 설정 확인 + if (!"Y".equals(scheduler) && !"materialJob".equals(jobName) && !"commonCodeJob".equals(jobName)) { + log.info("Scheduler disabled, skipping job {}", jobName); + return "Scheduler disabled"; + } + + // 2. Job 존재 확인 Job job = jobs.get(jobName); if (job == null) { log.error("Job {} not found", jobName); return "Job " + jobName + " not found"; } - if (!"Y".equals(scheduler) && !"materialJob".equals(jobName) && !"commonCodeJob".equals(jobName)) { - log.info("Scheduler disabled, skipping job {}", jobName); - return "Scheduler disabled"; - } - - // 실행 중인 Job 확인 - if (runningJobs.contains(jobName) || isJobRunning(jobName)) { - log.warn("Job {} is already running, skipping execution", jobName); - return "Job already running"; - } - - // 다른 Job이 실행 중인지 확인 + // 3. 다른 Job 실행 중인지 확인 if (isAnyJobRunning()) { log.warn("Another job is running, skipping job {}", jobName); return "Another job is running"; } + // 4. 같은 Job이 실행 중인지 확인 + if (runningJobs.contains(jobName) || isJobRunning(jobName)) { + log.warn("Job {} is already running", jobName); + return "Job already running"; + } + + // 5. Job 실행 try { runningJobs.add(jobName); + log.info("Starting job {}", jobName); JobParameters jobParameters = new JobParametersBuilder() .addDate("time", new Date()) From c2a0189f8ecb3818a5b18044512266ed4ff13731 Mon Sep 17 00:00:00 2001 From: cha Date: Thu, 17 Jul 2025 08:48:47 +0900 Subject: [PATCH 2/2] @EqualsAndHashCode(callSuper = false) --- .../interplug/qcast/biz/displayItem/dto/BomSyncResponse.java | 2 ++ .../interplug/qcast/biz/displayItem/dto/ItemSyncResponse.java | 2 ++ .../qcast/biz/displayItem/dto/PriceItemSyncResponse.java | 2 ++ .../interplug/qcast/biz/displayItem/dto/PriceSyncResponse.java | 2 ++ 4 files changed, 8 insertions(+) diff --git a/src/main/java/com/interplug/qcast/biz/displayItem/dto/BomSyncResponse.java b/src/main/java/com/interplug/qcast/biz/displayItem/dto/BomSyncResponse.java index a8fe8d05..8e109306 100644 --- a/src/main/java/com/interplug/qcast/biz/displayItem/dto/BomSyncResponse.java +++ b/src/main/java/com/interplug/qcast/biz/displayItem/dto/BomSyncResponse.java @@ -3,8 +3,10 @@ package com.interplug.qcast.biz.displayItem.dto; import com.interplug.qcast.util.DefaultResponse; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; /** Bom 아이템 동기화 Response */ +@EqualsAndHashCode(callSuper = true) @Data public class BomSyncResponse extends DefaultResponse { diff --git a/src/main/java/com/interplug/qcast/biz/displayItem/dto/ItemSyncResponse.java b/src/main/java/com/interplug/qcast/biz/displayItem/dto/ItemSyncResponse.java index 14589ee4..df303391 100644 --- a/src/main/java/com/interplug/qcast/biz/displayItem/dto/ItemSyncResponse.java +++ b/src/main/java/com/interplug/qcast/biz/displayItem/dto/ItemSyncResponse.java @@ -3,8 +3,10 @@ package com.interplug.qcast.biz.displayItem.dto; import com.interplug.qcast.util.DefaultResponse; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; /** 아이템 동기화 Response */ +@EqualsAndHashCode(callSuper = false) @Data public class ItemSyncResponse extends DefaultResponse { @Schema(description = "Material Number") diff --git a/src/main/java/com/interplug/qcast/biz/displayItem/dto/PriceItemSyncResponse.java b/src/main/java/com/interplug/qcast/biz/displayItem/dto/PriceItemSyncResponse.java index 8160d17c..c7d33b68 100644 --- a/src/main/java/com/interplug/qcast/biz/displayItem/dto/PriceItemSyncResponse.java +++ b/src/main/java/com/interplug/qcast/biz/displayItem/dto/PriceItemSyncResponse.java @@ -3,8 +3,10 @@ package com.interplug.qcast.biz.displayItem.dto; import com.interplug.qcast.util.DefaultResponse; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; /** 아이템 동기화 Response */ +@EqualsAndHashCode(callSuper = false) @Data public class PriceItemSyncResponse extends DefaultResponse { @Schema(description = "Price Pattern(정가 : 510,.A가격 : 513, C가격 : 514)") diff --git a/src/main/java/com/interplug/qcast/biz/displayItem/dto/PriceSyncResponse.java b/src/main/java/com/interplug/qcast/biz/displayItem/dto/PriceSyncResponse.java index 4dc07ee5..afcbdefa 100644 --- a/src/main/java/com/interplug/qcast/biz/displayItem/dto/PriceSyncResponse.java +++ b/src/main/java/com/interplug/qcast/biz/displayItem/dto/PriceSyncResponse.java @@ -4,8 +4,10 @@ import com.interplug.qcast.util.DefaultResponse; import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; import lombok.Data; +import lombok.EqualsAndHashCode; /** 가격 동기화 Response */ +@EqualsAndHashCode(callSuper = false) @Data public class PriceSyncResponse extends DefaultResponse {