From ee9cdbdf15ede4ed38b264c421ada71a959a0464 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 수, 22 12월 2021 18:38:00 +0900 Subject: [PATCH] '이슈관리' 권한은 내가 속해있는 프로젝트의 이슈에 대해서만 관리 권한이 있음 --- src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java | 114 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 92 insertions(+), 22 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java index df9aac1..3a61b01 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java @@ -4,11 +4,9 @@ import kr.wisestone.owl.common.ExcelConditionCheck; import kr.wisestone.owl.common.MessageAccessor; import kr.wisestone.owl.constant.Constants; +import kr.wisestone.owl.constant.MngPermission; import kr.wisestone.owl.constant.MsgConstants; -import kr.wisestone.owl.domain.IssueStatus; -import kr.wisestone.owl.domain.Project; -import kr.wisestone.owl.domain.ProjectClosure; -import kr.wisestone.owl.domain.UserDepartment; +import kr.wisestone.owl.domain.*; import kr.wisestone.owl.domain.enumType.ProjectType; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.mapper.IssueMapper; @@ -63,6 +61,9 @@ @Autowired private UserService userService; + + @Autowired + private UserLevelService userLevelService; @Autowired private UserDepartmentService userDepartmentService; @@ -166,9 +167,12 @@ @Override @Transactional(readOnly = true) public WidgetCondition makeWidgetCondition() { + User user = this.webAppUtil.getLoginUserObject(); + UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); // �빐�떦 �썙�겕�뒪�럹�씠�뒪�뿉�꽌 李몄뿬�븯怨� �엳�뒗 �봽濡쒖젥�듃 以� �긽�깭媛� �삤�뵂�씤 �봽濡쒖젥�듃 List<Map<String, Object>> projects = null; - if (this.userWorkspaceService.checkWorkspaceManager()) { + if (this.userWorkspaceService.checkWorkspaceManager(user) + || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) { projects = this.projectService.findByWorkspaceManagerAll(); } else { projects = this.projectService.findByWorkspaceIdAndIncludeProjectAll(Lists.newArrayList("02"), ProjectType.BTS_PROJECT.toString()); @@ -245,15 +249,31 @@ Long delayIssue = 0L; // 吏��뿰�맂 �씠�뒋 Long completeIssue = 0L; // �셿猷뚮맂 �씠�뒋 + widgetCondition.setLoginUserId(this.webAppUtil.getLoginId()); + widgetCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); + User user = this.webAppUtil.getLoginUserObject(); + UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); + if (widgetCondition.getProjectIds().size() > 0) { SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition); - - remainIssue = this.widgetMapper.countRemainIssue(widgetCondition); // �옍�뿬 �씠�뒋 - delayIssue = this.widgetMapper.countTodayDelayIssue(widgetCondition); // 吏��뿰�맂 �씠�뒋 - assigneeIssue = this.widgetMapper.countAssigneeIssue(widgetCondition); // �븷�떦�맂 �씠�뒋 - registerIssue = this.widgetMapper.countTodayRegisterIssue(widgetCondition); // �벑濡앺븳 �씠�뒋 - noAssigneeIssue = this.widgetMapper.countNoAssigneeIssue(widgetCondition); // 誘명븷�떦 �씠�뒋 - completeIssue = this.widgetMapper.countCompleteIssue(widgetCondition); // �셿猷뚮맂 �씠�뒋 + if (this.userWorkspaceService.checkWorkspaceManager(user) + || (MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT) && + MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE))) { + remainIssue = this.widgetMapper.countRemainIssue(widgetCondition); // �옍�뿬 �씠�뒋 + delayIssue = this.widgetMapper.countTodayDelayIssue(widgetCondition); // 吏��뿰�맂 �씠�뒋 + assigneeIssue = this.widgetMapper.countAssigneeIssue(widgetCondition); // �븷�떦�맂 �씠�뒋 + registerIssue = this.widgetMapper.countTodayRegisterIssue(widgetCondition); // �벑濡앺븳 �씠�뒋 + noAssigneeIssue = this.widgetMapper.countNoAssigneeIssue(widgetCondition); // 誘명븷�떦 �씠�뒋 + completeIssue = this.widgetMapper.countCompleteIssue(widgetCondition); // �셿猷뚮맂 �씠�뒋 + } else { + SetMyDepartmentId(widgetCondition); + remainIssue = this.widgetMapper.countRemainIssueByDepartment(widgetCondition); // �옍�뿬 �씠�뒋 + delayIssue = this.widgetMapper.countTodayDelayIssueByDepartment(widgetCondition); // 吏��뿰�맂 �씠�뒋 + assigneeIssue = this.widgetMapper.countAssigneeIssueByDepartment(widgetCondition); // �븷�떦�맂 �씠�뒋 + registerIssue = this.widgetMapper.countTodayRegisterIssueByDepartment(widgetCondition); // �벑濡앺븳 �씠�뒋 + //noAssigneeIssue = this.widgetMapper.countNoAssigneeIssueByDepartment(widgetCondition); // �씪諛� �쑀���뒗 誘명븷�떦 �씠�뒋 0媛쒕줈 蹂댁씠寃� + completeIssue = this.widgetMapper.countCompleteIssueByDepartment(widgetCondition); // �셿猷뚮맂 �씠�뒋 + } } Map<String, Object> results = new HashMap<>(); @@ -277,9 +297,13 @@ public void findProjectProgress(Map<String, Object> resJsonData, WidgetCondition widgetCondition) { List<Map<String, Object>> progressingProjectDetails = Lists.newArrayList(); + User user = this.webAppUtil.getLoginUserObject(); + UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); + if (widgetCondition.getProjectIds().size() > 0) { SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition); - if (this.userWorkspaceService.checkWorkspaceManager()) { + if (this.userWorkspaceService.checkWorkspaceManager(user) + || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) { progressingProjectDetails = this.widgetMapper.findProjectProgressAll(widgetCondition); } else { progressingProjectDetails = this.widgetMapper.findProjectProgress(widgetCondition); @@ -379,11 +403,11 @@ if (widgetCondition.getProjectIds().size() > 0) { SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition); + this.SetMyDepartmentId(widgetCondition); todayCount = this.widgetMapper.countTodayMyAssigneeIssue(widgetCondition); assigneeIssues = this.widgetMapper.findMyAssigneeIssue(widgetCondition); totalCount = this.widgetMapper.countMyAssigneeIssue(widgetCondition); } - // 0.156 - 0.166 int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1; @@ -481,9 +505,20 @@ // �쐞�젽 寃��깋 議곌굔�쓣 留뚮뱾怨� �쟾泥� �봽濡쒖젥�듃 �젙蹂대�� 由ы꽩�븳�떎. Map<String, Object> results = this.makeWidgetConditionAllProject(widgetCondition, getWidgetCondition); + widgetCondition.setLoginUserId(this.webAppUtil.getLoginId()); + widgetCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); + User user = this.webAppUtil.getLoginUserObject(); + UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); + if (widgetCondition.getProjectId() != null) { SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition); - List<Map<String, Object>> projectMemberIssues = this.widgetMapper.findProjectMemberIssue(widgetCondition); + List<Map<String, Object>> projectMemberIssues = Lists.newArrayList(); + if (this.userWorkspaceService.checkWorkspaceManager(user) + || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) { + projectMemberIssues = this.widgetMapper.findProjectMemberIssue(widgetCondition); + } else { + projectMemberIssues = this.widgetMapper.findProjectMemberIssueByDepartment(widgetCondition); + } for (Map<String, Object> projectMemberIssue : projectMemberIssues) { //String departmentName = MapUtil.getString(projectMemberIssue, "departmentName"); @@ -761,10 +796,17 @@ } List<Map<String, Object>> results = Lists.newArrayList(); + User user = this.webAppUtil.getLoginUserObject(); + UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); if (widgetCondition.getProjectIds().size() > 0) { SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition); - results = this.widgetMapper.findByStandIssueStatus(widgetCondition); + if (this.userWorkspaceService.checkWorkspaceManager(user) + || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE)) { + results = this.widgetMapper.findByStandIssueStatus(widgetCondition); + }else { + results = this.widgetMapper.findByStandIssueStatusOfDepartment(widgetCondition); + } } for (Map<String, Object> result : results) { @@ -788,10 +830,17 @@ public void findByStandIssueType(Map<String, Object> resJsonData, WidgetCondition widgetCondition, Boolean getWidgetCondition) { // �쐞�젽 寃��깋 議곌굔�쓣 �뼸�뼱�빞 �븷 �긽�솴�씪 �븣 - �솕硫댁뿉�꽌 �꺆�쓣 �닃�윭 �뜲�씠�꽣瑜� �옱�슂泥��뻽�쓣 �븣 �쐞�젽 寃��깋 議곌굔�쓣 留뚮뱾怨� �쟾泥� �봽濡쒖젥�듃 �젙蹂대�� 由ы꽩�븳�떎. Map<String, Object> results = this.makeWidgetConditionAllProject(widgetCondition, getWidgetCondition); - + User user = this.webAppUtil.getLoginUserObject(); + UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); if (widgetCondition.getProjectId() != null) { SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition); - List<Map<String, Object>> issueTypeIssues = this.widgetMapper.findByStandIssueType(widgetCondition); + List<Map<String, Object>> issueTypeIssues = Lists.newArrayList(); + if (this.userWorkspaceService.checkWorkspaceManager(user) + || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE)) { + issueTypeIssues = this.widgetMapper.findByStandIssueType(widgetCondition); + } else { + issueTypeIssues = this.widgetMapper.findByStandIssueTypeOfDepartment(widgetCondition); + } // �씠�뒋 �젙蹂� results.put("issues", issueTypeIssues); } else { @@ -864,12 +913,24 @@ List<Map<String, Object>> severityIssues = Lists.newArrayList(); Long totalCount = 0L; + widgetCondition.setLoginUserId(this.webAppUtil.getLoginId()); + widgetCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); + User user = this.webAppUtil.getLoginUserObject(); + UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId()); + if (widgetCondition.getProjectIds().size() > 0) { SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition); - - severityCounts = this.widgetMapper.countSeverityIssue(widgetCondition); - severityIssues = this.widgetMapper.findSeverityIssues(widgetCondition); - totalCount = this.widgetMapper.countSearchIssue(widgetCondition); + if (this.userWorkspaceService.checkWorkspaceManager(user) + || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE)) { + severityCounts = this.widgetMapper.countSeverityIssue(widgetCondition); + severityIssues = this.widgetMapper.findSeverityIssues(widgetCondition); + totalCount = this.widgetMapper.countSearchIssue(widgetCondition); + }else { + SetMyDepartmentId(widgetCondition); + severityCounts = this.widgetMapper.countSeverityIssueByDepartment(widgetCondition); + severityIssues = this.widgetMapper.findSeverityIssuesByDepartment(widgetCondition); + totalCount = this.widgetMapper.countSearchIssueByDepartment(widgetCondition); + } } Long criticalIssueCount = 0L, majorIssueCount = 0L, minorIssueCount = 0L, trivialIssueCount = 0L; @@ -1027,10 +1088,19 @@ // �굹�뿉寃� �븷�떦�맂 �씠�뒋 �젙蹂대�� �뿊��濡� �떎�슫濡쒕뱶 �븳�떎. private ExportExcelVo downloadExcelMyAssigneeIssue() { WidgetCondition widgetCondition = this.makeWidgetCondition(); + + /*widgetCondition.setLoginUserId(this.webAppUtil.getLoginId()); + widgetCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); + User user = this.webAppUtil.getLoginUserObject();*/ + // �굹�뿉寃� �븷�떦�맂 �씠�뒋 List<Map<String, Object>> assigneeIssues = Lists.newArrayList(); if (widgetCondition.getProjectIds().size() > 0) { + //if (this.userWorkspaceService.checkWorkspaceManager(user)) { assigneeIssues = this.widgetMapper.findMyAssigneeIssue(this.makeWidgetCondition()); + /*} else { + assigneeIssues = this.widgetMapper.findMyAssigneeIssueByDepartment(this.makeWidgetCondition()); + }*/ } ExportExcelVo excelInfo = new ExportExcelVo(); -- Gitblit v1.8.0