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