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/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java |   66 +++++++++++++++++++++-----------
 1 files changed, 43 insertions(+), 23 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 78c915a..561db3a 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
@@ -10,6 +10,7 @@
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.mapper.IssueTypeMapper;
 import kr.wisestone.owl.repository.IssueTypeRepository;
+import kr.wisestone.owl.repository.ProjectClosureRepository;
 import kr.wisestone.owl.repository.ProjectRepository;
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.ConvertUtil;
@@ -33,6 +34,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 @Service
 public class IssueTypeServiceImpl extends AbstractServiceImpl<IssueType, Long, JpaRepository<IssueType, Long>> implements IssueTypeService {
@@ -65,6 +67,9 @@
 
     @Autowired
     private UserService userService;
+
+    @Autowired
+    private ProjectClosureRepository projectClosureRepository;
 
     @Autowired
     private ExcelView excelView;
@@ -185,10 +190,43 @@
     public List<IssueTypeVo> findIssueType(Map<String, Object> resJsonData,
                                            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());
 
+
+        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");
@@ -270,9 +308,11 @@
         for (IssueTypeVo issueTypeVo : issueTypeVos) {
             IssueType issueType = this.getIssueType(issueTypeVo.getId());
 
-            IssueStatus issueStatus = issueType.getIssueStatus();
-            if (issueStatus != null) {
-                issueTypeVo.setCompleteIssueStatusVo(ConvertUtil.copyProperties(issueType.getIssueStatus(), IssueStatusVo.class));
+            Set<IssueTypeApiEndStatus> issueTypeApiEndStatuses = issueType.getIssueTypeApiEndStatuses();
+            if (issueTypeApiEndStatuses != null && issueTypeApiEndStatuses.size() > 0) {
+                IssueTypeApiEndStatus issueTypeApiEndStatus = issueTypeApiEndStatuses.iterator().next();
+
+                issueTypeVo.setCompleteIssueStatusVo(ConvertUtil.copyProperties(issueTypeApiEndStatus.getIssueStatus(), IssueStatusVo.class));
             }
         }
     }
@@ -323,26 +363,6 @@
         }
 
         resJsonData.put(Constants.RES_KEY_CONTENTS, issueTypeVo);
-    }
-
-    // �씠�뒋 �쑀�삎�쓣 �닔�젙�븳�떎. �옄�룞 醫낅즺 �꽕�젙留� �닔�젙
-    @Override
-    @Transactional
-    public IssueType modifyIssueTypeCompleteIssueStatus(IssueTypeForm issueTypeForm) {
-        //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
-        this.workspaceService.checkUseWorkspace();
-
-        IssueType issueType = this.getIssueType(issueTypeForm.getId());
-        if (issueTypeForm.getCompleteIssueStatusId() != null) {
-            // api�뿉�꽌 �궗�슜�븯�뒗 �옄�룞 醫낅즺 �씠�뒋 �긽�깭
-            IssueStatus issueStatus = this.issueStatusService.getIssueStatus(issueTypeForm.getCompleteIssueStatusId());
-            issueType.setIssueStatus(issueStatus);
-        }else {
-            issueType.setIssueStatus(null);
-        }
-
-        this.issueTypeRepository.saveAndFlush(issueType);
-        return issueType;
     }
 
     //  �씠�뒋 �쑀�삎�쓣 �닔�젙�븳�떎.

--
Gitblit v1.8.0