OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2022-02-22 6a916b069c73ad7def95ad72ae848125544bc309
src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java
@@ -60,6 +60,9 @@
    private WorkflowStatusService workflowStatusService;
    @Autowired
    private WorkflowDepartmentService workflowDepartmentService;
    @Autowired
    private WorkspaceService workspaceService;
    @Autowired
@@ -819,8 +822,11 @@
        }
        projectRole.getProjectRoleDepartments().clear();
        this.checkDepartmentOfWorkflow(project, projectForm.getDepartmentIds());
        for (Long departmentId : projectForm.getDepartmentIds()) {
            Department department = this.departmentService.getDepartment(departmentId);
            department.addProjectRole(projectRole);
        }
@@ -836,6 +842,33 @@
    }
    /**
     * 프로젝트와 연결된 이슈유형의 워크플로우에서 설정한 부서는 프로젝트 담당부서에서 제외 불가
     * @param project Project
     * @param departmentIds List<Long>
     */
    private void checkDepartmentOfWorkflow(Project project, List<Long> departmentIds) {
        List<IssueType> issueTypes = this.issueTypeService.findByProjectId(project.getId());
        List<Long> workflowDepartmentIds = Lists.newArrayList();
        if (issueTypes != null && issueTypes.size() > 0) {
            for (IssueType issueType : issueTypes) {
                List<WorkflowDepartment> workflowDepartments = this.workflowDepartmentService.find(issueType.getWorkflow().getId());
                if (workflowDepartments != null && workflowDepartments.size() > 0) {
                    for (WorkflowDepartment workflowDepartment : workflowDepartments) {
                        workflowDepartmentIds.add(workflowDepartment.getDepartment().getId());
                        if (!departmentIds.containsAll(workflowDepartmentIds)) {
                            throw new OwlRuntimeException(
                                    this.messageAccessor.getMessage(MsgConstants.PROJECT_DEPARTMENT_NOT_EQUAL_WORKFLOW));
                        }
                    }
                }
            }
        }
    }
    //  프로젝트 참여, 제외 통지 정보를 중복으로 나가지 않도록 체크한다.
    private void notificationProjectRoleUser(Map<String, Object> changeProjectManagerNotifications, Map<String, Object> changeProjectUserNotifications, Project project) {
        List<String> projectManagerExcludeUsers = (List<String>) changeProjectManagerNotifications.get("excludeUsers");  //  관리자 제외 사용자