#
Junjie
2024-07-13 5fd478fcee23bbdac0fe4fbe9becdd2a28d14c56
#
11个文件已修改
530 ■■■■■ 已修改文件
zy-asrs-flow/src/pages/device/lift/index.jsx 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/device/shuttle/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasLiftController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java 132 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/LiftOperatorParam.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java 282 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtDevpThread.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtLiftThread.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/device/lift/index.jsx
@@ -13,8 +13,11 @@
    const [ws, setWs] = useState(null);
    const [openOpera, setOpenOpera] = useState(false);
    const [currentData, setCurrentData] = useState(null);
    const [moveLocType, setMoveLocType] = useState(1);
    const [mapLev, setMapLev] = useState([]);
    const [targetLoc, setTargetLoc] = useState(1);
    const [originLoc, setOriginLoc] = useState(null);
    const [originSite, setOriginSite] = useState(null);
    const [targetSite, setTargetSite] = useState(null);
    useEffect(() => {
        connect();
@@ -91,7 +94,6 @@
    const showOpera = (data) => {
        setOpenOpera(true);
        console.log(data);
        setCurrentData(data);
    };
@@ -123,8 +125,20 @@
        }
    }
    const targetLocChange = (e) => {
        setTargetLoc(e.target.value)
    const targetLocChange = (value) => {
        setTargetLoc(value)
    }
    const originLocChange = (e) => {
        setOriginLoc(e.target.value)
    }
    const targetSiteChange = (e) => {
        setTargetSite(e.target.value)
    }
    const originSiteChange = (e) => {
        setOriginSite(e.target.value)
    }
    const liftOperator = async (type) => {
@@ -132,8 +146,10 @@
            const resp = await Http.doPost('api/basLift/operator/lift', {
                liftNo: currentData.liftNo,
                liftTaskMode: type,
                sourceStaNo: 0,
                staNo: moveLocType
                sourceStaNo: originSite,
                staNo: targetSite,
                sourceLev: originLoc,
                targetLev: targetLoc,
            });
            if (resp.code === 200) {
                message.success("请求成功");
@@ -146,10 +162,6 @@
            message.warning("请求失败");
            return false;
        }
    }
    const moveLocTypeChange = (e) => {
        setMoveLocType(e)
    }
    let codeContent = (<PageContainer
@@ -247,12 +259,23 @@
                            <p>
                                <Select
                                    defaultValue="1"
                                    onChange={moveLocTypeChange}
                                    onChange={targetLocChange}
                                    style={{ width: 120 }}
                                    options={mapLev}
                                />
                                <span><Button onClick={() => liftOperator('move')}>移动</Button></span>
                                <span><Button onClick={() => liftOperator('move')}>升降</Button></span>
                            </p>
                            <p>
                                <Input addonBefore="起始位置" onChange={originSiteChange} />
                            </p>
                            <p>
                                <Input addonBefore="目标位置" onChange={targetSiteChange} />
                            </p>
                            <p>
                            </p>
                            <div className="commandItem">
                                <Button onClick={() => liftOperator('movePallet')}>托盘出入</Button>
                            </div>
                        </Card>
                    </div>
@@ -261,6 +284,12 @@
                            <div className="commandItem">
                                <Button onClick={() => liftOperator('reset')}>复位</Button>
                            </div>
                            <div className="commandItem">
                                <Button onClick={() => liftOperator('lock')}>锁定</Button>
                            </div>
                            <div className="commandItem">
                                <Button onClick={() => liftOperator('unlock')}>解锁</Button>
                            </div>
                        </Card>
                    </div>
                </Drawer>
zy-asrs-flow/src/pages/device/shuttle/index.jsx
@@ -325,8 +325,6 @@
                            </p>
                            <p>
                            </p>
                            <p>
                            </p>
                            <div className="commandItem">
                                <Button onClick={() => shuttleOperator('moveLoc')}>移动到目标位置</Button>
                                <Button onClick={() => shuttleOperator('takeMove')}>取放货作业</Button>
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
@@ -122,10 +122,10 @@
                //复位
                command.setComplete(true);
            } else if (command.getMode() == LiftCommandModeType.LOCK.id) {
                //复位
                //锁定
                command.setComplete(true);
            } else if (command.getMode() == LiftCommandModeType.UNLOCK.id) {
                //复位
                //解锁
                command.setComplete(true);
            }
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasLiftController.java
@@ -185,14 +185,14 @@
        task.setTaskSts(TaskStsType.NEW_MANUAL.sts);
        task.setTaskCtg(taskCtg.getId());
        task.setPriority(10);
        task.setOriginSite(null);
        task.setOriginLoc(param.getSourceStaNo());
        task.setDestSite(param.getLiftTaskMode());
        task.setDestLoc(param.getStaNo());
        task.setOriginSite(param.getSourceStaNo());
        task.setOriginLoc(param.getSourceLev());
        task.setDestSite(param.getStaNo());
        task.setDestLoc(param.getTargetLev());
        task.setIoTime(new Date());
        task.setStartTime(new Date());
        task.setStatus(1);
        task.setMemo("manual");
        task.setMemo(param.getLiftTaskMode());
        task.setLiftNo(liftNo);
        boolean result = taskService.save(task);
        if (!result) {
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java
@@ -186,12 +186,12 @@
        task.setPriority(10);
        task.setOriginSite(null);
        task.setOriginLoc(sourceLoc);
        task.setDestSite(targetSite);
        task.setDestSite(null);
        task.setDestLoc(targetLoc);
        task.setIoTime(new Date());
        task.setStartTime(new Date());
        task.setStatus(1);
        task.setMemo("manual");
        task.setMemo(targetSite);
        task.setShuttleNo(param.getShuttleNo());
        if (param.getShuttleTaskMode().equals("takeMove")) {
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
@@ -113,39 +113,39 @@
            destSite = String.valueOf(path.getDeviceStn());
        }
        //判断出入库模式
        BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>()
                .eq(BasConveyorSta::getSiteNo, destSite));
        if (!basConveyorSta.getWorkMode().equals((int) WorkModeType.PAKIN_MODE.id)) {
            //不是入库模式,检测是否可切换入库
            //获取出库任务类型
            TaskCtg taskInCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
                    .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.OUT))
                    .eq(TaskCtg::getStatus, 1));
            if (taskInCtg == null) {
                return R.error("任务类型异常");
            }
            List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
                    .eq(Task::getTaskCtg, taskInCtg.getId()));
            if (!tasks.isEmpty()) {
                return R.error("当前存在出库任务,无法切换入库模式");
            }
            BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getConveyorNo, basConveyorSta.getConveyorNo()));
            if(basConveyor == null) {
                return R.error("输送线不存在");
            }
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue());
            if(devpThread == null) {
                return R.error("输送线线程不存在");
            }
            boolean result = devpThread.switchWorkMode(Integer.parseInt(destSite), WorkModeType.PAKIN_MODE.id);
            if (!result) {
                return R.error("模式切换失败");
            }
        }
