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