Junjie
2023-06-27 d317c70cf46549a5cc190d1e3334bd8945ee46a8
单步命令完成状态
5个文件已修改
116 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/LiftCommand.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/ShuttleCommand.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/LiftThread.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/ShuttleThread.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1701,9 +1701,6 @@
                    && !liftProtocol.getRunning()
            ) {
                //标记复位
                liftProtocol.setPakMk(true);
                DevpThread devpThread = null;
                Integer devpId = null;
                for (DevpSlave devp : slaveProperties.getDevp()){
@@ -1715,6 +1712,16 @@
                //将任务档标记为完成
                WrkMast wrkMast = wrkMastMapper.selectByWorkNo372428(liftProtocol.getTaskNo().intValue());
                if (wrkMast != null) {
                    //判断提升机是否到达任务楼层
                    String locNo = wrkMast.getIoType() < 101 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo();
                    int lev = Utils.getLev(locNo);//任务目标楼层
                    if (liftProtocol.getLev().intValue() != lev) {
                        continue;//提升机没有到达目标
                    }
                    //标记复位
                    liftProtocol.setPakMk(true);
                    switch (wrkMast.getWrkSts().intValue()) {
                        case 3://3.提升机搬运中 ==> 4.提升机搬运完成
                            //给目标站设置工作号
@@ -1758,6 +1765,9 @@
                //查询是否有充电任务
                WrkCharge wrkCharge = wrkChargeMapper.selectByWorkNo(liftProtocol.getTaskNo().intValue());
                if (wrkCharge != null) {
                    //标记复位
                    liftProtocol.setPakMk(true);
                    switch (wrkCharge.getWrkSts().intValue()) {
                        case 54://提升机搬运中
                            wrkCharge.setWrkSts(55L);//提升机搬运完成
src/main/java/com/zy/core/model/command/LiftCommand.java
@@ -80,6 +80,11 @@
     */
    private Short staNo;
    /**
     * 命令是否完成,默认false未完成
     */
    private Boolean complete = false;
    public Short getLiftLockShortValue() {
        if (liftLock == null) {
            return (short) 0;
src/main/java/com/zy/core/model/command/ShuttleCommand.java
@@ -93,4 +93,9 @@
     */
    private Short commandEnd;
    /**
     * 命令是否完成,默认false未完成
     */
    private Boolean complete = false;
}
src/main/java/com/zy/core/thread/LiftThread.java
@@ -375,6 +375,43 @@
        int size = commands.size();
        LiftAssignCommand assignCommand = redisCommand.getAssignCommand();
        if (commandStep != 0) {
            //判断上一条指令是否完成
            LiftCommand command = commands.get(commandStep - 1);
            if (command.getRun().intValue() == 1) {
                //提升机升降命令
                if (command.getDistPosition().intValue() == liftProtocol.getPositionArrivalFeedback().intValue()) {
                    //提升机目标楼层和实际楼层相同,则认定命令完成
                    command.setComplete(true);
                }
            } else if (command.getRun().intValue() == 2 || command.getRun().intValue() == 3) {
                //无货正转,有货正转
                if (!liftProtocol.getForwardRotationFeedback()) {
                    //输送线正转反馈不在运行中,认定命令完成
                    command.setComplete(true);
                }
            } else if (command.getRun().intValue() == 6 || command.getRun().intValue() == 7) {
                //有货反转,无货反转
                if (!liftProtocol.getReverseFeedback()) {
                    //输送线反转反馈不在运行中,认定命令完成
                    command.setComplete(true);
                }
            } else if (command.getRun().intValue() == 4) {
                //输送线停止
                if (!liftProtocol.getForwardRotationFeedback() && !liftProtocol.getReverseFeedback()) {
                    //输送线正转反转都不在运行中,认定命令完成
                    command.setComplete(true);
                }
            }
            //任务数据保存到redis
            redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
            if (!command.getComplete()) {
                //上一条任务未完成,禁止下发命令
                return false;
            }
        }
        //取出命令
        LiftCommand command = commands.get(commandStep);
        if (command.getOperaStaNo() != null && command.getDevpId() != null) {
src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -739,8 +739,57 @@
        if (commandStep != 0) {
            //判断上一条指令是否完成
            ShuttleCommand command = commands.get(commandStep - 1);
            if (command.getDistCodeNum().intValue() == shuttleProtocol.getCurrentCode().intValue()) {
                //上一条指令的目标位置
            if (command.getCommandWord().intValue() == 1) {
                //移动命令
                if (command.getDistCodeNum().intValue() == shuttleProtocol.getCurrentCode().intValue()) {
                    //上一条指令的目标位置和当前小车位置相同,则认定上一条任务完成
                    command.setComplete(true);
                }
            } else if (command.getCommandWord().intValue() == 2) {
                //托盘顶升命令
                if (command.getPalletLift().intValue() == 1) {
                    //顶升
                    //判断是否顶升到位
                    if (shuttleProtocol.getPlcOutputLift()) {
                        //自动模式
                        if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 1) {
                            //顶升到位,且托盘雷达有物,认定任务完成
                            command.setComplete(true);
                        }else {
                            //手动模式,不判断托盘雷达
                            //顶升到位,认定任务完成
                            command.setComplete(true);
                        }
                    }
                }else {
                    //下降
                    //判断是否下降到位,判断托盘雷达是否无物
                    if (!shuttleProtocol.getPlcOutputLift() && !shuttleProtocol.getPlcOutputTransfer()) {
                        //自动模式
                        if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 0) {
                            //下降到位,且托盘雷达无物,认定任务完成
                            command.setComplete(true);
                        }else {
                            //手动模式,不判断托盘雷达
                            //下降到位,且托盘雷达无物,认定任务完成
                            command.setComplete(true);
                        }
                    }
                }
            } else if (command.getCommandWord().intValue() == 5) {
                //充电命令
                //判断小车充电开关
                if (shuttleProtocol.getPlcOutputCharge()) {
                    //正常充电,认定任务完成
                    command.setComplete(true);
                }
            }
            //任务数据保存到redis
            redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
            if (!command.getComplete()) {
                //上一条任务未完成,禁止下发命令
                return false;
            }
        }