| | |
| | | if (Objects.isNull(station) || !station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { |
| | | throw new CoolException("站点不存在或站点不处于空库状态!!"); |
| | | } |
| | | station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); |
| | | if (!station.getType().equals(0)){ |
| | | station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); |
| | | } |
| | | |
| | | if (!basStationService.updateById(station)) { |
| | | throw new CoolException("站点状态更新失败!!"); |
| | |
| | | || TaskType.TASK_TYPE_CHECK_IN.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_EMPTY_IN.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_MERGE_IN.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_LOC_MOVE.type.equals(task.getTaskType())) { |
| | | task.setTaskStatus(TaskStsType.COMPLETE_IN.id); |
| | | } else if (TaskType.TASK_TYPE_OUT.type.equals(task.getTaskType())) { |
| | | task.setTaskStatus(TaskStsType.COMPLETE_OUT.id); |
| | | } else if (TaskType.TASK_TYPE_PICK_AGAIN_OUT.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_CHECK_OUT.type.equals(task.getTaskType())) { |
| | | task.setTaskStatus(TaskStsType.AWAIT.id); |
| | | } else if (TaskType.TASK_TYPE_MERGE_OUT.type.equals(task.getTaskType())) { |
| | | task.setTaskStatus(TaskStsType.MISSION_TRANSFER.id); |
| | | } else if (TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_LOC_MOVE.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_OUT.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_PICK_AGAIN_OUT.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_MERGE_OUT.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_CHECK_OUT.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type.equals(task.getTaskType()) |
| | | || TaskType.TASK_TYPE_EMPTY_OUT.type.equals(task.getTaskType())) { |
| | | task.setTaskStatus(TaskStsType.COMPLETE_OUT.id); |
| | | task.setTaskStatus(TaskStsType.MISSION_TRANSFER.id); |
| | | } else { |
| | | return; |
| | | } |
| | | updateById(task); |
| | | } |
| | | |
| | | /** 终态或等待定时任务更新库存的状态,不展示完成按钮 */ |
| | | /** 终态或等待定时任务更新库存的状态、9999,不展示完结按钮 */ |
| | | private static final Set<Integer> TERMINAL_OR_WAITING_STATUS = new HashSet<>(Arrays.asList( |
| | | TaskStsType.COMPLETE_IN.id, TaskStsType.REPORT_IN.id, TaskStsType.UPDATED_IN.id, |
| | | TaskStsType.COMPLETE_OUT.id, TaskStsType.WAVE_SEED.id, TaskStsType.UPDATED_OUT.id, |
| | | TaskStsType.MISSION_TRANSFER_END.id)); |
| | | TaskStsType.MISSION_TRANSFER.id, TaskStsType.MISSION_TRANSFER_END.id)); |
| | | |
| | | /** 完结不依赖流程步骤,仅未终态任务展示完成按钮 */ |
| | | /** 终态/9999 无按钮;状态在步骤中找不到或无下一步(最后一步)则无完结按钮 */ |
| | | @Override |
| | | public void fillCanComplete(List<Task> tasks) { |
| | | if (tasks == null || tasks.isEmpty()) { |
| | | return; |
| | | } |
| | | Set<Integer> terminalSet = TERMINAL_OR_WAITING_STATUS; |
| | | List<String> codes = tasks.stream().map(Task::getTaskCode).filter(Objects::nonNull).distinct().collect(Collectors.toList()); |
| | | if (codes.isEmpty()) { |
| | | tasks.forEach(t -> t.setCanComplete(Boolean.FALSE)); |
| | | return; |
| | | } |
| | | List<FlowStepInstance> steps = codes.size() == 1 |
| | | ? flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>().eq(FlowStepInstance::getTaskNo, codes.get(0)).orderByAsc(FlowStepInstance::getStepOrder)) |
| | | : flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>().in(FlowStepInstance::getTaskNo, codes).orderByAsc(FlowStepInstance::getStepOrder)); |
| | | Map<String, List<FlowStepInstance>> stepsByTaskNo = steps.stream().collect(Collectors.groupingBy(FlowStepInstance::getTaskNo)); |
| | | for (Task task : tasks) { |
| | | boolean terminal = task.getTaskStatus() != null && TERMINAL_OR_WAITING_STATUS.contains(task.getTaskStatus()); |
| | | task.setCanComplete(!terminal); |
| | | if (task.getTaskStatus() != null && terminalSet.contains(task.getTaskStatus())) { |
| | | task.setCanComplete(Boolean.FALSE); |
| | | continue; |
| | | } |
| | | List<FlowStepInstance> taskSteps = stepsByTaskNo.get(task.getTaskCode()); |
| | | if (taskSteps == null || taskSteps.isEmpty()) { |
| | | task.setCanComplete(Boolean.FALSE); |
| | | continue; |
| | | } |
| | | FlowStepInstance match = taskSteps.stream() |
| | | .filter(s -> s.getWmsNowTaskStatus() != null && s.getWmsNowTaskStatus().equals(task.getTaskStatus())) |
| | | .findFirst().orElse(null); |
| | | if (match == null) { |
| | | task.setCanComplete(Boolean.FALSE); |
| | | continue; |
| | | } |
| | | boolean isLastStep = match.getWmsNextTaskStatus() == null || match.getWmsNextTaskStatus().equals(TaskStsType.MISSION_TRANSFER.id); |
| | | task.setCanComplete(!isLastStep); |
| | | } |
| | | } |
| | | |
| | |
| | | if (null == basStation) { |
| | | throw new CoolException("站点状态错误!!"); |
| | | } |
| | | basStation.setUseStatus(LocStsType.LOC_STS_TYPE_F.type); |
| | | if (!basStation.getType().equals(0)){ |
| | | basStation.setUseStatus(LocStsType.LOC_STS_TYPE_F.type); |
| | | } |
| | | if (!basStationService.updateById(basStation)) { |
| | | throw new CoolException("更新站点状态失败!!"); |
| | | } |
| | |
| | | /**判断是否光电站点,非光店站点需管控站点状态*/ |
| | | if (!Objects.isNull(station) && station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | if (task.getTaskType() <= TaskType.TASK_TYPE_CHECK_IN.type && !task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); |
| | | if (!station.getType().equals(0)){ |
| | | station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); |
| | | } |
| | | if (!basStationService.updateById(station)) { |
| | | throw new CoolException("站点状态更新失败!!"); |
| | | } |
| | | } else if (task.getTaskType() >= TaskType.TASK_TYPE_OUT.type) { |
| | | station.setUseStatus(LocStsType.LOC_STS_TYPE_S.type); |
| | | if (!station.getType().equals(0)){ |
| | | station.setUseStatus(LocStsType.LOC_STS_TYPE_S.type); |
| | | } |
| | | if (!basStationService.updateById(station)) { |
| | | throw new CoolException("站点状态更新失败!!"); |
| | | } |