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 | 46 +++++++++++++++++++++++++++++++--------------- 1 files changed, 31 insertions(+), 15 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 fc14bc2..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 @@ -391,10 +391,28 @@ 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; @@ -402,30 +420,28 @@ 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) + List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>() .eq(Loc::getHostId, device.getHostId()) - .eq(Loc::getStatus, 1)); - if (target == null) { - shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); + .eq(Loc::getStatus, 1) + .eq(Loc::getLocSts, LocStsType.O.val()) + .eq(Loc::getRow, xCurrent) + .orderByDesc(Loc::getBay) + .orderByAsc(Loc::getRow)); + if (locList.isEmpty()) { return; } - if (target.getLocSts() != LocStsType.O.val()) { - shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); + Loc target = locList.get(0); + if (target == null) { return; } //璋冨害鍘荤洰鏍囦綅缃� - if (shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { - shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝璺宠繃 - } else { + if (!shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { Task task = shuttleDispatcher.generateManuaTakeMoveTask(device, start.getLocNo(), target.getLocNo()); - if(task != null) {//璋冨害鎴愬姛 - shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); - } +// if(task != null) {//璋冨害鎴愬姛 +// shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); +// } } } } -- Gitblit v1.9.1