From f941a47ccd057a719eef4db7decf13bf9ad2a4f8 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 25 十二月 2024 11:13:11 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 51 insertions(+), 4 deletions(-) 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..25766b9 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; /** @@ -36,6 +36,8 @@ private int[][] turnMatrix; private String[][] cdaMatrix; + + public Map<String, Boolean> routeCdaMap = new HashMap<>(); private final CodeService codeService; @@ -330,6 +332,51 @@ return mapMatrix; } + public boolean validRouteCdaKey(String routeCdaKey) { + if (Cools.isEmpty(routeCdaKey)) { + return false; + } + Boolean result = this.routeCdaMap.get(routeCdaKey); + if (null == result) { + return false; + } + return result; + } + + 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); + Set<String> routeCdaKeys = redis.getMapKeys(RedisConstant.AGV_MAP_ROUTE_CDA_HASH_FLAG); + + List<Route> routeList = routeService.list(new LambdaQueryWrapper<Route>().eq(Route::getStatus, StatusType.ENABLE.val)); + if (routeKeys.size() == routeList.size() && routeKeys.size() == routeCdaKeys.size()) { + for (String routeCdaKey : routeCdaKeys) { + this.routeCdaMap.put(routeCdaKey, Boolean.TRUE); + } + return; + } + for (Route route : routeList) { + Code startCode = codeService.getById(route.getStartCode()); + int[] startCodeIdx = getCodeMatrixIdx(lev, startCode.getData()); + Code endCode = codeService.getById(route.getEndCode()); + int[] codeMatrixIdx = getCodeMatrixIdx(lev, endCode.getData()); + + String routeKey = RouteGenerator.generateRouteKey(startCode.getData(), endCode.getData()); + if (Cools.isEmpty(routeKey)) { + continue; + } + redis.setMap(RedisConstant.AGV_MAP_ROUTE_HASH_FLAG, routeKey, Boolean.TRUE); + + String routeCdaKey = RouteGenerator.generateRouteCdaKey(startCodeIdx, codeMatrixIdx); + if (Cools.isEmpty(routeCdaKey)) { + continue; + } + redis.setMap(RedisConstant.AGV_MAP_ROUTE_CDA_HASH_FLAG, routeCdaKey, Boolean.TRUE); + this.routeCdaMap.put(routeCdaKey, Boolean.TRUE); + } + } + public synchronized String[][] initCodeMatrix(Integer lev) { log.info("There is initializing Code Matrix......"); lev = Optional.ofNullable(lev).orElse(MAP_DEFAULT_LEV); -- Gitblit v1.9.1