| | |
| | | import com.zy.asrs.wcs.core.model.enums.MotionCtgType; |
| | | 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; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private MotionService motionService; |
| | | |
| | | @Autowired |
| | | private LiftDispatcher liftDispatcher; |
| | | |
| | | // agv ----------------------------------------------------------------------------- |
| | | @Deprecated |
| | |
| | | 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; |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | |
| | | 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())); |
| | | |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 穿梭车空载移动 |
| | |
| | | case SHUTTLE_MOVE_FROM_LIFT_TO_CONVEYOR://穿梭车移出提升机去输送线 |
| | | motion.setTemp(String.valueOf(origin.getLiftNo()));//保存提升机号 |
| | | motion.setDockNo(String.valueOf(target.getStaNo())); |
| | | break; |
| | | case SHUTTLE_MOVE_STANDBY://穿梭车移动到待机位 |
| | | motion.setTarget(null);//等待自动搜索 |
| | | motion.setTemp(target.getLocNo());//全部待机位 |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | 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; |
| | | } |
| | | |
| | | })); |
| | | |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 地图路径解锁 |
| | | */ |
| | | 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; |
| | | } |
| | | |
| | | } |