skyouc
8 天以前 67a8f1f413b198a69363f56ad7f7106bf1aff590
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,22 @@
    /**
     * 修改任务优先级
     *
     * @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,11 +495,28 @@
                        .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(curLoc).setTarLoc(deepLoc);
                //生成移深库位任务
                locItemService.genMoveTask(params, loginUserId);
            }
        }
@@ -671,7 +698,9 @@
    @Transactional(rollbackFor = Exception.class)
    public R removeTask(Long[] ids, Long loginUserId) {
        List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
        List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_IN.type, TaskType.TASK_TYPE_OUT.type, TaskType.TASK_TYPE_EMPITY_IN.type, TaskType.TASK_TYPE_EMPITY_OUT.type, TaskType.TASK_TYPE_MERGE_OUT.type);
        List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_IN.type, TaskType.TASK_TYPE_OUT.type,TaskType.TASK_TYPE_PICK_AGAIN_OUT.type,
                TaskType.TASK_TYPE_CHECK_OUT.type,  TaskType.TASK_TYPE_EMPITY_IN.type, TaskType.TASK_TYPE_LOC_MOVE.type,
                TaskType.TASK_TYPE_EMPITY_OUT.type, TaskType.TASK_TYPE_MERGE_OUT.type);
        List<Task> tasks = this.list(new LambdaQueryWrapper<Task>()
                .in(Task::getTaskType, list)
                .in(Task::getId, ids).in(Task::getTaskStatus, longs));