in bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/JobServiceImpl.java [110:143]
public JobVO jobDetails(Long clusterId, Long jobId) {
JobPO jobPO = jobDao.findById(jobId);
List<StageVO> stages = new ArrayList<>();
List<StagePO> stagePOList = stageDao.findByJobId(jobId);
List<StagePO> runningStagePOList = new ArrayList<>();
for (int i = 0; i < stagePOList.size(); i++) {
StagePO stagePO = findCorrectStagePO(stagePOList, i + 1);
if (stagePO == null) {
throw new ApiException(ApiExceptionEnum.JOB_NOT_FOUND);
}
if (List.of(JobState.PROCESSING, JobState.SUCCESSFUL).contains(JobState.fromString(stagePO.getState()))) {
runningStagePOList.add(stagePO);
}
StageVO stageVO = StageConverter.INSTANCE.fromPO2VO(stagePO);
List<TaskPO> taskPOList = taskDao.findByStageId(stagePO.getId());
List<TaskVO> taskVOList = TaskConverter.INSTANCE.fromPO2VO(taskPOList);
stageVO.setTasks(taskVOList);
stages.add(stageVO);
}
JobVO jobVO = JobConverter.INSTANCE.fromPO2VO(jobPO);
if (stagePOList.isEmpty()) {
jobVO.setProgress(1);
} else {
jobVO.setProgress(new BigDecimal(runningStagePOList.size())
.divide(new BigDecimal(stagePOList.size()), 2, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100))
.intValue());
}
jobVO.setStages(stages);
return jobVO;
}