chen.lin
6 天以前 2f43bdfc075ca68ae0359e83d504fb04e4b74c2e
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -682,6 +682,11 @@
        String curLoc;
        if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
            curLoc = task.getTargLoc();
        } else if (task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) {
            curLoc = task.getTargLoc();
            if (StringUtils.isBlank(curLoc)) {
                return task;
            }
        } else {
            curLoc = task.getOrgLoc();
        }
@@ -1984,9 +1989,30 @@
                    rcsApi != null ? rcsApi.getPort() : "null");
            return;
        }
        // 同料箱号规则:101 任务所在料箱号下若已存在 196/198/199/200 任务,则不向 RCS 发送该 101 任务(/api/open/bus/submit)
        List<Integer> higherStatuses = Arrays.asList(TaskStsType.AWAIT.id, TaskStsType.COMPLETE_OUT.id, TaskStsType.WAVE_SEED.id, TaskStsType.UPDATED_OUT.id);
        List<Task> higherTasks = this.list(new LambdaQueryWrapper<Task>()
                .in(Task::getTaskStatus, higherStatuses)
                .isNotNull(Task::getBarcode)
                .ne(Task::getBarcode, ""));
        Set<String> barcodesWithHigher = higherTasks.stream().map(Task::getBarcode).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
        List<Task> toSend = tasks.stream()
                .filter(t -> {
                    if (TaskStsType.GENERATE_OUT.id.equals(t.getTaskStatus()) && StringUtils.isNotBlank(t.getBarcode()) && barcodesWithHigher.contains(t.getBarcode())) {
                        log.debug("同料箱号{}下已存在196/198/199/200任务,跳过101任务下发:taskId={}", t.getBarcode(), t.getId());
                        return false;
                    }
                    return true;
                })
                .collect(Collectors.toList());
        if (toSend.isEmpty()) {
            log.debug("过滤后无待下发任务");
            return;
        }
        tasks = toSend;
        String pubTakUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.pubTask;
        for (Task task : tasks) {
            WcsTaskParams taskParams = new WcsTaskParams();
            List<TaskItemParam> items = new ArrayList<>();
@@ -2400,6 +2426,20 @@
        }
        List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
        // 空板入库无任务明细,仅更新库位为空板(D)、任务状态为库存更新完成
        if (TaskType.TASK_TYPE_EMPITY_IN.type.equals(task.getTaskType())) {
            if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())
                    .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type)
                    .set(Loc::getUpdateBy, loginUserId)
                    .set(Loc::getUpdateTime, new Date()))) {
                throw new CoolException("空板入库库位状态修改失败!!");
            }
            if (!this.update(new LambdaUpdateWrapper<Task>().eq(Task::getId, task.getId()).set(Task::getTaskStatus, TaskStsType.UPDATED_IN.id))) {
                throw new CoolException("空板入库任务状态修改失败!!");
            }
            reportInOutResultToCloud(task, loc, Collections.emptyList(), null, true);
            return;
        }
        if (taskItems.isEmpty()) {
            throw new CoolException("任务明细不存在!!");
        }