cpT
8 天以前 29fb65288340d6c86abb5db7176eb86d8443a610
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -979,8 +979,11 @@
                    }
                    // 判断堆垛机出库站状态
                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
                            && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
                    if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
//                    // 判断堆垛机出库站状态
//                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
//                            && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
                        // 命令下发区 --------------------------------------------------------------------------
                        // 堆垛机控制过滤
@@ -1082,6 +1085,8 @@
                            if (staProtocol.isOutEnable()){
                                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "没有可出");
                            }
                        } else {
                            CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "出库站点:非自动");
                        }
                    }
                }
@@ -1568,9 +1573,15 @@
        }
        if (rgvProtocolOther.statusEnable) {
            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staNo));
            if (Math.abs(basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos())
            long abs = Math.abs(Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
                    -
                    Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos()));
            if (abs<100){
                return true;
            }
            if (Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
                    >=
                    Math.abs(basDevpPosition.getPlcPosition()-rgvProtocolOther.getRgvPos())){
                    Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos())){
                return false;
            }
        }
@@ -1594,6 +1605,12 @@
        }
        if (rgvProtocolOther.statusEnable) {
            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staNo));
            long abs = Math.abs(Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
                    -
                    Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos()));
            if (abs<100){
                return true;
            }
            if (Math.abs(basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos())
                    >=
                    Math.abs(basDevpPosition.getPlcPosition()-rgvProtocolOther.getRgvPos())){
@@ -1617,7 +1634,85 @@
                && staProtocol.getWorkNo() != 0) {
            TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo());
            if (taskWrk != null) {
                Integer stano = staProtocol.getStaNo();
                if (staProtocol.getSiteId() == 1004 || staProtocol.getSiteId()==1020){
                    // 尺寸检测异常
                    boolean back = false;
                    String errMsg = "-";
                    if (staProtocol.getGrossWt()>=600){
                        errMsg = "超重";
                        back = true;
                    }
                    if (staProtocol.isFrontErr()) {
                        errMsg = "前超限";
                        back = true;
                    }
                    if (!back && staProtocol.isBackErr()) {
                        errMsg = "后超限";
                        back = true;
                    }
                    if (!back && staProtocol.isHighErr()) {
                        errMsg = "高超限";
                        back = true;
                    }
                    if (!back && staProtocol.isLeftErr()) {
                        errMsg = "左超限";
                        back = true;
                    }
                    if (!back && staProtocol.isRightErr()) {
                        errMsg = "右超限";
                        back = true;
                    }
                    if (!back && staProtocol.isWeightErr()) {
                        errMsg = "超重";
                        back = true;
                    }
                    if (!back && staProtocol.isBarcodeErr()) {
                        errMsg = "扫码失败";
                        back = true;
                    }
                    // 退回
                    if (back) {
                        if (stano.equals(staProtocol.getStaNo() + 1)) {
                            return null;
                        }
                        if (!staProtocol.isPakMk()) {
                            return null;
                        }
                        System.out.println("扫码入库失败,{"+inSta.getStaNo()+"}入库站因{"+errMsg+"}异常,托盘已被退回");
//                        News.warn("扫码入库失败,{}入库站因{}异常,托盘已被退回", inSta.getStaNo(), errMsg);
                        staProtocol.setWorkNo(9999);
                        staProtocol.setStaNo(staProtocol.getStaNo()+1);
                        devpThread.setPakMk(staProtocol.getSiteId(), false);
                        devpThread.setErrorDev(staProtocol.getSiteId(), errMsg);
                        MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
                        try{
                            taskWrk.setMemo(errMsg);//将错误码存入备注字段进行展示
                            taskWrk.setModiTime(new Date());
                            taskWrkMapper.updateById(taskWrk);
                        } catch (Exception e){
                            devpThread.setErrorDev(staProtocol.getSiteId(), errMsg+"异常信息保存工作档案失败!");
                        }
                        return null;
                    }
                }
                return taskWrk;
            }
        } else if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0 && !staProtocol.isLoading()){
            if (inSta.isDirectionOther()){
                StaProtocol staProtocolOther = devpThread.getStation().get(inSta.getStaNoOther());
                if (staProtocolOther == null) {
                    return null;
                }
                // 判断是否满足取货条件
                if (staProtocolOther.isAutoing()
                        && staProtocolOther.getWorkNo() != 0) {
                    TaskWrk taskWrkOther = taskWrkService.selectByWrkNo(staProtocolOther.getWorkNo());
                    if (taskWrkOther != null) {
                        return taskWrkOther;
                    }
                }
            }
        }
        return null;
@@ -1764,8 +1859,28 @@
                            if (rgvOtherIDLEOther2(rgvSlave)){
                                if (!rgvOtherIDLE2(rgvSlave,staList.get(0))){
                                    System.out.println("运行就近跳过==="+rgvSlave.getId()+"===");
                                    sign=true;
                                }
                            }
                            if (sign){
                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
                                    if (rgvStn.getStaNo().equals(staList.get(0))) {
                                        TaskWrk taskWrk = deviceDetection(rgvStn);
                                        if (taskWrk != null) {
                                            Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
                                            for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
                                                if (rgvSuper.getStaNo().equals(outStaNo)){
                                                    System.out.println("运行就近跳过后因最远再次执行==="+rgvSlave.getId()+"===");
                                                    sign=false;
                                                    break;
                                                }
                                            }
                                        } else {
                                            return;
                                        }
                                        break;
                                    }
                                }
                            }
                        }
@@ -1847,9 +1962,7 @@
                                }
                            }
                        }
                        if (!sign) {
                            //  半边区域内放货任务
                        if (!sign && staList.size()>1) {
                            for (Integer staNoNow : rangeListOther) {
                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
                                    if (rgvStn.getStaNo().equals(staNoNow)) {
@@ -1877,6 +1990,36 @@
                                    break;
                                }
                            }
                        }else if (!sign && staList.size()==1){
                            for (Integer staNoNow : rangeList) {
                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
                                    if (rgvStn.getStaNo().equals(staNoNow)) {
                                        TaskWrk taskWrk = deviceDetection(rgvStn);
                                        if (taskWrk != null) {
                                            Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
                                            for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
                                                if (rgvSuper.getStaNo().equals(outStaNo)){
                                                    System.out.println("因最远执行半边区域内放货任务==="+rgvSlave.getId()+"===");
                                                    BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
                                                    if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
                                                        sign = taskGenerate(rgvSlave, rgvStn, 0);
                                                    }
                                                    break;
                                                }
                                            }
                                        }
                                        break;
                                    }
                                    if (sign) {
                                        break;
                                    }
                                }
                                if (sign) {
                                    break;
                                }
                            }
                        }
                    } else {
                        //可用区域就近取货