OWL ITS + 탐지시스템(인터넷 진흥원)
src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java
@@ -43,6 +43,12 @@
    @Autowired
    private DepartmentService departmentService;
    @Autowired
    private IssueTypeService issueTypeService;
    @Autowired
    private ProjectRoleService projectRoleService;
    @Override
    protected JpaRepository<WorkflowDepartment, Long> getRepository() {
        return workflowDepartmentRepository;
@@ -63,6 +69,40 @@
        }
        return workflowDepartment;
    }
    // 담당 부서정보를 조회한다.
    public List<WorkflowDepartmentVo> find(Long workflowId, Long issueStatusId) {
        WorkflowDepartmentCondition condition = new WorkflowDepartmentCondition();
        condition.setWorkflowId(workflowId);
        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;
    }
    // 담당 부서정보를 조회한다.
@@ -118,9 +158,31 @@
                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
@@ -131,4 +193,19 @@
        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;
    }
}