|
|
|
|
@ -10,6 +10,7 @@ import tech.powerjob.worker.core.processor.TaskContext; |
|
|
|
|
import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
|
|
|
|
|
|
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 排产-排产定时任务 |
|
|
|
|
@ -24,9 +25,28 @@ public class SchedulingProcessor implements BasicProcessor { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public ProcessResult process(TaskContext context) throws Exception { |
|
|
|
|
log.info("排产定时任务开始"); |
|
|
|
|
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()->client.scheduling()); |
|
|
|
|
log.info("排产定时任务结束"); |
|
|
|
|
return new ProcessResult(true); |
|
|
|
|
log.info("排产定时任务开始,任务ID:{}", context.getTaskId()); // 增加任务ID便于排查
|
|
|
|
|
try { |
|
|
|
|
// 同步执行(或等待异步执行完成),避免任务提前返回
|
|
|
|
|
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(() -> { |
|
|
|
|
try { |
|
|
|
|
log.info("开始执行排产逻辑"); |
|
|
|
|
client.scheduling(); |
|
|
|
|
log.info("排产逻辑执行完成"); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("client.scheduling()执行异常", e); |
|
|
|
|
throw new RuntimeException(e); // 抛出异常让外层感知
|
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 等待异步任务完成(避免任务提前结束),可设置超时时间
|
|
|
|
|
runFuture.get(60, TimeUnit.MINUTES); // 假设排产最多执行60分钟,根据实际调整
|
|
|
|
|
|
|
|
|
|
log.info("排产定时任务结束"); |
|
|
|
|
return new ProcessResult(true); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("排产定时任务执行失败", e); |
|
|
|
|
return new ProcessResult(false); // 明确返回失败,避免框架重试
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|