#
lsh
2024-06-19 599ae6e6576ba332043dd89c4ed39bae8220fe7c
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -427,9 +427,10 @@
//                // 入出库模式判断
//                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo()!=0) {
//                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
                    WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7");
//                    WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7");
                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo());
                    if (wrkMast == null) {
                        // 无拣料数据
                        continue;
@@ -1291,7 +1292,7 @@
                continue;
            }
            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y") && staDetl.getWrkNo().equals(wrkMast.getWrkNo())) {
                flag = true;
            }
            if (!flag) {
@@ -3318,7 +3319,7 @@
                    wrkMast.setSheetNo("5");
                    wrkMastMapper.updateById(wrkMast);
                    boolean result4 = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol147));
                    boolean result4 = MessageQueue.offer(SlaveType.Devp, 1, new Task(4, staProtocol147));
                }
            }
@@ -3342,6 +3343,14 @@
                    continue;
                }
                if (basDevp135.getReportSign()!=0){
                    continue;
                }
                BasDevp basDevp121 = basDevpService.selectById(121);
                if (basDevp121.getReportSign()!=0){
                    continue;
                }
                BasDevp basDevp120 = basDevpService.selectById(120);
                if (basDevp120.getReportSign()!=0){
                    continue;
                }
                WrkMast wrkMast131 = wrkMastMapper.selectWrkMastUnstackingOne202Two(131);
