From d71d945fd2d4d8faa4b293054accb09283432043 Mon Sep 17 00:00:00 2001 From: wyu <kknd09321@nate.com> Date: 화, 07 12월 2021 19:43:02 +0900 Subject: [PATCH] 하위 이슈 초기화면 목록 안뜨는 오류 수정 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 85 +++++++++++++++++++++++++++++++++++------- 1 files changed, 70 insertions(+), 15 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 f87d9fb..4bc411d 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -218,7 +218,6 @@ } } - // �봽濡쒖젥�듃 �엯�젰 Project project = issueType.getProject(); if (project == null){ @@ -239,12 +238,19 @@ issueForm.setSeverityId(issueApiDefault.getSeverity().getId()); } - // 以묐났 媛� �븯�쐞 �씠�뒋濡� 泥섎━�븯湲� + // 以묐났 媛� �긽�쐞 �씠�뒋�쓽 �븯�쐞 �씠�뒋濡� 泥섎━�븯湲� CustomFieldApiOverlapForm customFieldApiOverlapForm = new CustomFieldApiOverlapForm(); customFieldApiOverlapForm.setUserId(user.getId()); customFieldApiOverlapForm.setIssueTypeId(issueForm.getIssueTypeId()); - List<IssueVo> issueVos = this.findIssue(issueApiForm, user.getId()); + // �긽�쐞�씪媛먯뿉 �궗�슜�븷 以묐났媛� �꽕�젙 + List<CustomFieldApiOverlap> customFieldApiOverlaps = this.customFieldApiOverlapService.find(user.getId(), issueApiForm.getIssueTypeId()); + for(int i=0; i < customFieldApiOverlaps.size() ; i++ ){ + CustomFieldApiOverlap customFieldApiOverlap = customFieldApiOverlaps.get(i); + issueApiForm.addUseIssueCustomFieldId(customFieldApiOverlap.getCustomField().getId()); + } + + List<IssueVo> issueVos = this.findIssue(issueApiForm, customFieldApiOverlaps, user.getId()); int size = issueVos.size(); if (size == 1) { issueForm.setParentIssueId(issueVos.get(0).getId()); @@ -280,25 +286,46 @@ // API 瑜� �넻�빐 �씠�뒋 異붽�. @Override @Transactional - public Issue addApiIssue(IssueApiForm issueApiForm) { + public List<Issue> addApiIssue(IssueApiForm issueApiForm) throws CloneNotSupportedException { User user = convertToUser(issueApiForm.getToken()); IssueForm issueForm = this.convertToIssueForm(issueApiForm, user); - return addIssue(user, issueForm, issueApiForm.getMultipartFiles()); + List<Issue> issues = Lists.newArrayList(); + if (issueForm.getParentIssueId() != null) { + issues.add(addIssue(user, issueForm, issueApiForm.getMultipartFiles())); + } else { + // �긽�쐞 �씠�뒋 異붽� + IssueForm parentIssueForm = issueForm.clone(); + parentIssueForm.setUseIssueCustomFields(issueApiForm.getUseIssueCustomFieldIds()); + Issue issue = addIssue(user, parentIssueForm, null); + issues.add(issue); + // �븯�쐞 �씠�뒋 異붽� + issueForm.setParentIssueId(issue.getId()); + issues.add(addIssue(user, issueForm, issueApiForm.getMultipartFiles())); + } + + return issues; } - + // �긽�쐞 �씠�뒋 媛��졇�삤湲� + private IssueVo getParentIssueVo(Long parentIssueId) { + if (parentIssueId != null) { + Issue parentIssue = this.getIssue(parentIssueId); + return ConvertUtil.copyProperties(parentIssue, IssueVo.class); + } + return null; + } // 以묐났�맂 �긽�쐞 �씠�뒋 寃��깋 - private List<IssueVo> findIssue(IssueApiForm issueApiForm, Long userId) { - - List<CustomFieldApiOverlap> customFieldApiOverlaps = this.customFieldApiOverlapService.find(userId, issueApiForm.getIssueTypeId()); + private List<IssueVo> findIssue(IssueApiForm issueApiForm, List<CustomFieldApiOverlap> customFieldApiOverlaps, Long userId) { List<IssueVo> resultIssueVos = new ArrayList<>(); + if (customFieldApiOverlaps != null && customFieldApiOverlaps.size() > 0) { for (CustomFieldApiOverlap customFieldApiOverlap : customFieldApiOverlaps) { for (IssueCustomFieldValueForm issueCustomFieldValue : issueApiForm.getIssueCustomFieldValues()) { IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition(); + issueCustomFieldValueCondition.setUseParentIssueId(true); if (customFieldApiOverlap.getCustomField().getId().equals(issueCustomFieldValue.getCustomFieldId())) { issueCustomFieldValueCondition.setUseValue(issueCustomFieldValue.getUseValue()); @@ -732,21 +759,33 @@ return issueVos; } - private void setCountDownIssues(List<Map<String, Object>> results, List<IssueVo> issueVos) { + @Override + @Transactional(readOnly = true) + public void setCountDownIssues(List<Map<String, Object>> results, List<IssueVo> issueVos) { for (Map<String, Object> result : results){ List<Issue> downIssues = this.issueRepository.findByParentIssueId((Long) result.get("id")); //�븯�쐞�씠�뒋 媛��졇�삤湲� if(downIssues != null && downIssues.size() > 0){ //�긽�쐞�씠�뒋 媛�吏�怨� �엳�뒗 �븷�뱾�씠 �엳�쑝硫� - int downIssueCount = 0; + int downIssueAllCount = 0;// �븯�쐞�씠�뒋 �쟾泥� 移댁슫�듃 + int downIssueCount = 0;// �븯�쐞�씠�뒋 誘몄셿猷� 移댁슫�듃 for(Issue downIssue : downIssues){ - downIssueCount ++; + downIssueAllCount ++; Long parentIssueId = downIssue.getParentIssue().getId(); Issue parentIssue = this.getIssue(parentIssueId); IssueVo parentIssueVo = ConvertUtil.copyProperties(parentIssue, IssueVo.class); - parentIssueVo.setDownIssueCount(downIssueCount); + parentIssueVo.setDownIssueAllCount(downIssueAllCount); + + IssueStatus downIssueStatus = this.issueStatusService.getIssueStatus(downIssue.getIssueStatus().getId()); + IssueVo downIssueVo = ConvertUtil.copyProperties(downIssue, IssueVo.class); + downIssueVo.setIssueStatusType(downIssueStatus.getIssueStatusType().toString()); + + if(!downIssueVo.getIssueStatusType().equals("CLOSE")){ //誘몄셿猷� �븯�쐞�씠�뒋 泥댄겕 + downIssueCount ++; + } for(IssueVo issueVo : issueVos){ if(issueVo.getId().equals(parentIssueVo.getId())){ - issueVo.setDownIssueCount(parentIssueVo.getDownIssueCount()); + issueVo.setDownIssueCount(downIssueCount); + issueVo.setDownIssueAllCount(parentIssueVo.getDownIssueAllCount()); } } } @@ -1391,12 +1430,20 @@ @Override @Transactional public List<IssueVo> findIssue(IssueApiForm issueApiform) { + List<IssueCustomFieldValueForm> issueCustomFieldValueForms = issueApiform.getIssueCustomFieldValues(); List<IssueVo> resultIssueVos = new ArrayList<>(); IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition(); + issueCustomFieldValueCondition.setUseParentIssueId(false); if (issueCustomFieldValueForms.size() > 0) { for (IssueCustomFieldValueForm issueCustomFieldValueForm : issueCustomFieldValueForms) { + + CustomField customField = this.customFieldService.getCustomField(issueCustomFieldValueForm.getCustomFieldId()); + CustomFieldType customFieldType = CustomFieldType.DATETIME; + if (customFieldType.equals(customField.getCustomFieldType())) { + continue; + } // issueCustomFieldValueCondition.addUseValue(issueCustomFieldValueForm.getUseValue()); issueCustomFieldValueCondition.setUseValue(issueCustomFieldValueForm.getUseValue()); List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition); @@ -1406,6 +1453,8 @@ resultIssueVos.clear(); for (Map<String, Object> result : results) { IssueVo issueVo = ConvertUtil.convertMapToClass(result, IssueVo.class); + + issueVo.setParentIssueVo(this.getParentIssueVo(MapUtil.getLong(result, "parentIssueId"))); if (findIssueVos.size() == 0) { resultIssueVos.add(issueVo); @@ -1444,11 +1493,17 @@ User user = this.convertToUser(issueApiForm.getToken()); IssueForm issueForm = this.convertToIssueForm(issueApiForm, user); + List<IssueVo> issueVos = this.findIssue(issueApiForm); if (issueVos != null && issueVos.size() > 0) { List<Issue> issue = Lists.newArrayList(); for (IssueVo issueVo : issueVos) { - issueForm.setId(issueVo.getId()); + IssueVo parentIssueVo = issueVo.getParentIssueVo(); + if (parentIssueVo != null) { + issueForm.setId(parentIssueVo.getId()); + } else { + issueForm.setId(issueVo.getId()); + } issue.add(this.modifyIssueForApi(user, issueForm, files)); } return issue; -- Gitblit v1.8.0