//        //判断出入库模式
//        BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>()
//                .eq(BasConveyorSta::getSiteNo, destSite));
//        if (!basConveyorSta.getWorkMode().equals((int) WorkModeType.PAKIN_MODE.id)) {
//            //不是入库模式,检测是否可切换入库
//            //获取出库任务类型
//            TaskCtg taskInCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
//                    .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.OUT))
//                    .eq(TaskCtg::getStatus, 1));
//            if (taskInCtg == null) {
//                return R.error("任务类型异常");
//            }
//            List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
//                    .eq(Task::getTaskCtg, taskInCtg.getId()));
//            if (!tasks.isEmpty()) {
//                return R.error("当前存在出库任务,无法切换入库模式");
//            }
//
//            BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getConveyorNo, basConveyorSta.getConveyorNo()));
//            if(basConveyor == null) {
//                return R.error("输送线不存在");
//            }
//
//            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue());
//            if(devpThread == null) {
//                return R.error("输送线线程不存在");
//            }
//
//            boolean result = devpThread.switchWorkMode(Integer.parseInt(destSite), WorkModeType.PAKIN_MODE.id);
//            if (!result) {
//                return R.error("模式切换失败");
//            }
//        }
        //优先级
        Integer priority = 10;
@@ -249,39 +249,39 @@
            originSite = String.valueOf(originStaDto.getStaNo());
        }
        //判断出入库模式
        BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>()
                .eq(BasConveyorSta::getSiteNo, originSite));
        if (!basConveyorSta.getWorkMode().equals((int) WorkModeType.PAKOUT_MODE.id)) {
            //不是出库模式,检测是否可切换出库
            //获取入库任务类型
            TaskCtg taskInCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
                    .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.IN))
                    .eq(TaskCtg::getStatus, 1));
            if (taskInCtg == null) {
                return R.error("任务类型异常");
            }
            List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
                    .eq(Task::getTaskCtg, taskInCtg.getId()));
            if (!tasks.isEmpty()) {
                return R.error("当前存在入库任务,无法切换出库模式");
            }
            BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getConveyorNo, basConveyorSta.getConveyorNo()));
            if(basConveyor == null) {
                return R.error("输送线不存在");
            }
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue());
            if(devpThread == null) {
                return R.error("输送线线程不存在");
            }
            boolean result = devpThread.switchWorkMode(Integer.parseInt(originSite), WorkModeType.PAKOUT_MODE.id);
            if (!result) {
                return R.error("模式切换失败");
            }
        }
