From d835d1b51f832889929cdf69010034a30ef44d02 Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期四, 17 十月 2024 13:57:29 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 178 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 123 insertions(+), 55 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 d81b555..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 )); // 绌挎杞﹀叆搴撴墭鐩樹笅闄� @@ -254,12 +253,12 @@ MotionCtgType.SHUTTLE_MOVE )); - // 閿佸畾鐩爣妤煎眰绌挎杞﹀緟鏈轰綅璺緞 + // 閿佸畾鎹㈠眰璺緞 motionList.addAll(kernelService.mapLockPath( null, MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(standbyLocNoFrom); + dto.setLocNo(JSON.toJSONString(lockPath)); })) )); @@ -354,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, @@ -363,7 +371,7 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅 + // 绌挎杞﹁浇璐ц蛋琛岃嚦鐩爣搴撲綅 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -374,7 +382,7 @@ dto.setLiftNo(transferLiftDevice.getId().intValue()); dto.setLocNo(destLoc); })), - MotionCtgType.SHUTTLE_MOVE + MotionCtgType.SHUTTLE_TRANSPORT )); // 绌挎杞﹀叆搴撴墭鐩樹笅闄� @@ -468,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>() @@ -485,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;//鏈垎鏋愭垚鍔� } /** @@ -517,7 +534,7 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - // 绌挎杞﹀嚭搴撹嚦鎻愬崌鏈哄緟鏈轰綅 + // 绌挎杞﹁浇璐у嚭搴撹嚦鏈�鍚庝竴娈佃矾寰勭瓑寰� motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -525,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 )); // 绌挎杞﹀嚭搴撴墭鐩樹笅闄� @@ -538,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 )); // 鎻愬崌鏈鸿浇璐хЩ鍔� @@ -552,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 )); // 杈撻�佺嚎杩愯緭鑷冲嚭搴撳彛 @@ -602,12 +634,12 @@ MotionCtgType.SHUTTLE_MOVE )); - // 閿佸畾鐩爣妤煎眰绌挎杞﹀緟鏈轰綅璺緞 + // 閿佸畾鎹㈠眰璺緞 motionList.addAll(kernelService.mapLockPath( null, MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(standbyLocNoFrom); + dto.setLocNo(JSON.toJSONString(lockPath)); })) )); @@ -702,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 -> { @@ -725,7 +766,7 @@ MotionCtgType.SHUTTLE_PALLET_LIFT )); - // 绌挎杞﹀嚭搴撹嚦鎻愬崌鏈哄緟鏈轰綅 + // 绌挎杞﹁浇璐у嚭搴撹嚦鏈�鍚庝竴娈佃矾寰勭瓑寰� motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); @@ -733,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 )); // 绌挎杞﹀嚭搴撴墭鐩樹笅闄� @@ -746,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 )); // 鎻愬崌鏈鸿浇璐хЩ鍔� @@ -759,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 )); // 杈撻�佺嚎杩愯緭鑷冲嚭搴撳彛 @@ -1156,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( @@ -1171,12 +1230,12 @@ MotionCtgType.SHUTTLE_MOVE )); - // 閿佸畾鐩爣妤煎眰绌挎杞﹀緟鏈轰綅璺緞 + // 閿佸畾鎹㈠眰璺緞 motionList.addAll(kernelService.mapLockPath( null, MotionDto.build((dto -> { dto.setShuttleNo(shuttleDevice.getId().intValue()); - dto.setLocNo(standbyLocNoFrom); + dto.setLocNo(JSON.toJSONString(lockPath)); })) )); @@ -1267,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)); })) )); @@ -1399,7 +1467,7 @@ motion.setMotionCtg(MotionCtgType.SHUTTLE_PALLET_LIFT.val()); })); - // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅 + // 绌挎杞﹁浇璐ц蛋琛岃嚦鐩爣搴撲綅 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { dto.setShuttleNo(device.getId().intValue()); @@ -1409,7 +1477,7 @@ dto.setShuttleNo(device.getId().intValue()); dto.setLocNo(targetLoc); })), - MotionCtgType.SHUTTLE_MOVE + MotionCtgType.SHUTTLE_TRANSPORT )); //鎵樼洏涓嬮檷 -- Gitblit v1.9.1