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