#
luxiaotao1123
2024-11-09 723e341c1872a5a34fd5107b8231f209ae860ac3
#
4个文件已修改
1个文件已删除
1 文件已重命名
130 ■■■■ 已修改文件
zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/floyd/FloydNavigateService.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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";
}
zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java
File was deleted
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;
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java
File was renamed from zy-acs-manager/src/main/java/com/zy/acs/manager/core/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
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("【FLOYD】正在计算矩阵数据......");
        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("【FLOYD】正在计算矩阵数据......");
            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));
        }
    }
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;