#
LSH
2024-04-03 55165693f541b63e059af1def45fb2f24c5ed31e
#
4个文件已修改
241 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/BasRgvMap.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/RouteUtils.java 178 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasRgvMapMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasRgvMap.java
@@ -38,6 +38,20 @@
    private Integer endRoute;
    /**
     * 开始范围
     */
    @ApiModelProperty(value= "开始范围")
    @TableField("start_route_other")
    private Integer startRouteOther;
    /**
     * 结束范围
     */
    @ApiModelProperty(value= "结束范围")
    @TableField("end_route_other")
    private Integer endRouteOther;
    /**
     * 当前位置
     */
    @ApiModelProperty(value= "当前位置")
@@ -67,7 +81,7 @@
    public BasRgvMap() {}
    public BasRgvMap(Integer rgvNo, Integer startRoute, Integer endRoute, Integer nowRoute, Integer rgvStatus, Integer lockStartRoute, Integer lockEndRoute) {
    public BasRgvMap(Integer rgvNo, Integer startRoute, Integer endRoute, Integer nowRoute, Integer rgvStatus, Integer lockStartRoute, Integer lockEndRoute, Integer startRouteOther, Integer endRouteOther) {
        this.rgvNo = rgvNo;
        this.startRoute = startRoute;
        this.endRoute = endRoute;
@@ -75,6 +89,8 @@
        this.rgvStatus = rgvStatus;
        this.lockStartRoute = lockStartRoute;
        this.lockEndRoute = lockEndRoute;
        this.startRouteOther = startRouteOther;
        this.endRouteOther = endRouteOther;
    }
    public Integer getRgvNoOther(){
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3687,7 +3687,11 @@
                        return false;
                    }
                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
                    List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号
                    if (rgvProtocol.getRgvNo()==1){//切换近范围
                        route = routeNear;
                    }
                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
                    for (WrkMastSta wrkMastSta : wrkMastStaList){
                        if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:满版   3:取放
@@ -3719,7 +3723,7 @@
                        log.info(date+"取放任务下发:目标站状态:"+basDevp);
                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta);
                        if (sign){
                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),rgvProtocol.getRgvNo()==1);
                            if (signMap){
                                wrkMastSta.setWrkSts(1);
                                try{
@@ -3776,6 +3780,10 @@
                    }
                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号
                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//获取活动范围
                    List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
                    if (rgvProtocol.getRgvNo()==2){//切换近范围
                        route = routeNear;
                    }
                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//查询可执行任务
                    for (WrkMastSta wrkMastSta : wrkMastStaList){
                        if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=2){// 2:空板  || 工作类型  1:取(叠盘)  2:拆盘  5:满取  6:满放
@@ -3800,7 +3808,7 @@
                            continue;
                        }
                        if (sign){
                            boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
                            boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd(),rgvProtocol.getRgvNo()==2);
                            if (signMap){
                                wrkMastSta.setWrkSts(2);
                                try{
@@ -3858,6 +3866,10 @@
                    }
                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号
                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//获取活动范围
                    List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
                    if (rgvProtocol.getRgvNo()==2){//切换近范围
                        route = routeNear;
                    }
                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//查询可执行任务
                    for (WrkMastSta wrkMastSta : wrkMastStaList){
                        if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=6){// 2:空板  || 工作类型  1:取(叠盘)  2:拆盘  5:满取  6:满放  7:提升
@@ -3882,7 +3894,7 @@
                            continue;
                        }
                        if (sign){
                            boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
                            boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd(),rgvProtocol.getRgvNo()==2);
                            if (signMap){
                                wrkMastSta.setWrkSts(2);
                                try{
@@ -3936,6 +3948,10 @@
                        return false;
                    }
                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
                    List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
                    if (rgvProtocol.getRgvNo()==2){//切换近范围
                        route = routeNear;
                    }
                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号
                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
                    for (WrkMastSta wrkMastSta : wrkMastStaList){
@@ -3972,7 +3988,7 @@
                            continue;
                        }
                        if (sign){
                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute(),rgvProtocol.getRgvNo()==2);
                            if (signMap){
                                wrkMastSta.setWrkSts(1);
                                try{
@@ -4027,6 +4043,10 @@
                    }
                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号
                    List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
                    if (rgvProtocol.getRgvNo()==2){//切换近范围
                        route = routeNear;
                    }
                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
                    WrkMast wrkMast = wrkMastMapper.selectBy122ManQu(122,110,15L);
                    if (!Cools.isEmpty(wrkMast)){
@@ -4053,7 +4073,7 @@
                            continue;
                        }
                        if (sign){
                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute(),rgvProtocol.getRgvNo()==2);
                            if (signMap){
                                wrkMastSta.setWrkSts(1);
                                try{
@@ -4118,7 +4138,8 @@
                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
                ) {
//                    if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
                    if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){
//                    if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){
                    if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){
                        if (rgvProtocol.getRgvNo()==1){
                            signRgv1 = false;
                        }else {
@@ -4205,7 +4226,7 @@
     * 小车XY移动  避让
     * */
    public synchronized boolean rgvAvoidanceXY(Integer rgvId, Integer[] rgvRunSta){
        if (rgvId==1){
        if (rgvId==2){
            try{
//                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
                //  命令下发区 --------------------------------------------------------------------------
@@ -4453,6 +4474,13 @@
    /*
     * 小车地图更新  更新锁
     * */
    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,boolean sign){
        if (sign){
            staStart = RouteUtils.RouteIndexFarMasOtherNearUpMap(basRgvMapCurrent.getRgvNo(),staStart);
            staEnd = RouteUtils.RouteIndexFarMasOtherNearUpMap(basRgvMapCurrent.getRgvNo(),staEnd);
        }
        return rgvMapUpdate(basRgvMapCurrent,staStart,staEnd);
    }
    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
//        List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
@@ -4469,6 +4497,7 @@
            List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
            Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//另一台小车可活动最远位置
            basRgvMapOther.setEndRoute(lockEndRoute);
            basRgvMapOther.setEndRouteOther(RouteUtils.RouteIndexFarMasOtherNear(rgvNoOther,lockEndRoute));
            basRgvMapMapper.updateById(basRgvMapOther);
            return true;
        }catch (Exception e){
src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -14,27 +14,33 @@
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(104);add(122);add(105);
//        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(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>() {{
@@ -71,38 +77,132 @@
            return msgBuilder.toString();
        }
    }
//    /*
//     * 获取干涉最远站点
//     * */
//    public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){
//        List<Integer> staFall = new ArrayList<>();
//        if (MERGE_STA_NO_SIX.contains(staNo)){
//            staFall = MERGE_STA_NO_SIX;
//        }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;
//        }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 if (MERGE_STA_NO_FIVE.contains(staNo)){
//            staFall = MERGE_STA_NO_FIVE;
//        }else {
//            return staNo;
//        }
//
//        int indexNo = 0;
//        if (rgvNo==1){
//            indexNo=staFall.size()-1;
//        }
//        return staFall.get(indexNo);
//    }
    /*
     * 获取干涉最远站点
     * */
    public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){
        List<Integer> staFall = new ArrayList<>();
        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;
        }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 if (MERGE_STA_NO_FIVE.contains(staNo)){
            staFall = MERGE_STA_NO_FIVE;
        }else {
            return staNo;
        }
        int indexNo = 0;
        if (rgvNo==1){
            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;
@@ -200,7 +300,7 @@
        if (rgvNo==1) {
            switch (staNo) {
                case 101:
                case 102:   return 0;
                case 102:   return 102;
                case 104:
                case 122:
                case 105:   return 102;
@@ -222,7 +322,7 @@
                case 1142:
                case 116:
                case 117:
                    return 0;
                    return 102;
                default:
                    return 101;
            }
@@ -231,7 +331,7 @@
                case 117:
                case 116:
                case 1142:
                    return 0;
                    return 116;
                case 114:
                case 123:
                case 113:
@@ -253,7 +353,7 @@
                    return 107;
                case 102:
                case 101:
                    return 0;
                    return 116;
                default:
                    return 117;
            }
@@ -500,8 +600,6 @@
//        }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){
src/main/resources/mapper/BasRgvMapMapper.xml
@@ -11,6 +11,8 @@
        <result column="rgv_status" property="rgvStatus" />
        <result column="lock_start_route" property="lockStartRoute" />
        <result column="lock_end_route" property="lockEndRoute" />
        <result column="start_route_other" property="startRouteOther" />
        <result column="end_route_other" property="endRouteOther" />
    </resultMap>