OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2022-01-13 ebfd37816a332308519b30af5bfb017c5052be69
src/main/java/kr/wisestone/owl/web/controller/Api/ApiController.java
@@ -1,7 +1,9 @@
package kr.wisestone.owl.web.controller.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import kr.wisestone.owl.constant.Constants;
import kr.wisestone.owl.constant.MsgConstants;
import kr.wisestone.owl.domain.Issue;
import kr.wisestone.owl.exception.ApiParameterException;
@@ -46,11 +48,21 @@
     */
    @PostMapping(value = "/issue")
    @ApiOperation(value = "이슈 추가", notes = "새로운 이슈를 추가한다.")
    @ApiImplicitParam(name = "files", dataType = "file")
    @ApiImplicitParams(
            {
                    @ApiImplicitParam(name = "files", dataType = "file"),
                    @ApiImplicitParam(name = "token", paramType = "form"),
                    @ApiImplicitParam(name = "title", paramType = "form"),
                    @ApiImplicitParam(name = "description", paramType = "form"),
                    @ApiImplicitParam(name = "issueTypeId", paramType = "form"),
                    @ApiImplicitParam(name = "customFields", paramType = "form")
            }
    )
    @ResponseStatus(HttpStatus.CREATED)
    public
    @ResponseBody
    void addIssue(ApiIssueAddForm apiIssueAddForm, @RequestParam("files") List<MultipartFile> files)
    Map<String, Object> addIssue(ApiIssueAddForm apiIssueAddForm, @RequestParam("files") List<MultipartFile> files)
            throws OwlRuntimeException, CloneNotSupportedException {
        Map<String, Object> resJsonData = new HashMap<>();
@@ -66,9 +78,16 @@
        List<Issue> issues = this.issueService.addApiIssue(issueApiForm);
        //  버전 생성
        StringBuilder sb = new StringBuilder();
        for (Issue issue : issues) {
            this.issueService.addIssueVersion(issue.getId(), issue.getRegisterId());
            if (sb.length() > 0)
                sb.append(",");
            sb.append(issue.getProject().getProjectKey()).append("-").append(issue.getIssueNumber());
        }
        resJsonData.put(Constants.RES_KEY_MSG_SUCCESS, sb.toString());
        return resJsonData;
    }
    /**
@@ -78,23 +97,32 @@
     * @throws OwlRuntimeException 파라미터 오류시 발생
     * @throws CloneNotSupportedException 이슈 복사 시에 발생
     */
    @PutMapping(value = "/issue")
    @PostMapping(value = "/issue/status")
    @ApiOperation(value = "이슈 상태 수정", notes = "사용자 정의 필드가 동일한 기존 이슈를 변경한다.")
    @ResponseStatus(HttpStatus.OK)
    public
    @ResponseBody
    void modifyIssue(ApiIssueModifyForm apiIssueModifyForm) throws OwlRuntimeException, CloneNotSupportedException {
    Map<String, Object> modifyIssue(ApiIssueModifyForm apiIssueModifyForm) throws OwlRuntimeException, CloneNotSupportedException {
        Map<String, Object> resJsonData = new HashMap<>();
        IssueApiForm issueApiForm = ConvertUtil.copyProperties(apiIssueModifyForm, IssueApiForm.class);
        issueApiForm.parseCustomFields(apiIssueModifyForm.getCustomFields());
        issueApiForm.setApiType(IssueApiForm.ApiType.add);
        issueApiForm.setApiType(IssueApiForm.ApiType.modify);
        // 사용자 정의 필드가 없을 경우 검색을 할 수 없기 때문에 예외처리
        if (issueApiForm.getCustomFieldValues() == null || issueApiForm.getCustomFieldValues().size() == 0) {
            throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_CUSTOM_FIELD_NOT_EXIST));
        }
        this.issueService.modifyIssue(issueApiForm, new ArrayList<>());
        List<Issue> issues = this.issueService.modifyIssue(issueApiForm, new ArrayList<>());
        if (issues != null && issues.size() > 0) {
            StringBuilder sb = new StringBuilder();
            for (Issue issue : issues) {
                if (sb.length() > 0)
                    sb.append(",");
                sb.append(issue.getProject().getProjectKey()).append("-").append(issue.getIssueNumber());
            }
            resJsonData.put(Constants.RES_KEY_MSG_SUCCESS, sb.toString());
        }
        return resJsonData;
    }
}