|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|