#
lsh
2024-01-24 29742997e749cd38a83f7d70b125124832c16a27
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -579,6 +579,164 @@
    }
    /**
     * 2楼212呼叫空板
     */
    public synchronized void stnToCrnStnPick3Auto(Integer sign) {
        try{
            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
            StaProtocol staProtocol = devpThread.getStation().get(212);
            if (staProtocol == null) {
                return;
            } else {
                staProtocol = staProtocol.clone();
            }
            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo()==0 ){
                switch (sign){
                    //执行小车货物搬运任务
                    case 1:
                    case 4:
                        stnToCrnStnPick3();
                        return;
                    //执行小车空板搬运任务
                    case 2://放//拆盘
                    case 5://放//拆盘
                        stnToCrnStnPick4();
                        return;
                    default:
                        return;
                }
            } else if (staProtocol.isAutoing() && staProtocol.isLoading()){
                switch (sign){
                    case 3://满放
                    case 6://满放
                        stnToCrnStnPick5();
                        return;
                    default:
                        return;
                }
            }
        }catch (Exception e){
            log.error("2楼212呼叫空板"+e);
        }
    }
    /**
     * 2楼212呼叫空板
     */
    public synchronized void stnToCrnStnPick3() {
        WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne212();
        if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=61){//61、等待空板
            return;
        }
        for (DevpSlave devp : slaveProperties.getDevp()) {
            for (DevpSlave.Sta driveSta : devp.getDriveSta()) {
                if (driveSta.getStaNo()!=215){
                    continue;
                }
                // 获取拣料入库站信息
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                StaProtocol staProtocol = devpThread.getStation().get(driveSta.getStaNo());
                if (staProtocol == null) {
                    continue;
                } else {
                    staProtocol = staProtocol.clone();
                }
                if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo()==0
                        || (staProtocol.getWorkNo()>9899 && staProtocol.getWorkNo()<10000)) ){
                    boolean result1 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol));
                    staProtocol.setWorkNo(wrkMast.getWrkNo()-1);
                    staProtocol.setStaNo(driveSta.getStaNo()==215? 217:221);
                    boolean result2 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                    if (!result2) {
                        log.error("发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId());
                    }
                    wrkMast.setWrkSts(62L);
                    wrkMastMapper.updateById(wrkMast);
                    boolean result3 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
                    return;
                }
            }
        }
    }
    /**
     * 2楼212呼叫空板
     */
    public synchronized void stnToCrnStnPick4() {
        WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne212();
        if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=62){//62、等待小车搬运
            return;
        }
        for (DevpSlave devp : slaveProperties.getDevp()) {
            for (DevpSlave.Sta driveSta : devp.getInSta()) {
                if (driveSta.getStaNo()!=217){
                    continue;
                }
                // 获取拣料入库站信息
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                StaProtocol staProtocol = devpThread.getStation().get(driveSta.getStaNo());
                if (staProtocol == null) {
                    continue;
                } else {
                    staProtocol = staProtocol.clone();
                }
                StaProtocol staProtocol212 = devpThread.getStation().get(212);
                if (staProtocol212 == null) {
                    continue;
                } else {
                    staProtocol212 = staProtocol212.clone();
                }
                if (staProtocol212.isAutoing() && !staProtocol212.isLoading() && staProtocol212.getWorkNo()==0){
                    if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo()==0
                            || (staProtocol.getWorkNo()>9899 && staProtocol.getWorkNo()<10000) || staProtocol.getWorkNo()==wrkMast.getWrkNo()-1) ){
//                        boolean result1 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol));
                        staProtocol.setWorkNo(wrkMast.getWrkNo());
                        staProtocol.setStaNo(212);
                        boolean result2 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                        if (!result2) {
                            log.error("发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId());
                        }
                        wrkMast.setWrkSts(63L);
                        wrkMastMapper.updateById(wrkMast);
//                        boolean result3 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
                        return;
                    }
                }
            }
        }
    }
    /**
     * 2楼212呼叫空板
     */
    public synchronized void stnToCrnStnPick5() {
        WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne212();
        if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=63){//63、等待完成
            return;
        }
        // 获取拣料入库站信息
        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
        StaProtocol staProtocol = devpThread.getStation().get(212);
        if (staProtocol == null) {
            return;
        } else {
            staProtocol = staProtocol.clone();
        }
        if (staProtocol.isAutoing() && staProtocol.isLoading()){
//            boolean result1 = MessageQueue.offer(SlaveType.Devp, 2, new Task(3, staProtocol));
            wrkMast.setWrkSts(64L);
            wrkMastMapper.updateById(wrkMast);
//            boolean result3 = MessageQueue.offer(SlaveType.Devp, 2, new Task(4, staProtocol));
            return;
        }
    }
    /**
     * 拣料、并板、盘点再入库  拆垛位置
     */
    public synchronized void storeEmptyPlt4() {
@@ -2133,6 +2291,10 @@
                        ledCommand.setTitle("空板出库");
                        ledCommand.setEmptyMk(true);
                        break;
                    case 212:
                        ledCommand.setTitle("空板出库");
                        ledCommand.setEmptyMk(true);
                        break;
                    default:
                        log.error("任务入出库类型错误!!![工作号:{}] [入出库类型:{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                        break;
@@ -3079,9 +3241,9 @@
                        && staProtocol.isLoading()
                        && basDevp.getReportSign()==0
                ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
                    if (true){
                        return;
                    }
//                    if (true){
//                        return;
//                    }
                    //任务完成
                    boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol135));