OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2022-03-02 20d2fc7868921587e7a0aafd0dc00690507bb6e9
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
@@ -121,8 +124,10 @@
        project.setProjectKey("BTS");
        project.setStatus(Project.PROJECT_OPEN);
        project.setDescription(this.messageAccessor.message("common.intoTheSystemIssueManagementProject")); // 시스템에서 기본으로 제공되는 이슈 관리 프로젝트입니다.
        project.setStartDate(DateUtil.convertDateToYYYYMMDD(new Date()));
        project.setEndDate(DateUtil.convertDateToYYYYMMDD(DateUtil.addDays(new Date(), 3650)));
        //project.setStartDate(DateUtil.convertDateToYYYYMMDD(new Date()));
        //project.setEndDate(DateUtil.convertDateToYYYYMMDD(DateUtil.addDays(new Date(), 3650)));
        project.setStartDate("");//null표시 방지
        project.setEndDate("");
        //  기본으로 생성되는 프로젝트의 유형은 BTS
        project.setProjectType(ProjectType.BTS_PROJECT);
        project.setWorkspace(workspace);
@@ -397,6 +402,13 @@
                totalPage, totalCount));
        return projectVos;
    }
    //  이슈유형에 속한 프로젝트 목록을 조회한다.
    @Override
    @Transactional(readOnly = true)
    public void findIssueType(Map<String, Object> resJsonData, ProjectCondition condition) {
        resJsonData.put(Constants.RES_KEY_CONTENTS, this.projectMapper.findByIssueType(condition));
    }
    void setChildrenProject(List<ProjectVo> projectVos, User user) {
@@ -810,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);
        }
@@ -827,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");  //  관리자 제외 사용자