自动化立体仓库 - WCS系统
#
zjj
2024-06-05 1af2d32c0918804bf76f1cf941d2cd19bd70d884
src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -12,16 +12,17 @@
 */
public class RouteUtils {
    //问题2  周俊杰
    public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{
//        add(116);add(117);
//        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>() {{
@@ -30,11 +31,11 @@
//    正序
    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(999);;add(112);add(107);add(106);add(101);add(100);
        add(161);add(157);add(153);add(149);add(119);add(124);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(999);add(113);add(119);add(124);add(149);add(153);add(157);add(161);
        add(100);add(101);add(106);add(107);add(112);add(113);add(124);add(119);add(149);add(153);add(157);add(161);
    }};
    public static String zerofill(String msg, Integer count){
@@ -109,10 +110,10 @@
    * 获取最远站点
    * */
    public static Integer RouteIndexFarMas(Integer a,Integer b,Integer c,Integer d){
        int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(a);
        int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(b);
        int ic = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(c);
        int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d);
        int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(a); //当前位置
        int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(b); //地图开始位置
        int ic = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(c); //地图结束位置
        int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d); //锁结束位置
        if (id==0){
            if (ia>ib){
                if (ia>ic){
@@ -231,55 +232,83 @@
        return getRouteIntersection(getRoute(a, c), getRoute(b, c), RouteCollectCountType.DEDUPLICATIONUNION);
    }
    public static Short CrnStaEnd(Integer endSta,Integer souSta) {
        switch (endSta) {
            case 100:
            case 102:
            case 111:
                if (souSta == 118 || souSta == 127){
                    return (short)119;
                }
                return 149;
            default:
                return endSta.shortValue();
        }
    }
    public static  Short SouStaEnd(Integer endSta,Integer souSta){
       if (souSta == 159) {
           return (short)161;
       }
       return souSta.shortValue();
    }
    public static void main(String[] arge){
        List<Integer> routeCurrent = getRoute(100, 124);  //获取当前小车路径
        List<Integer> routeOther = getRoute(149, 161);  //获取其它小车路径
        System.out.println("当前小车路径:\t"+routeCurrent);
        System.out.println("其它小车路径:\t"+routeOther);
        //{"endRoute":999,"lockEndRoute":124,"lockStartRoute":161,"nowRoute":161,"rgvNo":3,"rgvStatus":0,"startRoute":161}   3hao
        Integer i = RouteIndexFarMas(112, 161, 124, 161);
        System.out.println(i);
        //{"endRoute":119,"lockEndRoute":112,"lockStartRoute":100,"nowRoute":112,"rgvNo":2,"rgvStatus":0,"startRoute":100} 2
        Integer i1 = RouteIndexFarMas(112, 100, 112, 100);
        System.out.println(i1);
        boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther);  //是否有交集
        System.out.println("是否有交集:\t"+routeBoolean);
        List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//交集
        System.out.println("路径交集:\t"+routeIntersection);
        List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//差集
        System.out.println("路径差集:\t"+routeIntersection1);
        List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//并集
        System.out.println("路径并集:\t"+routeIntersection2);
        List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//去重并集
        System.out.println("路径去重并集:\t"+routeIntersection3);
        /*
         * a  小车当前位置
         * b  小车任务开始位置
         * c  小车任务结束位置
         * sign  另一个小车空闲标记
         * */
        System.out.println("是否有交集:\t"+RouteAutoBoolean(100,101,124,149,161,153,true));   //是否有交集  true无交集  false有交集
        /*
         * a  小车当前位置
         * b  小车任务开始位置
         * c  小车任务结束位置
         * d  小车初始位置
         * 获取最大路径差值
         * */
        List<Integer> routeDIFF = RouteMapCurrentFar(100,101,124,149);
        System.out.println("当前路径最大集合:\t"+ routeDIFF);
        Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,124);
        System.out.println("另一台小车最远站点:\t"+routeFarOther);
        Integer[] integers = RouteIndexFarArr(100,101,124,149);
        for (Integer integer:integers){
            System.out.println(integer);
        }
//        List<Integer> routeCurrent = getRoute(100, 124);  //获取当前小车路径
//        List<Integer> routeOther = getRoute(149, 161);  //获取其它小车路径
//        System.out.println("当前小车路径:\t"+routeCurrent);
//        System.out.println("其它小车路径:\t"+routeOther);
//
//        boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther);  //是否有交集
//        System.out.println("是否有交集:\t"+routeBoolean);
//
//        List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//交集
//        System.out.println("路径交集:\t"+routeIntersection);
//
//        List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//差集
//        System.out.println("路径差集:\t"+routeIntersection1);
//
//        List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//并集
//        System.out.println("路径并集:\t"+routeIntersection2);
//
//        List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//去重并集
//        System.out.println("路径去重并集:\t"+routeIntersection3);
//
//        /*
//         * a  小车当前位置
//         * b  小车任务开始位置
//         * c  小车任务结束位置
//         * sign  另一个小车空闲标记
//         * */
//        System.out.println("是否有交集:\t"+RouteAutoBoolean(100,101,124,149,161,153,true));   //是否有交集  true无交集  false有交集
//
//        /*
//         * a  小车当前位置
//         * b  小车任务开始位置
//         * c  小车任务结束位置
//         * d  小车初始位置
//         * 获取最大路径差值
//         * */
//        List<Integer> routeDIFF = RouteMapCurrentFar(100,101,124,149);
//        System.out.println("当前路径最大集合:\t"+ routeDIFF);
//
//        Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,124);
//        System.out.println("另一台小车最远站点:\t"+routeFarOther);
//
//
//        Integer[] integers = RouteIndexFarArr(100,101,124,149);
//        for (Integer integer:integers){
//            System.out.println(integer);
//        }
    }
}