From 314729da5f6f84a6112344a2210aadfeeb2bac0c Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期一, 21 四月 2025 10:35:43 +0800 Subject: [PATCH] #出库找待机位优化 --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java | 206 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 186 insertions(+), 20 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java index 86a7415..d4f494a 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java @@ -3,8 +3,9 @@ import com.zy.asrs.wcs.core.domain.dto.MotionDto; import com.zy.asrs.wcs.core.model.enums.DeviceCtgType; import com.zy.asrs.wcs.core.model.enums.MotionCtgType; -import com.zy.asrs.wcs.rcs.entity.Motion; -import com.zy.asrs.wcs.rcs.service.MotionService; +import com.zy.asrs.wcs.core.entity.Motion; +import com.zy.asrs.wcs.core.service.MotionService; +import com.zy.asrs.wcs.core.utils.LiftDispatcher; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,7 +20,8 @@ @Autowired private MotionService motionService; - + @Autowired + private LiftDispatcher liftDispatcher; // agv ----------------------------------------------------------------------------- @Deprecated @@ -50,16 +52,18 @@ motion.setMotionCtg(MotionCtgType.LIFT_MOVE.val()); if (null != origin) { - motion.setOrigin(String.valueOf(origin.getLev())); + motion.setOrigin(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), origin.getLev()))); } - motion.setTarget(String.valueOf(target.getLev())); - })); + motion.setTarget(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), target.getLev()))); -// if (target.getUpdateLiftNo() != null && target.getWrkNo() != null) { -// if (target.getUpdateLiftNo()) { -// -// } -// } + if (target.getSync() != null) { + motion.setSync(target.getSync()); + } + + if (target.getReleaseLift() != null) { + motion.setReleaseLift(target.getReleaseLift()); + } + })); return motionList; } @@ -77,9 +81,19 @@ motion.setMotionCtg(MotionCtgType.LIFT_WITH_GOODS.val()); if (null != origin) { - motion.setOrigin(String.valueOf(origin.getLev())); + motion.setOrigin(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), origin.getLev()))); + motion.setOriDrt(origin.getStaNo());//婧愮珯 } - motion.setTarget(String.valueOf(target.getLev())); + motion.setTarget(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), target.getLev()))); + motion.setTarDrt(target.getStaNo());//鐩爣绔� + + if (target.getSync() != null) { + motion.setSync(target.getSync()); + } + + if (target.getReleaseLift() != null) { + motion.setReleaseLift(target.getReleaseLift()); + } })); return motionList; @@ -98,9 +112,9 @@ motion.setMotionCtg(MotionCtgType.LIFT_WITH_SHUTTLE.val()); if (null != origin) { - motion.setOrigin(String.valueOf(origin.getLev())); + motion.setOrigin(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), origin.getLev()))); } - motion.setTarget(String.valueOf(target.getLev())); + motion.setTarget(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), target.getLev()))); })); return motionList; @@ -119,9 +133,9 @@ motion.setMotionCtg(MotionCtgType.LIFT_WITH_GOODS_AND_SHUTTLE.val()); if (null != origin) { - motion.setOrigin(String.valueOf(origin.getLev())); + motion.setOrigin(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), origin.getLev()))); } - motion.setTarget(String.valueOf(target.getLev())); + motion.setTarget(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), target.getLev()))); })); return motionList; @@ -139,7 +153,7 @@ motion.setMotionCtg(MotionCtgType.LIFT_TRANSPORT_TO_CONVEYOR.val()); - motion.setOrigin(String.valueOf(origin.getLev())); + motion.setOrigin(String.valueOf(liftDispatcher.getLiftLevOffset(origin.getLiftNo(), origin.getLev()))); motion.setDockNo(String.valueOf(target.getDevpNo())); motion.setTarget(String.valueOf(target.getStaNo())); @@ -148,8 +162,100 @@ return motionList; } + /** + * 鎻愬崌鏈洪攣瀹� + */ + public List<Motion> liftLock(MotionDto origin, MotionDto target) { + List<Motion> motionList = new ArrayList<>(); + + motionList.add(Motion.build(motion -> { + motion.setDeviceCtg(DeviceCtgType.LIFT.val()); + motion.setDevice(String.valueOf(target.getLiftNo())); + motion.setMotionCtg(MotionCtgType.LIFT_LOCK.val()); + + if (target.getSync() != null) { + motion.setSync(target.getSync()); + } + + if (target.getReleaseLift() != null) { + motion.setReleaseLift(target.getReleaseLift()); + } + })); + + return motionList; + } + + /** + * 鎻愬崌鏈鸿В閿� + */ + public List<Motion> liftUnlock(MotionDto origin, MotionDto target) { + List<Motion> motionList = new ArrayList<>(); + + motionList.add(Motion.build(motion -> { + motion.setDeviceCtg(DeviceCtgType.LIFT.val()); + motion.setDevice(String.valueOf(target.getLiftNo())); + motion.setMotionCtg(MotionCtgType.LIFT_UNLOCK.val()); + + if (target.getSync() != null) { + motion.setSync(target.getSync()); + } + + if (target.getReleaseLift() != null) { + motion.setReleaseLift(target.getReleaseLift()); + } + })); + + return motionList; + } + + /** + * 鎻愬崌鏈�-灏忚溅宸插埌浣� + */ + public List<Motion> liftShuttleArrival(MotionDto origin, MotionDto target) { + List<Motion> motionList = new ArrayList<>(); + + motionList.add(Motion.build(motion -> { + motion.setDeviceCtg(DeviceCtgType.LIFT.val()); + motion.setDevice(String.valueOf(target.getLiftNo())); + motion.setMotionCtg(MotionCtgType.LIFT_SHUTTLE_ARRIVAL.val()); + })); + + return motionList; + } + + /** + * 鎻愬崌鏈�-灏忚溅宸查┒绂� + */ + public List<Motion> liftShuttleLeave(MotionDto origin, MotionDto target) { + List<Motion> motionList = new ArrayList<>(); + + motionList.add(Motion.build(motion -> { + motion.setDeviceCtg(DeviceCtgType.LIFT.val()); + motion.setDevice(String.valueOf(target.getLiftNo())); + motion.setMotionCtg(MotionCtgType.LIFT_SHUTTLE_LEAVE.val()); + })); + + return motionList; + } // shuttle ----------------------------------------------------------------------------- + + /** + * 灏忚溅鍧愭爣鏇存柊 + */ + public List<Motion> shuttleUpdateLocation(MotionDto origin, MotionDto target) { + List<Motion> motionList = new ArrayList<>(); + + motionList.add(Motion.build(motion -> { + motion.setDeviceCtg(DeviceCtgType.SHUTTLE.val()); + motion.setDevice(String.valueOf(target.getShuttleNo())); + motion.setMotionCtg(MotionCtgType.SHUTTLE_UPDATE_LOCATION.val()); + + motion.setTarget(target.getLocNo()); + })); + + return motionList; + } /** * 绌挎杞︾┖杞界Щ鍔� @@ -217,6 +323,10 @@ case SHUTTLE_TRANSPORT_TO_CONVEYOR: motion.setDockNo(String.valueOf(target.getStaNo())); break; + case SHUTTLE_MOVE_STANDBY://绌挎杞︾Щ鍔ㄥ埌寰呮満浣� + motion.setTarget(null);//绛夊緟鑷姩鎼滅储 + motion.setTemp(target.getLocNo());//鍏ㄩ儴寰呮満浣� + break; default: break; } @@ -228,14 +338,34 @@ return motionList; } - public List<Motion> shuttleCharge(MotionDto origin, MotionDto target) { + /** + * 绌挎杞﹀姩浣� + */ + public List<Motion> shuttleAction(MotionDto origin, MotionDto target, MotionCtgType motionCtgType) { List<Motion> motionList = new ArrayList<>(); motionList.add(Motion.build(motion -> { motion.setDeviceCtg(DeviceCtgType.SHUTTLE.val()); motion.setDevice(String.valueOf(target.getShuttleNo())); - motion.setMotionCtg(MotionCtgType.SHUTTLE_CHARGE_ON.val()); + motion.setMotionCtg(motionCtgType.val()); + + switch (motionCtgType) { + case SHUTTLE_PALLET_LIFT://鎵樼洏椤跺崌 + + break; + case SHUTTLE_PALLET_DOWN://鎵樼洏涓嬮檷 + + break; + case SHUTTLE_CHARGE_ON://鍏呯數寮� + + break; + case SHUTTLE_CHARGE_OFF://鍏呯數鍏� + + break; + default: + break; + } })); @@ -305,4 +435,40 @@ return motionList; } + // Map ----------------------------------------------------------------------------- + + /** + * 鍦板浘璺緞閿佸畾 + */ + public List<Motion> mapLockPath(MotionDto origin, MotionDto target) { + List<Motion> motionList = new ArrayList<>(); + + motionList.add(Motion.build(motion -> { + motion.setDeviceCtg(DeviceCtgType.MAP.val()); + motion.setDevice(String.valueOf(target.getShuttleNo())); + motion.setMotionCtg(MotionCtgType.MAP_LOCK_PATH.val()); + + motion.setTarget(target.getLocNo()); + })); + + return motionList; + } + + /** + * 鍦板浘璺緞瑙i攣 + */ + public List<Motion> mapUnlockPath(MotionDto origin, MotionDto target) { + List<Motion> motionList = new ArrayList<>(); + + motionList.add(Motion.build(motion -> { + motion.setDeviceCtg(DeviceCtgType.MAP.val()); + motion.setDevice(String.valueOf(target.getShuttleNo())); + motion.setMotionCtg(MotionCtgType.MAP_UNLOCK_PATH.val()); + + motion.setTarget(target.getLocNo()); + })); + + return motionList; + } + } -- Gitblit v1.9.1