From a4996f162b0ca63113f573e315e3ce4f5dce7ad3 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期三, 05 六月 2024 15:39:37 +0800 Subject: [PATCH] #算法优化 --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java | 61 ++++++++++++++++++++++++++++++ 1 files changed, 61 insertions(+), 0 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 9ca36f9..1f1c557 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; @@ -382,6 +383,66 @@ } } } + } else if (shuttleProtocol.getMoveType() == 4) {//鍙栨斁璐� + Integer xCurrent = shuttleProtocol.getXCurrent(); + if (xCurrent > shuttleProtocol.getXTarget()) {//褰揦鍊煎ぇ浜嶺鐩爣鍊� + shuttleProtocol.setXCurrent(shuttleProtocol.getXStart()); + shuttleProtocol.setYCurrent(shuttleProtocol.getYStart()); + return; + } + + //鍒ゆ柇x杞磋揣浣嶆槸鍚︽斁婊� + boolean flag = true; + for (Loc loc : locService.list(new LambdaQueryWrapper<Loc>() + .eq(Loc::getHostId, device.getHostId()) + .eq(Loc::getRow, xCurrent) + .ge(Loc::getBay, shuttleProtocol.getYStart()) + .le(Loc::getBay, shuttleProtocol.getYTarget()))) { + if (loc.getLocSts() != LocStsType.F.val()) { + flag = false;//鏈弧 + break; + } + } + if (flag) { + shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); + return; + } + + //鎼滅储鏈夎揣搴撲綅 + List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>() + .eq(Loc::getLocSts, LocStsType.F.val()) + .eq(Loc::getHostId, device.getHostId()) + .notIn(Loc::getRow, xCurrent) + .eq(Loc::getStatus, 1)); + if (list.isEmpty()) { + return; + } + + Loc start = list.get(0); + + List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>() + .eq(Loc::getHostId, device.getHostId()) + .eq(Loc::getStatus, 1) + .eq(Loc::getLocSts, LocStsType.O.val()) + .eq(Loc::getRow, xCurrent) + .orderByDesc(Loc::getBay) + .orderByAsc(Loc::getRow)); + if (locList.isEmpty()) { + return; + } + + Loc target = locList.get(0); + if (target == null) { + return; + } + + //璋冨害鍘荤洰鏍囦綅缃� + if (!shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { + Task task = shuttleDispatcher.generateManuaTakeMoveTask(device, start.getLocNo(), target.getLocNo()); +// if(task != null) {//璋冨害鎴愬姛 +// shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); +// } + } } } -- Gitblit v1.9.1