#
Junjie
2023-09-20 d399d1b1975b47097526cab07a0120c56b616200
src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -95,7 +95,7 @@
            //四向穿梭车空闲、有任务、标记为true、存在任务指令,需要执行任务的下一条指令
            if (shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id
                    && shuttleProtocol.getTaskNo() != 0
                    && shuttleProtocol.getPakMk()) {
                    && !shuttleProtocol.getPakMk()) {
                //执行下一步指令
                executeWork(shuttleProtocol.getTaskNo().shortValue());
            }
@@ -173,9 +173,9 @@
                //非自动状态时间计时
                shuttleProtocol.setErrTime(jsonObject.getInteger("errTime"));
                //小车处于运行中,将标记置为true
                //小车处于运行中,将标记置为false
                if (shuttleProtocol.getFree() == 0) {
                    shuttleProtocol.setPakMk(true);
                    shuttleProtocol.setPakMk(false);
                }
                //将四向穿梭车状态保存至数据库
@@ -355,8 +355,12 @@
        }
        NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
        //取出命令
        NyShuttleHttpCommand command = commands.get(commandStep);//当前命令
        NyShuttleHttpCommand command = null;
        if (commandStep < commands.size()) {
            command = commands.get(commandStep);//当前命令
        }
        if (commandStep != 0) {
            //判断上一条指令是否完成
            NyShuttleHttpCommand lastCommand = commands.get(commandStep - 1);
@@ -369,7 +373,9 @@
                    lastCommand.setComplete(true);
                    //解锁锁定路径,上一条路径和当前路径
                    List<NavigateNode> nodes = lastCommand.getNodes();
                    nodes.addAll(command.getNodes());
                    if (command != null) {
                        nodes.addAll(command.getNodes());
                    }
                    navigateMapData.writeNavigateNodeToRedisMap(nodes, false);//解锁路径
                }
            }else {
@@ -395,7 +401,7 @@
                }else {
                    shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
                }
                News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
                News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(commands));
                return false;//禁止再下发命令
            }
@@ -441,7 +447,7 @@
        News.info("四向穿梭车命令下发成功,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
        //将标记置为false(防止重发)
        shuttleProtocol.setPakMk(false);
        shuttleProtocol.setPakMk(true);
        //保存数据到数据库做流水
        BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class);
@@ -463,33 +469,42 @@
            shuttleOptService.insert(opt);
        }
        //判断数据是否执行完成
        if (commandStep < commands.size() - 1) {
            //更新redis数据
            //步序增加
            commandStep++;
            redisCommand.setCommandStep(commandStep);
            //任务数据保存到redis
            redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
        }else {
            //已执行完成
        commandStep++;
        //更新redis数据
        redisCommand.setCommandStep(commandStep);
        //任务数据保存到redis
        redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
            commandStep++;
//            //最后一段命令为移动命令,则暂缓删除redis等待清除路径时一次性删除
//            //最后一段命令为不是移动命令,则删除redis
//            if (!command.getRequest().getBody().get("requestType").equals("move")) {
//                //删除redis
//                redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo());
//            }
//        //判断数据是否执行完成
//        if (commandStep < commands.size() - 1) {
//            commandStep++;
//            //更新redis数据
//            redisCommand.setCommandStep(commandStep);
//            //任务数据保存到redis
//            redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
//        }else {
//            //已执行完成
//
//            if (!assignCommand.getCharge()) {
//                //对主线程抛出等待确认状态waiting
//                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
//            }else {
//                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
//            }
//            News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
        }
//            commandStep = commands.size();
//            //更新redis数据
//            redisCommand.setCommandStep(commandStep);
//            //任务数据保存到redis
//            redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
////            //最后一段命令为移动命令,则暂缓删除redis等待清除路径时一次性删除
////            //最后一段命令为不是移动命令,则删除redis
////            if (!command.getRequest().getBody().get("requestType").equals("move")) {
////                //删除redis
////                redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo());
////            }
////
////            if (!assignCommand.getCharge()) {
////                //对主线程抛出等待确认状态waiting
////                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
////            }else {
////                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
////            }
////            News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
//        }
        return true;
    }