自动化立体仓库 - WCS系统
Junjie
2023-11-30 f8c14df2d6ceb57d1e8a389b62d6996d90a073fd
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -442,18 +442,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();
@@ -465,7 +467,7 @@
                    // 更新工作档数据状态
                    wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57
                    wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走
                    wrkMast.setSourceStaNo(pickSta.getStaNo()); // 源站
                    wrkMast.setSourceStaNo(pickSta.getBackSta()); // 源站
//                            wrkMast.setStaNo(dto.getStaNo()); // 目标站
//                            wrkMast.setCrnNo(dto.getCrnNo());
                    wrkMast.setStaNo(liftStaProtocol.getStaNo());//目标站
@@ -474,10 +476,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 +489,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 +1287,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);