From 3700ea78d4c776687ccc0bf555f34fa0e88d7fb7 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期三, 15 五月 2024 16:54:57 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java | 105 +++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 75 insertions(+), 30 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java index 6c02d01..fc14bc2 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java @@ -11,6 +11,7 @@ import com.zy.asrs.wcs.core.model.command.ShuttleAssignCommand; import com.zy.asrs.wcs.core.model.command.ShuttleCommand; import com.zy.asrs.wcs.core.model.command.ShuttleRedisCommand; +import com.zy.asrs.wcs.core.model.enums.LocStsType; import com.zy.asrs.wcs.core.model.enums.MotionCtgType; import com.zy.asrs.wcs.core.model.enums.ShuttleCommandModeType; import com.zy.asrs.wcs.core.model.enums.ShuttleTaskModeType; @@ -250,7 +251,7 @@ if (shuttleThread == null) { return; } - ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(false); if (shuttleProtocol == null) { return; } @@ -280,35 +281,6 @@ } if (shuttleProtocol.getMoveType() == 0) {//璺戣建閬� - ArrayList<String> locs = new ArrayList<>(); - for (int i = shuttleProtocol.getXCurrent(); i <= shuttleProtocol.getXTarget(); i++) { - String locNo = Utils.getLocNo(i, shuttleProtocol.getYCurrent(), lev); - locs.add(locNo); - } - - List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>() - .in(Loc::getLocNo, locs)); - if (locList.isEmpty()) { - //绌哄簱浣� - shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); - return; - } - - Loc start = locList.get(0); - Loc target = locList.get(locList.size() - 1); - //鍒ゆ柇灏忚溅鏄惁鍦ㄨ捣鐐逛綅缃� - if (!shuttleProtocol.getCurrentLocNo().equals(start.getLocNo())) {//涓嶅湪璧风偣浣嶇疆锛岃皟搴﹀幓璧风偣浣嶇疆 - shuttleDispatcher.generateMoveTask(device, start.getLocNo()); - }else { - //鍦ㄨ捣鐐逛綅缃紝璋冨害鍘荤洰鏍囦綅缃� - if (shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { - shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1);//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝璺宠繃 - }else { - shuttleDispatcher.generateMoveTask(device, start.getLocNo()); - shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); - } - } - } else if (shuttleProtocol.getMoveType() == 1) {//璺戝簱浣� Integer xCurrent = shuttleProtocol.getXCurrent(); if (xCurrent > shuttleProtocol.getXTarget()) {//褰揦鍊煎ぇ浜嶺鐩爣鍊硷紝杩涜褰掗浂涓擸鏂瑰悜+1 shuttleProtocol.setXCurrent(shuttleProtocol.getXStart()); @@ -337,6 +309,35 @@ } else { shuttleDispatcher.generateMoveTask(device, target.getLocNo()); shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); + } + } else if (shuttleProtocol.getMoveType() == 1) {//璺戝簱浣� + ArrayList<String> locs = new ArrayList<>(); + for (int i = shuttleProtocol.getXCurrent(); i <= shuttleProtocol.getXTarget(); i++) { + String locNo = Utils.getLocNo(i, shuttleProtocol.getYCurrent(), lev); + locs.add(locNo); + } + + List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>() + .in(Loc::getLocNo, locs)); + if (locList.isEmpty()) { + //绌哄簱浣� + shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); + return; + } + + Loc start = locList.get(0); + Loc target = locList.get(locList.size() - 1); + //鍒ゆ柇灏忚溅鏄惁鍦ㄨ捣鐐逛綅缃� + if (!shuttleProtocol.getCurrentLocNo().equals(start.getLocNo())) {//涓嶅湪璧风偣浣嶇疆锛岃皟搴﹀幓璧风偣浣嶇疆 + shuttleDispatcher.generateMoveTask(device, start.getLocNo()); + }else { + //鍦ㄨ捣鐐逛綅缃紝璋冨害鍘荤洰鏍囦綅缃� + if (shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { + shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1);//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝璺宠繃 + }else { + shuttleDispatcher.generateMoveTask(device, start.getLocNo()); + shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); + } } } else if (shuttleProtocol.getMoveType() == 2) {//姣嶈建閬撳惊鐜窇 Integer xCurrent = shuttleProtocol.getXCurrent(); @@ -382,6 +383,50 @@ } } } + } else if (shuttleProtocol.getMoveType() == 4) {//鍙栨斁璐� + Integer xCurrent = shuttleProtocol.getXCurrent(); + if (xCurrent > shuttleProtocol.getXTarget()) {//褰揦鍊煎ぇ浜嶺鐩爣鍊� + shuttleProtocol.setXCurrent(shuttleProtocol.getXStart()); + shuttleProtocol.setYCurrent(shuttleProtocol.getYStart()); + return; + } + + //鎼滅储鏈夎揣搴撲綅 + List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>() + .eq(Loc::getLocSts, LocStsType.F.val()) + .eq(Loc::getHostId, device.getHostId()) + .eq(Loc::getStatus, 1)); + if (list.isEmpty()) { + return; + } + + Loc start = list.get(0); + + Integer yCurrent = shuttleProtocol.getYCurrent(); + String locNo = Utils.getLocNo(xCurrent, yCurrent, lev); + Loc target = locService.getOne(new LambdaQueryWrapper<Loc>() + .eq(Loc::getLocNo, locNo) + .eq(Loc::getHostId, device.getHostId()) + .eq(Loc::getStatus, 1)); + if (target == null) { + shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); + return; + } + + if (target.getLocSts() != LocStsType.O.val()) { + shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); + return; + } + + //璋冨害鍘荤洰鏍囦綅缃� + if (shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { + shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝璺宠繃 + } else { + Task task = shuttleDispatcher.generateManuaTakeMoveTask(device, start.getLocNo(), target.getLocNo()); + if(task != null) {//璋冨害鎴愬姛 + shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); + } + } } } -- Gitblit v1.9.1