自动化立体仓库 - WCS系统
lty
2025-03-25 c12d108ee5d786d460718fd258a87bda64a6aa39
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -113,75 +113,51 @@
    private CrnController crnController;
    @Autowired
    private SiteController siteController;
    //出库站点至112循环站点
    @Synchronized
    public void shiftTargetToCyclePoint() throws IOException, InterruptedException{
        try{
            for (DevpSlave devp : slaveProperties.getDevp()) {
                for (DevpSlave.Sta outSta : devp.getOutSta()) {
                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                    StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo());
                    StaProtocol staProtocol1 = devpThread.getStation().get(1001);
                    StaProtocol staProtocol2 = devpThread.getStation().get(1002);
                    StaProtocol staProtocol3 = devpThread.getStation().get(1003);
                    StaProtocol staProtocol4 = devpThread.getStation().get(1004);
                    StaProtocol staProtocol6 = devpThread.getStation().get(111);
                    if (devpThread == null) {
                        continue;
                    }
                    StaProtocol staProtocol = getClonedStation(devpThread, outSta.getStaNo());
                    if (staProtocol == null) {
                        continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    if (staProtocol1 == null) {
                        continue;
                    } else {
                        staProtocol1 = staProtocol1.clone();
                    }
                    if (staProtocol2 == null) {
                        continue;
                    } else {
                        staProtocol2 = staProtocol2.clone();
                    }
                    if (staProtocol3 == null) {
                        continue;
                    } else {
                        staProtocol3 = staProtocol3.clone();
                    }
                    if (staProtocol4 == null) {
                        continue;
                    } else {
                        staProtocol4 = staProtocol4.clone();
                    }
                    if (staProtocol6 == null) {
                        continue;
                    } else {
                        staProtocol6 = staProtocol6.clone();
                    }
                    // 获取其他相关站点
                    StaProtocol staProtocol1 = getClonedStation(devpThread, 1001);
                    StaProtocol staProtocol2 = getClonedStation(devpThread, 1002);
                    StaProtocol staProtocol3 = getClonedStation(devpThread, 1003);
                    StaProtocol staProtocol4 = getClonedStation(devpThread, 1004);
                    StaProtocol staProtocol6 = getClonedStation(devpThread, 111);
                    boolean result = false;
                    switch(outSta.getStaNo()){
                        case 105: if (staProtocol1.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 105){
                            result = true;
                        case 105:
                            result = (staProtocol1 != null && staProtocol1.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 105);
                            break;
                        case 107:
                            result = (staProtocol2 != null && staProtocol2.isLoading());
                            break;
                        case 109:
                            result = (staProtocol3 != null && staProtocol3.isLoading());
                            break;
                        case 110:
                            result = ((staProtocol4 != null && staProtocol4.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 110) ||
                                    (staProtocol6 != null && staProtocol6.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 111));
                            break;
                        default:
                            break;
                        }
                        case 107: if (staProtocol2.isLoading()){
                            result = true;
                        }
                        case 109: if (staProtocol3.isLoading()){
                            result = true;
                        }
                        case 110: if ((staProtocol4.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 110) || ((staProtocol6.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 111))){
                            result = true;
                        }
                        default: break;
                    }
                    if(result){
                        if(staProtocol.getSiteId() == 107 || staProtocol.getSiteId() == 109){
                            StaProtocol staProtocol5 = devpThread.getStation().get(staProtocol.getSiteId() - 1);
                            if (staProtocol5== null) {
                                continue;
                            } else {
                                staProtocol5 = staProtocol5.clone();
                            }
                            if((staProtocol5.isLoading() && staProtocol5.getStaNo() == 107) || ((staProtocol5.isLoading() && staProtocol5.getStaNo() == 109))){
                            StaProtocol staProtocol5 = getClonedStation(devpThread, staProtocol.getSiteId() - 1);
                            if (staProtocol5 != null && (staProtocol5.isLoading() && (staProtocol5.getStaNo() == 107 || staProtocol5.getStaNo() == 109))) {
                                staProtocol5.setStaNo((short) 112);
                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol5));
                            }
@@ -193,11 +169,18 @@
                }
            }
        }catch (Exception e) {
            log.error("generateStoreWrkFile e", e);
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            log.error("shiftTargetToCyclePoint error", e);
        }
    }
    /**
     * 获取站点并克隆
     */
    private StaProtocol getClonedStation(DevpThread devpThread, int staNo) {
        StaProtocol staProtocol = devpThread.getStation().get(staNo);
        return (staProtocol != null) ? staProtocol.clone() : null;
    }
    //112循环站点至出库站
    public synchronized void shiftCyclePointToTarget() throws IOException, InterruptedException{
        try{