lty
6 天以前 0b6c8b7687ff593d254cfcacacf72a75bfdf11ca
src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -3,6 +3,8 @@
import java.util.ArrayList;
import java.util.List;
import static java.util.stream.Collectors.toList;
import com.zy.asrs.entity.WrkMastSta;
import com.zy.core.enums.RouteCollectCountType;
import springfox.documentation.spring.web.json.Json;
@@ -12,23 +14,45 @@
public class RouteUtils {
    public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{
        add(116);add(117);
//        add(116);add(117);
        add(104);add(122);
    }};
    public static final List<Integer> MERGE_STA_NO_TWO = new ArrayList<Integer>() {{
        add(113);add(123);add(114);add(1142);
//        add(113);add(123);add(114);add(1142);
        add(107);add(118);
    }};
    public static final List<Integer> MERGE_STA_NO_THREE = new ArrayList<Integer>() {{
        add(107);add(118);add(108);add(119);
//        add(107);add(118);add(108);add(119);
        add(108);add(119);
    }};
    public static final List<Integer> MERGE_STA_NO_FOUR = new ArrayList<Integer>() {{
        add(110);add(120);add(111);add(121);
//        add(110);add(120);add(111);add(121);
        add(110);add(120);
    }};
    public static final List<Integer> MERGE_STA_NO_FIVE = new ArrayList<Integer>() {{
        add(113);add(123);add(114);add(1142);
//        add(104);add(122);add(105);
        add(111);add(121);
    }};
    public static final List<Integer> MERGE_STA_NO_SIX = new ArrayList<Integer>() {{
//        add(108);add(119);add(110);add(120);
        add(113);add(123);add(114);
    }};
    public static final List<Integer> MERGE_STA_NO_SEVEN = new ArrayList<Integer>() {{
    }};
    public static final List<Integer> MERGE_STA_NO_EIGHT = new ArrayList<Integer>() {{
    }};
    public static final List<Integer> MERGE_STA_NO_NINE = new ArrayList<Integer>() {{
    }};
//    正序
@@ -58,7 +82,22 @@
     * */
    public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){
        List<Integer> staFall = new ArrayList<>();
        if (MERGE_STA_NO_One.contains(staNo)){
        if (MERGE_STA_NO_SIX.contains(staNo)){
//            staFall = MERGE_STA_NO_SIX;
            if (rgvNo==1){
                if (staNo==113){
                    return 123;
                } else {
                    return 114;
                }
            }else {
                if (staNo==114){
                    return 123;
                } else {
                    return 113;
                }
            }
        }else if (MERGE_STA_NO_One.contains(staNo)){
            staFall = MERGE_STA_NO_One;
        }else if (MERGE_STA_NO_TWO.contains(staNo)){
            staFall = MERGE_STA_NO_TWO;
@@ -66,6 +105,8 @@
            staFall = MERGE_STA_NO_THREE;
        }else if (MERGE_STA_NO_FOUR.contains(staNo)){
            staFall = MERGE_STA_NO_FOUR;
        }else if (MERGE_STA_NO_FIVE.contains(staNo)){
            staFall = MERGE_STA_NO_FIVE;
        }else {
            return staNo;
        }
@@ -75,6 +116,270 @@
            indexNo=staFall.size()-1;
        }
        return staFall.get(indexNo);
    }
    public static Integer RouteIndexFarMasOtherNear(int rgvNo,Integer staNo){
        if (rgvNo==1){
            switch (staNo){
                case 117:   return  116;
                case 116:   return  1142;
                case 1142:
                case 114:   return  114;
                case 123:   return  113;
                case 113:   return  121;
                case 121:   return  111;
                case 111:   return  110;
                case 120:
                case 110:   return  119;
                case 119:
                case 108:   return  118;
                case 118:
                case 107:   return  105;
                case 105:
                case 122:   return  122;
                case 104:   return  104;
                case 102:   return  102;
                case 101:   return  101;
                default:
                    return 102;
            }
        }else {
            switch (staNo){
                case 117:   return  117;
                case 116:   return  116;
                case 1142:  return  116;
                case 114:   return  116;
                case 123:   return  1142;
                case 113:   return  114;
                case 121:   return  113;
                case 111:   return  113;
                case 120:  return  121;
                case 110:   return  111;
                case 119:   return  110;
                case 108:   return  110;
                case 118:  return  119;
                case 107:   return  107;
                case 105:   return  107;
                case 122:   return  122;
                case 104:   return  104;
                case 102:   return  104;
                case 101:   return  102;
                default:
                    return 116;
            }
        }
    }
    public static Integer RouteIndexFarMasOtherNearUpMap(int rgvNo,Integer staNo){
//        int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(staNo);
//        int ib = TRACK_POSITION_REVERSE_SEQUENCE.indexOf(staNo);
//        if (ia<=ib){
//            return new Integer[]{RouteIndexFarMasReverse(1,runStaStart),RouteIndexFarMasReverse(2,runStaEnd)};
//        }else {
//            return new Integer[]{RouteIndexFarMasReverse(1,runStaEnd),RouteIndexFarMasReverse(2,runStaStart)};
//        }
//        if (ia<=ib){
//            return new Integer[]{TRACK_POSITION_POSITIVE_SEQUENCE.get(ia),TRACK_POSITION_POSITIVE_SEQUENCE.get(ib)};
//        }else {
//            return new Integer[]{TRACK_POSITION_POSITIVE_SEQUENCE.get(ib),TRACK_POSITION_POSITIVE_SEQUENCE.get(ia)};
//        }
//        if (rgvNo==1){
//            if (ia-2>=1){
//                return TRACK_POSITION_POSITIVE_SEQUENCE.get(ia-2);
//            }else {
//                return 102;
//            }
            return RouteIndexFarMasOther(rgvNo,staNo);
//        }else {
//            if (ib-2>=1){
//                return TRACK_POSITION_REVERSE_SEQUENCE.get(ib-2);
//            }else {
//                return 116;
//            }
//        }
    }
