From 6694bb8752aced4b818f2976442d66ae3a52e9e8 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期五, 25 七月 2025 13:25:11 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 91 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 91 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java index 2542703..58ecf5e 100644 --- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java @@ -20,8 +20,11 @@ import com.zy.common.utils.NavigateMapData; import com.zy.common.utils.NavigatePositionConvert; import com.zy.common.utils.RedisUtil; +import com.zy.common.utils.ShuttleOperaUtils; import com.zy.core.News; +import com.zy.core.action.ShuttleAction; import com.zy.core.model.DeviceCommandMsgModel; +import com.zy.core.model.command.ShuttleAssignCommand; import com.zy.core.utils.DeviceMsgUtils; import com.zy.core.cache.OutputQueue; import com.zy.core.enums.*; @@ -852,6 +855,94 @@ } @Override + public boolean restartCalcPath() { + ConfigService configService = SpringUtils.getBean(ConfigService.class); + if (configService == null) { + return false; + } + + ShuttleAction shuttleAction = SpringUtils.getBean(ShuttleAction.class); + if (shuttleAction == null) { + return false; + } + + ShuttleOperaUtils shuttleOperaUtils = SpringUtils.getBean(ShuttleOperaUtils.class); + if (shuttleOperaUtils == null) { + return false; + } + + ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class); + if (objectMapper == null) { + return false; + } + + boolean trafficControlRestartCalcPath = false; + Config trafficControlRestartCalcPathConfig = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "trafficControlRestartCalcPath") + ); + if(trafficControlRestartCalcPathConfig != null) { + trafficControlRestartCalcPath = trafficControlRestartCalcPathConfig.getValue().equals("Y") ? true : false; + } + + if (!trafficControlRestartCalcPath) { + return false; + } + + if (shuttleProtocol.getTaskNo() == 0) { + return false; + } + + if (!this.isDeviceIdle()) { + return false; + } + + Object object = redisUtil.get(RedisKeyType.SHUTTLE_RESTART_CALC_PATH.key + shuttleProtocol.getShuttleNo()); + if (object != null) { + return false; + } + + Integer taskNo = shuttleProtocol.getTaskNo(); + Object obj = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + taskNo); + if (obj == null) { + return false; + } + + ShuttleRedisCommand redisCommand = null; + try { + redisCommand = objectMapper.readValue(String.valueOf(obj), ShuttleRedisCommand.class); + } catch (IOException e) { + throw new RuntimeException(e); + } + + if (redisCommand == null) { + return false; + } + + ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); + String locNo = assignCommand.getLocNo(); + List<NavigationMapType> mapTypes = assignCommand.getMapTypes(); + if (locNo == null) { + return false; + } + + if (mapTypes == null) { + return false; + } + + String currentLocNo = shuttleProtocol.getCurrentLocNo(); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(currentLocNo, locNo, mapTypes, assignCommand, this); + if (commands == null) { + return false; + } + assignCommand.setCommands(commands); + + //涓嬪彂浠诲姟 + shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); + redisUtil.set(RedisKeyType.SHUTTLE_RESTART_CALC_PATH.key + shuttleProtocol.getShuttleNo(), true, 60); + return true; + } + + @Override public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) { NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo); -- Gitblit v1.9.1