zjj
2024-06-19 36c6d6b39e2b76080480c5bc90a412d711b76144
Merge remote-tracking branch 'origin/Four-Way-Rack' into Four-Way-Rack
9个文件已修改
294 ■■■■ 已修改文件
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
@@ -114,7 +114,6 @@
                //对主线程抛出等待确认状态waiting
                liftThread.setProtocolStatus(LiftProtocolStatusType.WAITING);
                liftThread.commandFinished(taskNo);//调用完成后续指令(部分提升机有后续指令,实际情况看是否有真正实现方法)
                redisUtil.del(DeviceRedisConstant.LIFT_WORK_FLAG + taskNo);
                return false;//禁止再下发命令
            }
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -56,12 +56,6 @@
    public List<Motion> generateMotion(Task task) {
        List<Motion> motionList = new ArrayList<>();
//        switch (Objects.requireNonNull(WorkZoneType.query(task.getTaskSts() == TaskStsType.NEW_INBOUND.sts ? task.getOriginSite() : task.getDestSite()))) {
//            case FIRST_ZONE:
//                motionList = this.generateFirstZoneMotion(task);
//                break;
//            default:
//        }
        motionList = this.generateFirstZoneMotion(task);
        return motionList;
    }
@@ -81,21 +75,86 @@
         * 5.穿梭车入库至目标库位
         */
        if (task.getTaskSts() == TaskStsType.NEW_INBOUND.sts) {
//            // lift
//            LiftThread liftThread = liftDispatcher.queryLiftForTransport(task.getOriginSite());
//            LiftProtocol liftProtocol = liftThread.getStatus();
//            if (liftProtocol == null) {
//                return motionList;
//            }
            // locNo
            String destLoc = task.getDestLoc();
            // shuttle
            Device shuttleDevice = deviceService.getOne(new LambdaQueryWrapper<Device>()
                    .eq(Device::getDeviceNo, task.getShuttleNo())
                    .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())
                    .eq(Device::getHostId, task.getHostId())
                    .eq(Device::getStatus, 1));
            if (shuttleDevice == null) {
                return motionList;
            }
            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleDevice.getId().intValue());
            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
                return motionList;
            }
            if (!shuttleThread.isIdle()) {
                return motionList;
            }
            String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
            //获取距离目标位置最近的空闲可换层提升机
            LiftThread liftThread = liftDispatcher.searchIdleLift(shuttleLocNo, task.getHostId(), true);
            if (liftThread == null) {
                return motionList;
            }
            Device transferLiftDevice = liftThread.getDevice();
            LiftProtocol liftProtocol = liftThread.getStatus();
            if (liftProtocol == null || liftProtocol.getLiftNo() == null) {
                return motionList;
            }
            //检测穿梭车是否有任务绑定
            boolean shuttleResult = Utils.checkShuttleHasBinding(shuttleDevice);
            if (shuttleResult) {
                //存在任务,禁止解析
                return motionList;
            }
            //检测提升机是否有任务绑定
            boolean liftResult = Utils.checkLiftHasBinding(Integer.parseInt(transferLiftDevice.getDeviceNo()));
            if (liftResult) {
                //存在任务,禁止解析
                return motionList;
            }
            //获取小车待机库位 ==> 进提升机
            ShuttleStandby shuttleStandbyTo = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
                    .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
                    .eq(ShuttleStandby::getDeviceLev, Utils.getLev(shuttleLocNo))
                    .eq(ShuttleStandby::getStatus, 1));
            //获取小车待机库位 ==> 出提升机
            ShuttleStandby shuttleStandbyFrom = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
                    .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
                    .eq(ShuttleStandby::getDeviceLev, Utils.getLev(destLoc))
                    .eq(ShuttleStandby::getStatus, 1));
            if (shuttleStandbyTo == null || shuttleStandbyFrom == null) {
                return motionList;
            }
            //穿梭车进提升机库位号
            String liftLocNoTo = shuttleStandbyTo.getDeviceLoc();
            //穿梭车出提升机库位号
            String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc();
            //穿梭车进提升机待机位库位号
            String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc();
            //穿梭车出提升机待机位库位号
            String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc();
            // shuttle
