skyouc
6 天以前 aebc7203d975c6520f507abfd91d90948092baac
浅库位优化出库,生成移库任务
5个文件已修改
71 ■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/common/constant/Constants.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/constant/Constants.java
@@ -1,5 +1,7 @@
package com.vincent.rsf.server.common.constant;
import io.swagger.models.auth.In;
/**
 * 系统常量
 * Created by vincent on 2019-10-29 15:55
@@ -105,4 +107,19 @@
     */
    public static final String TASK_TYPE_OUT_PICK = "pick";
    /**
     * 排序默认值
     */
    public static final Integer TASK_SORT_DEFAULT_VALUE =  49;
    /**
     * 排序最大值
     */
    public static final Integer TASK_SORT_MAX_VALUE =  999;
    /**
     * 排序最小值
     */
    public static final Integer TASK_SORT_MIN_VALUE =  0;
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -139,7 +139,7 @@
        if (Cools.isEmpty(id)) {
            throw new CoolException("参数不能为空!!");
        }
        return R.ok("完成任务成功").add(taskService.operateComplete(id));
        return R.ok("完成任务成功").add(taskService.operateComplete(id, getLoginUserId()));
    }
@@ -198,7 +198,7 @@
            throw new CoolException("参数不能为空!!");
        }
        try {
            taskService.taskToTop(id);
            taskService.taskToTop(id, getLoginUserId());
        } catch (Exception e) {
            logger.error("UNK", e);
            throw new CoolException(e.getMessage());
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
@@ -25,7 +25,7 @@
    void complateInTask(List<Task> tasks) throws Exception;
    Task taskToTop(Long id) throws Exception;
    Task taskToTop(Long id, Long loginUserId) throws Exception;
    Task operateComplete(Long id);
    Task operateComplete(Long id, Long loginUserId);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -98,7 +98,7 @@
                    .setTaskCode(ruleCode)
                    .setParentId(moveTask.getId())
                    .setTargSite(siteNo)
                    .setSort(Short.valueOf("49"))
                    .setSort(Constants.TASK_SORT_DEFAULT_VALUE)
                    .setUpdateBy(loginUserId)
                    .setCreateBy(loginUserId)
                    .setCreateTime(new Date())
@@ -284,7 +284,7 @@
                .setTaskType(TaskType.TASK_TYPE_LOC_MOVE.type)
                .setTargLoc(targetLoc.getCode())
                .setUpdateBy(loginUserId)
                .setSort(Short.valueOf("49"))
                .setSort(Constants.TASK_SORT_DEFAULT_VALUE)
                .setUpdateTime(new Date())
                .setTaskStatus(TaskStsType.GENERATE_IN.id)
                .setBarcode(orgLoc.getBarcode());
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;