#
Junjie
3 天以前 946b8c5f52fd508890e65cd2c016c7f5174a0a35
src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -2,6 +2,8 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.MapNode;
@@ -10,6 +12,8 @@
import com.zy.core.News;
import com.zy.core.enums.MapNodeType;
import com.zy.core.model.PythonSimilarityResult;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -30,6 +34,10 @@
    private String pythonCalcSimilarity;
    @Autowired
    private NavigateMapData navigateMapData;
    @Autowired
    private SnowflakeIdWorker snowflakeIdWorker;
    @Autowired
    private ConfigService configService;
    public List<NavigateNode> calc(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites) {
        return calcJava(startPoint, endPoint, mapTypes, shuttlePoints, whites);
@@ -315,15 +323,23 @@
        //将最后一段数据添加进入
        list.add(data);
        //分段路径-处理超长直线段路径
        List<List<NavigateNode>> paths = getSectionPathToSplitOverLength(list);
        return paths;
    }
    //分段路径-处理超长直线段路径
    public List<List<NavigateNode>> getSectionPathToSplitOverLength(List<List<NavigateNode>> list) {
        int overLength = 9;//默认9节
        Config shuttleMoveOverLengthConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleMoveOverLength"));
        if (shuttleMoveOverLengthConfig != null) {
            overLength = Integer.parseInt(shuttleMoveOverLengthConfig.getValue());
        }
        List<List<NavigateNode>> paths = new ArrayList<>();
        int overLength = 9;
        for (List<NavigateNode> nodes : list) {
            long nextId = snowflakeIdWorker.nextId();
            if (nodes.size() > overLength) {
                List<NavigateNode> copy = JSON.parseArray(JSON.toJSONString(nodes), NavigateNode.class);
                List<NavigateNode> tmp = new ArrayList<>();
@@ -337,10 +353,12 @@
                        if (lastNode == null) {
                            NavigateNode startNode = tmp.get(0);
                            startNode.setLinePartAllowGo(true);//直线段超长部分允许直接行走
                            startNode.setLinePartFlag(nextId);//直线段数据标识
                            tmp.set(0, startNode);
                        }
                        NavigateNode targetNode = tmp.get(tmp.size() - 1);
                        targetNode.setLinePartAllowGo(true);//直线段超长部分允许直接行走
                        targetNode.setLinePartFlag(nextId);//直线段数据标识
                        if (lastNode != null) {
                            tmp.add(0, lastNode);
                        }
@@ -357,6 +375,10 @@
                    paths.add(tmp);
                }
            }else {
                NavigateNode startNode = nodes.get(0);
                startNode.setLinePartAllowGo(true);//直线段超长部分允许直接行走
                startNode.setLinePartFlag(nextId);//直线段数据标识
                nodes.set(0, startNode);
                paths.add(nodes);
            }
        }