//            ShuttleThread shuttleThread = shuttleDispatcher.queryShuttleWhichConvenient(task, Integer.parseInt(liftThread.getStatus().getLiftNo()));
//            ShuttleThread shuttleThread = shuttleDispatcher.queryShuttleWhichConvenient(task, 1);
            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 6);
            if (Cools.isEmpty(shuttleThread)) { return motionList; }
            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
//            String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
            String shuttleLocNo = "0100201";
//            // conveyor
//            DevpSlave devpSlave = conveyorDispatcher.queryByInBound(task.getSourceStaNo());
@@ -747,12 +806,13 @@
        String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
        // lift
        Device transferLiftDevice = Utils.getRecentTransferLift(shuttleLocNo, shuttleProtocol.getShuttleNo());
        if (transferLiftDevice == null) {
        //获取距离目标位置最近的空闲可换层提升机
        LiftThread liftThread = liftDispatcher.searchIdleLift(shuttleLocNo, task.getHostId(), true);
        if (liftThread == null) {
            return motionList;
        }
        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, transferLiftDevice.getId().intValue());
        Device transferLiftDevice = liftThread.getDevice();
        LiftProtocol liftProtocol = liftThread.getStatus();
        if (liftProtocol == null || liftProtocol.getLiftNo() == null) {
            return motionList;
@@ -853,7 +913,7 @@
                    MotionCtgType.SHUTTLE_MOVE_TO_LIFT
            ));
            // 提升机搬车 至 输送线层
            // 提升机搬车 至 充电层
            motionList.addAll(kernelService.liftMoveShuttle(
                    MotionDto.build((dto -> {
                        dto.setLiftNo(transferLiftDevice.getId().intValue());
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
@@ -21,6 +21,7 @@
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
@@ -67,7 +68,7 @@
        assignCommand.setTaskNo(motion.getTaskNo());
        assignCommand.setCommands(list);
        LiftCommand command = new LiftCommand();
        List<LiftCommand> command = new ArrayList<>();
        switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){
            case LIFT_MOVE:
                // 如果已经在目标层,那边层过滤
@@ -77,7 +78,7 @@
                }
                command = liftThread.getMoveCommand(motion.getTaskNo(), 0, Integer.parseInt(motion.getTarget()), LiftCommandModeType.MOVE);
                list.add(command);
                list.addAll(command);
                return liftAction.assignWork(liftThread.getDevice(), assignCommand);
            case LIFT_WITH_GOODS:
//                if (liftProtocol.getHasTray()) {
@@ -85,7 +86,7 @@
//                }
                command = liftThread.getPalletInOutCommand(motion.getTaskNo(), Integer.parseInt(motion.getOrigin()), Integer.parseInt(motion.getTarget()), motion.getOriDrt(), motion.getTarDrt(), LiftCommandModeType.PALLET_INOUT);
                list.add(command);
                list.addAll(command);
                return liftAction.assignWork(liftThread.getDevice(), assignCommand);
            case LIFT_WITH_SHUTTLE:
                if (!liftProtocol.getHasCar()) {
@@ -93,7 +94,7 @@
                }
                command = liftThread.getMoveWithShuttleCommand(motion.getTaskNo(), Integer.parseInt(motion.getOrigin()), Integer.parseInt(motion.getTarget()), LiftCommandModeType.MOVE_CAR);
                list.add(command);
                list.addAll(command);
                return liftAction.assignWork(liftThread.getDevice(), assignCommand);
            case LIFT_WITH_GOODS_AND_SHUTTLE:
                return false;
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -157,13 +157,13 @@
                    }
                })) {
                    //锁定提升机
                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令
                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令
                    LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
                    liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                    liftAssignCommand.setTaskNo(motion.getTaskNo());
                    ArrayList<LiftCommand> list = new ArrayList<>();
                    list.add(lockCommand);
                    list.addAll(lockCommand);
                    liftAssignCommand.setCommands(list);
                    liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
@@ -205,7 +205,7 @@
                    }
                })) {
                    //锁定提升机
                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令
                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令
                    if (lockCommand == null) {
                        return false;
                    }
@@ -214,7 +214,7 @@
                    liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                    liftAssignCommand.setTaskNo(motion.getTaskNo());
                    ArrayList<LiftCommand> list = new ArrayList<>();
                    list.add(lockCommand);
                    list.addAll(lockCommand);
                    liftAssignCommand.setCommands(list);
                    liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
@@ -337,13 +337,13 @@
                    }
                })) {
                    //解锁提升机
                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令
                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令
                    LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
                    liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                    liftAssignCommand.setTaskNo(motion.getTaskNo());
                    ArrayList<LiftCommand> list = new ArrayList<>();
                    list.add(lockCommand);
                    list.addAll(lockCommand);
                    liftAssignCommand.setCommands(list);
                    liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
@@ -352,7 +352,7 @@
                //判断小车是否已到位
                if (liftProtocol.getHasCar()) {
                    LiftCommand signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//获取小车已到位命令
                    List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//获取小车已到位命令
                    if(signalCommand != null) {
                        boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo());
                        if (!hasKey) {
@@ -360,7 +360,7 @@
                            liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                            liftAssignCommand.setTaskNo(motion.getTaskNo());
                            ArrayList<LiftCommand> list = new ArrayList<>();
                            list.add(signalCommand);
                            list.addAll(signalCommand);
                            liftAssignCommand.setCommands(list);
                            liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
                            return false;
@@ -397,13 +397,13 @@
                    }
                })) {
                    //解锁提升机
                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令
                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令
                    LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
                    liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                    liftAssignCommand.setTaskNo(motion.getTaskNo());
                    ArrayList<LiftCommand> list = new ArrayList<>();
                    list.add(lockCommand);
                    list.addAll(lockCommand);
                    liftAssignCommand.setCommands(list);
                    liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
@@ -412,7 +412,7 @@
                //判断小车是否已离开
                if (!liftProtocol.getHasCar()) {
                    LiftCommand signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), false);//获取小车已驾离命令
                    List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), false);//获取小车已驾离命令
                    if(signalCommand != null) {
                        boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo());
                        if (!hasKey) {
@@ -421,7 +421,7 @@
                            liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                            liftAssignCommand.setTaskNo(motion.getTaskNo());
                            ArrayList<LiftCommand> list = new ArrayList<>();
                            list.add(signalCommand);
                            list.addAll(signalCommand);
                            liftAssignCommand.setCommands(list);
                            liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
                            return false;
@@ -460,13 +460,13 @@
                    }
                })) {
                    //解锁提升机
                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令
                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令
                    LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
                    liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                    liftAssignCommand.setTaskNo(motion.getTaskNo());
                    ArrayList<LiftCommand> list = new ArrayList<>();
                    list.add(lockCommand);
                    list.addAll(lockCommand);
                    liftAssignCommand.setCommands(list);
                    liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
@@ -20,6 +20,7 @@
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
import com.zy.asrs.wcs.rcs.service.DeviceService;
import com.zy.asrs.wcs.rcs.thread.LiftThread;
import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import com.zy.asrs.wcs.system.entity.Dict;
import com.zy.asrs.wcs.system.service.DictService;
@@ -126,10 +127,12 @@
                    continue;
                }
                Device recentTransferLift = Utils.getRecentTransferLift(locNo, Integer.parseInt(device.getDeviceNo()));
                if (recentTransferLift == null) {
                //获取距离目标位置最近的空闲可换层提升机
                LiftThread liftThread = liftDispatcher.searchIdleLift(locNo, task.getHostId(), true);
                if (liftThread == null) {
                    continue;
                }
                Device recentTransferLift = liftThread.getDevice();
                //获取小车楼层提升机待机位
                ShuttleStandby shuttleStandby = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
@@ -207,40 +207,4 @@
        return true;//有任务绑定
    }
    /**
     * 获取距离目标库位最近的提升机
     */
    public static Device getRecentTransferLift(String locNo, Integer shuttleNo) {
        BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
        DeviceService deviceService = SpringUtils.getBean(DeviceService.class);
        if (basLiftService == null) {
            return null;
        }
        Integer distance = Integer.MAX_VALUE;
        Long liftDeviceId = null;
        for (BasLift basLift : basLiftService.list(new LambdaQueryWrapper<BasLift>()
                .eq(BasLift::getStatus, 1)
                .eq(BasLift::getTransfer, 1))) {
            int lev = Utils.getLev(locNo);
            String liftLocNo = Utils.getLocNo(basLift.getRow(), basLift.getBay(), lev);
            List<NavigateNode> nodeList = NavigateUtils.calc(locNo, liftLocNo, NavigationMapType.NONE.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(locNo)));
            Integer originPathAllDistance = NavigateUtils.getOriginPathAllDistance(nodeList);//总距离
            if (originPathAllDistance < distance) {
                distance = originPathAllDistance;
                liftDeviceId = basLift.getDeviceId();
            }
        }
        if (liftDeviceId == null) {
            return null;
        }
        Device device = deviceService.getById(liftDeviceId);
        if (device == null) {
            return null;
        }
        return device;
    }
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java
@@ -8,6 +8,8 @@
import com.zy.asrs.wcs.rcs.model.enums.LiftProtocolStatusType;
import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol;
import java.util.List;
public interface LiftThread extends ThreadHandler{
    LiftProtocol getStatus();//获取提升机状态
@@ -38,17 +40,15 @@
    boolean isLock(ExecuteSupport support);
    boolean commandFinished(Integer taskNo);
    //***************获取命令*****************
    LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//提升机移动
    List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//提升机移动
    LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//载车移动
    List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//载车移动
    LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode);//托盘出入
    List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode);//托盘出入
    LiftCommand getLockCommand(Integer taskNo, Boolean lock);//锁定/解锁提升机
    List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock);//锁定/解锁提升机
    LiftCommand getShuttleSignalCommand(Integer taskNo, Boolean signal);//小车已到位/已驶离信号
    List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal);//小车已到位/已驶离信号
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
@@ -374,12 +374,7 @@
    }
    @Override
    public boolean commandFinished(Integer taskNo) {
        return false;
    }
    @Override
    public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
    public List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
        /**
         * 任务类型
         * 1=移托盘;升降机将源站台托盘移到目标站台
@@ -407,26 +402,29 @@
        command.setMode(LiftCommandModeType.MOVE.id);
        command.setOriginLev(sourceLev);
        command.setTargetLev(targetLev);
        return command;
        ArrayList<LiftCommand> list = new ArrayList<>();
        list.add(command);
        return list;
    }
    @Override
    public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
    public List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
        return getMoveCommand(taskNo, sourceLev, targetLev, mode);
    }
    @Override
    public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
    public List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
        return getMoveCommand(taskNo, sourceLev, targetLev, mode);
    }
    @Override
    public LiftCommand getLockCommand(Integer taskNo, Boolean lock) {
    public List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock) {
        return null;
    }
    @Override
    public LiftCommand getShuttleSignalCommand(Integer taskNo, Boolean signal) {
    public List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal) {
        return null;
    }
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
@@ -27,8 +27,10 @@
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Slf4j
@SuppressWarnings("all")
@@ -406,36 +408,6 @@
        return extend.getLock();
    }
    @Override
    public boolean commandFinished(Integer taskNo) {
        try {
            LiftCommand command = getTaskClearCommand();
            String loginToken = requestLoginToken();
            if (loginToken == null) {
                return false;
            }
            HashMap<String, Object> headers = new HashMap<>();
            headers.put("Authorization", "Bearer " + loginToken);
            String response = new HttpHandler.Builder()
                    .setUri(API_URL)
                    .setPath("/RDS/lifterOperation")
                    .setHeaders(headers)
                    .setJson(command.getBody())
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            Integer code = jsonObject.getInteger("code");
            if (code.equals(200)) {
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
    //***************设备层通讯-不同厂商设备通讯方案不一致***************
    //请求登录
@@ -500,7 +472,7 @@
    //空载移动
    @Override
    public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
    public List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
        int taskMode = 3;//空载移动
        HashMap<String, Object> body = new HashMap<>();
@@ -520,12 +492,16 @@
        command.setMode(LiftCommandModeType.MOVE.id);
        command.setOriginLev(0);
        command.setTargetLev(targetLev);
        return command;
        ArrayList<LiftCommand> list = new ArrayList<>();
        list.add(command);
        list.addAll(getTaskClearCommand());
        return list;
    }
    //载车移动
    @Override
    public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
    public List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
        HashMap<String, Object> body = new HashMap<>();
        body.put("messageName", "lifterTask");
        body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -543,12 +519,16 @@
        command.setMode(LiftCommandModeType.MOVE.id);
        command.setOriginLev(sourceLev);
        command.setTargetLev(targetLev);
        return command;
        ArrayList<LiftCommand> list = new ArrayList<>();
        list.add(command);
        list.addAll(getTaskClearCommand());
        return list;
    }
    //托盘出入
    @Override
    public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
    public List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
        HashMap<String, Object> body = new HashMap<>();
        body.put("messageName", "lifterTask");
        body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -568,12 +548,16 @@
        command.setTargetLev(targetLev);
        command.setOriginSta(originSta);
        command.setTargetSta(targetSta);
        return command;
        ArrayList<LiftCommand> list = new ArrayList<>();
        list.add(command);
        list.addAll(getTaskClearCommand());
        return list;
    }
    //锁定/解锁提升机
    @Override
    public LiftCommand getLockCommand(Integer taskNo, Boolean lock) {
    public List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock) {
        HashMap<String, Object> body = new HashMap<>();
        body.put("messageName", "lifterOperation");
        body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -586,12 +570,15 @@
        command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
        command.setBody(JSON.toJSONString(body));
        command.setMode(lock ? LiftCommandModeType.LOCK.id : LiftCommandModeType.UNLOCK.id);
        return command;
        ArrayList<LiftCommand> list = new ArrayList<>();
        list.add(command);
        return list;
    }
    //小车已到位/已驶离信号
    @Override
    public LiftCommand getShuttleSignalCommand(Integer taskNo, Boolean signal) {
    public List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal) {
        HashMap<String, Object> body = new HashMap<>();
        body.put("messageName", "lifterOperation");
        body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -603,11 +590,14 @@
        command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
        command.setBody(JSON.toJSONString(body));
        command.setMode(signal ? LiftCommandModeType.LOCK.id : LiftCommandModeType.UNLOCK.id);
        return command;
        ArrayList<LiftCommand> list = new ArrayList<>();
        list.add(command);
        return list;
    }
    //获取提升机任务清除命令
    private LiftCommand getTaskClearCommand() {
    private List<LiftCommand> getTaskClearCommand() {
        HashMap<String, Object> body = new HashMap<>();
        body.put("messageName", "lifterOperation");
        body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -618,7 +608,10 @@
        command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
        command.setBody(JSON.toJSONString(body));
        command.setMode(LiftCommandModeType.RESET.id);
        return command;
        ArrayList<LiftCommand> list = new ArrayList<>();
        list.add(command);
        return list;
    }
    /**