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