| | |
| | | private UserWorkspaceService userWorkspaceService; |
| | | |
| | | @Autowired |
| | | private IssueTypeService issueTypeService; |
| | | |
| | | @Autowired |
| | | private UserLevelService userLevelService; |
| | | |
| | | @Autowired |
| | | private SystemEmailService systemEmailService; |
| | | |
| | | @Autowired |
| | |
| | | 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))); |
| | | // 기본으로 생성되는 프로젝트의 유형은 BTS |
| | | project.setProjectType(ProjectType.BTS_PROJECT); |
| | | project.setWorkspace(workspace); |
| | |
| | | if (condition.getWorkspaceManager()) { |
| | | // 업무공간 관리자일 경우 모든 프로젝트가 표시되어야 한다. |
| | | // 관리자일 때 |
| | | if (this.userWorkspaceService.checkWorkspaceManager(user) || user.getPermission() >= MngPermission.USER_PERMISSION_MNG_PROJECT_ALL) { |
| | | UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); |
| | | if (this.userWorkspaceService.checkWorkspaceManager(user) |
| | | || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) { |
| | | results = this.projectMapper.findByWorkspaceManager(condition); |
| | | totalCount = this.projectMapper.countByWorkspaceManager(condition); |
| | | } |
| | |
| | | int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1; |
| | | // 프로젝트 조회 결과를 ProjectVos 로 변환한다. - 관리자, 일반 사용자 정보 추가 |
| | | List<ProjectVo> projectVos = this.makeProjectVos(results, user); |
| | | this.setParentProject(projectVos); |
| | | this.setChildrenProject(projectVos, user); |
| | | |
| | | resJsonData.put(Constants.RES_KEY_CONTENTS, projectVos); |
| | |
| | | // 프로젝트 조회 결과를 ProjectVos 로 변환한다. - 관리자, 일반 사용자 정보 추가 |
| | | private List<ProjectVo> makeProjectVos(List<Map<String, Object>> results, User user) { |
| | | List<ProjectVo> projectVos = Lists.newArrayList(); |
| | | UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); |
| | | |
| | | for (Map<String, Object> result : results) { |
| | | ProjectVo projectVo = ConvertUtil.convertMapToClass(result, ProjectVo.class); |
| | | // 프로젝트에 참여하는 사용자를 셋팅한다. - 관리자 / 일반 사용자 |
| | | this.setProjectUser(projectVo, true); |
| | | this.setProjectUser(projectVo, false); |
| | | |
| | | |
| | | // 프로젝트에 참여하는 부서 세팅 |
| | | this.setProjectDepartment(projectVo); |
| | | |
| | | // 업무공간 담당자는 모든 프로젝트를 수정/삭제할 수 있어야 한다. |
| | | if (this.userWorkspaceService.checkWorkspaceManager(user)) { |
| | | if (this.userWorkspaceService.checkWorkspaceManager(user) |
| | | || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) { |
| | | projectVo.setModifyPermissionCheck(true); |
| | | } |
| | | projectVos.add(projectVo); |
| | | } |
| | | |
| | | return projectVos; |
| | | } |
| | | |
| | | // 상위 프로젝트를 찾아준다. |
| | | private void setParentProject(List<ProjectVo> projectVos) { |
| | | for (ProjectVo projectVo : projectVos) { |
| | | ProjectClosure projectClosure = this.projectClosureRepository.findByProjectId(projectVo.getId()); |
| | | if (projectClosure != null) { |
| | | Project parentProject = this.getProject(projectClosure.getParentProject().getId()); |
| | | ProjectVo parentProjectVo = ConvertUtil.copyProperties(parentProject, ProjectVo.class); |
| | | parentProjectVo.setParentYn(true); |
| | | ConvertUtil.copyProperties(parentProjectVo, projectVo); |
| | | this.setProjectDepartment(projectVo); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 관리자, 일반 사용자를 조건에 따라 찾아준다. |
| | |
| | | User user = this.webAppUtil.getLoginUserObject(); |
| | | |
| | | // 워크스페이스에서 기본으로 제공되는 프로젝트에 대한 체크 |
| | | this.checkDefaultProject(project, projectForm); |
| | | //this.checkDefaultProject(project, projectForm); |
| | | // 수정 권한 체크 |
| | | this.checkModifyPermission(project.getId(), user); |
| | | // 관리자 변경 |
| | |
| | | } |
| | | } |
| | | |
| | | private void checkUsingIssueType(Long projectId) { |
| | | Boolean del = Boolean.FALSE; |
| | | |
| | | List<IssueType> usingIssueTypes = this.issueTypeService.findByProjectId(projectId); |
| | | if (usingIssueTypes == null || usingIssueTypes.isEmpty()) { |
| | | del = true; |
| | | } |
| | | |
| | | if (!del) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_DELETE)); |
| | | } |
| | | } |
| | | |
| | | // 로그인한 사용자가 관리자 역할에 소속되어 있는지 확인한다. |
| | | private void checkModifyPermission(Long projectId, User user) { |
| | | Boolean hasPermission = Boolean.FALSE; |
| | |
| | | projectRoleUserMap.put("statuses", Lists.newArrayList("02")); // 관리자 조회 |
| | | |
| | | List<Map<String, Object>> projectUsers = this.projectRoleUserService.findProjectRoleUser(projectRoleUserMap); |
| | | UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); |
| | | // 현재 로그인 사용자가 관리자인지 확인 |
| | | if (projectUsers != null && !projectUsers.isEmpty()) { |
| | | for (Map<String, Object> projectUser : projectUsers) { |
| | | UserVo userVo = ConvertUtil.convertMapToClass(projectUser, UserVo.class); |
| | | if (userVo.getId().equals(this.webAppUtil.getLoginId())) { |
| | | if (userVo.getId().equals(this.webAppUtil.getLoginId()) |
| | | || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) { |
| | | hasPermission = true; |
| | | break; |
| | | } |
| | |
| | | private void removeProjects(Long projectId) { |
| | | Project project = this.getProject(projectId); |
| | | // 기본 프로젝트는 삭제 금지 |
| | | if (project.getDefaultYn()) { |
| | | /*if (project.getDefaultYn()) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.DEFAULT_PROJECT_NOT_REMOVE)); |
| | | } |
| | | }*/ |
| | | this.checkUsingIssueType(project.getId()); |
| | | |
| | | // 로그인한 사용자가 관리자 역할에 소속되어 있는지 확인한다. |
| | | this.checkModifyPermission(project.getId(), this.webAppUtil.getLoginUserObject()); |
| | |
| | | projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); |
| | | projectCondition.setProjectType(projectType); |
| | | projectCondition.setStatuses(statuses); |
| | | |
| | | this.SetMyDepartmentId(projectCondition); |
| | | return this.projectMapper.findByWorkspaceIdAndIncludeProject(projectCondition); |
| | | } |
| | | |
| | |
| | | public List<Map<String, Object>> findByWorkspaceIdAndIncludeProject(ProjectCondition projectCondition) { |
| | | projectCondition.setLoginUserId(this.webAppUtil.getLoginId()); |
| | | projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); |
| | | this.SetMyDepartmentId(projectCondition); |
| | | return this.projectMapper.findByWorkspaceIdAndIncludeProject(projectCondition); |
| | | } |
| | | |
| | |
| | | public List<Map<String, Object>> findByWorkspaceIdAndIncludeProjectAll(ProjectCondition projectCondition) { |
| | | projectCondition.setLoginUserId(this.webAppUtil.getLoginId()); |
| | | projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); |
| | | return this.projectMapper.findByWorkspaceIdAndIncludeProjectAll(projectCondition); |
| | | |
| | | UserWorkspace userWorkspace = this.userWorkspaceService.findWorkspaceManager(this.webAppUtil.getLoginId()); |
| | | List<Map<String, Object>> results = Lists.newArrayList(); |
| | | if(userWorkspace != null) {// 워크스페이스 관리자일경우 |
| | | results = this.projectMapper.findByWorkspaceIdAndProjectAll(projectCondition); |
| | | } else { |
| | | results = this.projectMapper.findByWorkspaceIdAndIncludeProjectAll(projectCondition); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 현재 접근한 업무공간에서 참여하고 있는 프로젝트를 조회한다. - 상단 프로젝트 목록에서 사용 |
| | |
| | | @Transactional(readOnly = true) |
| | | public List<ProjectVo> findByIncludeProject(List<String> statuses, String projectType) { |
| | | User user = this.webAppUtil.getLoginUserObject(); |
| | | UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); |
| | | |
| | | ProjectCondition projectCondition = new ProjectCondition(); |
| | | projectCondition.setLoginUserId(user.getId()); |
| | |
| | | |
| | | List<Map<String, Object>> results; |
| | | |
| | | if (this.userWorkspaceService.checkWorkspaceManager(user)) { |
| | | if (this.userWorkspaceService.checkWorkspaceManager(user) |
| | | || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) { |
| | | results = this.projectMapper.findByWorkspaceManager(projectCondition); |
| | | } else { |
| | | this.SetMyDepartmentId(projectCondition); |
| | | results = this.projectMapper.findByWorkspaceIdAndIncludeProject(projectCondition); |
| | | } |
| | | List<ProjectVo> projectVos = this.makeProjectByVos(results); |
| | |
| | | ProjectCondition projectCondition = ProjectCondition.make(conditions); |
| | | projectCondition.setLoginUserId(this.webAppUtil.getLoginId()); |
| | | projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); |
| | | List<Map<String, Object>> results = this.projectMapper.find(projectCondition); |
| | | |
| | | User user = this.webAppUtil.getLoginUserObject(); |
| | | List<Map<String, Object>> results; |
| | | UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); |
| | | |
| | | if (this.userWorkspaceService.checkWorkspaceManager(user) |
| | | || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) { |
| | | results = this.projectMapper.findByWorkspaceManager(projectCondition); |
| | | } |
| | | else { |
| | | this.SetMyDepartmentId(projectCondition); |
| | | results = this.projectMapper.find(projectCondition); |
| | | } |
| | | // 프로젝트 조회 결과를 ProjectVos 로 변환한다. - 관리자, 일반 사용자 정보 추가 |
| | | List<ProjectVo> projectVos = this.makeProjectVos(results, this.webAppUtil.getLoginUserObject()); |
| | | ExportExcelVo excelInfo = new ExportExcelVo(); |
| | |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("statusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 상태 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("name", this.messageAccessor.message("common.project"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // 프로젝트 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("manager", this.messageAccessor.message("common.admin"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 관리자 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("members", this.messageAccessor.message("common.teamMember"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 팀원 |
| | | //excelInfo.addAttrInfos(new ExportExcelAttrVo("members", this.messageAccessor.message("common.teamMember"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 팀원 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("departments", this.messageAccessor.message("common.teamDepartment"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 팀원 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("period", this.messageAccessor.message("common.period"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 기간 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("projectKey", this.messageAccessor.message("common.projectKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 프로젝트 키 |
| | | // 엑셀에 넣을 데이터 - ProjectVos 데이터를 엑셀에서 표시할 수 있는 데이터로 변경한다. |
| | |
| | | } |
| | | |
| | | result.put("manager", stringBuilderManager.toString()); |
| | | result.put("members", CommonUtil.convertUserVosToString(projectVo.getProjectUserVos())); |
| | | //result.put("members", CommonUtil.convertUserVosToString(projectVo.getProjectUserVos())); |
| | | result.put("departments", CommonUtil.convertDepartmentVosToString(projectVo.getProjectDepartmentVos())); |
| | | result.put("projectKey", projectVo.getProjectKey()); |
| | | result.put("period", projectVo.getStartDate() + " - " + projectVo.getEndDate()); |
| | | results.add(result); |
| | |
| | | resJsonData.put(Constants.RES_KEY_CONTENTS, ConvertUtil.copyProperties(project, ProjectVo.class)); |
| | | } |
| | | |
| | | } |
| | | } |