From 723e341c1872a5a34fd5107b8231f209ae860ac3 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 09 十一月 2024 16:20:13 +0800 Subject: [PATCH] # --- /dev/null | 33 ----------- zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java | 6 ++ zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/floyd/FloydNavigateService.java | 77 +++++++++++++++++-------- zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java | 5 - zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java | 2 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java | 7 +- 6 files changed, 62 insertions(+), 68 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 4d8f80c..db6e533 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 @@ -37,4 +37,10 @@ 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"; + + public static final String MAP_FLOYD_MATRIX_PATH_FLAG = "MAP_FLOYD_MATRIX_PATH_FLAG"; + + public static final String MAP_FLOYD_MATRIX_FLAG = "MAP_FLOYD_MATRIX_FLAG"; + } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java deleted file mode 100644 index 4c85e56..0000000 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.zy.acs.manager.core; - -import com.zy.acs.framework.common.R; -import com.zy.acs.manager.core.service.LaneService; -import com.zy.acs.manager.manager.entity.Task; -import com.zy.acs.manager.manager.service.TaskService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -/** - * Created by vincent on 10/24/2024 - */ -@RestController -@RequestMapping("/test") -public class DispatcherTestController { - - @Autowired - private LaneService laneService; - @Autowired - private TaskService taskService; - - @GetMapping("/lanes") - public R getLanes() { - List<Task> taskList = taskService.findRunningTasksByLaneHash("4b81ebaedd8ed7662d37b63e20dec5dd089d4c32136b8826c6323839fe51938e"); - - return R.ok().add(laneService.search("00000010")); - } - -} diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java index 63d395e..53bd72b 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java @@ -8,10 +8,7 @@ import com.zy.acs.framework.common.SnowflakeIdWorker; import com.zy.acs.manager.common.domain.param.HandlerPublishParam; import com.zy.acs.manager.common.exception.BusinessException; -import com.zy.acs.manager.core.service.AvoidWaveCalculator; -import com.zy.acs.manager.core.service.MainService; -import com.zy.acs.manager.core.service.ThreadPoolRegulator; -import com.zy.acs.manager.core.service.TrafficService; +import com.zy.acs.manager.core.service.*; import com.zy.acs.manager.core.service.astart.MapDataDispatcher; import com.zy.acs.manager.manager.entity.*; import com.zy.acs.manager.manager.enums.ActionStsType; diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/PatrolService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java similarity index 97% rename from zy-acs-manager/src/main/java/com/zy/acs/manager/core/PatrolService.java rename to zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java index e647b0c..3a017d3 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/PatrolService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java @@ -1,9 +1,8 @@ -package com.zy.acs.manager.core; +package com.zy.acs.manager.core.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.framework.common.R; -import com.zy.acs.manager.core.service.MainService; -import com.zy.acs.manager.core.service.MapService; import com.zy.acs.manager.manager.entity.Agv; import com.zy.acs.manager.manager.entity.AgvDetail; import com.zy.acs.manager.manager.entity.Code; @@ -36,7 +35,7 @@ private static final int SCHEDULE_TIME_INTERVAL = 1; private static final Map<String, ScheduledFuture<?>> AGV_PATROL_MAP = new ConcurrentHashMap<>(); - + private final RedisSupport redis = RedisSupport.defaultRedisSupport; private ScheduledExecutorService scheduler = null; @Autowired diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/floyd/FloydNavigateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/floyd/FloydNavigateService.java index 0e99caf..1051454 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/floyd/FloydNavigateService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/floyd/FloydNavigateService.java @@ -1,7 +1,13 @@ package com.zy.acs.manager.core.service.floyd; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; 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.framework.common.Cools; import com.zy.acs.manager.common.exception.BusinessException; +import com.zy.acs.manager.core.service.astart.MapDataDispatcher; import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.CodeGap; import com.zy.acs.manager.manager.entity.Route; @@ -26,6 +32,8 @@ public class FloydNavigateService { public static final double INF = 999999.0; + + private final RedisSupport redis = RedisSupport.defaultRedisSupport; @Autowired private CodeService codeService; @@ -67,41 +75,58 @@ @SuppressWarnings("all") @PostConstruct public void generateMatrix() { - log.info("銆怓LOYD銆戞鍦ㄨ绠楃煩闃垫暟鎹�......"); - List<Code> codeList = codeService.list(new LambdaQueryWrapper<Code>().eq(Code::getStatus, 1).eq(Code::getDeleted, false)); + Integer lev = MapDataDispatcher.MAP_DEFAULT_LEV; - int size = codeList.size(); + String floydHeaderMatrixStr = redis.getValue(RedisConstant.MAP_FLOYD_MATRIX_HEADER_FLAG, String.valueOf(lev)); + String floydPathMatrixStr = redis.getValue(RedisConstant.MAP_FLOYD_MATRIX_PATH_FLAG, String.valueOf(lev)); + String floydMatrixStr = redis.getValue(RedisConstant.MAP_FLOYD_MATRIX_FLAG, String.valueOf(lev)); - matrixHeader = new ArrayList<>(size); - adjacencyMatrix = new Double[size][size]; - pathMatrix = new int[size][size]; + if (!Cools.isEmpty(floydMatrixStr) && !Cools.isEmpty(floydPathMatrixStr) && !Cools.isEmpty(floydHeaderMatrixStr)) { + this.matrixHeader = JSON.parseObject(floydHeaderMatrixStr, new TypeReference<ArrayList<Long>>() {}); + this.pathMatrix = JSON.parseObject(floydPathMatrixStr, int[][].class); + this.floydMatrix = JSON.parseObject(floydMatrixStr, Double[][].class); + } else { - for (int i = 0; i < size; i++) { - Code startCode = codeList.get(i); - matrixHeader.add(startCode.getId()); - for (int j = 0; j < size; j++) { - Code endCode = codeList.get(j); - Route route = routeService.findByCodeOfBoth(startCode.getId(), endCode.getId()); - CodeGap codeGap = codeGapService.findByCodeOfBoth(startCode.getId(), endCode.getId()); + log.info("銆怓LOYD銆戞鍦ㄨ绠楃煩闃垫暟鎹�......"); + List<Code> codeList = codeService.list(new LambdaQueryWrapper<Code>().eq(Code::getStatus, 1).eq(Code::getDeleted, false)); - double distance = INF; - int path = -1; + int size = codeList.size(); - if (null != route && null != codeGap && codeGap.getDistance() > 0) { - if (i != j) { - distance = codeGap.getDistance(); + matrixHeader = new ArrayList<>(size); + adjacencyMatrix = new Double[size][size]; + pathMatrix = new int[size][size]; + + for (int i = 0; i < size; i++) { + Code startCode = codeList.get(i); + matrixHeader.add(startCode.getId()); + for (int j = 0; j < size; j++) { + Code endCode = codeList.get(j); + Route route = routeService.findByCodeOfBoth(startCode.getId(), endCode.getId()); + CodeGap codeGap = codeGapService.findByCodeOfBoth(startCode.getId(), endCode.getId()); + + double distance = INF; + int path = -1; + + if (null != route && null != codeGap && codeGap.getDistance() > 0) { + if (i != j) { + distance = codeGap.getDistance(); + } + path = i; } - path = i; + + + adjacencyMatrix[i][j] = distance; + + pathMatrix[i][j] = path; } - - - adjacencyMatrix[i][j] = distance; - - pathMatrix[i][j] = path; } - } - floydMatrix = this.floydAlgorithm(adjacencyMatrix); + floydMatrix = this.floydAlgorithm(adjacencyMatrix); + + redis.setValue(RedisConstant.MAP_FLOYD_MATRIX_HEADER_FLAG, String.valueOf(lev), JSON.toJSONString(matrixHeader)); + redis.setValue(RedisConstant.MAP_FLOYD_MATRIX_PATH_FLAG, String.valueOf(lev), JSON.toJSONString(pathMatrix)); + redis.setValue(RedisConstant.MAP_FLOYD_MATRIX_FLAG, String.valueOf(lev), JSON.toJSONString(floydMatrix)); + } } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java index 1843570..29aa88f 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java @@ -13,7 +13,7 @@ import com.zy.acs.manager.common.domain.MapDto; import com.zy.acs.manager.common.domain.MapRouteDto; import com.zy.acs.manager.common.exception.BusinessException; -import com.zy.acs.manager.core.PatrolService; +import com.zy.acs.manager.core.service.PatrolService; import com.zy.acs.manager.core.domain.BackpackDto; import com.zy.acs.manager.core.service.MapService; import com.zy.acs.manager.core.service.floyd.FloydNavigateService; -- Gitblit v1.9.1