From eb519c38628c40669a63fa2e34f5aae876faecf9 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 21 七月 2025 16:10:58 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java | 130 ++++++++++++++++++++++++++++++++
src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java | 6
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 93 -----------------------
3 files changed, 133 insertions(+), 96 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 69a2f13..cd2efe4 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -432,99 +432,6 @@
}
/**
- * 鍥涘悜绌挎杞︿换鍔″畬鎴�
- */
- public synchronized void shuttleFinished() {
- try {
- List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
- .eq("device_type", String.valueOf(SlaveType.Shuttle)));
- for (DeviceConfig device : shuttleList) {
- //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- continue;
- }
-
- //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭銆佸皬杞﹀浜庣┖闂茬姸鎬�
- if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭
- && shuttleProtocol.getTaskNo() != 0
- ) {
- //灏嗕换鍔℃。鏍囪涓哄畬鎴�
- WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo());
- if (wrkMast != null) {
- if (wrkMast.getWrkSts() == WrkStsType.INBOUND_SHUTTLE_RUN.sts) {
- //5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚
- wrkMast.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts);
- shuttleThread.setSyncTaskNo(0);
- } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_SHUTTLE_RUN.sts) {
- //102.灏忚溅鎼繍涓� ==> 103.灏忚溅鎼繍瀹屾垚
- wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts);
- shuttleThread.setSyncTaskNo(0);
- } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_NEARBY.sts) {
- //302.灏忚溅绉诲姩鑷宠繎鐐逛腑 ==> 303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴�
- wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);
- shuttleThread.setSyncTaskNo(0);
- } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT.sts) {
- //304.灏忚溅杩佸叆鎻愬崌鏈轰腑 ==> 305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴�
- wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_COMPLETE.sts);
- shuttleThread.setSyncTaskNo(0);
- } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT.sts) {
- //308.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴�
- if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
- continue;//灏忚溅鏈埌杈剧洰鏍囧眰
- }
- wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);
- shuttleThread.setSyncTaskNo(0);
- } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_SHUTTLE.sts) {
- //310.灏忚溅绉诲姩涓� ==> 311.灏忚溅绉诲姩瀹屾垚
- wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);
- shuttleThread.setSyncTaskNo(0);
- notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVE_COMPLETE);//瑙﹀彂閫氱煡
- } else if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_WORKING.sts) {
- //204.灏忚溅鍏呯數涓� ==> 205.灏忚溅鍏呯數瀹屾垚
- wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts);
- shuttleThread.setSyncTaskNo(0);
- notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡
- } else if (wrkMast.getWrkSts() == WrkStsType.LOC_MOVE_SHUTTLE_RUN.sts) {
- //502.灏忚溅鎼繍涓� ==> 509.绉诲簱瀹屾垚
- wrkMast.setWrkSts(WrkStsType.COMPLETE_LOC_MOVE.sts);
- shuttleThread.setSyncTaskNo(0);
- notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_DELIVERY);//瑙﹀彂閫氱煡
- } else {
- continue;
- }
-
- if (wrkMastService.updateById(wrkMast)) {
- //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
- shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
- News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
- } else {
- News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
- }
- } else {
- Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo());
- if(object != null){
- ShuttleAssignCommand assignCommand = JSON.parseObject(object.toString(), ShuttleAssignCommand.class);
- if (!assignCommand.getAuto()) {
- //鎵嬪姩妯″紡
- //宸ヤ綔鍙锋竻闆�
- shuttleThread.setTaskNo(0);
- //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
- shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
- News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
- }
- }
- }
- }
-
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
* 鎵ц绉诲簱浠诲姟
*/
public synchronized void shuttleLocMoveExecute() {
diff --git a/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java b/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java
index 121a70c..bb208ee 100644
--- a/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java
+++ b/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java
@@ -1,6 +1,6 @@
package com.zy.asrs.task.main;
-import com.zy.asrs.service.impl.MainServiceImpl;
+import com.zy.asrs.utils.ShuttleTaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -9,12 +9,12 @@
public class ShuttleTaskExecuteScheduler {
@Autowired
- private MainServiceImpl mainService;
+ private ShuttleTaskUtils shuttleTaskUtils;
@Scheduled(cron = "0/3 * * * * ? ")
public void shuttleFinished() {
//鍥涘悜绌挎杞︿换鍔″畬鎴�
- mainService.shuttleFinished();
+ shuttleTaskUtils.shuttleFinished();
}
}
diff --git a/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java b/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java
new file mode 100644
index 0000000..82b497c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java
@@ -0,0 +1,130 @@
+package com.zy.asrs.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.domain.enums.NotifyMsgType;
+import com.zy.asrs.entity.DeviceConfig;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.DeviceConfigService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.common.utils.RedisUtil;
+import com.zy.core.News;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.RedisKeyType;
+import com.zy.core.enums.ShuttleProtocolStatusType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.WrkStsType;
+import com.zy.core.model.command.ShuttleAssignCommand;
+import com.zy.core.model.protocol.ShuttleProtocol;
+import com.zy.core.thread.ShuttleThread;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class ShuttleTaskUtils {
+
+ @Autowired
+ private DeviceConfigService deviceConfigService;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private NotifyUtils notifyUtils;
+ @Autowired
+ private RedisUtil redisUtil;
+
+ /**
+ * 鍥涘悜绌挎杞︿换鍔″畬鎴�
+ */
+ public void shuttleFinished() {
+ try {
+ List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+ .eq("device_type", String.valueOf(SlaveType.Shuttle)));
+ for (DeviceConfig device : shuttleList) {
+ //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭銆佸皬杞﹀浜庣┖闂茬姸鎬�
+ if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭
+ && shuttleProtocol.getTaskNo() != 0
+ ) {
+ //灏嗕换鍔℃。鏍囪涓哄畬鎴�
+ WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo());
+ if (wrkMast != null) {
+ if (wrkMast.getWrkSts() == WrkStsType.INBOUND_SHUTTLE_RUN.sts) {
+ //5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚
+ wrkMast.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts);
+ shuttleThread.setSyncTaskNo(0);
+ } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_SHUTTLE_RUN.sts) {
+ //102.灏忚溅鎼繍涓� ==> 103.灏忚溅鎼繍瀹屾垚
+ wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts);
+ shuttleThread.setSyncTaskNo(0);
+ } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_NEARBY.sts) {
+ //302.灏忚溅绉诲姩鑷宠繎鐐逛腑 ==> 303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴�
+ wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);
+ shuttleThread.setSyncTaskNo(0);
+ } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT.sts) {
+ //304.灏忚溅杩佸叆鎻愬崌鏈轰腑 ==> 305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴�
+ wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_COMPLETE.sts);
+ shuttleThread.setSyncTaskNo(0);
+ } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT.sts) {
+ //308.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴�
+ if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+ continue;//灏忚溅鏈埌杈剧洰鏍囧眰
+ }
+ wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);
+ shuttleThread.setSyncTaskNo(0);
+ } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_SHUTTLE.sts) {
+ //310.灏忚溅绉诲姩涓� ==> 311.灏忚溅绉诲姩瀹屾垚
+ wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);
+ shuttleThread.setSyncTaskNo(0);
+ notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVE_COMPLETE);//瑙﹀彂閫氱煡
+ } else if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_WORKING.sts) {
+ //204.灏忚溅鍏呯數涓� ==> 205.灏忚溅鍏呯數瀹屾垚
+ wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts);
+ shuttleThread.setSyncTaskNo(0);
+ notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡
+ } else if (wrkMast.getWrkSts() == WrkStsType.LOC_MOVE_SHUTTLE_RUN.sts) {
+ //502.灏忚溅鎼繍涓� ==> 509.绉诲簱瀹屾垚
+ wrkMast.setWrkSts(WrkStsType.COMPLETE_LOC_MOVE.sts);
+ shuttleThread.setSyncTaskNo(0);
+ notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_DELIVERY);//瑙﹀彂閫氱煡
+ } else {
+ continue;
+ }
+
+ if (wrkMastService.updateById(wrkMast)) {
+ //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
+ shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+ News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
+ } else {
+ News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
+ }
+ } else {
+ Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo());
+ if(object != null){
+ ShuttleAssignCommand assignCommand = JSON.parseObject(object.toString(), ShuttleAssignCommand.class);
+ if (!assignCommand.getAuto()) {
+ //鎵嬪姩妯″紡
+ //宸ヤ綔鍙锋竻闆�
+ shuttleThread.setTaskNo(0);
+ //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
+ shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+ News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
+ }
+ }
+ }
+ }
+
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
--
Gitblit v1.9.1