From 0f5a5a759221bde50ace126eae797326837f5f72 Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期三, 16 十月 2024 16:15:12 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 193 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 144 insertions(+), 49 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 bfa0d2c..fbad661 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,17 +1,14 @@ 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.enums.DeviceCtgType; -import com.zy.asrs.wcs.core.model.enums.MotionCtgType; -import com.zy.asrs.wcs.core.model.enums.TaskCtgType; -import com.zy.asrs.wcs.core.model.enums.TaskStsType; +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.ConveyorDispatcher; -import com.zy.asrs.wcs.core.utils.LiftDispatcher; -import com.zy.asrs.wcs.core.utils.ShuttleDispatcher; -import com.zy.asrs.wcs.core.utils.Utils; +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; @@ -26,7 +23,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map; /** * 1.鍏呯數浠诲姟锛�2.搴撲綅绉昏浆锛�3.灏忚溅杩佺Щ锛�4.鎵嬪姩浠诲姟 @@ -156,6 +152,9 @@ //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc(); + //鎹㈠眰闇�瑕侀攣瀹氱殑璺緞 + List<String> lockPath = shuttleStandbyFrom.getLockPath$(); + // 鍏ュ簱鐩爣灞傛湁绌挎杞� if (Utils.getLev(shuttleLocNo) == Utils.getLev(task.getDestLoc())) { @@ -197,7 +196,7 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅 + // 绌挎杞﹁浇璐ц蛋琛岃嚦鐩爣搴撲綅 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -208,7 +207,7 @@ dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(destLoc); })), - MotionCtgType.SHUTTLE_MOVE + MotionCtgType.SHUTTLE_TRANSPORT )); // 绌挎杞﹀叆搴撴墭鐩樹笅闄� @@ -252,6 +251,15 @@ dto.setLocNo(standbyLocNoTo); })), MotionCtgType.SHUTTLE_MOVE + )); + + // 閿佸畾鎹㈠眰璺緞 + motionList.addAll(kernelService.mapLockPath( + null, + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(JSON.toJSONString(lockPath)); + })) )); // 鎻愬崌鏈虹┖杞界Щ鍔ㄥ埌绌挎杞﹀眰 @@ -345,6 +353,15 @@ })) )); + // 瑙i攣鎹㈠眰璺緞 + motionList.addAll(kernelService.mapUnlockPath( + null, + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(JSON.toJSONString(lockPath)); + })) + )); + // 绌挎杞﹀叆搴撻《鍗� motionList.addAll(kernelService.shuttleAction( null, @@ -354,7 +371,7 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅 + // 绌挎杞﹁浇璐ц蛋琛岃嚦鐩爣搴撲綅 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -365,7 +382,7 @@ dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(destLoc); })), - MotionCtgType.SHUTTLE_MOVE + MotionCtgType.SHUTTLE_TRANSPORT )); // 绌挎杞﹀叆搴撴墭鐩樹笅闄� @@ -459,8 +476,11 @@ //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc(); - //绌挎杞﹀嚭鎻愬崌鏈哄悗灏忚溅寰呮満浣� - String shuttleFromLiftStandbyLoc = shuttleStandbyFrom.getStandbyLoc(); + //绌挎杞﹀嚭鎻愬崌鏈哄悗鍏ㄩ儴寰呮満浣� + String standbyLocs = shuttleStandbyFrom.getStandbyLoc();//鑾峰彇鍏ㄩ儴寰呮満浣� + + //鎹㈠眰闇�瑕侀攣瀹氱殑璺緞 + List<String> lockPath = shuttleStandbyFrom.getLockPath$(); //鑾峰彇鍑哄簱浠诲姟绫诲瀷 TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() @@ -476,6 +496,12 @@ .eq(BasConveyorPath::getTypeNo, taskCtg.getId())); if (basConveyorPath == null) { return motionList; + } + + //鍒嗘瀽鍑哄簱璺緞寰呮満搴撲綅 + String lastPathStartLoc = shuttleDispatcher.analyzeOutPathWaitLoc(originLoc, standbyLocNoTo, shuttleDevice); + if (lastPathStartLoc == null) { + return motionList;//鏈垎鏋愭垚鍔� } /** @@ -508,7 +534,7 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - // 绌挎杞﹀嚭搴撹嚦鎻愬崌鏈哄緟鏈轰綅 + // 绌挎杞﹁浇璐у嚭搴撹嚦鏈�鍚庝竴娈佃矾寰勭瓑寰� motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -516,10 +542,24 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + 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.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(standbyLocNoTo); + dto.setStaNo(getStaByLev(Utils.getLev(task.getOriginLoc())));//杈撻�佺珯 })), - MotionCtgType.SHUTTLE_MOVE + MotionCtgType.SHUTTLE_TRANSPORT_TO_CONVEYOR )); // 绌挎杞﹀嚭搴撴墭鐩樹笅闄� @@ -529,6 +569,21 @@ dto.setShuttleNo(shuttleDevice.getId().intValue()); })), MotionCtgType.SHUTTLE_PALLET_DOWN + )); + + // 绌挎杞︽彁鍗囨満寰呮満浣� - 鍒板緟鏈轰綅(鑷姩閫夋嫨鍚堥�傚緟鏈轰綅) + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(standbyLocNoFrom); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(standbyLocs); + dto.setSync(0);//寮傛鎵ц + dto.setReleaseShuttle(1);//鎵ц瀹屾垚鍚庨噴鏀惧皬杞� + })), + MotionCtgType.SHUTTLE_MOVE_STANDBY )); // 鎻愬崌鏈鸿浇璐хЩ鍔� @@ -543,22 +598,8 @@ dto.setLev(1);//鍏夋嘲1灞傛槸杈撻�佺嚎灞� dto.setStaNo(31001);//鍑哄簱绔欑偣 dto.setDevpNo(basConveyorStaOrigin.getConveyorDeviceId().intValue()); - dto.setSync(0);//寮傛鎵ц dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満 })) - )); - - // 绌挎杞︽彁鍗囨満寰呮満浣� - 鍒板緟鏈轰綅 - motionList.addAll(kernelService.shuttleMove( - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(standbyLocNoFrom); - })), - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(shuttleFromLiftStandbyLoc); - })), - MotionCtgType.SHUTTLE_MOVE )); // 杈撻�佺嚎杩愯緭鑷冲嚭搴撳彛 @@ -591,6 +632,15 @@ dto.setLocNo(standbyLocNoTo); })), MotionCtgType.SHUTTLE_MOVE + )); + + // 閿佸畾鎹㈠眰璺緞 + motionList.addAll(kernelService.mapLockPath( + null, + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(JSON.toJSONString(lockPath)); + })) )); // 鎻愬崌鏈虹┖杞界Щ鍔ㄥ埌绌挎杞﹀眰 @@ -684,6 +734,15 @@ })) )); + // 瑙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 -> { @@ -707,7 +766,7 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - // 绌挎杞﹀嚭搴撹嚦鎻愬崌鏈哄緟鏈轰綅 + // 绌挎杞﹁浇璐у嚭搴撹嚦鏈�鍚庝竴娈佃矾寰勭瓑寰� motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -715,10 +774,24 @@ })), MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); + 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.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(standbyLocNoFrom); + dto.setStaNo(getStaByLev(Utils.getLev(task.getOriginLoc())));//杈撻�佺珯 })), - MotionCtgType.SHUTTLE_MOVE + MotionCtgType.SHUTTLE_TRANSPORT_TO_CONVEYOR )); // 绌挎杞﹀嚭搴撴墭鐩樹笅闄� @@ -728,6 +801,21 @@ dto.setShuttleNo(shuttleDevice.getId().intValue()); })), MotionCtgType.SHUTTLE_PALLET_DOWN + )); + + // 绌挎杞︽彁鍗囨満寰呮満浣� - 鍒板緟鏈轰綅(鑷姩閫夋嫨鍚堥�傚緟鏈轰綅) + motionList.addAll(kernelService.shuttleMove( + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(standbyLocNoFrom); + })), + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(standbyLocs); + dto.setSync(0);//寮傛鎵ц + dto.setReleaseShuttle(1);//鎵ц瀹屾垚鍚庨噴鏀惧皬杞� + })), + MotionCtgType.SHUTTLE_MOVE_STANDBY )); // 鎻愬崌鏈鸿浇璐хЩ鍔� @@ -741,23 +829,9 @@ dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLev(1);//鍏夋嘲1灞傛槸杈撻�佺嚎灞� dto.setStaNo(31001);//鍑哄簱绔欑偣 - dto.setSync(0);//寮傛鎵ц dto.setDevpNo(basConveyorStaOrigin.getConveyorDeviceId().intValue()); dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満 })) - )); - - // 绌挎杞︽彁鍗囨満寰呮満浣� - 鍒板緟鏈轰綅 - motionList.addAll(kernelService.shuttleMove( - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(standbyLocNoFrom); - })), - MotionDto.build((dto -> { - dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(shuttleFromLiftStandbyLoc); - })), - MotionCtgType.SHUTTLE_MOVE )); // 杈撻�佺嚎杩愯緭鑷冲嚭搴撳彛 @@ -1138,6 +1212,9 @@ //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙� String standbyLocNoFrom = liftDispatcher.getLiftStandByLocNo(liftThread, Utils.getLev(task.getDestLoc())); + //鎹㈠眰闇�瑕侀攣瀹氱殑璺緞 + List<String> lockPath = liftDispatcher.getLockPathByLocNo(liftThread, Utils.getLev(task.getDestLoc())); + // 绌挎杞﹁蛋琛岃嚦鎻愬崌鏈哄簱浣嶅緟鏈轰綅 motionList.addAll(kernelService.shuttleMove( @@ -1151,6 +1228,15 @@ dto.setLocNo(standbyLocNoTo); })), MotionCtgType.SHUTTLE_MOVE + )); + + // 閿佸畾鎹㈠眰璺緞 + motionList.addAll(kernelService.mapLockPath( + null, + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(JSON.toJSONString(lockPath)); + })) )); // 鎻愬崌鏈虹┖杞界Щ鍔ㄥ埌绌挎杞﹀眰 @@ -1240,6 +1326,15 @@ null , MotionDto.build((dto -> { dto.setLiftNo(liftDevice.getId().intValue()); + })) + )); + + // 瑙i攣鎹㈠眰璺緞 + motionList.addAll(kernelService.mapUnlockPath( + null, + MotionDto.build((dto -> { + dto.setShuttleNo(shuttleDevice.getId().intValue()); + dto.setLocNo(JSON.toJSONString(lockPath)); })) )); @@ -1372,7 +1467,7 @@ motion.setMotionCtg(MotionCtgType.SHUTTLE_PALLET_LIFT.val()); })); - // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅 + // 绌挎杞﹁浇璐ц蛋琛岃嚦鐩爣搴撲綅 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(device.getId().intValue()); @@ -1382,7 +1477,7 @@ dto.setShuttleNo(device.getId().intValue()); dto.setLocNo(targetLoc); })), - MotionCtgType.SHUTTLE_MOVE + MotionCtgType.SHUTTLE_TRANSPORT )); //鎵樼洏涓嬮檷 -- Gitblit v1.9.1