From b77d09f258ef7d5458f61ff1a90d1a686cb2f181 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期三, 14 一月 2026 14:24:47 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/MainProcess.java | 105 +++++++++++++++++++---------------------------------
1 files changed, 39 insertions(+), 66 deletions(-)
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index b259c18..dfac3b1 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -1,102 +1,75 @@
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.generateStoreWrkFile(); // 缁勬墭
-// mainService.generateStoreWrkFile0(); // WMS鍏ュ簱
+ // 2. 绯荤粺杩愯鐘舵�佸垽鏂�
+ if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
+ // 闃叉蹇欑瓑 (Busy-wait optimization)
+ Thread.sleep(1000);
+ continue;
+ }
- // 闂撮殧
- Thread.sleep(500);
+ // 3. 鎵ц涓绘祦绋�
+ mainProcessPluginApi.run();
- //鍒濆鍖栧疄鏃跺湴鍥�
- mainService.initRealtimeBasMap();
- // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
- mainService.stnToCrnStnPick();
- // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱(325銆�331銆�333銆�339)
- mainService.stnToCrnStnPick2();
- // 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
- mainService.shuttleInExecute();
- // 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
- mainService.shuttleOutExecute();
- //鍥涘悜绌挎杞︿换鍔″畬鎴�
- mainService.shuttleFinished();
- //鎻愬崌鏈轰换鍔�
- mainService.liftIoExecute();
- //鎻愬崌鏈轰换鍔″畬鎴�
- mainService.liftFinished();
- //搴撲綅绉昏浆
- mainService.locToLocExecute();
- //鎵ц灏忚溅绉诲簱浠诲姟
- mainService.shuttleMoveExecute();
- // 寮傚父淇℃伅璁板綍
- mainService.recErr();
- // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
- mainService.storeEmptyPlt();
- // AGV琛ヨ揣 => 鐢熸垚鍏ュ簱閫氱煡妗�
- mainService.robotGenerateAgvTask();
- // AGV琛ヨ揣(鏈烘鑷傛嫞鏂�)
- mainService.agvRestockByRobot();
- // AGV琛ヨ揣(閫氱煡AGV鍙栬揣)
- mainService.agvRestockInto();
- // AGV琛ヨ揣(鎮寕绾块�氱煡AGV鍙栬揣)
- mainService.agvRestockIntoByHangingWire();
- // 300绔欐嫞鏂�
- mainService.pick300();
- // 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
- mainService.ledExecute();
- // 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
- mainService.ledReset();
- // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢�
- mainService.loopShuttleCharge();
- mainService.executeShuttleCharge();
-
- // 闂撮殧
+ // 4. 闂撮殧
Thread.sleep(200);
+
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Error in MainProcess execution loop", e);
}
}
});
+ thread.setName("MainProcess");
+ thread.setDaemon(true);
thread.start();
}
--
Gitblit v1.9.1