From 89a94a91bd97e1e47fba93c762b4e53a5830b760 Mon Sep 17 00:00:00 2001 From: gtsxc <3272660260@qq.com> Date: 星期一, 19 五月 2025 19:44:51 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 564 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 428 insertions(+), 136 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 a04b0ba..e263be0 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 @@ -1,14 +1,11 @@ package com.zy.asrs.wcs.core.kernel; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.wcs.core.domain.dto.MotionDto; import com.zy.asrs.wcs.core.entity.*; -import com.zy.asrs.wcs.core.model.NavigateNode; import com.zy.asrs.wcs.core.model.enums.*; import com.zy.asrs.wcs.core.service.*; import com.zy.asrs.wcs.core.utils.*; -import com.zy.asrs.wcs.rcs.News; import com.zy.asrs.wcs.rcs.cache.SlaveConnection; import com.zy.asrs.wcs.rcs.entity.Device; import com.zy.asrs.wcs.rcs.model.enums.SlaveType; @@ -146,8 +143,10 @@ //绌挎杞﹀嚭鎻愬崌鏈哄簱浣嶅彿 String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc(); - //绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� + //绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� 杈撻�佺嚎浣嶇疆 String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc(); + //绌挎杞︽崲灞傛椂寰呮満浣嶇疆 浣跨敤琛ㄥ垪 memo鏁版嵁 + String standbyLocNoMemo = shuttleStandbyTo.getMemo(); //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc(); @@ -253,19 +252,19 @@ dto.setShuttleNo(shuttleDevice.getId().intValue()); dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); - dto.setLocNo(standbyLocNoTo); + dto.setLocNo(standbyLocNoMemo); })), MotionCtgType.SHUTTLE_MOVE )); - // 閿佸畾鎹㈠眰璺緞 - motionList.addAll(kernelService.mapLockPath( - null, - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(JSON.toJSONString(lockPath)); - })) - )); +// // 閿佸畾鎹㈠眰璺緞 +// motionList.addAll(kernelService.mapLockPath( +// null, +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(JSON.toJSONString(lockPath)); +// })) +// )); // 鎻愬崌鏈虹┖杞界Щ鍔ㄥ埌绌挎杞﹀眰 motionList.addAll(kernelService.liftMove( @@ -288,7 +287,7 @@ motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(standbyLocNoTo); + dto.setLocNo(standbyLocNoMemo); })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -360,14 +359,14 @@ })) )); - // 瑙i攣鎹㈠眰璺緞 - motionList.addAll(kernelService.mapUnlockPath( - null, - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(JSON.toJSONString(lockPath)); - })) - )); +// // 瑙i攣鎹㈠眰璺緞 +// motionList.addAll(kernelService.mapUnlockPath( +// null, +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(JSON.toJSONString(lockPath)); +// })) +// )); // 绌挎杞﹀叆搴撻《鍗� motionList.addAll(kernelService.shuttleAction( @@ -478,8 +477,11 @@ //绌挎杞﹀嚭鎻愬崌鏈哄簱浣嶅彿 String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc(); - //绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� + //绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� 杈撻�佺嚎浣嶇疆 String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc(); + + //绌挎杞︽崲灞傛椂寰呮満浣嶇疆 浣跨敤琛ㄥ垪 memo鏁版嵁 + String standbyLocNoMemo = shuttleStandbyTo.getMemo(); //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc(); @@ -506,11 +508,11 @@ return motionList; } - //鍒嗘瀽鍑哄簱璺緞寰呮満搴撲綅 - String lastPathStartLoc = shuttleDispatcher.analyzeOutPathWaitLoc(originLoc, standbyLocNoTo, shuttleDevice); - if (lastPathStartLoc == null) { - return motionList;//鏈垎鏋愭垚鍔� - } +// //鍒嗘瀽鍑哄簱璺緞寰呮満搴撲綅 +// String lastPathStartLoc = shuttleDispatcher.analyzeOutPathWaitLoc(originLoc, standbyLocNoTo, shuttleDevice); +// if (lastPathStartLoc == null) { +// return motionList;//鏈垎鏋愭垚鍔� +// } /** * 鍑哄簱 @@ -543,27 +545,43 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - 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 - )); - } +// 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( +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(lastPathStartLoc); +// })), +// 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())));//杈撻�佺珯 +// })), +// MotionCtgType.SHUTTLE_TRANSPORT_TO_CONVEYOR +// )); // 绌挎杞﹁浇璐ц嚦鎻愬崌鏈哄緟鏈轰綅 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(lastPathStartLoc); + dto.setLocNo(originLoc); })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -644,19 +662,19 @@ dto.setShuttleNo(shuttleDevice.getId().intValue()); dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(transferLiftDevice.getId().intValue()); - dto.setLocNo(standbyLocNoTo); + dto.setLocNo(standbyLocNoMemo); })), MotionCtgType.SHUTTLE_MOVE )); - // 閿佸畾鎹㈠眰璺緞 - motionList.addAll(kernelService.mapLockPath( - null, - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(JSON.toJSONString(lockPath)); - })) - )); +// // 閿佸畾鎹㈠眰璺緞 +// motionList.addAll(kernelService.mapLockPath( +// null, +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(JSON.toJSONString(lockPath)); +// })) +// )); // 鎻愬崌鏈虹┖杞界Щ鍔ㄥ埌绌挎杞﹀眰 motionList.addAll(kernelService.liftMove( @@ -679,7 +697,7 @@ motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(standbyLocNoTo); + dto.setLocNo(standbyLocNoMemo); })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -751,14 +769,14 @@ })) )); - // 瑙i攣鎹㈠眰璺緞 - motionList.addAll(kernelService.mapUnlockPath( - null, - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(JSON.toJSONString(lockPath)); - })) - )); +// // 瑙i攣鎹㈠眰璺緞 +// motionList.addAll(kernelService.mapUnlockPath( +// null, +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(JSON.toJSONString(lockPath)); +// })) +// )); // 绌挎杞︽彁鍗囨満寰呮満浣嶈嚦鍑哄簱搴撲綅 motionList.addAll(kernelService.shuttleMove( @@ -784,27 +802,43 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - 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 - )); - } +// 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( +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(lastPathStartLoc); +// })), +// 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())));//杈撻�佺珯 +// })), +// MotionCtgType.SHUTTLE_TRANSPORT_TO_CONVEYOR +// )); // 绌挎杞﹁浇璐ц嚦鎻愬崌鏈哄緟鏈轰綅 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(lastPathStartLoc); + dto.setLocNo(originLoc); })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -950,6 +984,9 @@ //绌挎杞﹀嚭鎻愬崌鏈哄簱浣嶅彿 String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc(); + //绌挎杞︽崲灞傛椂寰呮満浣嶇疆 浣跨敤琛ㄥ垪 memo鏁版嵁 + String standbyLocNoMemo = shuttleStandbyTo.getMemo(); + //绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc(); @@ -984,7 +1021,7 @@ MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); dto.setShuttleDevice(shuttleDevice); - dto.setLocNo(standbyLocNoTo); + dto.setLocNo(standbyLocNoMemo); })), MotionCtgType.SHUTTLE_MOVE )); @@ -1010,7 +1047,7 @@ motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(standbyLocNoTo); + dto.setLocNo(standbyLocNoMemo); })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -1239,6 +1276,9 @@ //绌挎杞﹀埌鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� String standbyLocNoTo = liftDispatcher.getLiftStandByLocNo(liftThread, Utils.getLev(shuttleLocNo)); + //绌挎杞︽崲灞傛椂寰呮満浣嶇疆 浣跨敤琛ㄥ垪 memo鏁版嵁 + String standbyLocNoMemo = liftDispatcher.getInLiftStandByLocNo(liftThread, Utils.getLev(shuttleLocNo)); + //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� String standbyLocNoFrom = liftDispatcher.getLiftStandByLocNo(liftThread, Utils.getLev(task.getDestLoc())); @@ -1256,19 +1296,19 @@ dto.setShuttleNo(shuttleDevice.getId().intValue()); dto.setShuttleDevice(shuttleDevice); dto.setLiftNo(liftDevice.getId().intValue()); - dto.setLocNo(standbyLocNoTo); + dto.setLocNo(standbyLocNoMemo); })), MotionCtgType.SHUTTLE_MOVE )); - // 閿佸畾鎹㈠眰璺緞 - motionList.addAll(kernelService.mapLockPath( - null, - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(JSON.toJSONString(lockPath)); - })) - )); +// // 閿佸畾鎹㈠眰璺緞 +// motionList.addAll(kernelService.mapLockPath( +// null, +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(JSON.toJSONString(lockPath)); +// })) +// )); // 鎻愬崌鏈虹┖杞界Щ鍔ㄥ埌绌挎杞﹀眰 motionList.addAll(kernelService.liftMove( @@ -1291,7 +1331,7 @@ motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(standbyLocNoTo); + dto.setLocNo(standbyLocNoMemo); })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -1359,17 +1399,18 @@ null , MotionDto.build((dto -> { dto.setLiftNo(liftDevice.getId().intValue()); + dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満 })) )); - // 瑙i攣鎹㈠眰璺緞 - motionList.addAll(kernelService.mapUnlockPath( - null, - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(JSON.toJSONString(lockPath)); - })) - )); +// // 瑙i攣鎹㈠眰璺緞 +// motionList.addAll(kernelService.mapUnlockPath( +// null, +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(JSON.toJSONString(lockPath)); +// })) +// )); // 绌挎杞︽彁鍗囨満寰呮満浣嶈嚦鐩爣浣嶇疆 motionList.addAll(kernelService.shuttleMove( @@ -1618,6 +1659,7 @@ // locNo 鐩爣搴撲綅 String locNo = task.getDestLoc(); + // shuttle Device shuttleDevice = deviceService.getOne(new LambdaQueryWrapper<Device>() .eq(Device::getDeviceNo, task.getShuttleNo()) .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val()) @@ -1626,24 +1668,91 @@ 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; + } + if (!shuttleThread.isIdle()) { return motionList; } String shuttleLocNo = shuttleProtocol.getCurrentLocNo(); - // 鍒ゆ柇绌挎杞︽槸鍚﹀湪鐩爣灞� - if (Utils.getLev(shuttleLocNo) == Utils.getLev(locNo)) { + //鑾峰彇璺濈鐩爣浣嶇疆鏈�杩戠殑绌洪棽鍙崲灞傛彁鍗囨満 + LiftThread liftThread = liftDispatcher.searchIdleLift(shuttleLocNo, task.getHostId(), true); + if (liftThread == null) { + return motionList; + } + Device transferLiftDevice = liftThread.getDevice(); - if (!shuttleLocNo.equals(locNo)) {//灏忚溅涓嶅湪鐩爣搴撲綅 - // 绌挎杞﹁蛋琛岃嚦婧愬簱浣� + LiftProtocol liftProtocol = liftThread.getStatus(); + if (liftProtocol == null || liftProtocol.getLiftNo() == null) { + return motionList; + } + + //妫�娴嬬┛姊溅鏄惁鏈変换鍔$粦瀹� + boolean shuttleResult = Utils.checkShuttleHasBinding(shuttleDevice, task.getTaskNo()); + if (shuttleResult) { + //瀛樺湪浠诲姟锛岀姝㈣В鏋� + return motionList; + } + + //鑾峰彇灏忚溅寰呮満搴撲綅 ==> 杩涙彁鍗囨満 + ShuttleStandby shuttleStandbyTo = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>() + .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId()) + .eq(ShuttleStandby::getDeviceLev, Utils.getLev(shuttleLocNo)) + .eq(ShuttleStandby::getStatus, 1)); + + //鑾峰彇灏忚溅寰呮満搴撲綅 ==> 鍑烘彁鍗囨満 + ShuttleStandby shuttleStandbyFrom = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>() + .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId()) + .eq(ShuttleStandby::getDeviceLev, Utils.getLev(originLoc)) + .eq(ShuttleStandby::getStatus, 1)); + if (shuttleStandbyTo == null || shuttleStandbyFrom == null) { + return motionList; + } + + //绌挎杞﹁繘鎻愬崌鏈哄簱浣嶅彿 + String liftLocNoTo = shuttleStandbyTo.getDeviceLoc(); + + //绌挎杞﹀嚭鎻愬崌鏈哄簱浣嶅彿 + String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc(); + + //绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� 杈撻�佺嚎浣嶇疆 + String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc(); + + //绌挎杞︽崲灞傛椂寰呮満浣嶇疆 浣跨敤琛ㄥ垪 memo鏁版嵁 + String standbyLocNoMemo = shuttleStandbyTo.getMemo(); + + //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� + String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc(); + + //绌挎杞﹀嚭鎻愬崌鏈哄悗鍏ㄩ儴寰呮満浣� + String standbyLocs = shuttleStandbyFrom.getStandbyLoc();//鑾峰彇鍏ㄩ儴寰呮満浣� + + //鎹㈠眰闇�瑕侀攣瀹氱殑璺緞 + List<String> lockPath = shuttleStandbyFrom.getLockPath$(); + + //鑾峰彇鍑哄簱浠诲姟绫诲瀷 + TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() + .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.MOVE)) + .eq(TaskCtg::getStatus, 1)); + if (taskCtg == null) { + return motionList; + } + + + + + /** + * 鍑哄簱 + */ + if (Utils.getLev(shuttleLocNo) == Utils.getLev(originLoc)) { + + //绌挎杞︿笉鍦ㄥ嚭搴撳簱浣� + if (!shuttleLocNo.equals(task.getOriginLoc())) { + // 绌挎杞﹁蛋琛岃嚦鍑哄簱搴撲綅 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -1651,42 +1760,225 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); 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()); - })); - } + // 绌挎杞﹀嚭搴撻《鍗� + motionList.addAll(kernelService.shuttleAction( + null, + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + })), + 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.setShuttleDevice(shuttleDevice); + dto.setLocNo(locNo); + })), + MotionCtgType.SHUTTLE_TRANSPORT + )); + + // 绌挎杞﹀嚭搴撴墭鐩樹笅闄� + motionList.addAll(kernelService.shuttleAction( + null, + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + })), + MotionCtgType.SHUTTLE_PALLET_DOWN + )); + + + + /** + * 浜屻�佸嚭搴撹捣濮嬪眰娌℃湁绌挎杞� + */ } else { - //灏忚溅璺ㄥ眰 + + // 绌挎杞﹁蛋琛岃嚦鎻愬崌鏈哄簱浣嶅緟鏈轰綅 + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(shuttleLocNo); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); + dto.setLiftNo(transferLiftDevice.getId().intValue()); + dto.setLocNo(standbyLocNoMemo); + })), + MotionCtgType.SHUTTLE_MOVE + )); + +// // 閿佸畾鎹㈠眰璺緞 +// motionList.addAll(kernelService.mapLockPath( +// null, +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(JSON.toJSONString(lockPath)); +// })) +// )); + + // 鎻愬崌鏈虹┖杞界Щ鍔ㄥ埌绌挎杞﹀眰 + motionList.addAll(kernelService.liftMove( + null + , MotionDto.build((dto -> { + dto.setLiftNo(transferLiftDevice.getId().intValue()); + dto.setLev(Utils.getLev(shuttleLocNo)); + })) + )); + + // 閿佸畾鎻愬崌鏈� + motionList.addAll(kernelService.liftLock( + null + , MotionDto.build((dto -> { + dto.setLiftNo(transferLiftDevice.getId().intValue()); + })) + )); + + // 绌挎杞﹀緟鏈轰綅鑷虫彁鍗囨満 + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(standbyLocNoMemo); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); + dto.setLiftNo(transferLiftDevice.getId().intValue()); + dto.setLocNo(liftLocNoTo); + })), + MotionCtgType.SHUTTLE_MOVE_TO_LIFT + )); + + // 瑙i攣鎻愬崌鏈� + motionList.addAll(kernelService.liftUnlock( + null + , MotionDto.build((dto -> { + dto.setLiftNo(transferLiftDevice.getId().intValue()); + })) + )); + + // 鎻愬崌鏈烘惉杞� 鑷� 鐩爣浣嶇疆灞� + motionList.addAll(kernelService.liftMoveShuttle( + MotionDto.build((dto -> { + dto.setLiftNo(transferLiftDevice.getId().intValue()); + dto.setLev(Utils.getLev(shuttleLocNo)); + })), + MotionDto.build((dto -> { + dto.setLiftNo(transferLiftDevice.getId().intValue()); + dto.setLev(Utils.getLev(liftLocNoFrom)); + })) + )); + + // 閿佸畾鎻愬崌鏈� + motionList.addAll(kernelService.liftLock( + null + , MotionDto.build((dto -> { + dto.setLiftNo(transferLiftDevice.getId().intValue()); + })) + )); + + // 鏇存柊灏忚溅鍧愭爣 + motionList.addAll(kernelService.shuttleUpdateLocation( + null + , MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(liftLocNoFrom); + })) + )); + + // 绌挎杞﹁蛋琛岃嚦鎻愬崌鏈哄緟鏈轰綅 + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLiftNo(transferLiftDevice.getId().intValue()); + dto.setLocNo(liftLocNoFrom); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); + dto.setLocNo(standbyLocNoFrom); + })), + MotionCtgType.SHUTTLE_MOVE_FROM_LIFT + )); + + // 瑙i攣鎻愬崌鏈� + motionList.addAll(kernelService.liftUnlock( + null + , MotionDto.build((dto -> { + dto.setLiftNo(transferLiftDevice.getId().intValue()); + dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満 + })) + )); + +// // 瑙i攣鎹㈠眰璺緞 +// motionList.addAll(kernelService.mapUnlockPath( +// null, +// MotionDto.build((dto -> { +// dto.setShuttleNo(shuttleDevice.getId().intValue()); +// dto.setLocNo(JSON.toJSONString(lockPath)); +// })) +// )); + + // 绌挎杞︽彁鍗囨満寰呮満浣嶈嚦鍑哄簱搴撲綅 + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLiftNo(transferLiftDevice.getId().intValue()); + dto.setLocNo(standbyLocNoFrom); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setShuttleDevice(shuttleDevice); + dto.setLocNo(originLoc); + })), + MotionCtgType.SHUTTLE_MOVE + )); + + // 绌挎杞﹀嚭搴撻《鍗� + motionList.addAll(kernelService.shuttleAction( + null, + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + })), + 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.setShuttleDevice(shuttleDevice); + dto.setLocNo(locNo); + })), + MotionCtgType.SHUTTLE_TRANSPORT + )); + + // 绌挎杞﹀嚭搴撴墭鐩樹笅闄� + motionList.addAll(kernelService.shuttleAction( + null, + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + })), + MotionCtgType.SHUTTLE_PALLET_DOWN + )); + } return motionList; } -- Gitblit v1.9.1