From 14f2c4fce50c871d84f89d2dca2298e0892b4672 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 05 五月 2026 08:25:26 +0800
Subject: [PATCH] Merge branch 'rcs_master_1.0' into rcs_master_all
---
zy-acs-cv/src/main/java/com/zy/core/ConveyorBackgroundService.java | 91 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/zy-acs-cv/src/main/java/com/zy/core/ConveyorBackgroundService.java b/zy-acs-cv/src/main/java/com/zy/core/ConveyorBackgroundService.java
new file mode 100644
index 0000000..736f7c6
--- /dev/null
+++ b/zy-acs-cv/src/main/java/com/zy/core/ConveyorBackgroundService.java
@@ -0,0 +1,91 @@
+package com.zy.core;
+
+import com.zy.core.properties.CtuOperationConfig;
+import com.zy.core.properties.CtuServiceProperties;
+import com.zy.core.properties.SystemProperties;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+@Slf4j
+@Component
+public class ConveyorBackgroundService {
+
+ @Autowired
+ private ApplicationContext applicationContext;
+
+ @Autowired
+ private ConveyorOperationExecutor operationExecutor;
+
+ @Autowired
+ private CtuServiceProperties properties;
+
+ private ScheduledExecutorService executorService;
+
+ private final AtomicBoolean running = new AtomicBoolean(false);
+
+ @PostConstruct
+ public void init() {
+ // 鍒濆鍖栫嚎绋嬫睜
+ executorService = Executors.newSingleThreadScheduledExecutor(r -> {
+ Thread thread = new Thread(r);
+ thread.setName("cv-background-thread");
+ thread.setDaemon(true);
+ return thread;
+ });
+
+ // 鍚姩瀹氭椂浠诲姟
+ executorService.scheduleAtFixedRate(this::processConveyorTasks,
+ properties.getInitialDelay(),
+ properties.getInterval(),
+ TimeUnit.MILLISECONDS);
+ running.set(true);
+ log.info("杈撻�佺嚎鍚庡彴鏈嶅姟绾跨▼鍒濆鍖栧畬鎴�");
+ }
+
+ private void processConveyorTasks() {
+ // 绯荤粺杩愯鐘舵�佸垽鏂�
+ if (!SystemProperties.WCS_RUNNING_STATUS.get() || !running.get()) {
+ log.debug("绯荤粺鏈繍琛屾垨鏈嶅姟宸插仠姝紝璺宠繃杈撻�佺嚎浠诲姟澶勭悊");
+ return;
+ }
+
+ try {
+ // 鎵ц閰嶇疆鐨勬搷浣滃簭鍒�
+ for (CtuOperationConfig config : properties.getOperations()) {
+ //log.info("鎵ц杈撻�佺嚎鎿嶄綔: {}", config.getType());
+ operationExecutor.execute(config);
+ }
+
+ //log.info("杈撻�佺嚎浠诲姟澶勭悊瀹屾垚");
+ } catch (Exception e) {
+ log.error("杈撻�佺嚎浠诲姟澶勭悊寮傚父", e);
+ }
+ }
+
+ @PreDestroy
+ public void shutDown() {
+ running.set(false);
+ if (executorService != null && !executorService.isShutdown()) {
+ log.info("姝e湪鍏抽棴杈撻�佺嚎鍚庡彴鏈嶅姟绾跨▼...");
+ executorService.shutdown();
+ try {
+ if (!executorService.awaitTermination(5, TimeUnit.SECONDS)) {
+ executorService.shutdownNow();
+ }
+ } catch (InterruptedException e) {
+ executorService.shutdownNow();
+ Thread.currentThread().interrupt();
+ }
+ log.info("杈撻�佺嚎鍚庡彴鏈嶅姟绾跨▼宸插叧闂�");
+ }
+ }
+}
--
Gitblit v1.9.1