From 20d2fc7868921587e7a0aafd0dc00690507bb6e9 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 수, 02 3월 2022 17:11:32 +0900
Subject: [PATCH] - 이슈 엑셀 임포트 속도 개선

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java |  132 +++++++++++++++++++++----------------------
 1 files changed, 64 insertions(+), 68 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
index b79b302..97b799f 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/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,24 +3263,21 @@
      * @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);
 
-                //  �궗�슜�옄媛� ISP瑜� 吏곸젒 �엯�젰�븯吏� �븡�븯�쓣 寃쎌슦 �뾽泥댁뿉 �벑濡앸릺�뼱�엳�뒗 ISP �꽕�젙 
+                //  �궗�슜�옄媛� ISP瑜� 吏곸젒 �엯�젰�븯吏� �븡�븯�쓣 寃쎌슦 �뾽泥댁뿉 �벑濡앸릺�뼱�엳�뒗 ISP �꽕�젙
                 if (issueForm.getIssueIspFields() == null || issueForm.getIssueIspFields().size() < 1) {
                     //  �뾽泥댁쓽 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,39 +3417,7 @@
             }
 
             //  �뿊���뿉 �뾽泥대챸�쓣 �엯�젰�븯吏� �븡�븯�쓣 寃쎌슦 媛숈� �룄硫붿씤 �뾽泥� 李얘린
-            if (issueForm.getIssueCompanyFields() == null || issueForm.getIssueCompanyFields().size() < 1) {
-                // 媛숈� �룄硫붿씤 �뾽泥� 李얘린
-                IssueForm partners = this.findCompanyField(issueForm);
-                Issue issue = this.findOne(issueForm.getId());
-                if (partners.getIssueCompanyFields() != null && partners.getIssueCompanyFields().size() > 0) {
-                    for (Map<String, Object> company : partners.getIssueCompanyFields()) {
-                        IssueCompany issueCompany = ConvertUtil.convertMapToClass(company, IssueCompany.class);
-                        CompanyField companyField = ConvertUtil.convertMapToClass(company, CompanyField.class);
-                        issueCompany.setCompanyField(companyField);
-                        issueCompany.setIssue(issue);
-
-                        this.issueCompanyRepository.saveAndFlush(issueCompany);
-                    }
-                }
-                if (partners.getIssueIspFields() != null && partners.getIssueIspFields().size() > 0) {
-                    for (Map<String, Object> isp : partners.getIssueIspFields()) {
-                        IssueIsp issueIsp = ConvertUtil.convertMapToClass(isp, IssueIsp.class);
-                        IspField ispField = ConvertUtil.convertMapToClass(isp, IspField.class);
-                        issueIsp.setIspField(ispField);
-                        issueIsp.setIssue(issue);
-                        this.issueIspRepository.saveAndFlush(issueIsp);
-                    }
-                }
-                if (partners.getIssueHostingFields() != null && partners.getIssueHostingFields().size() > 0) {
-                    for (Map<String, Object> hosting : partners.getIssueHostingFields()) {
-                        IssueHosting issueHosting = ConvertUtil.convertMapToClass(hosting, IssueHosting.class);
-                        HostingField hostingField = ConvertUtil.convertMapToClass(hosting, HostingField.class);
-                        issueHosting.setHostingField(hostingField);
-                        issueHosting.setIssue(issue);
-                        this.issueHostingRepository.saveAndFlush(issueHosting);
-                    }
-                }
-            }
+            this.findPartnerByDomain(issueForm);
         }
 
         if (issueCustomFieldValueMaps.size() > 0) {
@@ -3469,6 +3425,46 @@
         }
     }
 
+    /**
+     * �뿊���뿉 �뾽泥대챸�쓣 �엯�젰�븯吏� �븡�븯�쓣 寃쎌슦 媛숈� �룄硫붿씤 �뾽泥� 李얘린
+     * @param issueForm IssueForm
+     */
+    private void findPartnerByDomain(IssueForm issueForm) {
+        if (issueForm.getIssueCompanyFields() == null || issueForm.getIssueCompanyFields().size() < 1) {
+            // 媛숈� �룄硫붿씤 �뾽泥� 李얘린
+            IssueForm partners = this.findCompanyField(issueForm);
+            Issue issue = this.findOne(issueForm.getId());
+            if (partners.getIssueCompanyFields() != null && partners.getIssueCompanyFields().size() > 0) {
+                for (Map<String, Object> company : partners.getIssueCompanyFields()) {
+                    IssueCompany issueCompany = ConvertUtil.convertMapToClass(company, IssueCompany.class);
+                    CompanyField companyField = ConvertUtil.convertMapToClass(company, CompanyField.class);
+                    issueCompany.setCompanyField(companyField);
+                    issueCompany.setIssue(issue);
+
+                    this.issueCompanyRepository.saveAndFlush(issueCompany);
+                }
+            }
+            if (partners.getIssueIspFields() != null && partners.getIssueIspFields().size() > 0) {
+                for (Map<String, Object> isp : partners.getIssueIspFields()) {
+                    IssueIsp issueIsp = ConvertUtil.convertMapToClass(isp, IssueIsp.class);
+                    IspField ispField = ConvertUtil.convertMapToClass(isp, IspField.class);
+                    issueIsp.setIspField(ispField);
+                    issueIsp.setIssue(issue);
+                    this.issueIspRepository.saveAndFlush(issueIsp);
+                }
+            }
+            if (partners.getIssueHostingFields() != null && partners.getIssueHostingFields().size() > 0) {
+                for (Map<String, Object> hosting : partners.getIssueHostingFields()) {
+                    IssueHosting issueHosting = ConvertUtil.convertMapToClass(hosting, IssueHosting.class);
+                    HostingField hostingField = ConvertUtil.convertMapToClass(hosting, HostingField.class);
+                    issueHosting.setHostingField(hostingField);
+                    issueHosting.setIssue(issue);
+                    this.issueHostingRepository.saveAndFlush(issueHosting);
+                }
+            }
+        }
+    }
+
     //  �씠�뒋�쓽 二쇱슂 �냽�꽦�쓣 map �뿉 ���옣�븯�뿬 �뿊�� import �뿉�꽌 吏��젙�븳 ���긽(�씠�뒋 �냽�꽦)�쓣 鍮좊Ⅴ寃� 李얠쓣 �닔 �엳寃� �븳�떎.
     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,

--
Gitblit v1.8.0