From 54b4f53323d0833cbac86fd18932c5fa5a5447a8 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期一, 17 二月 2025 14:19:17 +0800 Subject: [PATCH] #移库任务 --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 232 ++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 176 insertions(+), 56 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java index fdea0f4..a04b0ba 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java @@ -101,8 +101,8 @@ String shuttleLocNo = shuttleProtocol.getCurrentLocNo(); - //鑾峰彇璺濈鐩爣浣嶇疆鏈�杩戠殑绌洪棽鍙崲灞傛彁鍗囨満 - LiftThread liftThread = liftDispatcher.searchIdleLift(shuttleLocNo, task.getHostId(), true); + //鑾峰彇璺濈鐩爣浣嶇疆鏈�杩戠殑鍙崲灞傛彁鍗囨満(鍙兘涓嶇┖闂�) + LiftThread liftThread = liftDispatcher.searchLift(shuttleLocNo, task.getHostId(), true); if (liftThread == null) { return motionList; } @@ -158,21 +158,21 @@ // 鍏ュ簱鐩爣灞傛湁绌挎杞� if (Utils.getLev(shuttleLocNo) == Utils.getLev(task.getDestLoc())) { - // 鎻愬崌鏈鸿浇璐хЩ鍔� - motionList.addAll(kernelService.liftMoveGoods( - MotionDto.build((dto -> { - dto.setLiftNo(transferLiftDevice.getId().intValue()); - dto.setLev(1);//鍏夋嘲1灞傛槸杈撻�佺嚎灞� - dto.setStaNo(31004);//鍏ュ簱绔欑偣 - })) - , MotionDto.build((dto -> { - dto.setLiftNo(transferLiftDevice.getId().intValue()); - dto.setLev(Utils.getLev(task.getDestLoc())); - dto.setStaNo(getStaByLev(Utils.getLev(task.getDestLoc()))); - dto.setDevpNo(basConveyorStaDest.getConveyorDeviceId().intValue()); - dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満 - })) - )); +// // 鎻愬崌鏈鸿浇璐хЩ鍔� +// motionList.addAll(kernelService.liftMoveGoods( +// MotionDto.build((dto -> { +// dto.setLiftNo(transferLiftDevice.getId().intValue()); +// dto.setLev(1);//鍏夋嘲1灞傛槸杈撻�佺嚎灞� +// dto.setStaNo(31004);//鍏ュ簱绔欑偣 +// })) +// , MotionDto.build((dto -> { +// dto.setLiftNo(transferLiftDevice.getId().intValue()); +// dto.setLev(Utils.getLev(task.getDestLoc())); +// dto.setStaNo(getStaByLev(Utils.getLev(task.getDestLoc()))); +// dto.setDevpNo(basConveyorStaDest.getConveyorDeviceId().intValue()); +// dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満 +// })) +// )); // 绌挎杞﹁蛋琛岃嚦鎻愬崌鏈哄簱浣嶅緟鏈轰綅 motionList.addAll(kernelService.shuttleMove( @@ -182,6 +182,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(standbyLocNoTo); })), MotionCtgType.SHUTTLE_MOVE @@ -204,6 +205,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(destLoc); // dto.setReleaseLift(2);//鎵ц涓噴鏀炬彁鍗囨満 @@ -225,21 +227,21 @@ */ } else { - // 鎻愬崌鏈鸿浇璐хЩ鍔� - motionList.addAll(kernelService.liftMoveGoods( - MotionDto.build((dto -> { - dto.setLiftNo(transferLiftDevice.getId().intValue()); - dto.setLev(1);//鍏夋嘲1灞傛槸杈撻�佺嚎灞� - dto.setStaNo(31004);//鍏ュ簱绔欑偣 - })) - , MotionDto.build((dto -> { - dto.setLiftNo(transferLiftDevice.getId().intValue()); - dto.setLev(Utils.getLev(task.getDestLoc())); - dto.setStaNo(getStaByLev(Utils.getLev(task.getDestLoc()))); - dto.setDevpNo(basConveyorStaDest.getConveyorDeviceId().intValue()); - dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満 - })) - )); +// // 鎻愬崌鏈鸿浇璐хЩ鍔� +// motionList.addAll(kernelService.liftMoveGoods( +// MotionDto.build((dto -> { +// dto.setLiftNo(transferLiftDevice.getId().intValue()); +// dto.setLev(1);//鍏夋嘲1灞傛槸杈撻�佺嚎灞� +// dto.setStaNo(31004);//鍏ュ簱绔欑偣 +// })) +// , MotionDto.build((dto -> { +// dto.setLiftNo(transferLiftDevice.getId().intValue()); +// dto.setLev(Utils.getLev(task.getDestLoc())); +// dto.setStaNo(getStaByLev(Utils.getLev(task.getDestLoc()))); +// dto.setDevpNo(basConveyorStaDest.getConveyorDeviceId().intValue()); +// dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満 +// })) +// )); // 绌挎杞﹁蛋琛岃嚦鎻愬崌鏈哄簱浣嶅緟鏈轰綅 motionList.addAll(kernelService.shuttleMove( @@ -249,6 +251,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(standbyLocNoTo); })), @@ -289,6 +292,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(liftLocNoTo); })), @@ -341,6 +345,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(standbyLocNoFrom); })), MotionCtgType.SHUTTLE_MOVE_FROM_LIFT @@ -381,6 +386,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(destLoc); })), @@ -521,6 +527,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(originLoc); })), MotionCtgType.SHUTTLE_MOVE @@ -536,18 +543,21 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - // 绌挎杞﹁浇璐у嚭搴撹嚦鏈�鍚庝竴娈佃矾寰勭瓑寰� - motionList.addAll(kernelService.shuttleMove( - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(originLoc); - })), - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(lastPathStartLoc); - })), - MotionCtgType.SHUTTLE_TRANSPORT - )); + if (!originLoc.equals(lastPathStartLoc)) { + // 绌挎杞﹁浇璐у嚭搴撹嚦鏈�鍚庝竴娈佃矾寰勭瓑寰� + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(originLoc); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); + dto.setLocNo(lastPathStartLoc); + })), + MotionCtgType.SHUTTLE_TRANSPORT + )); + } // 绌挎杞﹁浇璐ц嚦鎻愬崌鏈哄緟鏈轰綅 motionList.addAll(kernelService.shuttleMove( @@ -557,6 +567,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(standbyLocNoTo); dto.setStaNo(getStaByLev(Utils.getLev(task.getOriginLoc())));//杈撻�佺珯 @@ -581,6 +592,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(standbyLocs); dto.setSync(0);//寮傛鎵ц dto.setReleaseShuttle(1);//鎵ц瀹屾垚鍚庨噴鏀惧皬杞� @@ -630,6 +642,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(standbyLocNoTo); })), @@ -670,6 +683,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(liftLocNoTo); })), @@ -722,6 +736,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(standbyLocNoFrom); })), MotionCtgType.SHUTTLE_MOVE_FROM_LIFT @@ -754,6 +769,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(originLoc); })), MotionCtgType.SHUTTLE_MOVE @@ -768,18 +784,21 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - // 绌挎杞﹁浇璐у嚭搴撹嚦鏈�鍚庝竴娈佃矾寰勭瓑寰� - motionList.addAll(kernelService.shuttleMove( - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(originLoc); - })), - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(lastPathStartLoc); - })), - MotionCtgType.SHUTTLE_TRANSPORT - )); + if (!originLoc.equals(lastPathStartLoc)) { + // 绌挎杞﹁浇璐у嚭搴撹嚦鏈�鍚庝竴娈佃矾寰勭瓑寰� + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(originLoc); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); + dto.setLocNo(lastPathStartLoc); + })), + MotionCtgType.SHUTTLE_TRANSPORT + )); + } // 绌挎杞﹁浇璐ц嚦鎻愬崌鏈哄緟鏈轰綅 motionList.addAll(kernelService.shuttleMove( @@ -789,6 +808,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(standbyLocNoFrom); dto.setStaNo(getStaByLev(Utils.getLev(task.getOriginLoc())));//杈撻�佺珯 @@ -813,6 +833,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(standbyLocs); dto.setSync(0);//寮傛鎵ц dto.setReleaseShuttle(1);//鎵ц瀹屾垚鍚庨噴鏀惧皬杞� @@ -946,6 +967,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(chargeLocNo); })), MotionCtgType.SHUTTLE_MOVE @@ -961,6 +983,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(standbyLocNoTo); })), MotionCtgType.SHUTTLE_MOVE @@ -991,6 +1014,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(liftLocNoTo); })), @@ -1043,6 +1067,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(standbyLocNoFrom); })), MotionCtgType.SHUTTLE_MOVE_FROM_LIFT @@ -1064,6 +1089,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(chargeLocNo); })), MotionCtgType.SHUTTLE_MOVE @@ -1132,6 +1158,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(locNo); })), MotionCtgType.SHUTTLE_MOVE @@ -1186,6 +1213,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(locNo); })), MotionCtgType.SHUTTLE_MOVE @@ -1226,6 +1254,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(liftDevice.getId().intValue()); dto.setLocNo(standbyLocNoTo); })), @@ -1266,6 +1295,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(liftDevice.getId().intValue()); dto.setLocNo(liftLocNoTo); })), @@ -1318,6 +1348,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(standbyLocNoFrom); })), MotionCtgType.SHUTTLE_MOVE_FROM_LIFT @@ -1349,6 +1380,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); dto.setLocNo(locNo); })), MotionCtgType.SHUTTLE_MOVE @@ -1404,6 +1436,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(device.getId().intValue()); + dto.setShuttleDevice(device); dto.setLocNo(targetLoc); })), MotionCtgType.SHUTTLE_MOVE @@ -1456,6 +1489,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(device.getId().intValue()); + dto.setShuttleDevice(device); dto.setLocNo(sourceLoc); })), MotionCtgType.SHUTTLE_MOVE @@ -1477,6 +1511,7 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(device.getId().intValue()); + dto.setShuttleDevice(device); dto.setLocNo(targetLoc); })), MotionCtgType.SHUTTLE_TRANSPORT @@ -1570,4 +1605,89 @@ return motionList; } + /** + * 鐢熸垚灏忚溅杞借揣杩佺Щ鍔ㄤ綔 + */ + public List<Motion> generateShuttleLadenMoveMotion(Task task) { + List<Motion> motionList = new ArrayList<>(); + if (task.getTaskSts() != TaskStsType.NEW_LADEN_MOVE.sts) { + return motionList; + } + //originLoc 婧愬簱浣� + String originLoc = task.getOriginLoc(); + // locNo 鐩爣搴撲綅 + String locNo = task.getDestLoc(); + + Device shuttleDevice = deviceService.getOne(new LambdaQueryWrapper<Device>() + .eq(Device::getDeviceNo, task.getShuttleNo()) + .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val()) + .eq(Device::getHostId, task.getHostId()) + .eq(Device::getStatus, 1)); + if (shuttleDevice == null) { + return motionList; + } + + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleDevice.getId().intValue()); + if (shuttleThread == null) { + return motionList; + } + + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) { + return motionList; + } + + String shuttleLocNo = shuttleProtocol.getCurrentLocNo(); + + // 鍒ゆ柇绌挎杞︽槸鍚﹀湪鐩爣灞� + if (Utils.getLev(shuttleLocNo) == Utils.getLev(locNo)) { + + if (!shuttleLocNo.equals(locNo)) {//灏忚溅涓嶅湪鐩爣搴撲綅 + // 绌挎杞﹁蛋琛岃嚦婧愬簱浣� + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(shuttleLocNo); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(originLoc); + })), + MotionCtgType.SHUTTLE_MOVE + )); + + // 绌挎杞﹂《鍗� + motionList.add(Motion.build(motion -> { + motion.setDeviceCtg(DeviceCtgType.SHUTTLE.val()); + motion.setDevice(String.valueOf(shuttleDevice.getId())); + motion.setMotionCtg(MotionCtgType.SHUTTLE_PALLET_LIFT.val()); + })); + + // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅 + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(originLoc); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(locNo); + })), + MotionCtgType.SHUTTLE_MOVE + )); + + //绌挎杞︽墭鐩樹笅闄� + motionList.add(Motion.build(motion -> { + motion.setDeviceCtg(DeviceCtgType.SHUTTLE.val()); + motion.setDevice(String.valueOf(shuttleDevice.getId())); + motion.setMotionCtg(MotionCtgType.SHUTTLE_PALLET_DOWN.val()); + })); + + } + + } else { + //灏忚溅璺ㄥ眰 + } + return motionList; + } } -- Gitblit v1.9.1