#
Junjie
2023-09-20 fb8419ef141e16b8ec8b1d9802fa0d5a46768794
src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -176,20 +176,6 @@
                //小车处于运行中,将标记置为true
                if (shuttleProtocol.getFree() == 0) {
                    shuttleProtocol.setPakMk(true);
                }else {
                    //小车处于等待确认且空闲状态,如有工作号则清空路径
                    if (shuttleProtocol.getTaskNo() != 0 && shuttleProtocol.getProtocolStatusType() == ShuttleProtocolStatusType.WAITING) {
                        Object o = redisUtil.get("shuttle_wrk_no_" + shuttleProtocol.getTaskNo());
                        if (o != null) {
                            ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class);
                            ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
                            NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
                            navigateMapData.writeNavigateNodeToRedisMap(assignCommand.getNodes(), false);//解锁路径
                            //删除redis
                            redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo());
                        }
                    }
                }
                //将四向穿梭车状态保存至数据库
@@ -396,6 +382,23 @@
                //上一条任务未完成,禁止下发命令
                return false;
            }
            //判断是否为最后一条命令且命令执行完成,抛出等待确认状态
            NyShuttleHttpCommand endCommand = commands.get(commands.size() - 1);
            if (endCommand.getComplete()) {
                //删除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 false;//禁止再下发命令
            }
        }
        List<NavigateNode> nextNodes = null;//下一步命令行走路径
@@ -471,20 +474,21 @@
        }else {
            //已执行完成
            //最后一段命令为移动命令,则暂缓删除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));
            commandStep++;
//            //最后一段命令为移动命令,则暂缓删除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;
@@ -629,6 +633,7 @@
            if (checkPathIsAvailable) {
                return true;//可行走
            }
            return false;
        }else {
            boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
            if (checkPathIsAvailable && checkPathIsAvailable2) {