//
    /*
     * 获取干涉最远站点
     * */
    public static Integer RouteIndexFarMasOther(int rgvNo,Integer staNo){
        if (rgvNo==1){
            switch (staNo){
                case 101:   return  102;
                case 102:   return  122;
                case 104:
                case 122:
                case 105:   return  105;
                case 107:
                case 118:   return  119;
                case 108:
                case 119:   return  120;
                case 110:
                case 120:
                case 111:   return  121;
                case 121:   return  113;
                case 113:   return  1142;
                case 123:
                case 114:   return  116;
                default:
                    return 116;
            }
        }else {
            switch (staNo){
                case 117:
                case 116:   return  1142;
                case 1142:
                case 114:
                case 123:   return  113;
                case 113:   return  121;
                case 121:
                case 111:   return  110;
                case 120:
                case 110:   return 108;
                case 119:
                case 108:
                case 118:
                case 107:   return  107;
                case 105:   return  104;
                case 122:
                case 104:   return  102;
                default:
                    return 102;
            }
        }
//        if (rgvNo==1){
//            switch (staNo){
//                case 101:
//                case 102: return  102;
//                case 104:
//                case 122: return  118;
//                case 105: return  119;
//                case 107:
//                case 118: return  120;
//                case 108:
//                case 119: return  111;
//                case 110:
//                case 120: return  113;
//                case 111:
//                case 121: return  113;
//                case 113: return  114;
//                case 123:
//                case 114: return  1142;
//                default:
//                    return 116;
//            }
//        }else {
//            switch (staNo){
//                case 117:
//                case 116: return  123;
//                case 1142:
//                case 114: return  113;
//                case 123:
//                case 113: return  111;
//                case 121:
//                case 111: return  108;
//                case 120:
//                case 110: return 107;
//                case 119:
//                case 108: return  107;
//                case 118:
//                case 107: return  105;
//                case 105:
//                case 122:
//                case 104: return  104;
//                default:
//                    return 102;
//            }
//        }
    }
    /*
     * 获取干涉最远站点
     * */
    public static Integer RouteIndexFarMasReverse(int rgvNo,Integer staNo){
        if (rgvNo==1) {
            switch (staNo) {
                case 101:
                case 102:   return 102;
                case 104:
                case 122:
                case 105:   return 102;
                case 107:
                case 118:
                case 108:
                case 119:   return 105;
                case 110:
                case 120:
                    return 107;
                case 111:
                case 121:
                    return 108;
                case 113:
                    return 111;
                case 123:
                case 114:
                    return 121;
                case 1142:
                case 116:
                case 117:
                    return 102;
                default:
                    return 101;
            }
        }else{
            switch (staNo) {
                case 117:
                case 116:
                case 1142:
                    return 116;
                case 114:
                case 123:
                case 113:
                    return 117;
                case 121:return 123;
                case 111:
                case 120:
                case 110:
                    return 113;
                case 119:
                case 108:
                    return 111;
                case 118:
                case 107:
                    return 110;
                case 105:
                case 122:
                case 104:
                    return 107;
                case 102:
                case 101:
                    return 116;
                default:
                    return 117;
            }
            /*
            * switch (staNo){
                case 117:
                case 116:   return  1142;
                case 1142:
                case 114:
                case 123:   return  113;
                case 113:   return  121;
                case 121:
                case 111:   return  110;
                case 120:
                case 110:   return 108;
                case 119:
                case 108:
                case 118:
                case 107:   return  107;
                case 105:   return  104;
                case 122:
                case 104:   return  102;
                default:
                    return 102;
            }*/
        }
    }
