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"; 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; 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; } 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); 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); 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<>();