cl
5 天以前 4532ca7e676b510c35855bfadf10106ba7bd12e8
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -143,7 +143,7 @@
        // 验证设备站点
        DeviceSite deviceSite = validateDeviceSite(param);
        // 空板入库:与非空板同一入口,仅不校验组托,只做分配库位、建任务、更新库位
        // 空板入库:与非空板同一入口;createInTaskForEmptyPallet 内会拦截已组托托盘
        if (param.getIoType() != null && param.getIoType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) {
            return createInTaskForEmptyPallet(param);
        }
@@ -652,7 +652,8 @@
    }
    /**
     * 空板入库:与非空板同一流程(校验站点、分配库位、建任务、更新库位),仅不校验组托、不写任务明细、不更新组托状态。
     * 空板入库:与非空板同一流程(校验站点、分配库位、建任务、更新库位),不写任务明细、不更新组托状态。
     * 已组托(入库中/任务执行中)的托盘禁止走本流程,应使用满板入库。
     * 由 createInTask 在 ioType=空板时调用;需在设备站点中配置 type=10(空板入库)的站点路径。
     */
    private InTaskMsgDto createInTaskForEmptyPallet(TaskInParam sourceParam) {
@@ -669,6 +670,14 @@
        // 校验设备站点(需配置 type=10 空板入库的站点)
        DeviceSite deviceSite = validateDeviceSite(param);
        // 已组托:与 createInTask 满板分支一致,仅允许入库中/任务执行中的组托单参与校验
        WaitPakin palletized = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                .eq(WaitPakin::getBarcode, barcode)
                .in(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val));
        if (palletized != null) {
            throw new CoolException("barcode=" + barcode + ": 托盘已经组托,不能空板入库");
        }
        // 检查该托盘号是否已有空板入库任务,有则复用
        Task existingInTask = taskService.getOne(new LambdaQueryWrapper<Task>()
                .eq(Task::getBarcode, barcode)