//        //判断出入库模式
//        BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>()
//                .eq(BasConveyorSta::getSiteNo, originSite));
//        if (!basConveyorSta.getWorkMode().equals((int) WorkModeType.PAKOUT_MODE.id)) {
//            //不是出库模式,检测是否可切换出库
//            //获取入库任务类型
//            TaskCtg taskInCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
//                    .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.IN))
//                    .eq(TaskCtg::getStatus, 1));
//            if (taskInCtg == null) {
//                return R.error("任务类型异常");
//            }
//            List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
//                    .eq(Task::getTaskCtg, taskInCtg.getId()));
//            if (!tasks.isEmpty()) {
//                return R.error("当前存在入库任务,无法切换出库模式");
//            }
//
//            BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getConveyorNo, basConveyorSta.getConveyorNo()));
//            if(basConveyor == null) {
//                return R.error("输送线不存在");
//            }
//
//            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue());
//            if(devpThread == null) {
//                return R.error("输送线线程不存在");
//            }
//
//            boolean result = devpThread.switchWorkMode(Integer.parseInt(originSite), WorkModeType.PAKOUT_MODE.id);
//            if (!result) {
//                return R.error("模式切换失败");
//            }
//        }
        //优先级
        Integer priority = 10;
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/LiftOperatorParam.java
@@ -17,4 +17,10 @@
    //目标站
    private String staNo;
    //源层
    private String sourceLev;
    //目标层
    private String targetLev;
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -67,12 +67,6 @@
        /**
         * 入库
         * 一、入库目标层有穿梭车
         * 1.提升机升降到源层
         * 2.货物从输送线到提升机
         * 3.提升机载货移动(非必需)
         * 4.穿梭车走行至提升机
         * 5.穿梭车入库至目标库位
         */
        if (task.getTaskSts() == TaskStsType.NEW_INBOUND.sts) {
            // locNo
@@ -151,13 +145,13 @@
                motionList.addAll(kernelService.liftMoveGoods(
                        MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(5);//索牌项目5层是输送线层
                            dto.setStaNo(1);//提升机左侧
                            dto.setLev(1);//光泰1层是输送线层
                            dto.setStaNo(31004);//入库站点
                        }))
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(Utils.getLev(task.getDestLoc()));
                            dto.setStaNo(0);//提升机内侧
                            dto.setStaNo(Integer.parseInt(task.getDestSite()));
                            dto.setSync(0);//异步执行
                        }))
                ));
@@ -175,28 +169,6 @@
                        MotionCtgType.SHUTTLE_MOVE
                ));
                // 锁定提升机
                motionList.addAll(kernelService.liftLock(
                        null
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                        }))
                ));
                // 穿梭车待机位至提升机
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoTo);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLocNo(liftLocNoTo);
                        })),
                        MotionCtgType.SHUTTLE_MOVE_TO_LIFT
                ));
                // 穿梭车入库顶升
                motionList.addAll(kernelService.shuttleAction(
                        null,
@@ -204,29 +176,6 @@
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                        })),
                        MotionCtgType.SHUTTLE_PALLET_LIFT
                ));
                // 穿梭车入库移动至提升机待机位
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLocNo(liftLocNoFrom);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoFrom);
                        })),
                        MotionCtgType.SHUTTLE_MOVE_FROM_LIFT
                ));
                // 解锁提升机
                motionList.addAll(kernelService.liftUnlock(
                        null
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setReleaseLift(1);//执行完成后释放提升机
                        }))
                ));
                // 穿梭车走行至目标库位
