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 | 63 ++++++++++++++++++++++++++----- 1 files changed, 53 insertions(+), 10 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 72e5bc6..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()); @@ -1403,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); @@ -1418,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); @@ -1456,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