zjj
8 天以前 e55758398c293d16dd1533c3bd67a67c57436474
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
@@ -5,6 +5,7 @@
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;
@@ -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;
    }
    /**
     * 穿梭车空载移动
@@ -182,6 +288,10 @@
                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;
@@ -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;
    }
    /**
     * 地图路径解锁
     */
    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;
    }
}