From 4f4fd9ee8b3315bc433b1893dbff008efdb03230 Mon Sep 17 00:00:00 2001
From: jhjang <jhjang@maprex.co.kr>
Date: 수, 22 12월 2021 16:36:06 +0900
Subject: [PATCH] - API 설정 화면에서 프로젝트에서 설정된 이슈유형만 보여주도록 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java |  120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 115 insertions(+), 5 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 2b81ab9..ac67ca1 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
@@ -4,13 +4,16 @@
 import kr.wisestone.owl.common.ExcelConditionCheck;
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.MsgConstants;
+import kr.wisestone.owl.constant.UsePartner;
 import kr.wisestone.owl.domain.*;
 import kr.wisestone.owl.domain.enumType.ProjectType;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.mapper.IssueTypeMapper;
 import kr.wisestone.owl.repository.IssueTypeRepository;
+import kr.wisestone.owl.repository.ProjectRepository;
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.ConvertUtil;
+import kr.wisestone.owl.util.MapUtil;
 import kr.wisestone.owl.vo.*;
 import kr.wisestone.owl.web.condition.IssueTypeCondition;
 import kr.wisestone.owl.web.form.IssueTypeForm;
@@ -30,6 +33,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 {
@@ -40,6 +44,9 @@
     private IssueTypeRepository issueTypeRepository;
 
     @Autowired
+    private ProjectRepository projectRepository;
+
+    @Autowired
     private WorkflowService workflowService;
 
     @Autowired
@@ -47,6 +54,9 @@
 
     @Autowired
     private WorkspaceService workspaceService;
+
+    @Autowired
+    private IssueStatusService issueStatusService;
 
     @Autowired
     private IssueTypeMapper issueTypeMapper;
@@ -78,21 +88,37 @@
 
             switch (projectType) {
                 case BTS_PROJECT:
-                    issueTypes.add(new IssueType(workspace, workflow, "�븙�꽦 �룄硫붿씤", "", "#ff5f99")); // 踰꾧렇
-                    issueTypes.add(new IssueType(workspace, workflow, "寃쎌쑀吏� ���쓳", "", "#3598fe")); // 媛쒖꽑
+                    issueTypes.add(new IssueType(workspace, workflow, "�븙�꽦 �룄硫붿씤", "", "#ff5f99", 0L)); // 踰꾧렇
+                    issueTypes.add(new IssueType(workspace, workflow, "寃쎌쑀吏� ���쓳", "", "#3598fe", 0L)); // 媛쒖꽑
                     break;
 
                 case RMS_PROJECT:
-                    issueTypes.add(new IssueType(workspace, workflow, "�쑀�룷吏� ���쓳", "", "#3bcde2")); // �슂援� �궗�빆
+                    issueTypes.add(new IssueType(workspace, workflow, "�쑀�룷吏� ���쓳", "", "#3bcde2", 0L)); // �슂援� �궗�빆
                     break;
 
                 case TCM_PROJECT:
-                    issueTypes.add(new IssueType(workspace, workflow, "遺꾩꽍寃곌낵 ���쓳", "", "#008ca7")); // �뀒�뒪�듃 耳��씠�뒪, �떎�뻾 �닚�꽌, �쟾�젣 議곌굔, 湲곕� 寃곌낵
+                    issueTypes.add(new IssueType(workspace, workflow, "遺꾩꽍寃곌낵 ���쓳", "", "#008ca7", 0L)); // �뀒�뒪�듃 耳��씠�뒪, �떎�뻾 �닚�꽌, �쟾�젣 議곌굔, 湲곕� 寃곌낵
                     break;
             }
-
             this.issueTypeRepository.saveAll(issueTypes);
         }
+    }
+
+    @Override
+    @Transactional
+    public void addDefaultUsedProject(Workspace workspace) {
+        List<IssueType> issueTypes = this.issueTypeRepository.findByWorkspaceId(workspace.getId());
+        List<Project> projects = this.projectRepository.findByWorkspaceId(workspace.getId());
+        if(issueTypes != null && issueTypes.size() > 0){
+            for(IssueType issueType : issueTypes){
+                if(projects != null && projects.size()>0){
+                    for(Project project : projects){
+                        issueType.setProject(project);
+                    }
+                }
+            }
+        }
+
     }
 
     //  �씠�뒋 �쑀�삎�쓣 �깮�꽦�븳�떎.
@@ -113,6 +139,8 @@
         issueType.setWorkflow(workflow);
         Project project = this.projectService.getProject(issueTypeForm.getProjectId());
         issueType.setProject(project);
+
+        issueType.setUsePartner(issueTypeForm.getUsePartner());
 
         return this.issueTypeRepository.saveAndFlush(issueType);
     }
@@ -161,10 +189,30 @@
         condition.setPage(pageable.getPageNumber() * pageable.getPageSize());
         condition.setPageSize(pageable.getPageSize());
         condition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
+
         List<Map<String, Object>> results = this.issueTypeMapper.find(condition);