@@ -254,14 +203,22 @@
            /**
             * 二、入库目标层没有穿梭车
             * 1.提升机升降到穿梭车层
             * 2.穿梭车走行至提升机待机位
             * 3.提升机搬运穿梭车至目标层
             * 4.货物从输送线到提升机
             * 5.提升机载车与货移动(非必需)
             * 6.穿梭车入库至目标库位
             */
            } else {
                // 提升机载货移动
                motionList.addAll(kernelService.liftMoveGoods(
                        MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(1);//光泰1层是输送线层
                            dto.setStaNo(31004);//入库站点
                        }))
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(Utils.getLev(task.getDestLoc()));
                            dto.setStaNo(Integer.parseInt(task.getDestSite()));
                        }))
                ));
                // 穿梭车走行至提升机库位待机位
                motionList.addAll(kernelService.shuttleMove(
@@ -316,17 +273,15 @@
                        }))
                ));
                // 提升机载货移动
                motionList.addAll(kernelService.liftMoveGoods(
                // 提升机搬车 至 目标位置层
                motionList.addAll(kernelService.liftMoveShuttle(
                        MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(5);//索牌项目5层是输送线层
                            dto.setStaNo(1);//提升机左侧
                        }))
                        , MotionDto.build((dto -> {
                            dto.setLev(Utils.getLev(shuttleLocNo));
                        })),
                        MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(Utils.getLev(task.getDestLoc()));
                            dto.setStaNo(0);//提升机内侧
                            dto.setLev(Utils.getLev(destLoc));
                        }))
                ));
@@ -338,15 +293,6 @@
                        }))
                ));
                // 穿梭车入库顶升
                motionList.addAll(kernelService.shuttleAction(
                        null,
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                        })),
                        MotionCtgType.SHUTTLE_PALLET_LIFT
                ));
                // 更新小车坐标
                motionList.addAll(kernelService.shuttleUpdateLocation(
                        null
@@ -356,7 +302,7 @@
                        }))
                ));
                // 穿梭车入库移动至提升机待机位
                // 穿梭车移动至提升机待机位
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
@@ -377,6 +323,15 @@
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setReleaseLift(1);//执行完成后释放提升机
                        }))
                ));
                // 穿梭车入库顶升
                motionList.addAll(kernelService.shuttleAction(
                        null,
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                        })),
                        MotionCtgType.SHUTTLE_PALLET_LIFT
                ));
                // 穿梭车走行至目标库位
@@ -500,13 +455,6 @@
            /**
             * 出库
             * 一、出库起始层有穿梭车
             * 1.穿梭车走行至出库库位
             * 2.提升机到出库起始层
             * 3.穿梭车出库至提升机
             * 4.穿梭车离开提升机
             * 5.提升机载货移动(非必需)
             * 6.输送线运输至出库口
             */
            if (Utils.getLev(shuttleLocNo) == Utils.getLev(originLoc)) {
@@ -549,37 +497,6 @@
                        MotionCtgType.SHUTTLE_MOVE
                ));
                // 提升机空载移动到穿梭车层
                motionList.addAll(kernelService.liftMove(
                        null
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(Utils.getLev(shuttleLocNo));
                        }))
                ));
                // 锁定提升机
                motionList.addAll(kernelService.liftLock(
                        null
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                        }))
                ));
                // 穿梭车待机位至提升机
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoTo);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLocNo(liftLocNoTo);
                        })),
                        MotionCtgType.SHUTTLE_MOVE_TO_LIFT
                ));
                // 穿梭车出库托盘下降
                motionList.addAll(kernelService.shuttleAction(
                        null,
@@ -589,39 +506,17 @@
                        MotionCtgType.SHUTTLE_PALLET_DOWN
                ));
                // 穿梭车离开提升机 - 到提升机待机位
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLocNo(liftLocNoFrom);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoFrom);
                        })),
                        MotionCtgType.SHUTTLE_MOVE_FROM_LIFT
                ));
                // 解锁提升机
                motionList.addAll(kernelService.liftUnlock(
                        null
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                        }))
                ));
                // 提升机载货移动
                motionList.addAll(kernelService.liftMoveGoods(
                        MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(Utils.getLev(task.getOriginLoc()));
                            dto.setStaNo(0);//提升机内侧
                            dto.setStaNo(Integer.parseInt(task.getOriginSite()));//起始站点
                        }))
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(5);//索牌项目5层是输送线层
                            dto.setStaNo(1);//提升机左侧
                            dto.setLev(1);//光泰1层是输送线层
                            dto.setStaNo(31004);//出库站点
                            dto.setSync(0);//异步执行
                            dto.setReleaseLift(1);//执行完成后释放提升机
                        }))
