#
luxiaotao1123
2024-11-09 723e341c1872a5a34fd5107b8231f209ae860ac3
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,6 +75,18 @@
    @SuppressWarnings("all")
    @PostConstruct
    public void generateMatrix() {
        Integer lev = MapDataDispatcher.MAP_DEFAULT_LEV;
        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));
        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 {
        log.info("【FLOYD】正在计算矩阵数据......");
        List<Code> codeList = codeService.list(new LambdaQueryWrapper<Code>().eq(Code::getStatus, 1).eq(Code::getDeleted, false));
@@ -103,6 +123,11 @@
        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));
        }
    }
    /**