From 4519926075b2db1222e0fae91f55607e0c2d3a44 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 금, 07 1월 2022 14:10:01 +0900
Subject: [PATCH] - 이슈 엑셀 임포트시에 isp 검색한 데이터 가져오도록 수정 및 기간 미입력 시에도 추가 되도록 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java |  119 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 79 insertions(+), 40 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 7be00d2..935974a 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -16,10 +16,7 @@
 import kr.wisestone.owl.mapper.IssueMapper;
 import kr.wisestone.owl.mapper.IssueRelationMapper;
 import kr.wisestone.owl.mapper.ProjectMapper;
-import kr.wisestone.owl.repository.IssueRelationRepository;
-import kr.wisestone.owl.repository.IssueRepository;
-import kr.wisestone.owl.repository.UserDepartmentRepository;
-import kr.wisestone.owl.repository.WorkflowDepartmentRepository;
+import kr.wisestone.owl.repository.*;
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.*;
 import kr.wisestone.owl.util.DateUtil;
@@ -181,6 +178,15 @@
     private IssueMapper issueMapper;
 
     @Autowired
+    private IssueCompanyRepository issueCompanyRepository;
+
+    @Autowired
+    private IssueIspRepository issueIspRepository;
+
+    @Autowired
+    private IssueHostingRepository issueHostingRepository;
+
+    @Autowired
     private ExcelConditionCheck excelConditionCheck;
 
     @Autowired
