| | |
| | | @Autowired |
| | | private DepartmentService departmentService; |
| | | |
| | | @Autowired |
| | | private IssueTypeService issueTypeService; |
| | | |
| | | @Autowired |
| | | private ProjectRoleService projectRoleService; |
| | | |
| | | @Override |
| | | protected JpaRepository<WorkflowDepartment, Long> getRepository() { |
| | | return workflowDepartmentRepository; |
| | |
| | | condition.setIssueStatusId(issueStatusId); |
| | | |
| | | return find(condition); |
| | | } |
| | | |
| | | public List<WorkflowDepartment> find(Long workflowId) { |
| | | return this.workflowDepartmentRepository.findByWorkflowId(workflowId); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | // 워크플로우의 해당 이슈상태를 가진 워크플로우 부서 가져오기(Ready) |
| | | public List<Long> findFirstDepartmentIds(Workflow workflow) { |
| | | List<Long> departmentIds = Lists.newArrayList(); |
| | | IssueStatus issueStatus = issueStatusService.findByIssueStatusTypeIsReady(workflow); |
| | | |
| | | // 워크플로우 상태에 따른 담당부서 가져오기 |
| | | if (issueStatus != null) { |
| | | WorkflowDepartmentCondition workflowDepartmentCondition = new WorkflowDepartmentCondition(); |
| | | workflowDepartmentCondition.setIssueStatusId(issueStatus.getId()); |
| | | workflowDepartmentCondition.setWorkflowId(workflow.getId()); |
| | | List<WorkflowDepartmentVo> workflowDepartmentVos = this.find(workflowDepartmentCondition); |
| | | |
| | | for (WorkflowDepartmentVo workflowDepartmentVo : workflowDepartmentVos) { |
| | | departmentIds.add(workflowDepartmentVo.getDepartmentVo().getId()); |
| | | } |
| | | } |
| | | return departmentIds; |
| | | } |
| | | |
| | | // 담당 부서정보를 조회한다. |
| | |
| | | workflowDepartment.setDepartment(department); |
| | | |
| | | workflowDepartmentList.add(workflowDepartment); |
| | | |
| | | // 변경한 워크플로우의 담당부서를 이슈유형과 연결된 프로젝트의 담당부서에도 세팅 |
| | | this.setDepartmentOfProject(workflow, department); |
| | | } |
| | | } |
| | | this.workflowDepartmentRepository.saveAll(workflowDepartmentList); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 워크플로우의 담당부서를 이슈유형과 연결된 프로젝트의 담당부서에도 세팅 |
| | | * @param workflow Workflow |
| | | * @param department Department |
| | | */ |
| | | private void setDepartmentOfProject(Workflow workflow, Department department) { |
| | | List<IssueType> issueTypeList = this.issueTypeService.findByWorkflowId(workflow.getId()); |
| | | if (issueTypeList != null && issueTypeList.size() > 0) { |
| | | for (IssueType issueType : issueTypeList) { |
| | | if (issueType.getProject() != null) { |
| | | ProjectRole projectRole = this.projectRoleService.findByProjectIdAndRoleType(issueType.getProject().getId(), ProjectRole.TYPE_DEFAULT); |
| | | // 프로젝트 담당부서로 추가 |
| | | projectRole.addDepartment(department); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | this.workflowDepartmentMapper.deleteAll(condition); |
| | | } |
| | | |
| | | /** |
| | | * 특정 부서를 워크플로우에서 사용중인지 체크 |
| | | * @param id Long |
| | | * @return useYn |
| | | */ |
| | | @Override |
| | | public boolean usingDepartment(Long id) { |
| | | boolean useYn = false; |
| | | List<WorkflowDepartment> workflowDepartments = this.workflowDepartmentRepository.findByDepartmentId(id); |
| | | if (workflowDepartments != null && workflowDepartments.size() > 0) { |
| | | useYn = true; |
| | | } |
| | | return useYn; |
| | | } |
| | | } |