From 091b698701b0f77c3746ac9cfe03e0c4d272cbfd Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 금, 24 12월 2021 18:14:58 +0900 Subject: [PATCH] 헤더에서 전체 프로젝트 선택 시 속해있지 않는 다른 프로젝트의 이슈유형리스트까지 보이는 문제 해결 --- src/main/resources/mybatis/query-template/issueType-template.xml | 8 ++++++++ src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java | 9 +++++++++ src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java | 28 +++++++++++++++++++++++++--- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java index b32b1d4..561db3a 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java @@ -191,20 +191,42 @@ IssueTypeCondition condition, Pageable pageable) { List<Long> downProjectIds = Lists.newArrayList(); + List<Long> allProjectIds = Lists.newArrayList(); + List<ProjectClosure> projectClosures = Lists.newArrayList(); condition.setPage(pageable.getPageNumber() * pageable.getPageSize()); condition.setPageSize(pageable.getPageSize()); condition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); - List<ProjectClosure> projectClosures = this.projectClosureRepository.findByParentProjectId(condition.getProjectId()); - if (projectClosures != null) { + + if (condition.getProjectId() == null) { + List<ProjectVo> projectVos = this.projectService.findByIncludeProject(Lists.newArrayList("01", "02", "03"), ProjectType.BTS_PROJECT.toString()); + if (projectVos != null && projectVos.size() > 0) { + for (ProjectVo projectVo : projectVos) { + allProjectIds.add(projectVo.getId()); + projectClosures = this.projectClosureRepository.findByParentProjectId(projectVo.getId()); + if (projectClosures != null && projectClosures.size() > 0) { + for (ProjectClosure projectClosure : projectClosures) { + allProjectIds.add(projectClosure.getProject().getId()); + } + } + } + } + }else { + projectClosures = this.projectClosureRepository.findByParentProjectId(condition.getProjectId()); + } + + if (projectClosures != null && projectClosures.size() > 0) { for (ProjectClosure projectClosure : projectClosures) { Long downProjectId = projectClosure.getProject().getId(); downProjectIds.add(downProjectId); + allProjectIds.add(downProjectId); } } condition.setDownProjectIds(downProjectIds); - + if (condition.getProjectId() == null) { + condition.setAllProjectIds(allProjectIds); + } List<Map<String, Object>> results = this.issueTypeMapper.find(condition); for (Map<String, Object> result : results) { Long projectId = MapUtil.getLong(result, "projectId"); diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java index 78f8809..43f9666 100644 --- a/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java +++ b/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java @@ -30,6 +30,7 @@ private String isApi; private List<Long> downProjectIds = Lists.newArrayList(); + private List<Long> allProjectIds = Lists.newArrayList(); public IssueTypeCondition(){} @@ -160,4 +161,12 @@ public void setIsApi(String isApi) { this.isApi = isApi; } + + public List<Long> getAllProjectIds() { + return allProjectIds; + } + + public void setAllProjectIds(List<Long> allProjectIds) { + this.allProjectIds = allProjectIds; + } } diff --git a/src/main/resources/mybatis/query-template/issueType-template.xml b/src/main/resources/mybatis/query-template/issueType-template.xml index fdb9247..e2646b2 100644 --- a/src/main/resources/mybatis/query-template/issueType-template.xml +++ b/src/main/resources/mybatis/query-template/issueType-template.xml @@ -17,6 +17,14 @@ <if test="name != '' and name != null"> AND it.name like CONCAT('%',#{name},'%') </if> + <choose> + <when test="allProjectIds != null and allProjectIds.size != 0"> + AND it.project_id IN + <foreach collection="allProjectIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> <if test="projectId != '' and projectId != null"> AND it.project_id like CONCAT('%',#{projectId},'%') </if> -- Gitblit v1.8.0