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