OWL ITS + 탐지시스템(인터넷 진흥원)
- 엑셀 임포트시 워크플로우에 담당부서가 없을경우도 등록 가능하게 수정
- 엑셀 임포트시 상위이슈 선택 안해도 등록 가능
3개 파일 변경됨
41 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 26 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueImportExcel.controller.js 12 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueExcelImport.html 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -2966,7 +2966,7 @@
            Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());  //  이슈를 넣으려는 업무 공간
            //  이슈의 주요 속성을 map 에 저장하여 엑셀 import 에서 지정한 대상(이슈 속성)을 빠르게 찾을 수 있게 한다.
            this.IssueAttributeMapToList(priorityMaps, severityMaps, departmentMaps, customFieldMaps, issueTypeCustomFieldMaps);
            this.IssueAttributeMapToList(issueForm, priorityMaps, severityMaps, departmentMaps, customFieldMaps, issueTypeCustomFieldMaps);
            //  0.237 - 0.230
            List<IssueForm> issueForms = Lists.newArrayList();
@@ -3047,7 +3047,9 @@
                issue.setIssueType(issueType);
                issue.setProject(project);
                issue.setIssueNumber(issueNumber);
                issue.setParentIssue(this.getIssue(saveIssueForm.getParentIssueId()));
                if (saveIssueForm.getParentIssueId() != null && saveIssueForm.getParentIssueId() > -1) {
                    issue.setParentIssue(this.getIssue(saveIssueForm.getParentIssueId()));
                }
                issue = this.issueRepository.saveAndFlush(issue);
@@ -3058,10 +3060,12 @@
                issueDepartment.setWorkspace(workspace);
                List<Long> departmentsIds = this.workflowDepartmentService.findFirstDepartmentIds(workflow);
                for (Long departmentId : departmentsIds) {
                    issueDepartment.setDepartment(this.departmentService.getDepartment(departmentId));
                if (departmentsIds != null && departmentsIds.size() > 0) {
                    for (Long departmentId : departmentsIds) {
                        issueDepartment.setDepartment(this.departmentService.getDepartment(departmentId));
                    }
                    issue.addIssueDepartment(issueDepartment);
                }
                issue.addIssueDepartment(issueDepartment);
                saveIssueForm.setIssueStatusId(issueStatus.getId());
            }
@@ -3206,8 +3210,16 @@
    }
    //  이슈의 주요 속성을 map 에 저장하여 엑셀 import 에서 지정한 대상(이슈 속성)을 빠르게 찾을 수 있게 한다.
    private void IssueAttributeMapToList(Map<String, Priority> priorityMaps, Map<String, Severity> severityMaps,
    private void IssueAttributeMapToList(IssueForm issueForm, Map<String, Priority> priorityMaps, Map<String, Severity> severityMaps,
                                         Map<String, DepartmentVo> departmentMaps, Map<String, CustomField> customFieldMaps,Map<String, Long> issueTypeCustomFieldMaps) {
        Project project = this.projectService.getProject(issueForm.getProjectId());
        for (IssueTypeCustomField issueTypeCustomField : project.getIssueTypeCustomFields()) {
            //  빠르게 찾기 위해 이슈 타입 아이디 + 사용자 정의 필드 아이디를 키로 한다.
            String makeKey = issueTypeCustomField.getIssueType().getId().toString() + issueTypeCustomField.getCustomField().getId().toString();
            issueTypeCustomFieldMaps.put(makeKey, issueTypeCustomField.getId());
        }
        //  우선순위를 바로 찾을 수 있게 준비
        List<Priority> priorities = this.priorityService.findByWorkspaceId();
@@ -3392,7 +3404,7 @@
            //  값이 공백이면 중지
            String cellValue = CommonUtil.convertExcelStringToCell(cell);
            if (StringUtils.isEmpty(cellValue)) {
            if (StringUtils.isEmpty(cellValue) || !cell.toString().equals("null")) {
                return;
            }
src/main/webapp/scripts/app/issue/issueImportExcel.controller.js
@@ -94,9 +94,9 @@
                        return false;
                    }
                    if ($scope.vm.form.issues == null || $scope.vm.form.issues.length === 0) {
                    /*if ($scope.vm.form.issues == null || $scope.vm.form.issues.length === 0) {
                        return false;
                    }
                    }*/
                    if ($scope.vm.form.file.length < 1) {
                        return true;
@@ -117,7 +117,13 @@
                            content : {
                                projectId : $scope.vm.form.projects[0].id,
                                issueTypeId : $scope.vm.form.issueTypeId,
                                parentIssueId : $scope.vm.form.issues[0].id
                                parentIssueId : (function () {
                                    var id = -1;
                                    if ($scope.vm.form.issues != null) {
                                        id = $scope.vm.form.issues[0].id
                                    }
                                    return id;
                                })()
                            }
                        },
                        fileFormDataName : "file"
src/main/webapp/views/issue/issueExcelImport.html
@@ -26,8 +26,7 @@
                                                type : '', maxlength : 200, autoResize : true, stopRemoveBodyEvent : true }"></js-autocomplete-single>
                    </div>
                    <label><span translate="issue.parentIssue">상위 이슈</span> <code
                            class="highlighter-rouge">*</code></label>
                    <label><span translate="issue.parentIssue">상위 이슈</span></label>
                    <js-autocomplete-single data-input-name="issue"
                                            selected-model="vm.form.issues"
                                            search="vm.issueName"