|  |  |  | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | })); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | })); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | })); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 穿梭车空载移动 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | })); | 
|---|
|  |  |  |  | 
|---|