Junjie
2023-12-01 ae91523e49af02438f58a9fd5f590a483a297417
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -417,10 +417,29 @@
                if (staProtocol.isAutoing()
                        && staProtocol.isLoading()
                        && staProtocol.isInEnable()
                        && (staProtocol.getWorkNo() > 0)
//                        && (staProtocol.getWorkNo() > 0)
                        && staProtocol.isPakMk()){
                    WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue());
                    WrkMast wrkMast = null;
                    if (staProtocol.getWorkNo() > 0) {//存在工作号,利用工作号搜索任务
                        wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue());
                    }else {
                        //不存在工作号,依靠托盘条码搜索
                        // 获取条码扫描仪信息
                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
                        if (barcodeThread == null) {
                            continue;
                        }
                        String barcode = barcodeThread.getBarcode();
                        if(Cools.isEmpty(barcode)) {
                            continue;
                        }
                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
                            continue;
                        }
                        wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode);
                    }
                    if (wrkMast == null) {//找不到工作档
                        continue;
                    }
@@ -442,18 +461,20 @@
                        if (!locMast.getLocSts().equals("F")) {
                            flag = true;
                            th = loc + "库位存在非空浅库位";
                            th = loc + "库位存在未回库任务";
                            break;
                        }
                    }
                    if (flag) {
                        throw new CoolException(th);
                        News.info(th);
                        continue;
                    }
                    //*********************同库位组校验*********************
                    // 保存工作主档历史档
                    if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
                        throw new CoolException(wrkMast.getWrkNo() + "保存工作主档历史档失败");
                        News.info(wrkMast.getWrkNo() + "保存工作主档历史档失败");
                        continue;
                    }
                    String sourceLocNo = wrkMast.getSourceLocNo().trim();
@@ -474,10 +495,12 @@
                    wrkMast.setLiftNo(null);// 提升机清空
                    wrkMast.setModiTime(new Date());
                    if (wrkMastMapper.updateById(wrkMast) == 0) {
                        throw new CoolException(wrkMast.getWrkNo() + "更新工作档数据状态失败");
                        News.info(wrkMast.getWrkNo() + "更新工作档数据状态失败");
                        continue;
                    }
                    if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) {
                        throw new CoolException(wrkMast.getWrkNo() + "更新工作档数据状态失败");
                        News.info(wrkMast.getWrkNo() + "更新工作档数据状态失败");
                        continue;
                    }
                    // 修改库位状态 Q.拣料/盘点/并板再入库
@@ -485,7 +508,8 @@
                    locMast.setLocSts("Q");
                    locMast.setModiTime(new Date());
                    if (!locMastService.updateById(locMast)) {
                        throw new CoolException("修改库位状态失败");
                        News.info("修改库位状态失败");
                        continue;
                    }
                    staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());//写入工作号
@@ -1282,6 +1306,28 @@
                return false;//站点不可入
            }
            Integer barcodeId = Utils.getBarcodeIdByStaNo(wrkMast.getSourceStaNo());
            if (barcodeId == null) {
                News.info("{}任务,{}源站,找不到可用条码器ID", wrkMast.getWrkNo(), sourceBasDevp.getDevNo());
                return false;//站点不可入
            }
            BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
            if (barcodeThread == null) {
                News.info("{}任务,{}源站,条码器{}线程为空", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId);
                return false;//站点不可入
            }
            String barcode = barcodeThread.getBarcode();
            if(!Cools.isEmpty(barcode)) {
                if(!("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode))) {
                    //存在条码值,判断是否和当前工作档一致
                    if (!barcode.equals(wrkMast.getBarcode())) {
                        News.info("{}任务,条码器{}值{}与工作档条码值不一致,系统跳过执行", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId, barcode);
                        return false;//站点不可入
                    }
                }
            }
            //判断提升机整个三楼是否都处于入库模式
            Integer outInModel1 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 1);
            Integer outInModel2 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 5);