| | |
| | | import java.util.List; |
| | | import static java.util.stream.Collectors.toList; |
| | | import com.zy.core.enums.RouteCollectCountType; |
| | | import springfox.documentation.spring.web.json.Json; |
| | | |
| | | /** |
| | | * Created by Monkey D. Luffy on 2023/7/18 |
| | | */ |
| | | public class RouteUtils { |
| | | |
| | | public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{ |
| | | add(116);add(117); |
| | | }}; |
| | | |
| | | public static final List<Integer> MERGE_STA_NO_TWO = new ArrayList<Integer>() {{ |
| | | add(116);add(117); |
| | | }}; |
| | | |
| | | public static final List<Integer> MERGE_STA_NO_THREE = new ArrayList<Integer>() {{ |
| | | add(116);add(117); |
| | | }}; |
| | | |
| | | 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>() {{ |
| | |
| | | return msgBuilder.toString(); |
| | | } |
| | | } |
| | | /* |
| | | * 获取干涉最远站点 |
| | | * */ |
| | | public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){ |
| | | List<Integer> staFall = new ArrayList<>(); |
| | | 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; |
| | | }else if (MERGE_STA_NO_THREE.contains(staNo)){ |
| | | staFall = MERGE_STA_NO_THREE; |
| | | }else if (MERGE_STA_NO_FOUR.contains(staNo)){ |
| | | staFall = MERGE_STA_NO_FOUR; |
| | | }else { |
| | | return staNo; |
| | | } |
| | | |
| | | int indexNo = 0; |
| | | if (rgvNo==1){ |
| | | indexNo=staFall.size()-1; |
| | | } |
| | | return staFall.get(indexNo); |
| | | } |
| | | |
| | | |
| | | // 获取当前小车未行走的路线集合 |
| | | public static List<Integer> getRoute(Integer groupStart,Integer groupEnd){ |
| | |
| | | return null; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /* |
| | | * 获取最远站点 |
| | | * */ |
| | | 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); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static Integer[] RouteIndexFarArr(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); |
| | | return new Integer[]{ia,ib,ic,id}; |
| | | } |
| | | |
| | | /* |
| | | * a 小车当前位置 |
| | | * b 小车任务开始位置 |
| | | * c 小车任务结束位置 |
| | | * d 小车初始位置 |
| | | * 获取最大路径差值 |
| | | * */ |
| | | public static List<Integer> RouteMapCurrentFar(Integer a,Integer b,Integer c,Integer d){ |
| | | Integer farStn = RouteIndexFarMas(a, b, c, d); |
| | | return getRouteIntersection(TRACK_POSITION_POSITIVE_SEQUENCE,getRoute(farStn, d), RouteCollectCountType.DIFFERENCESET); |
| | | } |
| | | |
| | | public static List<Integer> RouteMapCurrentFar(Integer farStn,Integer d){ |
| | | return getRouteIntersection(TRACK_POSITION_POSITIVE_SEQUENCE,getRoute(farStn, d), RouteCollectCountType.DIFFERENCESET); |
| | | } |
| | | |
| | | /* |
| | | * 另一台小车最远位置 |
| | | * */ |
| | | public static Integer RouteMapOtherFarStnNo(List<Integer> routeDIFF,Integer d){ |
| | | int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d); |
| | | if (id==0){ |
| | | return routeDIFF.get(0); |
| | | }else { |
| | | int size = routeDIFF.size(); |
| | | return routeDIFF.get(size-1); |
| | | } |
| | | } |
| | | |
| | | //是否有交集 |
| | |
| | | return !getRouteBoolean(routeCurrent, routeOther); //是否有交集 |
| | | } |
| | | |
| | | public static List<Integer> RouteAutoBoolean(Integer a,Integer b,Integer c){ |
| | | return getRouteIntersection(getRoute(a, c), getRoute(b, c), RouteCollectCountType.DEDUPLICATIONUNION); |
| | | } |
| | | |
| | | |
| | | |
| | | public static void main(String[] arge){ |
| | | List<Integer> routeCurrent = getRoute(104, 119); //获取当前小车路径 |
| | | List<Integer> routeOther = getRoute(117, 118); //获取其它小车路径 |
| | |
| | | System.out.println("路径去重并集:\t"+routeIntersection3); |
| | | |
| | | System.out.println(RouteAutoBoolean(101,104,119,114,116,120,true)); |
| | | |
| | | List<Integer> routeDIFF = RouteMapCurrentFar(114, 104, 119, 117); |
| | | System.out.println("当前路径最大集合:\t"+ routeDIFF); |
| | | |
| | | Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,117); |
| | | System.out.println("另一台小车最远站点:\t"+routeFarOther); |
| | | |
| | | |
| | | Integer[] integers = RouteIndexFarArr(114, 104, 119, 101); |
| | | for (Integer integer:integers){ |
| | | System.out.println(integer); |
| | | } |
| | | } |
| | | |
| | | } |