From 613b59f94870adb25b6dd1e8a1aba8cbb670288e Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 18 十二月 2024 14:21:21 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java | 27 +++++++++++-- zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java | 2 + zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java | 11 ++--- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java | 10 ++-- zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java | 11 +++++ zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/config/MapDataConfig.java | 1 6 files changed, 47 insertions(+), 15 deletions(-) diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java b/zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java index 550cfab..0270942 100644 --- a/zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java +++ b/zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java @@ -39,6 +39,8 @@ public static final String AGV_MAP_ASTAR_WAVE_FLAG = "AGV_MAP_ASTAR_WAVE_FLAG"; + public static final String AGV_MAP_ROUTE_HASH_FLAG = "AGV_MAP_ROUTE_HASH_FLAG"; + public static final String AGV_TRAFFIC_JAM_FLAG = "AGV_TRAFFIC_JAM_FLAG"; public static final String MAP_FLOYD_MATRIX_HEADER_FLAG = "MAP_FLOYD_MATRIX_HEADER_FLAG"; diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java index f51d239..594d12a 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java @@ -1,6 +1,7 @@ package com.zy.acs.manager.core.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zy.acs.common.constant.RedisConstant; import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.common.utils.Utils; import com.zy.acs.framework.common.Cools; @@ -9,6 +10,7 @@ import com.zy.acs.manager.core.domain.Lane; import com.zy.acs.manager.core.service.astart.*; import com.zy.acs.manager.core.service.astart.domain.DynamicNode; +import com.zy.acs.manager.core.utils.RouteGenerator; import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.Jam; import com.zy.acs.manager.manager.entity.Route; @@ -386,14 +388,11 @@ nextNode.setCodeData(nextNodeCodeData); // 鍒ゆ柇閫氳繃鎬� - Route route = routeService.findByCodeOfBoth( - codeService.selectByData(currentNodeCodeData).getId(), - codeService.selectByData(nextNodeCodeData).getId() - ); - if (null == route) { + String routeKey = RouteGenerator.generateRouteKey(currentNodeCodeData, nextNodeCodeData); + Object routeVal = redis.getMap(RedisConstant.AGV_MAP_ROUTE_HASH_FLAG, routeKey); + if (routeVal == null || !(Boolean) routeVal) { return null; } - } return nextNode; diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java index 1f506ac..d3fc394 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java @@ -1,11 +1,13 @@ package com.zy.acs.manager.core.service.astart; +import com.zy.acs.common.constant.RedisConstant; import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.common.utils.MapDataUtils; import com.zy.acs.manager.core.domain.Lane; import com.zy.acs.manager.core.service.LaneService; import com.zy.acs.manager.core.service.astart.domain.DynamicNode; +import com.zy.acs.manager.core.utils.RouteGenerator; import com.zy.acs.manager.manager.entity.Route; import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.service.CodeService; @@ -245,11 +247,9 @@ nextNode.setCodeData(nextNodeCodeData); // 鍒ゆ柇閫氳繃鎬� - Route route = routeService.findByCodeOfBoth( - codeService.selectByData(currentNodeCodeData).getId(), - codeService.selectByData(nextNodeCodeData).getId() - ); - if (null == route) { + String routeKey = RouteGenerator.generateRouteKey(currentNodeCodeData, nextNodeCodeData); + Object routeVal = redis.getMap(RedisConstant.AGV_MAP_ROUTE_HASH_FLAG, routeKey); + if (routeVal == null || !(Boolean) routeVal) { return null; } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java index 5411381..62dc062 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java @@ -8,15 +8,15 @@ import com.zy.acs.framework.exception.CoolException; import com.zy.acs.manager.core.domain.SortCodeDto; import com.zy.acs.manager.core.service.astart.domain.DynamicNode; +import com.zy.acs.manager.core.utils.RouteGenerator; import com.zy.acs.manager.manager.entity.Code; +import com.zy.acs.manager.manager.entity.Route; +import com.zy.acs.manager.manager.enums.StatusType; import com.zy.acs.manager.manager.service.CodeService; import com.zy.acs.manager.manager.service.RouteService; import lombok.extern.slf4j.Slf4j; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -330,6 +330,25 @@ return mapMatrix; } + public synchronized void initRouteMap(Integer lev) { + log.info("There is initializing Route Map......"); + lev = Optional.ofNullable(lev).orElse(MAP_DEFAULT_LEV); + Set<String> routeKeys = redis.getMapKeys(RedisConstant.AGV_MAP_ROUTE_HASH_FLAG); + List<Route> routeList = routeService.list(new LambdaQueryWrapper<Route>().eq(Route::getStatus, StatusType.ENABLE.val)); + if (routeKeys.size() == routeList.size()) { + return; + } + for (Route route : routeList) { + Code startCode = codeService.getById(route.getStartCode()); + Code endCode = codeService.getById(route.getEndCode()); + String routeKey = RouteGenerator.generateRouteKey(startCode.getData(), endCode.getData()); + if (Cools.isEmpty(routeKey)) { + continue; + } + redis.setMap(RedisConstant.AGV_MAP_ROUTE_HASH_FLAG, routeKey, Boolean.TRUE); + } + } + public synchronized String[][] initCodeMatrix(Integer lev) { log.info("There is initializing Code Matrix......"); lev = Optional.ofNullable(lev).orElse(MAP_DEFAULT_LEV); diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/config/MapDataConfig.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/config/MapDataConfig.java index 9e8ed68..3cf6afd 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/config/MapDataConfig.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/config/MapDataConfig.java @@ -22,6 +22,7 @@ public MapDataDispatcher getMapDataDispatcher() { MapDataDispatcher dispatcher = new MapDataDispatcher(codeService, routeService); String[][] codeMatrix = dispatcher.getCodeMatrix(null); + dispatcher.initRouteMap(null); if (codeMatrix.length > 0) { dispatcher.getMapMatrix(null, null); dispatcher.getTurnMatrix(null); diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java index c3cad61..7bf09fb 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java @@ -30,6 +30,17 @@ @Autowired private CodeGapService codeGapService; + public static String generateRouteKey(String codeData0, String codeData1) { + if (Cools.isEmpty(codeData0, codeData1)) { + return null; + } + if (codeData0.compareTo(codeData1) < 0) { + return codeData0 + "-" + codeData1; + } else { + return codeData1 + "-" + codeData0; + } + } + public List<String> generateRoutes(String[][] codeMatrix) { List<String> list = new ArrayList<>(); -- Gitblit v1.9.1