From f820bc3406e6fe88660124b28507f21df6b659ab Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 금, 24 12월 2021 16:47:39 +0900 Subject: [PATCH] 이슈타입 리스트 하위 프로젝트꺼까지 다 보이도록 수정 --- src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java | 93 ++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 81 insertions(+), 12 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 1e14323..b32b1d4 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java @@ -10,8 +10,11 @@ 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; +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; @@ -31,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 { @@ -39,6 +43,9 @@ @Autowired private IssueTypeRepository issueTypeRepository; + + @Autowired + private ProjectRepository projectRepository; @Autowired private WorkflowService workflowService; @@ -50,13 +57,7 @@ private WorkspaceService workspaceService; @Autowired - private CompanyFieldService companyFieldService; - - @Autowired - private IspFieldService ispFieldService; - - @Autowired - private HostingFieldService hostingFieldService; + private IssueStatusService issueStatusService; @Autowired private IssueTypeMapper issueTypeMapper; @@ -66,6 +67,9 @@ @Autowired private UserService userService; + + @Autowired + private ProjectClosureRepository projectClosureRepository; @Autowired private ExcelView excelView; @@ -88,21 +92,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); + } + } + } + } + } // �씠�뒋 �쑀�삎�쓣 �깮�꽦�븳�떎. @@ -170,14 +190,44 @@ public List<IssueTypeVo> findIssueType(Map<String, Object> resJsonData, IssueTypeCondition condition, Pageable pageable) { + List<Long> downProjectIds = 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) { + for (ProjectClosure projectClosure : projectClosures) { + Long downProjectId = projectClosure.getProject().getId(); + downProjectIds.add(downProjectId); + } + } + condition.setDownProjectIds(downProjectIds); + 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) { @@ -185,6 +235,7 @@ } this.setUseIssueTypeByProject(issueTypeVos); + this.setUseIssueTypeByIssueStatus(issueTypeVos); /*this.setUseIssueTypeByCompanyField(issueTypeVos); this.setUseIssueTypeByIspField(issueTypeVos); this.setUseIssueTypeByHostingField(issueTypeVos);*/ @@ -226,6 +277,24 @@ } } + // �씠�뒋 �쑀�삎�뿉 �봽濡쒖젥�듃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){ -- Gitblit v1.8.0