skyouc
8 天以前 aebc7203d975c6520f507abfd91d90948092baac
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -7,6 +7,7 @@
import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
import com.vincent.rsf.server.api.service.WcsService;
import com.vincent.rsf.server.common.constant.Constants;
import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
@@ -414,18 +415,19 @@
     * 任务置顶
     *
     * @param id
     * @param loginUserId
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Task taskToTop(Long id) throws Exception {
    public Task taskToTop(Long id, Long loginUserId) throws Exception {
        List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
        Task tasks = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getId, id).in(Task::getTaskStatus, longs));
        if (Objects.isNull(tasks)) {
            throw new CoolException("任务已处执行状态不可一键置顶!!");
        }
        //判断子任务,修改任务优先级
        modiftyTaskSort(tasks);
        //判断浅库位任务,修改任务优先级
        modiftyTaskSort(tasks, loginUserId);
        if (!taskService.updateById(tasks)) {
            throw new CoolException("置顶失败!!");
@@ -435,12 +437,14 @@
    /**
     * 手动完成任务
     *
     * @param id
     * @param loginUserId
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Task operateComplete(Long id) {
    public Task operateComplete(Long id, Long loginUserId) {
        List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
        Task task = taskService.getOne(new LambdaQueryWrapper<Task>()
                .eq(Task::getId, id)
@@ -450,7 +454,9 @@
            throw new CoolException("当前任务正在执行中,不可取消!!");
        }
        modiftyTaskSort(task);
        modiftyTaskSort(task, loginUserId);
        //
        task.setTaskStatus(task.getTaskType() < 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.COMPLETE_OUT.id);
        if (!this.updateById(task)) {
@@ -461,18 +467,21 @@
    /**
     * 修改任务优先级
     *
     * @param task
     * @param loginUserId
     */
    private Task modiftyTaskSort(Task task) {
    private Task modiftyTaskSort(Task task, Long loginUserId) {
        String curLoc;
        if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
            curLoc = task.getTargLoc();
        } else {
            curLoc = task.getOrgLoc();
        }
        //深库位先出情况
        if (!LocUtils.isShallowLoc(curLoc)) {
            String shallowLoc = LocUtils.getShallowLoc(curLoc);
            if (StringUtils.isNotBlank(shallowLoc)) {
            if (StringUtils.isBlank(shallowLoc)) {
                throw new CoolException("数据异常,请联系管理员!");
            }
            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
@@ -485,12 +494,29 @@
                        .or()
                        .eq(Task::getTargLoc, loc.getCode()));
                if (Objects.isNull(serviceOne)) {
                    task.setSort(999);
                    task.setSort(Constants.TASK_SORT_MAX_VALUE);
                } else {
                    int i = serviceOne.getSort() - 1;
                    task.setSort(i);
                }
            }
        } else {
            //浅库位,判断深对应深库位是否为空,如果为空生成一个移库任务,将托盘送入深库位
            String deepLoc = LocUtils.getDeepLoc(curLoc);
            if (StringUtils.isBlank(deepLoc)) {
                throw new CoolException("数据异常,请联系管理员!");
            }
            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, deepLoc));
            if (Objects.isNull(loc)) {
                throw new CoolException("数据错误,库位不存在!!");
            }
            //判断深库位是否为空
            if (loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
                LocToTaskParams params = new LocToTaskParams();
                params.setOrgLoc(loc.getCode()).setTarLoc(deepLoc);
                Task task1 = locItemService.genMoveTask(params, loginUserId);
            }
        }
        return task;