OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2022-03-02 20d2fc7868921587e7a0aafd0dc00690507bb6e9
- 이슈 엑셀 임포트 속도 개선
3개 파일 변경됨
82 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 74 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/issue-template.xml 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueImportExcel.controller.js 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -3134,6 +3134,9 @@
            Workbook workbook;
            IssueType issueType = new IssueType();
            Workflow workflow = new Workflow();
            workbook = WorkbookFactory.create(multipartFile.getInputStream());
            Sheet sheet = workbook.getSheetAt(0);
            int lastRowNum = sheet.getLastRowNum() + 1;
@@ -3173,6 +3176,15 @@
                            companyFieldMaps, ispFieldMaps, hostingFieldMaps, headers);
                    ConvertUtil.copyProperties(issueForm, newIssueForm);
                    Project project = this.projectService.getProject(newIssueForm.getProjectId());
                    Long issueNumber = this.issueNumberGeneratorService.generateIssueNumber(project);
                    newIssueForm.setIssueNumber(issueNumber);
                    issueType = this.issueTypeService.getIssueType(newIssueForm.getIssueTypeId());
                    workflow = issueType.getWorkflow();
                    IssueStatus issueStatus = this.issueStatusService.findByIssueStatusTypeIsReady(workflow);
                    newIssueForm.setIssueStatusId(issueStatus.getId());
                    issueForms.add(newIssueForm);
                }
            }
@@ -3182,37 +3194,17 @@
            }
            //  1.176
            //  이슈 등록
