1
7 天以前 aeaf3e43e425ef0de84c1819f318f20e90471f90
src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -2,8 +2,7 @@
import com.zy.core.enums.RouteCollectCountType;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import static java.util.stream.Collectors.toList;
@@ -14,29 +13,66 @@
    //问题2  周俊杰
    public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{
        add(113);add(119);
//        add(113);add(119);
    }};
    public static final List<Integer> MERGE_STA_NO_TWO = new ArrayList<Integer>() {{
//        add(116);add(117);
//        add(100);add(101);
    }};
    public static final List<Integer> MERGE_STA_NO_THREE = new ArrayList<Integer>() {{
//        add(116);add(117);
//        add(106);add(107);
    }};
    public static final List<Integer> MERGE_STA_NO_FOUR = new ArrayList<Integer>() {{
//        add(116);add(117);
    }};
//    正序
    public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = new ArrayList<Integer>() {{
        add(161);add(157);add(153);add(149);add(124);add(119);add(113);add(112);add(107);add(106);add(101);add(100);
    }};
//    反序
    public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<Integer>() {{
        add(100);add(101);add(106);add(107);add(112);add(113);add(119);add(124);add(149);add(153);add(157);add(161);
    }};
    // RGV轨道正序(从上到下)
    public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = Arrays.asList(
        1004,
        1007,
        1010,
        1014,
        1018,
        1021,
        1024,
        1028,
        1031,
        1035
    );
    // 反序(直接反转生成)
    public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<>(TRACK_POSITION_POSITIVE_SEQUENCE);
    static {
        Collections.reverse(TRACK_POSITION_REVERSE_SEQUENCE);
    }
    //1楼战站点
    public static final List<Integer> TRACK_POSITION_ONE = Arrays.asList(
            1004, 1007, 1010, 1014, 1018, 1021, 1024, 1028, 1031, 1035,1042,1105,1106,1041,
            1038,1036
    );
    //2楼战站点
    public static final List<Integer> TRACK_POSITION_TWO = Arrays.asList(
            2003,2006,2009,2012,2015,2018,2021,2024,2027,2030,2037,2031
    );
    // 轨道映射(把映射站点替换成主站点)
    public static final Map<Integer, Integer> SITE_MAPPING = new HashMap<>();
    static {
        SITE_MAPPING.put(1042, 1004);
        SITE_MAPPING.put(1105, 1007);
        SITE_MAPPING.put(1106, 1010);
        SITE_MAPPING.put(1041, 1024);
        SITE_MAPPING.put(1038, 1028);
        SITE_MAPPING.put(1036, 1035);
    }
    // 获取轨道列表中实际站点
    private static Integer mapSite(Integer site) {
        return SITE_MAPPING.getOrDefault(site, site);
    }
    public static String zerofill(String msg, Integer count){
        if (msg.length() == count){
@@ -51,6 +87,7 @@
            return msgBuilder.toString();
        }
    }
    /*
     * 获取干涉最远站点
     * */
@@ -73,6 +110,30 @@
            indexNo=staFall.size()-1;
        }
        return staFall.get(indexNo);
    }
    // 获取当前小车未行走的路线集合
    public static List<Integer> getRouteDis(Integer groupStart, Integer groupEnd) {
        groupStart = mapSite(groupStart);
        groupEnd = mapSite(groupEnd);
        int startIdx = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupStart);
        int endIdx = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupEnd);
        if (startIdx == -1 || endIdx == -1) return null;
        boolean forward = startIdx < endIdx;
        List<Integer> route = forward ? TRACK_POSITION_POSITIVE_SEQUENCE : TRACK_POSITION_REVERSE_SEQUENCE;
        List<Integer> result = new ArrayList<>();
        boolean addFlag = false;
        for (Integer s : route) {
            s = mapSite(s);
            if (s.equals(groupStart)) addFlag = true;
            if (addFlag) result.add(s);
            if (s.equals(groupEnd)) break;
        }
        return result;
    }
@@ -104,6 +165,20 @@
            return null;
        }
        return result;
    }
    public static List<Integer> getRouteOne(){
        List<Integer> groupRoute = new ArrayList<>();
        groupRoute = TRACK_POSITION_ONE;
        return groupRoute;
    }
    public static List<Integer> getRouteTwo(){
        List<Integer> groupRoute = new ArrayList<>();
        groupRoute = TRACK_POSITION_TWO;
        return groupRoute;
    }
    /*
@@ -237,7 +312,7 @@
            case 100:
            case 102:
            case 111:
                if (souSta == 118){
                if (souSta == 118 || souSta == 127){
                    return (short)119;
                }
                return 149;
@@ -247,8 +322,11 @@
    }
    public static  Short SouStaEnd(Integer endSta,Integer souSta){
       if (souSta == 159) {
           return (short)161;
       if (souSta == 1103) {
           return (short)1105;
       }
       if(souSta == 1047){
           return (short)1042;
       }
       return souSta.shortValue();
    }