@@ -116,35 +421,48 @@
        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){
                    return a;
                }else {
                    return c;
                }
        if (id == 0){
            if (ib>ic){
                return b;
            }else {
                if (ib>ic){
                    return b;
                }else {
                    return c;
                }
                return c;
            }
        }else {
            if (ia<ib){
                if (ia<ic){
                    return a;
                }else {
                    return c;
                }
            if (ib<ic){
                return b;
            }else {
                if (ib<ic){
                    return b;
                }else {
                    return c;
                }
                return c;
            }
        }
//        if (id==0){
//            if (ia>ib){
//                if (ia>ic){
//                    return a;
//                }else {
//                    return c;
//                }
//            }else {
//                if (ib>ic){
//                    return b;
//                }else {
//                    return c;
//                }
//            }
//        }else {
//            if (ia<ib){
//                if (ia<ic){
//                    return a;
//                }else {
//                    return c;
//                }
//            }else {
//                if (ib<ic){
//                    return b;
//                }else {
//                    return c;
//                }
//            }
//        }
    }
    /*
@@ -277,6 +595,45 @@
        return getRouteIntersection(getRoute(a, c), getRoute(b, c), RouteCollectCountType.DEDUPLICATIONUNION);
    }
    public static Integer[] RgvRunSta(Integer runStaStart,Integer runStaEnd){
        int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(runStaStart);
        int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(runStaEnd);
        if (ia<=ib){
            return new Integer[]{RouteIndexFarMasReverse(1,runStaStart),RouteIndexFarMasReverse(2,runStaEnd)};
        }else {
            return new Integer[]{RouteIndexFarMasReverse(1,runStaEnd),RouteIndexFarMasReverse(2,runStaStart)};
        }
//        if (ia<=ib){
//            return new Integer[]{TRACK_POSITION_POSITIVE_SEQUENCE.get(ia),TRACK_POSITION_POSITIVE_SEQUENCE.get(ib)};
//        }else {
//            return new Integer[]{TRACK_POSITION_POSITIVE_SEQUENCE.get(ib),TRACK_POSITION_POSITIVE_SEQUENCE.get(ia)};
//        }
//        if (ia<=ib){
//            return new Integer[]{TRACK_POSITION_POSITIVE_SEQUENCE.get(ia-1),TRACK_POSITION_POSITIVE_SEQUENCE.get(ib+1)};
//        }else {
//            return new Integer[]{TRACK_POSITION_POSITIVE_SEQUENCE.get(ib+1),TRACK_POSITION_POSITIVE_SEQUENCE.get(ia-1)};
//        }
    }
    public static boolean RgvRunStaSign(Integer staBow,Integer runStaEnd,Integer rgvNo){
        int ia =  TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(staBow);
        int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(runStaEnd);
        if (rgvNo==1){
            if (ia>ib){
                return true;//需要避让
            }else {
                return false;//不需要避让
            }
        }else {
            if (ia<ib){
                return true;//需要避让
            }else {
                return false;//不需要避让
            }
        }
    }
    public static void main(String[] arge){