//            this.issueMapper.insertBatch(issueForms);
            this.issueMapper.insertBatch(issueForms);
            for (IssueForm saveIssueForm : issueForms) {
                Issue issue = new Issue();
                ConvertUtil.copyProperties(saveIssueForm, issue);
                IssueType issueType = this.issueTypeService.getIssueType(saveIssueForm.getIssueTypeId());
                Workflow workflow = issueType.getWorkflow();
                Project project = this.projectService.getProject(saveIssueForm.getProjectId());
                Long issueNumber = this.issueNumberGeneratorService.generateIssueNumber(project);
                IssueStatus issueStatus = this.issueStatusService.findByIssueStatusTypeIsReady(workflow);
                issue.setPriority(this.priorityService.getPriority(saveIssueForm.getPriorityId()));
                issue.setSeverity(this.severityService.getSeverity(saveIssueForm.getSeverityId()));
                issue.setIssueStatus(issueStatus);
                issue.setIssueType(issueType);
                issue.setProject(project);
                issue.setIssueNumber(issueNumber);
                if (saveIssueForm.getParentIssueId() != null && saveIssueForm.getParentIssueId() > -1) {
                    issue.setParentIssue(this.getIssue(saveIssueForm.getParentIssueId()));
                }
                issue = this.issueRepository.saveAndFlush(issue);
                if (issueForm.getInheritYn() != null && issueForm.getInheritYn() && issue.getParentIssue() != null) {
                if (issueForm.getInheritYn() != null && issueForm.getInheritYn() && issueForm.getParentIssueId() != null) {
                    Issue parentIssue = this.getIssue(issueForm.getParentIssueId());
                    //  상위이슈의 파트너 정보 상속
                    this.inheritPartners(issue, issue.getParentIssue());
                    this.inheritPartners(issue, parentIssue);
                }
                saveIssueForm.setId(issue.getId());
@@ -3221,6 +3213,7 @@
                issueDepartment.setIssue(issue);
                issueDepartment.setWorkspace(workspace);
                List<Long> departmentsIds = this.workflowDepartmentService.findFirstDepartmentIds(workflow);
                if (departmentsIds != null && departmentsIds.size() > 0) {
                    for (Long departmentId : departmentsIds) {
@@ -3228,8 +3221,6 @@
                    }
                    issue.addIssueDepartment(issueDepartment);
                }
                saveIssueForm.setIssueStatusId(issueStatus.getId());
                this.setIssuePartners(saveIssueForm, issue);
            }
@@ -3272,14 +3263,11 @@
     * @param issueForm IssueForm
     */
    private void setIssuePartners(IssueForm issueForm, Issue issue) {
        IssueCompany issueCompany = new IssueCompany();
        IssueIsp issueIsp = new IssueIsp();
        IssueHosting issueHosting = new IssueHosting();
        //issueCompany 등록
        if (issueForm.getIssueCompanyFields() != null && issueForm.getIssueCompanyFields().size() > 0) {
            for (Map<String, Object> issueCompanyMap : issueForm.getIssueCompanyFields()) {
                CompanyField companyField =  ConvertUtil.convertMapToClass(issueCompanyMap, CompanyField.class);
                issueCompany = ConvertUtil.convertMapToClass(issueCompanyMap, IssueCompany.class, "id");
                IssueCompany issueCompany = ConvertUtil.convertMapToClass(issueCompanyMap, IssueCompany.class, "id", "registerDate", "modifyDate");
                issueCompany.setCompanyField(companyField);
                issueCompany.setIssue(issue);
                this.issueCompanyRepository.saveAndFlush(issueCompany);
@@ -3289,7 +3277,7 @@
                    //  업체의 ISP가 있는 경우 issueISP 등록
                    if (companyField.getIspId() != null && companyField.getIspId() != -1) {
                        IspField ispField = this.ispFieldService.getIsp(companyField.getIspId());
                        issueIsp = ConvertUtil.copyProperties(ispField, IssueIsp.class, "id");
                        IssueIsp issueIsp = ConvertUtil.copyProperties(ispField, IssueIsp.class, "id", "registerDate", "modifyDate");
                        issueIsp.setIspField(ispField);
                        issueIsp.setIssue(issue);
                        this.issueIspRepository.saveAndFlush(issueIsp);
@@ -3300,7 +3288,7 @@
                    //  업체의 호스팅이 있는 경우 issueHosting 등록
                    if (companyField.getHostingId() != null && companyField.getHostingId() != -1) {
                        HostingField hostingField = this.hostingFieldService.getHosting(companyField.getHostingId());
                        issueHosting = ConvertUtil.copyProperties(hostingField, IssueHosting.class, "id");
                        IssueHosting issueHosting = ConvertUtil.copyProperties(hostingField, IssueHosting.class, "id", "registerDate", "modifyDate");
                        issueHosting.setHostingField(hostingField);
                        issueHosting.setIssue(issue);
                        this.issueHostingRepository.saveAndFlush(issueHosting);
@@ -3311,7 +3299,7 @@
        //issueIsp 등록
        if (issueForm.getIssueIspFields() != null && issueForm.getIssueIspFields().size() > 0) {
            for (Map<String, Object> issueIspMap : issueForm.getIssueIspFields()) {
                issueIsp = ConvertUtil.convertMapToClass(issueIspMap, IssueIsp.class, "id");
                IssueIsp issueIsp = ConvertUtil.convertMapToClass(issueIspMap, IssueIsp.class, "id", "registerDate", "modifyDate");
                IspField ispField = ConvertUtil.convertMapToClass(issueIspMap, IspField.class);
                issueIsp.setIspField(ispField);
                issueIsp.setIssue(issue);
@@ -3321,7 +3309,7 @@
        //issueHosting 등록
        if (issueForm.getIssueHostingFields() != null && issueForm.getIssueHostingFields().size() > 0) {
            for (Map<String, Object> issueHostingMap : issueForm.getIssueHostingFields()) {
                issueHosting = ConvertUtil.convertMapToClass(issueHostingMap, IssueHosting.class, "id");
                IssueHosting issueHosting = ConvertUtil.convertMapToClass(issueHostingMap, IssueHosting.class, "id", "registerDate", "modifyDate");
                HostingField hostingField = ConvertUtil.convertMapToClass(issueHostingMap, HostingField.class);
                issueHosting.setHostingField(hostingField);
                issueHosting.setIssue(issue);
@@ -3429,6 +3417,19 @@
            }
            //  엑셀에 업체명을 입력하지 않았을 경우 같은 도메인 업체 찾기
            this.findPartnerByDomain(issueForm);
        }
        if (issueCustomFieldValueMaps.size() > 0) {
            this.issueMapper.insertIssueCustomFieldValueBatch(issueCustomFieldValueMaps);
        }
    }
    /**
     * 엑셀에 업체명을 입력하지 않았을 경우 같은 도메인 업체 찾기
     * @param issueForm IssueForm
     */
    private void findPartnerByDomain(IssueForm issueForm) {
            if (issueForm.getIssueCompanyFields() == null || issueForm.getIssueCompanyFields().size() < 1) {
                // 같은 도메인 업체 찾기
                IssueForm partners = this.findCompanyField(issueForm);
@@ -3461,11 +3462,6 @@
                        this.issueHostingRepository.saveAndFlush(issueHosting);
                    }
                }
            }
        }
        if (issueCustomFieldValueMaps.size() > 0) {
            this.issueMapper.insertIssueCustomFieldValueBatch(issueCustomFieldValueMaps);
        }
    }
src/main/resources/mybatis/query-template/issue-template.xml
@@ -640,13 +640,13 @@
    <insert id="insertBatch" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
        INSERT INTO issue(title, description, issue_number, project_id, issue_type_id, priority_id, severity_id,
        start_date, complete_date,
        start_date, complete_date, parent_issue_id,
        issue_status_id, register_id, modify_id, register_date, modify_date)
        VALUES
        <foreach collection="list" item="issueForm" index="index" separator="," open="" close="">
            (#{issueForm.title}, #{issueForm.description}, #{issueForm.issueNumber}, #{issueForm.projectId},
            #{issueForm.issueTypeId}, #{issueForm.priorityId}, #{issueForm.severityId}, #{issueForm.startDate},
            #{issueForm.completeDate},
            #{issueForm.completeDate}, #{issueForm.parentIssueId},
            #{issueForm.issueStatusId}, #{issueForm.registerId}, #{issueForm.registerId}, NOW(), NOW())
        </foreach>
    </insert>
src/main/webapp/scripts/app/issue/issueImportExcel.controller.js
@@ -173,7 +173,7 @@
                                        projectId : $scope.vm.form.projects[0].id,
                                        issueTypeId : $scope.vm.form.issueTypeId,
                                        parentIssueId : (function () {
                                            let id = -1;
                                            let id = null;
                                            if ($rootScope.isDefined($scope.vm.form.issues)) {
                                                if ($rootScope.isDefined($scope.vm.form.issues[0])) {
                                                    id = $scope.vm.form.issues[0].id;
@@ -210,7 +210,7 @@
                                    projectId : $scope.vm.form.projects[0].id,
                                    issueTypeId : $scope.vm.form.issueTypeId,
                                    parentIssueId : (function () {
                                        let id = -1;
                                        let id = null;
                                        if ($rootScope.isDefined($scope.vm.form.issues)) {
                                            if ($rootScope.isDefined($scope.vm.form.issues[0])) {
                                                id = $scope.vm.form.issues[0].id;