#
lty
2025-08-16 d9b90148df8ce5b6ae7cba019359430df8c61742
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2803,18 +2803,7 @@
                        }
                    }
                    if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){
//                        if (rgvProtocol.getTaskNo1()==32222){
//                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
//                            if (!rgvComplete){
//                                log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo());
//                            }
//                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
//                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
//                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
//                            rgvThread.setPakMk(true);
//                            break;
//                        }
                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
                            log.error("未查到小车执行任务或者执行任务状态不符合!"+wrkMastSta);
                            continue;
@@ -2844,20 +2833,6 @@
                                continue;
                            }
                        }
//                        else {
//                            log.error("rgv任务完成给输送线下发命令,但未查询到工作档");
//                            // 下发站点信息
//                            Map<Integer,Integer> map = new HashMap<>();
//                            map.put(101,102);map.put(112,111);
//                            map.put(100,100);
//                            staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue());
//                            staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue());
//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
////                            log.error("rgv任务完成给输送线下发命令:"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
//                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
//                                continue;
//                            }
//                        }
                        int sourceSta = wrkMast.getSourceStaNo();
                        boolean rgvComplete = false;
@@ -2872,7 +2847,7 @@
                            log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo());
                            break;
                        }
                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
                        wrkMast1.setPdcType("Y");
                        wrkMastService.updateById(wrkMast1);
@@ -2894,6 +2869,57 @@
        }catch (Exception e){
            log.error("小车复位线程报错!"+e);
        }
    }
    /**
     * rgv出入库任务下发
     */
    public synchronized void rgvIoExecute(Integer mark) {
        List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
        for (BasRgvMap rgvSlave:basRgvMaps) {
            // 获取堆垛机信息
            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvProtocol == null) {
                continue;
            }
            BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
            if (basRgv == null) {
                log.error("{}号RGV尚未在数据库进行维护!4", rgvSlave.getRgvNo());
                continue;
            }
            // 只有当堆垛机空闲 并且 无任务时才继续执行
            if (rgvProtocol.getStatusType() == CrnStatusType.IDLE && rgvProtocol.getTaskNo() == 0 && rgvProtocol.getModeType() == CrnModeType.AUTO
                    && rgvProtocol.getLoaded() == 0 && rgvProtocol.getForkPos() == 0) {
                News.warnNoLog(""+mark+" - 0"+" - 开始执行堆垛机入出库作业下发");
                // 如果最近一次是入库模式
                if (rgvProtocol.getLastIo().equals("I")) {
                    if (basCrnp.getInEnable().equals("Y")) {
                        //mark - 1 - ....
                        this.crnStnToLoc(crn, crnProtocol,mark); //  入库
                        crnProtocol.setLastIo("O");
                    } else if (basCrnp.getOutEnable().equals("Y")) {
                        //mark - 2 - ....
                        this.locToCrnStn(crn, crnProtocol,mark); //  出库
                        crnProtocol.setLastIo("I");
                    }
                }
                // 如果最近一次是出库模式
                else if (crnProtocol.getLastIo().equals("O")) {
                    if (basCrnp.getOutEnable().equals("Y")) {
                        this.locToCrnStn(crn, crnProtocol,mark); //  出库
                        crnProtocol.setLastIo("I");
                    } else if (basCrnp.getInEnable().equals("Y")) {
                        this.crnStnToLoc(crn, crnProtocol,mark); //  入库
                        crnProtocol.setLastIo("O");
                    }
                }
            }
        }
//        News.infoNoLog(""+mark+" - 0"+" - 堆垛机入出库作业下发执行完成");
    }
    /**
     * 执行小车搬运任务
@@ -2985,7 +3011,7 @@
                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
                    for (WrkMastSta wrkMastSta : wrkMastStaList){
                        List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//入库口
                        if (staNos.contains(wrkMastSta.getStaStart())) {
                        if (staNos.contains(wrkMastSta.getStaStart())) {//非入库口(出库口)限制
                            continue;
                        }
                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发
@@ -3062,6 +3088,7 @@
                    // 根据输送线plc遍历
                    for (DevpSlave devp : slaveProperties.getDevp()) {
                        // 遍历入库口  入库预调度
                        for()
                        List<Integer> staNos = Arrays.asList(1042, 1043, 1105, 1104);
                        for (Integer staNo : staNos) {
                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());