#
yxFwq
2024-07-17 fc94238a57a2b90a9938fa2b628b7bcd2774f6d5
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1233,7 +1233,7 @@
            } else {
                staProtocol = staProtocol.clone();
            }
            if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
            if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == null || staProtocol.getWorkNo() == 0)) {
                // 判断吊车是否实际已完成,且电脑状态在move中,以备电脑进行更新工作档
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn,crnNo);
@@ -1294,6 +1294,9 @@
                        }
                    }
                }else if (conStation==2){
                    if (crnProtocol.statusType != CrnStatusType.IDLE){
                        return false;
                    }
                    // 查询工作档
                    WrkMast wrkMast = wrkMastMapper.selectPakOutStep2345(staProtocol.getSiteId(),crnProtocol.getTaskNoTwo().intValue());
                    if (wrkMast == null) {
@@ -4506,6 +4509,39 @@
            int[] sign = new int[]{0,0};
            // 只有当堆垛机自动时才继续执行
            if (crnProtocol.getModeType() == CrnModeType.AUTO) {
                //双
                if (crnProtocol.getStatusType() == CrnStatusType.SEPARATE_IDLE
                        && crnProtocol.getTaskNo() == 0
                        && crnProtocol.getLoaded() == 1
                        && crnProtocol.getForkPos() == 0) {
                    if (crnProtocol.getStatusTypeTwo() == CrnStatusType.SEPARATE_IDLE
                            && crnProtocol.getTaskNoTwo() == 0
                            && crnProtocol.getLoadedTwo() == 1
                            && crnProtocol.getForkPosTwo() == 0){
                        List<WrkMastSplitTwin> wrkMastSplitTwinList1 = wrkMastSplitTwinService.getWrkMastSplitTwin(crn.getId(),1,2,2,0);
                        List<WrkMastSplitTwin> wrkMastSplitTwinList2 = wrkMastSplitTwinService.getWrkMastSplitTwin(crn.getId(),2,2,2,0);
                        if (!wrkMastSplitTwinList1.isEmpty() && !wrkMastSplitTwinList2.isEmpty() ){
                            if (wrkMastSplitTwinList1.size()>1 || wrkMastSplitTwinList2.size()>1 ){
                                log.error("Pair堆垛机出入库下发异常,堆垛机号={},异常信息={},工位号={},工作类型={}",crn.getId(),"存在多笔可执行作业,请删除无效作业!!!",sign[1],sign[0]);
                                return false;
                            }
                            WrkMastSplitTwin wrkMastSplitTwin1 = wrkMastSplitTwinList1.get(0);
                            WrkMastSplitTwin wrkMastSplitTwin2 = wrkMastSplitTwinList2.get(0);
                            boolean ack =  crnExecutePutFullPair(crn.getId(), wrkMastSplitTwin1,wrkMastSplitTwin2, sign[1]);
                            if (ack){
                                wrkMastSplitTwin1.setWrkSts(wrkMastSplitTwin1.getWrkType()==1? 1:3);
                                wrkMastSplitTwinService.updateById(wrkMastSplitTwin1);
                                wrkMastSplitTwin2.setWrkSts(wrkMastSplitTwin2.getWrkType()==1? 1:3);
                                wrkMastSplitTwinService.updateById(wrkMastSplitTwin2);
                            }else {
                                log.error("堆垛机出入库下发报错,堆垛机号={},异常信息={}",crn.getId(),"下发任务返回值为:"+ack);
                            }
                            return false;
                        }
                    }
                }
                // 只有当堆垛机工位1取货或者有物 并且 工位2无任务时才继续执行
                switch (i){
                    case 1: