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