From 93198fd2adef50d63862e603476a1d4a28db37ab Mon Sep 17 00:00:00 2001 From: jhjang <jhjang@maprex.co.kr> Date: 화, 07 12월 2021 13:29:21 +0900 Subject: [PATCH] - api 이슈 추가시 두가지 이슈 자동 추가(중복된 이슈가 없을 경우) 하도록 수정 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 34 ++++++++++++---- src/main/java/kr/wisestone/owl/service/IssueService.java | 3 + src/main/java/kr/wisestone/owl/web/controller/ApiController.java | 9 +++- src/main/java/kr/wisestone/owl/web/form/IssueApiForm.java | 28 +++++++------ src/main/java/kr/wisestone/owl/web/form/IssueForm.java | 27 +++++++++++-- src/main/java/kr/wisestone/owl/web/form/CustomFieldApiOverlapForm.java | 6 +++ 6 files changed, 76 insertions(+), 31 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/service/IssueService.java b/src/main/java/kr/wisestone/owl/service/IssueService.java index 4cafaee..b5e580f 100644 --- a/src/main/java/kr/wisestone/owl/service/IssueService.java +++ b/src/main/java/kr/wisestone/owl/service/IssueService.java @@ -31,7 +31,8 @@ Issue addRelIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles); - Issue addApiIssue(IssueApiForm issueApiForm); + List<Issue> addApiIssue(IssueApiForm issueApiForm) throws CloneNotSupportedException; + List<Issue> modifyIssue(IssueApiForm issueApiForm, List<MultipartFile> files); List<IssueVo> findIssue(IssueApiForm issueApiform); 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 bb52d12..ff02b9d 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -214,7 +214,6 @@ } } - // �봽濡쒖젥�듃 �엯�젰 Project project = issueType.getProject(); if (project == null){ @@ -240,7 +239,14 @@ 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()); @@ -276,19 +282,29 @@ // 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 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) { diff --git a/src/main/java/kr/wisestone/owl/web/controller/ApiController.java b/src/main/java/kr/wisestone/owl/web/controller/ApiController.java index f056a56..7033cf2 100644 --- a/src/main/java/kr/wisestone/owl/web/controller/ApiController.java +++ b/src/main/java/kr/wisestone/owl/web/controller/ApiController.java @@ -18,6 +18,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; import java.util.HashMap; +import java.util.List; import java.util.Map; @Controller @@ -42,7 +43,7 @@ @RequestMapping(value = "api/issue", method = RequestMethod.POST) public @ResponseBody - Map<String, Object> addIssue(MultipartHttpServletRequest request) throws OwlRuntimeException { + Map<String, Object> addIssue(MultipartHttpServletRequest request) throws OwlRuntimeException, CloneNotSupportedException { Map<String, Object> resJsonData = new HashMap<>(); IssueApiForm issueForm = IssueApiForm.make(ConvertUtil.convertJsonToMap(request.getParameter(Constants.REQ_KEY_CONTENT)), request.getFiles("file")); @@ -50,9 +51,11 @@ throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_PARAMETER_ERROR)); } if (issueForm.getApiType() == IssueApiForm.ApiType.add) { - Issue issue = this.issueService.addApiIssue(issueForm); + List<Issue> issues = this.issueService.addApiIssue(issueForm); // 踰꾩쟾 �깮�꽦 - this.issueService.addIssueVersion(issue.getId()); + for (Issue issue : issues) { + this.issueService.addIssueVersion(issue.getId()); + } } else { this.issueService.modifyIssue(issueForm, request.getFiles("file")); } diff --git a/src/main/java/kr/wisestone/owl/web/form/CustomFieldApiOverlapForm.java b/src/main/java/kr/wisestone/owl/web/form/CustomFieldApiOverlapForm.java index 95f3920..377c8a7 100644 --- a/src/main/java/kr/wisestone/owl/web/form/CustomFieldApiOverlapForm.java +++ b/src/main/java/kr/wisestone/owl/web/form/CustomFieldApiOverlapForm.java @@ -58,4 +58,10 @@ public void setCustomFieldIds(List<Long> customFieldIds) { this.customFieldIds = customFieldIds; } + + public void addCustomFieldId(Long customFieldId) { + if (this.customFieldIds != null) { + this.customFieldIds.add(customFieldId); + } + } } diff --git a/src/main/java/kr/wisestone/owl/web/form/IssueApiForm.java b/src/main/java/kr/wisestone/owl/web/form/IssueApiForm.java index 93d7e48..698375e 100644 --- a/src/main/java/kr/wisestone/owl/web/form/IssueApiForm.java +++ b/src/main/java/kr/wisestone/owl/web/form/IssueApiForm.java @@ -1,12 +1,8 @@ package kr.wisestone.owl.web.form; import com.google.common.collect.Lists; -import kr.wisestone.owl.constant.MsgConstants; -import kr.wisestone.owl.domain.IssueCustomFieldValue; -import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.util.MapUtil; -import kr.wisestone.owl.vo.CustomFieldVo; import org.springframework.web.multipart.MultipartFile; import java.util.*; @@ -33,8 +29,8 @@ private List<DepartmentForm> departments = Lists.newArrayList(); private List<IssueCustomFieldValueForm> issueCustomFieldValues = Lists.newArrayList(); private List<Map<String, Object>> CustomFieldValues = Lists.newArrayList(); -// private List<Map<String, Object>> files = Lists.newArrayList(); private List<MultipartFile> multipartFiles = Lists.newArrayList(); + private List<Long> useIssueCustomFieldIds = Lists.newArrayList(); // �궗�쐞�씪媛먯슜 �궗�슜�옄�븘�뱶媛� public IssueApiForm() { } @@ -203,14 +199,6 @@ this.apiType = apiType; } - // public List<Map<String, Object>> getFiles() { -// return files; -// } -// -// public void setFiles(List<Map<String, Object>> files) { -// this.files = files; -// } - public List<MultipartFile> getMultipartFiles() { return multipartFiles; } @@ -226,4 +214,18 @@ public void setIssueStatusId(Long issueStatusId) { this.issueStatusId = issueStatusId; } + + public List<Long> getUseIssueCustomFieldIds() { + return useIssueCustomFieldIds; + } + + public void setUseIssueCustomFieldIds(List<Long> useIssueCustomFieldIds) { + this.useIssueCustomFieldIds = useIssueCustomFieldIds; + } + + public void addUseIssueCustomFieldId(Long customFieldId) { + if (this.useIssueCustomFieldIds != null) { + this.useIssueCustomFieldIds.add(customFieldId); + } + } } diff --git a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java index 482f023..f5f185d 100644 --- a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java +++ b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java @@ -1,20 +1,16 @@ package kr.wisestone.owl.web.form; import com.google.common.collect.Lists; -import kr.wisestone.owl.domain.enumType.IssueModifyType; import kr.wisestone.owl.util.ConvertUtil; -import kr.wisestone.owl.util.DateUtil; import kr.wisestone.owl.util.MapUtil; -import org.springframework.util.StringUtils; -import java.util.Date; import java.util.List; import java.util.Map; /** * Created by wisestone on 2018-01-03. */ -public class IssueForm { +public class IssueForm implements Cloneable { private Long id; @@ -48,6 +44,11 @@ private String isApi; public IssueForm() { + } + + @Override + public IssueForm clone() throws CloneNotSupportedException { + return (IssueForm) super.clone(); } public static IssueForm make(Map<String, Object> params) { @@ -129,6 +130,22 @@ return form; } + // 以묐났媛믪쑝濡� �궗�슜�븯�뒗 �궗�슜�옄�젙�쓽�븘�뱶留� �떎�떆 �꽕�젙 + public void setUseIssueCustomFields(List<Long> useIssueCustomFields) { + List<Map<String, Object>> results = Lists.newArrayList(); + + for (Map<String, Object> customValue : this.getIssueCustomFields()) { + for (Long customFieldId : useIssueCustomFields) { +// Map<String, Object> customFieldVo = (Map<String, Object>)MapUtil.getObject(customValue, "customFieldVo"); + if (customFieldId.equals(MapUtil.getLong(customValue, "customFieldId"))) { + results.add(customValue); + } + } + } + + this.setIssueCustomFields(results); + } + public Long getId() { return id; } -- Gitblit v1.8.0