| | |
| | | issueForm.setSeverityId(issueApiDefault.getSeverity().getId()); |
| | | } |
| | | |
| | | // 중복 값 하위 이슈로 처리하기 |
| | | // 중복 값 상위 이슈의 하위 이슈로 처리하기 |
| | | CustomFieldApiOverlapForm customFieldApiOverlapForm = new CustomFieldApiOverlapForm(); |
| | | customFieldApiOverlapForm.setUserId(user.getId()); |
| | | customFieldApiOverlapForm.setIssueTypeId(issueForm.getIssueTypeId()); |
| | |
| | | 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, 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()); |
| | | |
| | |
| | | @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); |
| | |
| | | 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); |
| | |
| | | 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; |