@@ -655,16 +550,6 @@
            /**
             * 二、出库起始层没有穿梭车
             *
             * 1.提升机到穿梭车层
             * 2.穿梭车走行至提升机
             * 3.提升机载车至出库起始层
             * 4.穿梭车走行至出库库位
             * 5.穿梭车出库至提升机
             * 6.穿梭车离开提升机
             * 7.提升机载货移动(非必需)
             * 8.输送线运输至出库口
             *
             */
            } else {
@@ -810,37 +695,6 @@
                        MotionCtgType.SHUTTLE_MOVE
                ));
                // 提升机空载移动到目标层
                motionList.addAll(kernelService.liftMove(
                        null
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(Utils.getLev(originLoc));
                        }))
                ));
                // 锁定提升机
                motionList.addAll(kernelService.liftLock(
                        null
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                        }))
                ));
                // 穿梭车待机位至提升机
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoFrom);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLocNo(liftLocNoFrom);
                        })),
                        MotionCtgType.SHUTTLE_MOVE_TO_LIFT
                ));
                // 穿梭车出库托盘下降
                motionList.addAll(kernelService.shuttleAction(
                        null,
@@ -850,40 +704,19 @@
                        MotionCtgType.SHUTTLE_PALLET_DOWN
                ));
                // 穿梭车离开提升机 - 到提升机待机位
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLocNo(liftLocNoFrom);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoFrom);
                        })),
                        MotionCtgType.SHUTTLE_MOVE_FROM_LIFT
                ));
                // 解锁提升机
                motionList.addAll(kernelService.liftUnlock(
                        null
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                        }))
                ));
                // 提升机载货移动
                motionList.addAll(kernelService.liftMoveGoods(
                        MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(Utils.getLev(task.getOriginLoc()));
                            dto.setStaNo(0);//提升机内侧
                            dto.setStaNo(Integer.parseInt(task.getOriginSite()));//起始站点
                        }))
                        , MotionDto.build((dto -> {
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLev(5);//索牌项目5层是输送线层
                            dto.setStaNo(1);//提升机左侧
                            dto.setLev(1);//光泰1层是输送线层
                            dto.setStaNo(31004);//出库站点
                            dto.setSync(0);//异步执行
                            dto.setReleaseLift(1);//执行完成后释放提升机
                        }))
                ));
@@ -1324,14 +1157,6 @@
                    MotionCtgType.SHUTTLE_MOVE_TO_LIFT
            ));
            // 向提升机发送小车已到位信号
            motionList.addAll(kernelService.liftShuttleArrival(
                    null
                    , MotionDto.build((dto -> {
                        dto.setLiftNo(liftDevice.getId().intValue());
                    }))
            ));
            // 解锁提升机
            motionList.addAll(kernelService.liftUnlock(
                    null
@@ -1420,7 +1245,7 @@
        String sourceLoc = task.getOriginLoc();//源库位
        String targetLoc = task.getDestLoc();//任务目标(借用字段)
        String targetSite = task.getDestSite();//任务类型(借用字段)
        String targetSite = task.getMemo();//任务类型(借用字段)
        Device device = deviceService.getOne(new LambdaQueryWrapper<Device>()
                .eq(Device::getDeviceNo, task.getShuttleNo())
@@ -1564,7 +1389,8 @@
            return motionList;
        }
        if (task.getDestSite().equals("move")) {
        String destSite = task.getMemo();//任务目标(借用字段)
        if (destSite.equals("move")) {
            //提升机升降楼层
            // 提升机空载移动到穿梭车层
@@ -1576,23 +1402,39 @@
                    }))
            ));
        } else if (task.getDestSite().equals("movePallet")) {
        } else if (destSite.equals("movePallet")) {
            //移动托盘
            // 提升机移动托盘
            motionList.addAll(kernelService.liftMoveGoods(
                    MotionDto.build((dto -> {
                        dto.setLiftNo(device.getId().intValue());
                        dto.setLev(Integer.parseInt(task.getOriginLoc()));
                        dto.setLev(0);
                        dto.setStaNo(Integer.parseInt(task.getOriginSite()));
                    }))
                    , MotionDto.build((dto -> {
                        dto.setLiftNo(device.getId().intValue());
                        dto.setLev(Integer.parseInt(task.getDestLoc()));
                        dto.setLev(0);
                        dto.setStaNo(Integer.parseInt(task.getDestSite()));
                    }))
            ));
        } else if (destSite.equals("lock")) {
            // 锁定提升机
            motionList.addAll(kernelService.liftLock(
                    null
                    , MotionDto.build((dto -> {
                        dto.setLiftNo(device.getId().intValue());
                    }))
            ));
        } else if (destSite.equals("unlock")) {
            // 解锁提升机
            motionList.addAll(kernelService.liftUnlock(
                    null
                    , MotionDto.build((dto -> {
                        dto.setLiftNo(device.getId().intValue());
                    }))
            ));
        }
        return motionList;
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtDevpThread.java
@@ -65,7 +65,7 @@
        this.device = device;
        this.redisUtil = redisUtil;
        workModeTypes.put(101, new WorkModeTypeDto(101, WorkModeType.NONE, "DB1001.120"));
