From f90e288fdd0e4d4a58b72a445fcbac135351d458 Mon Sep 17 00:00:00 2001 From: jhjang <jhjang@maprex.co.kr> Date: 월, 06 12월 2021 08:45:27 +0900 Subject: [PATCH] - API 중복 처리 오류 수정 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 154 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 97 insertions(+), 57 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java index eb5524e..8383256 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -1,6 +1,7 @@ package kr.wisestone.owl.service.impl; import com.google.common.collect.Lists; +import com.sun.org.apache.bcel.internal.generic.NEW; import kr.wisestone.owl.common.ExcelConditionCheck; import kr.wisestone.owl.config.CommonConfiguration; import kr.wisestone.owl.constant.Constants; @@ -239,9 +240,13 @@ customFieldApiOverlapForm.setUserId(user.getId()); customFieldApiOverlapForm.setIssueTypeId(issueForm.getIssueTypeId()); - IssueVo issueVo = this.findIssue(issueApiForm, user.getId()); - if (issueVo != null) { - issueForm.setParentIssueId(issueVo.getId()); + List<IssueVo> issueVos = this.findIssue(issueApiForm, user.getId()); + int size = issueVos.size(); + if (size == 1) { + issueForm.setParentIssueId(issueVos.get(0).getId()); + } else if (size > 1) { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.API_OVERLAP_ERROR)); } issueForm.setIsApi(Issue.IS_API_YES); @@ -281,26 +286,43 @@ // 以묐났�맂 �긽�쐞 �씠�뒋 寃��깋 - private IssueVo findIssue(IssueApiForm issueApiForm, Long userId) { - IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition(); + private List<IssueVo> findIssue(IssueApiForm issueApiForm, Long userId) { List<CustomFieldApiOverlap> customFieldApiOverlaps = this.customFieldApiOverlapService.find(userId, issueApiForm.getIssueTypeId()); + + List<IssueVo> resultIssueVos = new ArrayList<>(); if (customFieldApiOverlaps != null && customFieldApiOverlaps.size() > 0) { for (CustomFieldApiOverlap customFieldApiOverlap : customFieldApiOverlaps) { for (IssueCustomFieldValueForm issueCustomFieldValue : issueApiForm.getIssueCustomFieldValues()) { + IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition(); if (customFieldApiOverlap.getCustomField().getId().equals(issueCustomFieldValue.getCustomFieldId())) { - issueCustomFieldValueCondition.addUseValues(issueCustomFieldValue.getUseValue()); + issueCustomFieldValueCondition.setUseValue(issueCustomFieldValue.getUseValue()); + + List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition); + if (results != null && results.size() > 0) { + List<IssueVo> findIssueVos = new ArrayList<>(); + Collections.copy(resultIssueVos, findIssueVos); + resultIssueVos.clear(); + for (Map<String, Object> result : results) { + IssueVo issueVo = ConvertUtil.convertMapToClass(result, IssueVo.class); + if (findIssueVos.size() == 0) { + resultIssueVos.add(issueVo); + } else { + IssueVo findIssueVo = findIssueVo(findIssueVos, issueVo.getId()); + if (findIssueVo != null) { + resultIssueVos.add(findIssueVo); + } + } + } + } else { + resultIssueVos.clear(); + return resultIssueVos; + } } } } - List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition); - if (results != null && results.size() > 0) { - IssueVo issueVo = new IssueVo(); - ConvertUtil.convertMapToObject(results.get(0), issueVo); - return issueVo; - } } - return null; + return resultIssueVos; } // �씠�뒋瑜� �깮�꽦�븳�떎. @@ -1038,38 +1060,21 @@ // �븯�쐞 �씠�뒋 �젙蹂대�� �뀑�똿�븳�떎 private void setDownIssues(Issue issue, IssueVo issueVo) { List<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId()); - /*if(issueVo != null && downIssues.size()>0){ - for(Issue downIssue : downIssues){ - IssueVo downIssueVo = ConvertUtil.copyProperties(downIssue, IssueVo.class); - IssueDownVo issueDownVo = ConvertUtil.copyProperties(downIssueVo, IssueDownVo.class); - issueDownVo.setIssueDown(downIssueVo); - issueDownVo.setTitle(downIssue.getTitle()); - issueDownVo.setIssueTypeVo(ConvertUtil.copyProperties(downIssue.getIssueType(), IssueTypeVo.class)); - issueDownVo.setPriorityVo(ConvertUtil.copyProperties(downIssue.getPriority(), PriorityVo.class)); - issueDownVo.setSeverityVo(ConvertUtil.copyProperties(downIssue.getSeverity(), SeverityVo.class)); - this.setRegister(downIssue, downIssueVo); // �벑濡앹옄 - this.setIssueDepartment(downIssue, downIssueVo); // �떞�떦遺��꽌 �젙蹂� �뀑�똿 - this.setIssueCustomFields(downIssue, downIssueVo); // �궗�슜�옄�젙�쓽�븘�뱶 �젙蹂� �꽭�똿 - issueVo.addIssueDownVo(issueDownVo); - } - }*/ - - List<IssueVo> downIssueVos = ConvertUtil.convertObjectsToClasses(downIssues, IssueVo.class); - List<IssueVo> resultList = new ArrayList<>(); - if(downIssueVos != null && downIssueVos.size()>0){ - for(IssueVo downIssueVo : downIssueVos){ + if(downIssues != null && downIssues.size()>0){ + List<IssueVo> resultList = new ArrayList<>(); for(Issue downIssue : downIssues){ - downIssueVo.setIssueTypeVo(ConvertUtil.copyProperties(downIssue.getIssueType(), IssueTypeVo.class)); - downIssueVo.setPriorityVo(ConvertUtil.copyProperties(downIssue.getPriority(), PriorityVo.class)); - downIssueVo.setSeverityVo(ConvertUtil.copyProperties(downIssue.getSeverity(), SeverityVo.class)); - this.setRegister(downIssue, downIssueVo); // �벑濡앹옄 - this.setIssueDepartment(downIssue, downIssueVo); // �떞�떦遺��꽌 �젙蹂� �뀑�똿 - this.setIssueCustomFields(downIssue, downIssueVo); // �궗�슜�옄�젙�쓽�븘�뱶 �젙蹂� �꽭�똿 + IssueVo newIssueVo = ConvertUtil.copyProperties(downIssue, IssueVo.class); + newIssueVo.setIssueTypeVo(ConvertUtil.copyProperties(downIssue.getIssueType(), IssueTypeVo.class)); + newIssueVo.setPriorityVo(ConvertUtil.copyProperties(downIssue.getPriority(), PriorityVo.class)); + newIssueVo.setSeverityVo(ConvertUtil.copyProperties(downIssue.getSeverity(), SeverityVo.class)); + this.setRegister(downIssue, newIssueVo); // �벑濡앹옄 + this.setIssueDepartment(downIssue, newIssueVo); // �떞�떦遺��꽌 �젙蹂� �뀑�똿 + this.setIssueCustomFields(downIssue, newIssueVo); // �궗�슜�옄�젙�쓽�븘�뱶 �젙蹂� �꽭�똿 + + resultList.add(newIssueVo); } - resultList.add(downIssueVo); + issueVo.setIssueDownVos(resultList); } - issueVo.setIssueDownVos(resultList); - } } // �씠�뒋 �긽�꽭 �젙蹂대�� �뀑�똿�븳�떎. @@ -1232,7 +1237,7 @@ } // �씠�뒋(�씠�뒋 �쑀�삎)�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂대�� �뀑�똿�븳�떎. - private void setIssueCustomFields(Issue issue, IssueVo issueVo) { + private IssueVo setIssueCustomFields(Issue issue, IssueVo issueVo) { // �빐�떦 �봽濡쒖젥�듃�쓽 �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂대�� 媛��졇�삩�떎. IssueTypeCustomFieldCondition issueTypeCustomFieldCondition = new IssueTypeCustomFieldCondition(); @@ -1244,6 +1249,8 @@ // �씠�뒋�뿉�꽌 �궗�슜�맂 �궗�슜�옄 �젙�쓽 �븘�뱶 媛믪쓣 媛��졇�삩�떎. List<IssueCustomFieldValueVo> issueCustomFieldValueVos = this.issueCustomFieldValueService.findByIssueId(issue.getId()); issueVo.setIssueCustomFieldValueVos(issueCustomFieldValueVos); + + return issueVo; } // �씠�뒋�뿉 �벑濡앸맂 �뙎湲� �젙蹂대�� �뀑�똿�븳�떎. @@ -1261,19 +1268,48 @@ @Transactional public List<IssueVo> findIssue(IssueApiForm issueApiform) { List<IssueCustomFieldValueForm> issueCustomFieldValueForms = issueApiform.getIssueCustomFieldValues(); + List<IssueVo> resultIssueVos = new ArrayList<>(); + IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition(); - if (issueCustomFieldValueForms != null && issueCustomFieldValueForms.size() > 0) { + if (issueCustomFieldValueForms.size() > 0) { for (IssueCustomFieldValueForm issueCustomFieldValueForm : issueCustomFieldValueForms) { - issueCustomFieldValueCondition.addUseValues(issueCustomFieldValueForm.getUseValue()); +// issueCustomFieldValueCondition.addUseValue(issueCustomFieldValueForm.getUseValue()); + issueCustomFieldValueCondition.setUseValue(issueCustomFieldValueForm.getUseValue()); + List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition); + if (results != null && results.size() > 0) { + List<IssueVo> findIssueVos = new ArrayList<>(); + Collections.copy(resultIssueVos, findIssueVos); + resultIssueVos.clear(); + for (Map<String, Object> result : results) { + IssueVo issueVo = ConvertUtil.convertMapToClass(result, IssueVo.class); + + if (findIssueVos.size() == 0) { + resultIssueVos.add(issueVo); + } else { + IssueVo findIssueVo = findIssueVo(findIssueVos, issueVo.getId()); + if (findIssueVo != null) { + resultIssueVos.add(findIssueVo); + } + } + } + } else { + resultIssueVos.clear(); + return resultIssueVos; + } } } - List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition); - List<IssueVo> issueVos = Lists.newArrayList(); - if (results != null && results.size() > 0) { - issueVos.add(ConvertUtil.convertMapToClass(results.get(0), IssueVo.class)); - } - return issueVos; + return resultIssueVos; + } + + // 由ъ뒪�듃�뿉�꽌 �빐�떦 �븘�씠�뵒瑜� 媛�吏�怨� �엳�뒗 �씠�뒋 寃��깋 + private IssueVo findIssueVo(List<IssueVo> list, Long id) { + for (IssueVo issueVo : list) { + if (id.equals(issueVo.getId())) { + return issueVo; + } + } + return null; } @@ -1285,13 +1321,17 @@ IssueForm issueForm = this.convertToIssueForm(issueApiForm, user); List<IssueVo> issueVos = this.findIssue(issueApiForm); - List<Issue> issue = Lists.newArrayList(); - for (IssueVo issueVo : issueVos) { - issueForm.setId(issueVo.getId()); - issue.add(this.modifyIssueForApi(user, issueForm, files)); + if (issueVos != null && issueVos.size() > 0) { + List<Issue> issue = Lists.newArrayList(); + for (IssueVo issueVo : issueVos) { + issueForm.setId(issueVo.getId()); + issue.add(this.modifyIssueForApi(user, issueForm, files)); + } + return issue; + } else { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.API_ISSUE_NOT_EXIST)); } - - return issue; } // �씠�뒋瑜� �닔�젙�븳�떎. -- Gitblit v1.8.0