@@ -3693,9 +3702,43 @@
                            continue;
                        }
                        BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
                        if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
                        if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
                            continue;
                        }
                        if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
                            if (basDevp.getLoadingSuper().equals("Y")){
                                continue;
                            }
                        }
                        if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
                            if (!basDevp.getEmptyMk().equals("Y")){
                                continue;
                            }
                        }
                        Date date = new Date();
                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
                        StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
                        if (staProtocol == null) {
                            log.info(date+"取放任务下发:未查询到站点信息:"+wrkMastSta);
                            continue;
                        }
                        if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){
                            continue;
                        }
                        if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
                            if (staProtocol.isLoadingSuper()){
                                continue;
                            }
                        }
                        if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
                            if (!staProtocol.isEmptyMk()){
                                continue;
                            }
                        }
                        log.info(date+"取放任务下发:小车工作档:"+wrkMastSta);
                        log.info(date+"取放任务下发:目标站状态:"+basDevp);
                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta);
                        if (sign){
                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
@@ -3763,9 +3806,43 @@
                        boolean sign = false;
                        if ( wrkMastSta.getStaEnd()!=0){//放
                            BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
                            if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
                            if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
                                continue;
                            }
                            if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
                                if (basDevp.getLoadingSuper().equals("Y")){
                                    continue;
                                }
                            }
                            if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
                                if (!basDevp.getEmptyMk().equals("Y")){
                                    continue;
                                }
                            }
                            Date date = new Date();
                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
                            StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
                            if (staProtocol == null) {
                                log.info(date+"拆盘任务下发:未查询到站点信息:"+wrkMastSta);
                                continue;
                            }
                            if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){
                                continue;
                            }
                            if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
                                if (staProtocol.isLoadingSuper()){
                                    continue;
                                }
                            }
                            if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
                                if (!staProtocol.isEmptyMk()){
                                    continue;
                                }
                            }
                            log.info(date+"拆盘任务下发:小车工作档:"+wrkMastSta);
                            log.info(date+"拆盘任务下发:目标站状态:"+basDevp);
                            sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//拆盘
                        }else {
                            continue;
@@ -3837,9 +3914,43 @@
                        boolean sign = false;
                        if ( wrkMastSta.getStaEnd()!=0){//满放
                            BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
                            if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
                            if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
                                continue;
                            }
                            if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
                                if (basDevp.getLoadingSuper().equals("Y")){
                                    continue;
                                }
                            }
                            if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
                                if (!basDevp.getEmptyMk().equals("Y")){
                                    continue;
                                }
                            }
                            Date date = new Date();
                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
                            StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
                            if (staProtocol == null) {
                                log.info(date+"满放任务下发:未查询到站点信息:"+wrkMastSta);
                                continue;
                            }
                            if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){
                                continue;
                            }
                            if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
                                if (staProtocol.isLoadingSuper()){
                                    continue;
                                }
                            }
                            if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
                                if (!staProtocol.isEmptyMk()){
                                    continue;
                                }
                            }
                            log.info(date+"满放任务下发:小车工作档:"+wrkMastSta);
                            log.info(date+"满放任务下发:目标站状态:"+basDevp);
                            sign = rgvPutEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta);
                        }else {
                            continue;
@@ -3911,6 +4022,30 @@
                            if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
                                continue;
                            }
                            if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
                                if (!basDevp.getEmptyMk().equals("Y")){
                                    continue;
                                }
                            }
                            Date date = new Date();
                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
                            StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
                            if (staProtocol == null) {
                                log.info(date+"叠盘任务下发:未查询到站点信息:"+wrkMastSta);
                                continue;
                            }
                            if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
                                continue;
                            }
                            if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
                                if (!staProtocol.isEmptyMk()){
                                    continue;
                                }
                            }
                            log.info(date+"叠盘任务下发:小车工作档:"+wrkMastSta);
                            log.info(date+"叠盘任务下发:目标站状态:"+basDevp);
                            sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//叠盘
                        }else {
                            continue;
@@ -3972,6 +4107,13 @@
                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号
                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
                    WrkMast wrkMast = wrkMastMapper.selectBy122ManQu(122,110,15L);
                    if (!Cools.isEmpty(wrkMast)){
                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(wrkMast.getWrkNo().longValue());
                        if (!Cools.isEmpty(wrkMastSta) && wrkMastSta.getType()==2 && wrkMastSta.getWrkType()==5 ){
                            wrkMastStaList.add(wrkMastSta);
                        }
                    }
                    for (WrkMastSta wrkMastSta : wrkMastStaList){
                        if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=5){// 2:空板  || 工作类型  1:取(叠盘)  2:拆盘  5:满取  6:满放
                            continue;
@@ -3982,6 +4124,20 @@
                            if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
                                continue;
                            }
                            Date date = new Date();
                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
                            StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
                            if (staProtocol == null) {
                                log.info(date+"满取任务下发:未查询到站点信息:"+wrkMastSta);
                                continue;
                            }
                            if (!staProtocol.isAutoing() || staProtocol.isLoading()){
                                continue;
                            }
                            log.info(date+"满取任务下发:小车工作档:"+wrkMastSta);
                            log.info(date+"满取任务下发:目标站状态:"+basDevp);
                            sign = rgvTakeEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta);
                        }else {
                            continue;
@@ -4018,10 +4174,17 @@
    * */
    public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
        try{
            Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//查询状态为0的任务
            if (integer==0){
//            Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//查询状态为0的任务
//            if (integer==0){
//                return;
//            }
            WrkMastSta wrkMastSta = wrkMastStaMapper.selectAllWrkStsCountWrkMastSta(null, 0);
            if (Cools.isEmpty(wrkMastSta)){
                return;
            }
            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();
@@ -4045,15 +4208,53 @@
                ) {
                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                    if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
                        continue;
//                    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 {
                            signRgv2 = false;
                        }
                    }
                    if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
                        signRgv1 = false;
                        continue;
                    } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
                        signRgv2 = false;
                        continue;
                    }
                    rgvAvoidanceXY(rgvProtocol.getRgvNo());
                    rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
                }else {
                    signRgv = false;
                    break;
                }
            }
            if (signRgv &&  (signRgv1 || signRgv2)){
                for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
                    RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
                    RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
                    if (rgvProtocol == null) {
                        continue;
                    }
                    // 只有当RGV空闲、自动,工位一无物//rgv可用
                    if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
                            && rgvProtocol.getModeType() == RgvModeType.AUTO
                            && rgvProtocol.getLoaded1()==0  //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接
                            && rgvProtocol.getTaskNo1()==0
                            && rgvProtocol.getTaskNo2()==0
                            && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
                            && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
                    ) {
                        if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
                            continue;
                        } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
                            continue;
                        }
                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                        rgvAvoidanceXY(rgvProtocol.getRgvNo());
                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
                    }
                }
            }
        }catch (Exception e){
@@ -4355,6 +4556,7 @@
        //更新当前小车锁
        try{
            Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//获取最远站点
//            Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(staEnd, staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//获取最远站点
            Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //获取合并干涉项
            basRgvMapCurrent.setLockEndRoute(fallMerge);
            basRgvMapMapper.updateById(basRgvMapCurrent);