+        for (Map<String, Object> result : results) {
+            Long projectId = MapUtil.getLong(result, "projectId");
+            if (projectId != null) {
+                Project project = this.projectService.getProject(projectId);
+                ProjectVo projectVo = ConvertUtil.copyProperties(project, ProjectVo.class);
+                result.put("projectVo", projectVo);
+
+            }
+            Long issueStatusId = MapUtil.getLong(result, "completeIssueStatusId");
+            if (issueStatusId != null) {
+                IssueStatus issueStatus = this.issueStatusService.getIssueStatus(issueStatusId);
+                IssueStatusVo issueStatusVo = ConvertUtil.copyProperties(issueStatus, IssueStatusVo.class);
+                result.put("completeIssueStatusVo", issueStatusVo);
+            }
+        }
+
         Long totalCount = this.issueTypeMapper.count(condition);
         int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1;
         List<IssueTypeVo> issueTypeVos = ConvertUtil.convertListToListClass(results, IssueTypeVo.class);
+//        for (IssueTypeVo issueTypeVo : issueTypeVos) {
+//
+//        }
 
         //  �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �썙�겕�뵆濡쒖슦 �젙蹂대�� �뀑�똿�븳�떎.
         if (condition.getDeep() != null) {
@@ -172,6 +220,10 @@
         }
 
         this.setUseIssueTypeByProject(issueTypeVos);
+        this.setUseIssueTypeByIssueStatus(issueTypeVos);
+        /*this.setUseIssueTypeByCompanyField(issueTypeVos);
+        this.setUseIssueTypeByIspField(issueTypeVos);
+        this.setUseIssueTypeByHostingField(issueTypeVos);*/
 
         resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(),
                 totalPage, totalCount));
@@ -179,6 +231,15 @@
         resJsonData.put(Constants.RES_KEY_CONTENTS, issueTypeVos);
 
         return issueTypeVos;
+    }
+
+    //  �씠�뒋 �쑀�삎 紐⑸줉�쓣 議고쉶�븳�떎.
+    @Override
+    @Transactional(readOnly = true)
+    public List<IssueTypeVo> findIssueType(IssueTypeCondition condition) {
+        condition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
+        List<Map<String, Object>> results = this.issueTypeMapper.find(condition);
+        return ConvertUtil.convertListToListClass(results, IssueTypeVo.class);
     }
 
     //  �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �썙�겕�뵆濡쒖슦 �젙蹂대�� �뀑�똿�븳�떎.
@@ -201,6 +262,36 @@
         }
     }
 
+    //  �씠�뒋 �쑀�삎�뿉 �봽濡쒖젥�듃ID濡� 議고쉶
+    public List<IssueType> findByProjectId(Long projectId) {
+        return this.issueTypeRepository.findByProjectId(projectId);
+    }
+
+    private void setUseIssueTypeByIssueStatus(List<IssueTypeVo> issueTypeVos) {
+        for (IssueTypeVo issueTypeVo : issueTypeVos) {
+            IssueType issueType = this.getIssueType(issueTypeVo.getId());
+
+            Set<IssueTypeApiEndStatus> issueTypeApiEndStatuses = issueType.getIssueTypeApiEndStatuses();
+            if (issueTypeApiEndStatuses != null && issueTypeApiEndStatuses.size() > 0) {
+                IssueTypeApiEndStatus issueTypeApiEndStatus = issueTypeApiEndStatuses.iterator().next();
+
+                issueTypeVo.setCompleteIssueStatusVo(ConvertUtil.copyProperties(issueTypeApiEndStatus.getIssueStatus(), IssueStatusVo.class));
+            }
+        }
+    }
+
+    /*//  �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �뾽泥� �젙蹂대�� �뀑�똿�븳�떎.
+    private void setUseIssueTypeByCompanyField(List<IssueTypeVo> issueTypeVos) {
+        for (IssueTypeVo issueTypeVo : issueTypeVos){
+            IssueType issueType = this.getIssueType(issueTypeVo.getId());
+            CompanyField companyField = issueType.getCompanyField();
+            if(companyField != null){
+                issueTypeVo.setCompanyFieldVo(ConvertUtil.copyProperties(issueType.getCompanyField(), CompanyFieldVo.class));
+            }
+        }
+    }
+    */
+
     //  �씠�뒋 �쑀�삎 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
     @Override
     @Transactional(readOnly = true)
@@ -221,6 +312,17 @@
             if (project != null) {
                 issueTypeVo.setProjectVo(ConvertUtil.copyProperties(issueType.getProject(), ProjectVo.class));
             }
+            Integer using = issueType.getUsePartner() != null ? issueType.getUsePartner().intValue() : 0;
+
+            List<UsePartnerVo> usePartnerVos = Lists.newArrayList();
+            for (Integer usePartner : UsePartner.partners) {// 1 // 2 // 4
+                UsePartnerVo usePartnerVo = UsePartner.checkUsePartner(using, usePartner);//3, 1 / 3, 2 / 3, 4
+
+                if (usePartnerVo != null) {
+                    usePartnerVos.add(usePartnerVo);
+                }
+            }
+            issueTypeVo.setUsePartnerVos(usePartnerVos);
         }
 
         resJsonData.put(Constants.RES_KEY_CONTENTS, issueTypeVo);
@@ -249,6 +351,14 @@
         Project project = this.projectService.getProject(issueTypeForm.getProjectId());
         issueType.setProject(project);
 
+        issueType.setUsePartner(issueTypeForm.getUsePartner());
+
+        /*if(issueTypeForm.getCompanyId() != null){
+            CompanyField companyField = this.companyFieldService.getCompany(issueTypeForm.getCompanyId());
+            issueType.setCompanyField(companyField);
+        }*/
+//        issueType.setCompanyYn(issueTypeForm.getCompanyYn());
+
         this.issueTypeRepository.saveAndFlush(issueType);
 
         return issueType;

--
Gitblit v1.8.0