1
1 天以前 f049bb4a433b3fba1859b78e097689628f72af45
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/InBoundServiceImpl.java
@@ -94,6 +94,68 @@
            if (!matches) {
                throw new CoolException("条码与站点不匹配");
            }
        } else {
            throw new CoolException("数据异常:验证基础信息");
        }
        return basStation;
    }
    private BasStation checkStaStatus(String barcode, String sta,String area) {
        if (Cools.isEmpty(barcode)) {
            throw new CoolException("容器码不能为空");
        }
        if (Cools.isEmpty(sta)) {
            throw new CoolException("接驳位不能为空");
        }
        BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                        .eq(BasStation::getBarcode, barcode)
                , false
        );
        if (!Cools.isEmpty(isBarcodeSta)) {
            throw new CoolException("该条码已被" + isBarcodeSta.getStationName() + "站绑定");
        }
        BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                .eq(BasStation::getStationName, sta)
        );
        if (Cools.isEmpty(basStation)) {
            throw new CoolException("未找到站点信息");
        }
        if (!basStation.getUseStatus().equals("O")) {
            throw new CoolException("站点状态不为空闲");
        }
        if (!Cools.isEmpty(basStation.getContainerType())) {
            List<Long> longs1 = JSONObject.parseArray(basStation.getContainerType(), Long.class);
            List<BasContainer> containers = basContainerService.list(
                    new LambdaQueryWrapper<BasContainer>()
                            .in(BasContainer::getContainerType, longs1)
            );
            boolean matches = false;
            boolean matches2 = true;
            for (BasContainer container : containers) {
                String codeType = container.getCodeType();  // 获取正则表达式
                if (barcode.matches(codeType)) {  // 判断条码是否符合这个正则
                    List<String> areaList2 = JSONObject.parseArray(container.getAreas(), String.class);
                    if (!areaList2.contains(area)) {
                        matches2 = false;
                        continue;
                    }
                    matches = true;
                    break;  // 找到匹配的就退出循环
                }
            }
//            boolean matches = containers.stream()
//                    .map(BasContainer::getCodeType)
//                    .anyMatch(codeType -> barcode.matches(codeType));
            if (!matches2) {
                throw new CoolException("查询到的容器不支持目标库区");
            }
            if (!matches) {
                throw new CoolException("条码与站点不匹配");
            }
        } else {
            throw new CoolException("数据异常:验证基础信息");
        }
        return basStation;
@@ -122,7 +184,7 @@
//            throw new CoolException("容器未维护入库,请维护后再操作!!");
//        }
        //验证基础信息
        BasStation basStation = checkStaStatus(param.getContainerNo(), param.getTransferStationNo());
        checkStaStatus(param.getContainerNo(), param.getTransferStationNo());
        /**获取库位*/
        String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId(), null);
        if (Cools.isEmpty(targetLoc)) {