@@ -328,9 +334,8 @@
             List<Map<String, Object>> issueHostingFields = Lists.newArrayList();
 
             for (Map<String, Object> issueCustomField : issueForm.getIssueCustomFields()) {
-                int customFieldId = (Integer) issueCustomField.get("customFieldId");
-                Long customId = (long) customFieldId;
-                CustomField customField = this.customFieldService.getCustomField(customId);
+                Long customFieldId = MapUtil.getLong(issueCustomField, "customFieldId");
+                CustomField customField = this.customFieldService.getCustomField(customFieldId);
                 if(customField != null && customField.getCustomFieldType().toString().equals("SITE") && customField.getName().equals("�룄硫붿씤")) {
                     String useValue = issueCustomField.get("useValue").toString();
                     if(companyFields != null && companyFields.size() > 0) {
@@ -1472,17 +1477,22 @@
     //  �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
     @Override
     @Transactional(readOnly = true)
-    public void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition, Pageable relPageable, Pageable downPageable) {
+    public void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition) {
         IssueVo issueVo = new IssueVo();
+        Pageable relPageable = issueCondition.getRelPageable();
+        Pageable downPageable = issueCondition.getDownPageable();
 
         if (issueCondition.getId() != null) {
             Issue issue = this.getIssue(issueCondition.getId());
             issueVo = ConvertUtil.copyProperties(issue, IssueVo.class);
             User user = this.webAppUtil.getLoginUserObject();
 
-            issueVo.setRelPage(relPageable.getPageNumber() * relPageable.getPageSize());
-            issueVo.setRelPageSize(relPageable.getPageSize());
 
+            issueVo.setRelPageNumber(relPageable.getPageNumber());
+            issueVo.setRelPageSize(relPageable.getPageSize());
+            issueVo.setRelPage(relPageable.getPageNumber() * relPageable.getPageSize());
+
+            issueVo.setDownPageNumber(downPageable.getPageNumber());
             issueVo.setDownPage(downPageable.getPageNumber() * downPageable.getPageSize());
             issueVo.setDownPageSize(downPageable.getPageSize());
 
@@ -1510,19 +1520,10 @@
                     break;
             }
         }
-        Long relTotalCount = issueVo.getRelTotalCount();
-        int relTotalPage = issueVo.getRelTotalPage();
-
-        Long downTotalCount = issueVo.getDownTotalCount();
-        int downTotalPage = issueVo.getDownTotalPage();
         //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_DETAIL));
 
         resJsonData.put(Constants.RES_KEY_CONTENTS, issueVo);
-        resJsonData.put(Constants.REQ_KEY_RELATION_ISSUE_PAGE_VO, new ResPage(relPageable.getPageNumber(), relPageable.getPageSize(),
-                relTotalPage, relTotalCount));
-        resJsonData.put(Constants.REQ_KEY_DOWN_ISSUE_PAGE_VO, new ResPage(downPageable.getPageNumber(), downPageable.getPageSize(),
-                downTotalPage, downTotalCount));
     }
 
     // �뀒�씠釉� �꽕�젙 �뀑�똿
@@ -1547,13 +1548,18 @@
 
     // �븯�쐞 �씠�뒋 �젙蹂대�� �뀑�똿�븳�떎
     private void setDownIssues(Issue issue, IssueVo issueVo) {
-        //List<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId());
-        int startPage = (int) Math.floor(issueVo.getDownPage()/issueVo.getDownPageSize());
-        Pageable pageable = PageRequest.of(startPage, issueVo.getDownPageSize());
-        Page<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId(), pageable);
-        issueVo.setDownTotalPage(downIssues.getTotalPages());
-        issueVo.setDownTotalCount(downIssues.getTotalElements());
+        Page<Issue> downIssues = null;
+
+        List<Issue> downIssueList = this.issueRepository.findByParentIssueId(issue.getId());
+        if(downIssueList != null && downIssueList.size() > 0) {
+            int startPage = (int) Math.floor(issueVo.getDownPage()/issueVo.getDownPageSize());
+            Pageable pageable = PageRequest.of(startPage, issueVo.getDownPageSize());
+            downIssues = this.issueRepository.findByParentIssueId(issue.getId(), pageable);
+        }
         if(downIssues != null){
+            issueVo.setDownTotalPage(downIssues.getTotalPages());
+            issueVo.setDownTotalCount(downIssues.getTotalElements());
+
             List<IssueVo> resultList = new ArrayList<>();
             for(Issue downIssue : downIssues){
                 IssueVo downIssueVo = ConvertUtil.copyProperties(downIssue, IssueVo.class);
@@ -1654,14 +1660,14 @@
     // �뿰愿� �씠�뒋 �젙蹂대�� �뀑�똿�븳�떎
     private void setRelationIssue(Issue issue, IssueVo issueVo) {
         //Set<IssueRelation> issueRelations = issue.getIssueRelations();
+
         List<Map<String, Object>> results = this.issueRelationMapper.findByIssueId(issueVo);
         Long totalCount = this.issueRelationMapper.count(issueVo);
 
-        int totalPage = (int) Math.ceil((totalCount - 1) / issueVo.getRelPageSize()) + 1;
-        issueVo.setRelTotalPage(totalPage);
-        issueVo.setRelTotalCount(totalCount);
-
         if (issue != null && issueVo != null && results.size() > 0) {
+            int totalPage = (int) Math.ceil((totalCount - 1) / issueVo.getRelPageSize()) + 1;
+            issueVo.setRelTotalPage(totalPage);
+            issueVo.setRelTotalCount(totalCount);
             for (Map<String, Object> result : results) {
                 IssueRelationVo issueRelationVo = ConvertUtil.convertMapToClass(result, IssueRelationVo.class);
                 Issue relationIssue = this.findOne(issueRelationVo.getId());
@@ -2970,7 +2976,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();
@@ -3051,7 +3057,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);
 
@@ -3062,10 +3070,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());
             }
@@ -3088,8 +3098,6 @@
             //  �씠�뒋 �궗�슜�옄 �젙�쓽 媛� �븘�뱶 踰뚰겕 �벑濡�
             this.bulkInsertIssueCustomFieldValue(issueForms, issueTypeCustomFieldMaps);
             //  3.628 - 3.445
-
-            // �뾽泥�,ISP,�샇�뒪�똿 異붽�
 
             /*serviceStart.stop();
             log.debug("2李� ���옣 �떆媛� : " + serviceStart.getTime());*/
@@ -3202,6 +3210,29 @@
                 issueCustomField.put("registerId", this.webAppUtil.getLoginId());
                 issueCustomFieldValueMaps.add(issueCustomField);
             }
+            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);
+                    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);
+                    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);
+                    issueHosting.setIssue(issue);
+                    this.issueHostingRepository.saveAndFlush(issueHosting);
+                }
+            }
         }
 
         if (issueCustomFieldValueMaps.size() > 0) {
@@ -3210,8 +3241,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();
@@ -3274,13 +3313,13 @@
                     break;*/
                 case 4:
                     //  �떆�옉�씪�쓣 IssueForm �뿉 ���옣�븳�떎.
-                    if (cell != null) {
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
                         this.setIssueFormPeriod(cell, issueForm, true, rowIndex);
                     }
                     break;
                 case 5:
                     //  醫낅즺�씪�쓣 IssueForm �뿉 ���옣�븳�떎.
-                    if (cell != null) {
+                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
                         this.setIssueFormPeriod(cell, issueForm, false, rowIndex);
                     }
                     break;
@@ -3396,7 +3435,7 @@
 
             //  媛믪씠 怨듬갚�씠硫� 以묒�
             String cellValue = CommonUtil.convertExcelStringToCell(cell);
-            if (StringUtils.isEmpty(cellValue)) {
+            if (StringUtils.isEmpty(cellValue) || !cell.toString().equals("null")) {
                 return;
             }
 

--
Gitblit v1.8.0