| | |
| | | package com.zy.asrs.utils; |
| | | |
| | | import com.core.common.Arith; |
| | | import com.core.common.Cools; |
| | | import com.zy.core.properties.SlaveProperties; |
| | | |
| | | import java.text.DecimalFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import static java.util.stream.Collectors.toList; |
| | | import com.zy.core.enums.RouteCollectCountType; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/8/27 |
| | | * Created by Monkey D. Luffy on 2023/7/18 |
| | | */ |
| | | public class RouteUtils { |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // 获取当前小车未行走的路线 |
| | | // 获取当前小车未行走的路线集合 |
| | | public static List<Integer> getRoute(Integer groupStart,Integer groupEnd){ |
| | | boolean sign = groupStart < groupEnd; |
| | | List<Integer> result = new ArrayList<>(); |
| | | List<Integer> groupRoute = new ArrayList<>(); |
| | | List<Integer> groupRoute = null; |
| | | if (sign){ |
| | | groupRoute = TRACK_POSITION_POSITIVE_SEQUENCE; |
| | | }else { |
| | |
| | | } |
| | | return result; |
| | | } |
| | | // 外侧方向的货位 优先入库方向/优先出库方向 ===>> 反之 |
| | | public static List<String> getGroupOutsideLoc(String locNo,Integer crnNo){ |
| | | |
| | | List<String> result = new ArrayList<>(); |
| | | |
| | | return result; |
| | | //是否有交集 |
| | | public static boolean getRouteBoolean(List<Integer> groupCurrent,List<Integer> groupOther){ |
| | | for (Integer positionCurrent : groupCurrent){ |
| | | for (Integer positionOther : groupOther){ |
| | | if (positionCurrent.equals(positionOther)){ |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | //集合运算 |
| | | public static List<Integer> getRouteIntersection(List<Integer> groupCurrent, List<Integer> groupOther, RouteCollectCountType routeCollectCountType){ |
| | | switch (routeCollectCountType){ |
| | | case INTERSECTION: |
| | | //交集 |
| | | return groupCurrent.stream().filter(item -> groupOther.contains(item)).collect(toList()); |
| | | case DIFFERENCESET: |
| | | //差集 |
| | | return groupCurrent.stream().filter(item -> !groupOther.contains(item)).collect(toList()); |
| | | case UNION: |
| | | //并集 |
| | | groupCurrent.addAll(groupOther); |
| | | return groupCurrent; |
| | | case DEDUPLICATIONUNION: |
| | | //去重并集 |
| | | groupCurrent.addAll(groupOther); |
| | | return groupCurrent.stream().distinct().collect(toList()); |
| | | default: |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] arge){ |
| | | List<Integer> routeCurrent = getRoute(2, 9); //获取当前小车路径 |
| | | List<Integer> routeOther = getRoute(12, 5); //获取其它小车路径 |
| | | 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); |
| | | } |
| | | |
| | | } |