| | |
| | | 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; |
| | |
| | | * 任务置顶 |
| | | * |
| | | * @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("置顶失败!!"); |
| | |
| | | |
| | | /** |
| | | * 手动完成任务 |
| | | * |
| | | * @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) |
| | |
| | | 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)) { |
| | |
| | | |
| | | /** |
| | | * 修改任务优先级 |
| | | * |
| | | * @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)); |
| | |
| | | .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; |