#
lty
2025-08-05 83f222c9eebcee8db94d41a081596506f60f9775
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -213,20 +213,20 @@
                        log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta());
                        continue;
                    }
                    if (staProtocol.getSiteId()!= 159){
                        if( Cools.isEmpty(barcodeMat) || "NG".endsWith(barcodeMat) || "NoRead".equals(barcodeMat) || "00000000".equals(barcodeMat)) {
                            News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcodeMat(), barcodeMat);
                            staProtocol.setWorkNo(wrkNo);
                            News.info("{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo);
                            wrkNo++;
                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta());
                            continue;
                        }
                    }
//                    if (staProtocol.getSiteId()!= 159){
//                        if( Cools.isEmpty(barcodeMat) || "NG".endsWith(barcodeMat) || "NoRead".equals(barcodeMat) || "00000000".equals(barcodeMat)) {
//                            News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcodeMat(), barcodeMat);
//
//                            staProtocol.setWorkNo(wrkNo);
//                            News.info("{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo);
//                            wrkNo++;
//                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
//                            log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta());
//                            continue;
//                        }
//                    }
                    // 判断重复工作档
                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                    if (wrkMast != null) {
@@ -2505,9 +2505,9 @@
        }
    }
//    /**
//     *  自动生成RGV接驳任务
//     */
    /**
     *  自动生成RGV接驳任务(检索4楼任务,非3号堆垛机,则生成对应接驳任务)
     */
//    public synchronized  void rgvCreateWrkMastSta(){
//        try{
//
@@ -2543,17 +2543,17 @@
                ){
                    log.info("{}号小车等待wcs确认,状态{},参数{}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
                    if (rgvProtocol.getTaskNo1()!=0){
                        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;
                        }
//                        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());
                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
                            log.error("未查到小车执行任务或者执行任务状态不符合!"+wrkMastSta);
@@ -2583,22 +2583,31 @@
                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
                                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;
                            }
                        }
                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
//                        boolean rgvComplete = true;
//                        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;
                        //双工位出入库不同工位复位
                        if((sourceSta >= 1001 && sourceSta <= 1035) || (sourceSta >= 2001 && sourceSta <= 2030)){
                            rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),6);
                        }else{
                            rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),3);
                        }
                        if (!rgvComplete){
                            log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo());
                            break;
@@ -2667,31 +2676,31 @@
                            continue;
                        }
                        //判断工作结束位置状态
                        boolean signDev = false;
                        BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", wrkMastSta.getStaEnd()));
                        if (devNo.getDevNo()==113){
                            BasDevp devNo114 = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 114));
                            if (!Cools.isEmpty(devNo114)){
                                if (devNo114.getOutEnable().equals("Y")){
                                    signDev = true;
                                }
                            }
                        }
                        if (!Cools.isEmpty(devNo)){
                            if (devNo.getAutoing().equals("Y") && !devNo.getWrkNo().equals(0) && !devNo.getLoading().equals("N")){
                                continue;
                            }
                            if (!signDev && devNo.getDevNo()==113){
                                if (!devNo.getAutoing().equals("Y") || !devNo.getWrkNo().equals(0) || !devNo.getLoading().equals("N")){
                                    wrkEnable = true;
                                    continue;
                                }
                                if (!devNo.getOutEnable().equals("Y")){
                                    wrkEnable = true;
                                    continue;
                                }
                            }
                        }
//                        boolean signDev = false;
//                        BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", wrkMastSta.getStaEnd()));
//                        if (devNo.getDevNo()==113){
//                            BasDevp devNo114 = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 114));
//                            if (!Cools.isEmpty(devNo114)){
//                                if (devNo114.getOutEnable().equals("Y")){
//                                    signDev = true;
//                                }
//                            }
//                        }
//                        if (!Cools.isEmpty(devNo)){
//                            if (devNo.getAutoing().equals("Y") && !devNo.getWrkNo().equals(0) && !devNo.getLoading().equals("N")){
//                                continue;
//                            }
//                            if (!signDev && devNo.getDevNo()==113){
//                                if (!devNo.getAutoing().equals("Y") || !devNo.getWrkNo().equals(0) || !devNo.getLoading().equals("N")){
//                                    wrkEnable = true;
//                                    continue;
//                                }
//                                if (!devNo.getOutEnable().equals("Y")){
//                                    wrkEnable = true;
//                                    continue;
//                                }
//                            }
//                        }
                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发
                        wrkEnable = true;
                        if (sign){
@@ -2969,21 +2978,41 @@
     * */
    public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
        try{
            int startSta = wrkMastSta.getStaStart();
            //  命令下发区 --------------------------------------------------------------------------
            RgvCommand rgvCommand = new RgvCommand();
            rgvCommand.setRgvNo(rgvId); // RGV编号
            rgvCommand.setAckFinish1((short) 0);  // 工位1任务完成确认位
            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 工位1工作号
            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 工位1任务模式:  取放货
            rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //工位1起点
            rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //工位1目标站点
            rgvCommand.setCommand((short) 1);   //工位1任务确认
            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
                //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务
                log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand));
                return false;
            } else {
                return true;
            if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//出库RGV取货
                rgvCommand.setAckFinish2((short) 0);  // 工位1任务完成确认位
                rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 工位2工作号
                rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 工位2任务模式:  取放货
                rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //工位2起点
                rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //工位2目标站点
                rgvCommand.setCommand((short) 2);   //工位1任务确认
            }else{  //入库RGV取货
                rgvCommand.setAckFinish1((short) 0);  // 工位1任务完成确认位
                rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 工位1工作号
                rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 工位1任务模式:  取放货
                rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //工位1起点
                rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //工位1目标站点
                rgvCommand.setCommand((short) 1);   //工位1任务确认
            }
            if(rgvCommand.getCommand() == 1){
                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
                    //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务
                    log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand));
                    return false;
                } else {
                    return true;
                }
            }else{
                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
                    //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务
                    log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand));
                    return false;
                } else {
                    return true;
                }
            }
        }catch (Exception e){
            return false;
@@ -3093,10 +3122,10 @@
    /*
     * 小车复位
     * */
    public synchronized boolean rgvComplete(Integer rgvId){
    public synchronized boolean rgvComplete(Integer rgvId,Integer step){
        try{
            //  命令下发区 --------------------------------------------------------------------------
            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) {
            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand()))) {
                //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务
                log.error("RGV命令下发失败,RGV号={}",rgvId);
                return false;