From 9ff3e8c43d01f758381b4925cff44502f1241750 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 수, 22 12월 2021 14:26:36 +0900 Subject: [PATCH] - 일반 사용자로 검색 기능 제대로 동작안되는 문제 해결 - 이슈 유형에서 사용중인 프로젝트는 삭제 불가 - 이슈 유형에서 프로젝트 검색 시 워크스페이스 관리자는 모든 프로젝트 검색 가능(기존엔 참여하고있는 프로젝트만 검색가능하게되어있었음) --- src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java | 173 ++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 108 insertions(+), 65 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 5e457e9..78c915a 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; @@ -40,6 +43,9 @@ private IssueTypeRepository issueTypeRepository; @Autowired + private ProjectRepository projectRepository; + + @Autowired private WorkflowService workflowService; @Autowired @@ -49,13 +55,7 @@ private WorkspaceService workspaceService; @Autowired - private CompanyFieldService companyFieldService; - - @Autowired - private IspFieldService ispFieldService; - - @Autowired - private HostingFieldService hostingFieldService; + private IssueStatusService issueStatusService; @Autowired private IssueTypeMapper issueTypeMapper; @@ -87,21 +87,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); + } + } + } + } + } // �씠�뒋 �쑀�삎�쓣 �깮�꽦�븳�떎. @@ -123,18 +139,8 @@ Project project = this.projectService.getProject(issueTypeForm.getProjectId()); issueType.setProject(project); - String Yes = "Y"; - String No = "N"; + issueType.setUsePartner(issueTypeForm.getUsePartner()); - if(!issueTypeForm.getCompanyYn().equals(No)){ - issueType.setCompanyYn(Yes); - } - if(!issueTypeForm.getHostingYn().equals(No)){ - issueType.setHostingYn(Yes); - } - if(!issueTypeForm.getIspYn().equals(No)){ - issueType.setIspYn(Yes); - } return this.issueTypeRepository.saveAndFlush(issueType); } @@ -182,10 +188,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) { @@ -193,6 +219,7 @@ } this.setUseIssueTypeByProject(issueTypeVos); + this.setUseIssueTypeByIssueStatus(issueTypeVos); /*this.setUseIssueTypeByCompanyField(issueTypeVos); this.setUseIssueTypeByIspField(issueTypeVos); this.setUseIssueTypeByHostingField(issueTypeVos);*/ @@ -203,6 +230,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); } // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �썙�겕�뵆濡쒖슦 �젙蹂대�� �뀑�똿�븳�떎. @@ -225,6 +261,22 @@ } } + // �씠�뒋 �쑀�삎�뿉 �봽濡쒖젥�듃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()); + + IssueStatus issueStatus = issueType.getIssueStatus(); + if (issueStatus != null) { + issueTypeVo.setCompleteIssueStatusVo(ConvertUtil.copyProperties(issueType.getIssueStatus(), IssueStatusVo.class)); + } + } + } + /*// �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �뾽泥� �젙蹂대�� �뀑�똿�븳�떎. private void setUseIssueTypeByCompanyField(List<IssueTypeVo> issueTypeVos) { for (IssueTypeVo issueTypeVo : issueTypeVos){ @@ -235,26 +287,7 @@ } } } - // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 ISP �젙蹂대�� �뀑�똿�븳�떎. - private void setUseIssueTypeByIspField(List<IssueTypeVo> issueTypeVos) { - for (IssueTypeVo issueTypeVo : issueTypeVos){ - IssueType issueType = this.getIssueType(issueTypeVo.getId()); - IspField ispField = issueType.getIspField(); - if(ispField != null){ - issueTypeVo.setIspFieldVo(ConvertUtil.copyProperties(issueType.getIspField(), IspFieldVo.class)); - } - } - } - // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �샇�뒪�똿 �젙蹂대�� �뀑�똿�븳�떎. - private void setUseIssueTypeByHostingField(List<IssueTypeVo> issueTypeVos) { - for (IssueTypeVo issueTypeVo : issueTypeVos){ - IssueType issueType = this.getIssueType(issueTypeVo.getId()); - HostingField hostingField = issueType.getHostingField(); - if(hostingField != null){ - issueTypeVo.setHostingFieldVo(ConvertUtil.copyProperties(issueType.getHostingField(), HostingFieldVo.class)); - } - } - }*/ + */ // �씠�뒋 �쑀�삎 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎. @Override @@ -276,22 +309,40 @@ if (project != null) { issueTypeVo.setProjectVo(ConvertUtil.copyProperties(issueType.getProject(), ProjectVo.class)); } + Integer using = issueType.getUsePartner() != null ? issueType.getUsePartner().intValue() : 0; - /*CompanyField companyField = issueType.getCompanyField(); - if(companyField != null){ - issueTypeVo.setCompanyFieldVo(ConvertUtil.copyProperties(issueType.getCompanyField(), CompanyFieldVo.class)); + 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); + } } - IspField ispField = issueType.getIspField(); - if (ispField != null){ - issueTypeVo.setIspFieldVo(ConvertUtil.copyProperties(issueType.getIspField(), IspFieldVo.class)); - } - HostingField hostingField = issueType.getHostingField(); - if (hostingField != null){ - issueTypeVo.setHostingFieldVo(ConvertUtil.copyProperties(issueType.getHostingField(), HostingFieldVo.class)); - }*/ + issueTypeVo.setUsePartnerVos(usePartnerVos); } 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; } // �씠�뒋 �쑀�삎�쓣 �닔�젙�븳�떎. @@ -317,21 +368,13 @@ 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); - } - if(issueTypeForm.getIspId() != null) { - IspField ispField = this.ispFieldService.getIsp(issueTypeForm.getIspId()); - issueType.setIspField(ispField); - } - if(issueTypeForm.getHostingId() != null) { - HostingField hostingField = this.hostingFieldService.getHosting(issueTypeForm.getHostingId()); - issueType.setHostingField(hostingField); }*/ - issueType.setCompanyYn(issueTypeForm.getCompanyYn()); - issueType.setIspYn(issueTypeForm.getIspYn()); - issueType.setHostingYn(issueTypeForm.getHostingYn()); +// issueType.setCompanyYn(issueTypeForm.getCompanyYn()); this.issueTypeRepository.saveAndFlush(issueType); -- Gitblit v1.8.0