src/main/java/kr/wisestone/owl/service/IssueService.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/web/controller/ApiController.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/web/form/CustomFieldApiOverlapForm.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/web/form/IssueApiForm.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/web/form/IssueForm.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 |
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); 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) { 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")); } 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); } } } 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); } } } 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; }