From aa151079c2d02047f6cb5f8ad56ff92b98544e99 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期三, 14 一月 2026 08:30:49 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/MainProcess.java | 115 ++++++++++++++++++++++++---------------------------------
1 files changed, 49 insertions(+), 66 deletions(-)
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 555c5f1..70f7954 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -1,102 +1,85 @@
package com.zy.core;
-import com.zy.asrs.service.impl.MainServiceImpl;
+import com.core.common.SpringUtils;
+import com.zy.core.plugin.api.MainProcessPluginApi;
import com.zy.core.properties.SystemProperties;
-import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
-
import javax.annotation.PreDestroy;
/**
* WCS涓绘祦绋�
- * Created by vincent on 2020/8/6
*/
-@Data
@Slf4j
@Component
public class MainProcess {
- @Autowired
- private MainServiceImpl mainService;
+ @Value("${mainProcessPlugin}")
+ private String mainProcessPlugin;
+ private MainProcessPluginApi mainProcessPluginApi;
// 鎵�灞炵嚎绋�
- private Thread thread;
- // 棰戠巼
- private int i = 0;
+ private volatile Thread thread;
/**
* =====>> 寮�濮嬪伐浣�
*/
- public void start(){
+ public void start() {
+ if (thread != null && thread.isAlive()) {
+ log.warn("MainProcess is already running.");
+ return;
+ }
+
thread = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
try {
+ // 1. 鍔犺浇鎻掍欢
+ if (mainProcessPluginApi == null) {
+ try {
+ String className = mainProcessPlugin.contains(".") ? mainProcessPlugin : "com.zy.core.plugin." + mainProcessPlugin;
+ Class<? extends MainProcessPluginApi> clazz = Class.forName(className).asSubclass(MainProcessPluginApi.class);
+ mainProcessPluginApi = SpringUtils.getBean(clazz);
+ } catch (Exception e) {
+ log.error("Failed to load mainProcessPlugin: {}", mainProcessPlugin, e);
+ }
+ }
- // 闂撮殧
- Thread.sleep(300);
-
- // 绯荤粺杩愯鐘舵�佸垽鏂�
- if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
+ // 濡傛灉鍔犺浇澶辫触锛岀瓑寰呭悗閲嶈瘯锛岄槻姝㈢┖鎸囬拡
+ if (mainProcessPluginApi == null) {
+ Thread.sleep(3000);
continue;
}
-// // 婕旂ず
-// mainService.demo();
+ // 2. 绯荤粺杩愯鐘舵�佸垽鏂�
+ if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
+ // 闃叉蹇欑瓑 (Busy-wait optimization)
+ Thread.sleep(1000);
+ continue;
+ }
- // 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
- mainService.generateStoreWrkFile(); // 缁勬墭
-// mainService.generateStoreWrkFile0(); // WMS鍏ュ簱
+ // 3. 鎵ц涓绘祦绋�
+ mainProcessPluginApi.run();
- // 闂撮殧
- Thread.sleep(500);
-
- //鍒濆鍖栧疄鏃跺湴鍥�
- mainService.initRealtimeBasMap();
-// //浠巖edis涓噸鍚换鍔�
-// mainService.restartTaskFromRedis();
- // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
- mainService.stnToCrnStnPick();
-// // 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
-// mainService.shuttleIoInExecute();
-// // 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
-// mainService.shuttleIoOutExecute();
-// //鍥涘悜绌挎杞︿换鍔″畬鎴�
-// mainService.shuttleFinished();
- //鎻愬崌鏈轰换鍔�
- mainService.liftIoExecute();
- //鎻愬崌鏈轰换鍔″畬鎴�
- mainService.liftFinished();
- //搴撲綅绉昏浆
- mainService.locToLocExecute();
- //鎵ц灏忚溅绉诲簱浠诲姟
- mainService.shuttleMoveExecute();
-// // 寮傚父淇℃伅璁板綍
-// mainService.recErr();
- // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
- mainService.storeEmptyPlt();
- // 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
- mainService.ledExecute();
- // 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
- mainService.ledReset();
- // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢�
-// mainService.loopShuttleCharge();
-// mainService.executeShuttleCharge();
-
-// //鍑哄叆搴撴ā寮�
-// i++;
-// if (i > 1) {
-// mainService.outAndIn();
-// i = 0;
-// }
-
- // 闂撮殧
+ // 4. 闂撮殧
Thread.sleep(200);
+
+ } catch (InterruptedException ie) {
+ log.info("MainProcess thread interrupted, stopping...");
+ Thread.currentThread().interrupt();
+ break;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Error in MainProcess execution loop", e);
+ try {
+ // 閬垮厤寮傚父瀵艰嚧鐨勭媯鍒锋棩蹇�
+ Thread.sleep(1000);
+ } catch (InterruptedException ex) {
+ Thread.currentThread().interrupt();
+ }
}
}
});
+ thread.setName("MainProcess");
+ thread.setDaemon(true);
thread.start();
}
--
Gitblit v1.9.1