OWL ITS + 탐지시스템(인터넷 진흥원)
- api 이슈 추가시 두가지 이슈 자동 추가(중복된 이슈가 없을 경우) 하도록 수정
6개 파일 변경됨
107 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/IssueService.java 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 34 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/ApiController.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/CustomFieldApiOverlapForm.java 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/IssueApiForm.java 28 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/IssueForm.java 27 ●●●● 패치 | 보기 | 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;
    }