//        workModeTypes.put(101, new WorkModeTypeDto(101, WorkModeType.NONE, "DB1001.120"));
    }
    private ArrayList<BasConveyorSta> getStaNo() {
@@ -139,7 +139,7 @@
            }
        }
        OperateResultExOne<byte[]> resultBarcode = siemensS7Net.Read("DB100.160", (short) 8);
        OperateResultExOne<byte[]> resultBarcode = siemensS7Net.Read("DB100.166", (short) 8);
        if (resultBarcode.IsSuccess) {
            //条码数据
            String barcode = siemensS7Net.getByteTransform().TransString(resultBarcode.Content,0,8, "UTF-8");// 条码
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtLiftThread.java
@@ -114,8 +114,8 @@
                liftProtocol.setHasCar(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6) == 1);
                //当前楼层
                liftProtocol.setLev((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 8));
                //工作号
                liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt32(result1.Content, 12));
//                //工作号
//                liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt32(result1.Content, 12));
                //设备故障
                liftProtocol.setError(siemensS7Net.getByteTransform().TransInt16(result1.Content, 16) == 1);
                //故障码
@@ -212,22 +212,23 @@
            return false;
        }
        List<Short> shorts = JSON.parseArray(command.getBody(), Short.class);
        short[] array = new short[shorts.size()];//获取命令报文
        for (int i = 0; i < shorts.size(); i++) {
            array[i] = shorts.get(i);
        List<Integer> list = JSON.parseArray(command.getBody(), Integer.class);
        int[] array = new int[list.size()];//获取命令报文
        for (int i = 0; i < list.size(); i++) {
            array[i] = list.get(i);
        }
        OperateResult result = null;
        if (command.getMode() == LiftCommandModeType.MOVE.id) {
            //移动
             result = siemensS7Net.Write("DB101.2", array);
            result = siemensS7Net.Write("DB101.2", (short) array[0]);
            result = siemensS7Net.Write("DB101.4", (int) array[1]);
        } else if (command.getMode() == LiftCommandModeType.PALLET_INOUT.id) {
            //托盘出入
            result = siemensS7Net.Write("DB101.8", array);
        } else if (command.getMode() == LiftCommandModeType.LOCK.id || command.getMode() == LiftCommandModeType.UNLOCK.id) {
            //提升机锁定/解锁
            result = siemensS7Net.Write("DB101.0", array);
            result = siemensS7Net.Write("DB101.0", (short) array[0]);
        }
        if (result != null && result.IsSuccess) {
@@ -244,12 +245,12 @@
    @Override
    public boolean lock(LiftCommand command) {
        return true;
        return write(command);
    }
    @Override
    public boolean unlock(LiftCommand command) {
        return true;
        return write(command);
    }
    @Override
@@ -319,10 +320,8 @@
    @Override
    public boolean isLock(ExecuteSupport support) {
        if (support != null) {
            return support.judgement();
        }
        return true;
        InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();
        return extend.getLock();
    }
    @Override
@@ -353,7 +352,7 @@
    @Override
    public List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
        // 开始任务
        short[] array = new short[2];
        short[] array = new short[3];
        array[0] = originSta.shortValue();//起始站
        array[1] = targetSta.shortValue();//目标站
        array[2] = taskNo.shortValue();//工作号
@@ -381,7 +380,7 @@
        command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
        command.setTaskNo(taskNo);
        command.setBody(JSON.toJSONString(array));
        command.setMode(LiftCommandModeType.PALLET_INOUT.id);
        command.setMode(lock ? LiftCommandModeType.LOCK.id : LiftCommandModeType.UNLOCK.id);
        ArrayList<LiftCommand> list = new ArrayList<>();
        list.add(command);
zy-asrs-wcs/src/main/resources/application.yml
@@ -18,7 +18,7 @@
#    url: jdbc:mysql://47.97.1.152:3306/asrs?useUnicode=trKue&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#    username: root
#    password: zy@123
    url: jdbc:mysql://127.0.0.1:3306/asrs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    url: jdbc:mysql://127.0.0.1:3306/jxgtasrs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root
#    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver