#
LSH
2024-04-03 55165693f541b63e059af1def45fb2f24c5ed31e
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{
@@ -4094,6 +4114,8 @@
            }
            Integer[] rgvRunSta = RouteUtils.RgvRunSta(wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
            boolean signRgv = true;
            boolean signRgv1 = true;
            boolean signRgv2 = true;
            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
@@ -4116,9 +4138,13 @@
                        && 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(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){
                        signRgv = false;
                        break;
                        if (rgvProtocol.getRgvNo()==1){
                            signRgv1 = false;
                        }else {
                            signRgv2 = false;
                        }
                    }
                    if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
                        signRgv = false;
@@ -4132,7 +4158,7 @@
                    break;
                }
            }
            if (signRgv){
            if (signRgv &&  (signRgv1 || signRgv2)){
                for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
                    RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
                    RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
@@ -4152,7 +4178,6 @@
                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                        rgvAvoidanceXY(rgvProtocol.getRgvNo(),rgvRunSta);
                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
                        break;
                    }
                }
            }
@@ -4201,7 +4226,7 @@
     * 小车XY移动  避让
     * */
    public synchronized boolean rgvAvoidanceXY(Integer rgvId, Integer[] rgvRunSta){
        if (rgvId==1){
        if (rgvId==2){
            try{
//                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
                //  命令下发区 --------------------------------------------------------------------------
@@ -4449,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());
@@ -4465,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){