From 612b5a21417f3c8dcaed84c1c0691dc883088f61 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 금, 18 2월 2022 18:04:14 +0900
Subject: [PATCH] 이슈 컬럼 정렬 진행

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java |  140 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 116 insertions(+), 24 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 144a7d1..0e8375e 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -47,9 +47,7 @@
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.regex.Pattern;
 
 import static kr.wisestone.owl.domain.enumType.CustomFieldType.*;
 
@@ -1276,6 +1274,9 @@
     private void setMapToIssueVo(List<Map<String, Object>> results, List<IssueVo> issueVos, IssueCondition issueCondition, User user) {
         for (Map<String, Object> result : results) {
             IssueVo issueVo = ConvertUtil.convertMapToClass(result, IssueVo.class);
+            if (MapUtil.getString(result, "inheritPartners") != null && MapUtil.getString(result, "inheritPartners").equals("1")) {
+                issueVo.setInheritPartners(true);
+            }
             issueVos.add(issueVo);
             issueCondition.addIssueIds(String.valueOf(issueVo.getId()));
         }
@@ -2127,6 +2128,15 @@
         //  HOSTING �젙蹂� ���옣
         this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
 
+        //  �뙆�듃�꼫�젙蹂� �븯�쐞�씠�뒋 �긽�냽
+        List<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId());
+        if (issueForm.getInheritYn() != null && issueForm.getInheritYn()
+                && downIssues != null && downIssues.size() > 0) {
+            for (Issue downIssue : downIssues) {
+                this.inheritPartners(downIssue, issue);
+            }
+        }
+
         //  �씠�뒋 �씠�젰 �벑濡�
         if (!StringUtils.isEmpty(detectIssueChange.toString())) {
             this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.MODIFY, detectIssueChange.toString());
@@ -2838,8 +2848,16 @@
 
         for (IssueVo issueVo : issueVos) {
             for (Map<String, Object> issueCustomFieldValue : issueCustomFieldValues) {
+                int count = 0;
+                Map<String, Object> useValues = new HashMap<>();
+
                 if (issueVo.getId().equals(MapUtil.getLong(issueCustomFieldValue, "issueId"))) {
                     IssueCustomFieldValueVo issueCustomFieldValueVo = new IssueCustomFieldValueVo();
+
+                    useValues.put("useValue"+count, MapUtil.getString(issueCustomFieldValue, "useValue"));
+                    useValues.put("customFieldId", MapUtil.getLong(issueCustomFieldValue, "customFieldId"));
+                    issueCustomFieldValueVo.setUseValues(useValues);
+
                     issueCustomFieldValueVo.setUseValue(MapUtil.getString(issueCustomFieldValue, "useValue"));
 
                     CustomFieldVo customFieldVo = new CustomFieldVo();
@@ -3126,7 +3144,7 @@
                 //  1踰� �뿤�뜑遺��꽣 �뜲�씠�꽣 �쁺�뿭
                 if (rowIndex > 1) {
                     //  �씠�뒋濡� �벑濡앺븯湲� �쐞�빐 IssueForm �뿉 �뜲�씠�꽣瑜� �뀑�똿�븳�떎.
-                    IssueForm newIssueForm = this.setIssueFormToExcelField(row, (rowIndex + 1), priorityMaps, severityMaps, departmentMaps, customFieldMaps,
+                    IssueForm newIssueForm = this.setIssueFormToExcelField(row, (rowIndex + 1), priorityMaps, severityMaps, customFieldMaps,
                             companyFieldMaps, ispFieldMaps, hostingFieldMaps, headers);
                     ConvertUtil.copyProperties(issueForm, newIssueForm);
 
@@ -3166,6 +3184,11 @@
                 }
 
                 issue = this.issueRepository.saveAndFlush(issue);
+
+                if (issueForm.getInheritYn() != null && issueForm.getInheritYn() && issue.getParentIssue() != null) {
+                    //  �긽�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂� �긽�냽
+                    this.inheritPartners(issue, issue.getParentIssue());
+                }
 
                 saveIssueForm.setId(issue.getId());
 
@@ -3470,23 +3493,38 @@
     }
 
     /**
+     * cell String�쑝濡� 蹂��솚 �븿�닔
+     * @param cell Cell
+     * @param isNull boolean
+     * @return String
+     */
+    private String stringToCell (Cell cell, boolean isNull) {
+        String cellStr = "";
+        if (!isNull) {
+            cellStr = CommonUtil.convertExcelStringToCell(cell);
+            //  怨듬갚 �젣嫄�
+            cell.setCellValue(cellStr.trim());
+        } else {
+            cell.setCellValue(cellStr);
+        }
+        return cellStr;
+    }
+
+    /**
      * cell NULL 泥댄겕 �븿�닔
      * 鍮� 媛믪씠 �븘�땶 cell 泥댄겕
      * @param cell Cell
      * @return boolean
      */
     private Boolean cellNullCheck (Cell cell) {
-        if (cell != null ) {
-            int cellType = cell.getCellType();
-            if (cellType < Cell.CELL_TYPE_BLANK) {
-                if (cellType == Cell.CELL_TYPE_STRING)
-                {
-                    if (cell.getStringCellValue() != null && !cell.getStringCellValue().equals("")) {
-                        return false;
-                    }
-                } else {
+        int cellType = cell.getCellType();
+        if (cellType < Cell.CELL_TYPE_BLANK) {
+            if (cellType == Cell.CELL_TYPE_STRING) {
+                if (cell.getStringCellValue() != null && !cell.getStringCellValue().equals("")) {
                     return false;
                 }
+            } else {
+                return false;
             }
         }
         return true;
@@ -3494,28 +3532,22 @@
 
     //  �뿊�� �븘�뱶�뿉 �엳�뒗 �젙蹂대�� �씠�뒋 form �쑝濡� �삷湲대떎.
     private IssueForm setIssueFormToExcelField(Row row, int rowIndex, Map<String, Priority> priorityMaps,
-                                               Map<String, Severity> severityMaps, Map<String, DepartmentVo> departmentMaps,
-                                               Map<String, CustomField> customFieldMaps, Map<String, CompanyField> companyFieldMaps,
-                                               Map<String, IspField> ispFieldMaps, Map<String, HostingField> hostingFieldMaps,
+                                               Map<String, Severity> severityMaps, Map<String, CustomField> customFieldMaps,
+                                               Map<String, CompanyField> companyFieldMaps, Map<String, IspField> ispFieldMaps, Map<String, HostingField> hostingFieldMaps,
                                                List<String> headers) throws ParseException {
         IssueForm issueForm = new IssueForm();
         issueForm.setRegisterId(this.webAppUtil.getLoginId());
-        Project project = null;
 
         //  �젣紐�, �궡�슜, �봽濡쒖젥�듃 �궎, �씠�뒋 ���엯, �슦�꽑�닚�쐞, 以묒슂�룄, �떞�떦�옄, �떆�옉�씪, 醫낅즺�씪, �궗�슜�옄 �젙�쓽 �븘�뱶
         for (int cellIndex = 0; cellIndex < headers.size(); cellIndex++) {
             Cell cell = row.getCell(cellIndex);
-            boolean isNull = cellNullCheck(cell);
 
             String cellStr = "";
+            boolean isNull = true;
 
-            if (!isNull) {
-                cellStr = CommonUtil.convertExcelStringToCell(cell);
-
-                //  怨듬갚 �젣嫄�
-                cell.setCellValue(cellStr.trim());
-            } else {
-                cell.setCellValue(cellStr);
+            if (cell != null) {
+                isNull = cellNullCheck(cell);
+                cellStr = stringToCell(cell, isNull); //cell�쓣 String�쑝濡� 蹂��솚
             }
 
             switch (cellIndex) {
@@ -4144,11 +4176,71 @@
                 this.issueHistoryService.detectDownIssues(IssueHistoryType.DELETE, issue, sb);
                 issue.setParentIssue(null);
             }
+
+            if (issueDownForm.getInheritYn() != null && issueDownForm.getInheritYn() && issue.getParentIssue() != null) {
+                //  �긽�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂� �긽�냽諛쏄린
+                issue = this.inheritPartners(issue, parentIssue);
+            }
+
             this.issueHistoryService.addIssueHistory(parentIssue, IssueHistoryType.MODIFY, sb.toString()); //parentIssue = myIssue(湲곕줉�� �쁽�옱 �긽�꽭�럹�씠吏��뿉 �빐�빞�븯�땲源�)
             this.issueRepository.saveAndFlush(issue);
         }
     }
 
+    /**
+     * �긽�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂� �긽�냽諛쏄린
+     * @param issue Issue
+     * @param parentIssue Issue
+     * @return Issue
+     */
+    private Issue inheritPartners(Issue issue, Issue parentIssue) {
+        if (parentIssue != null) {
+            if (parentIssue.getIssueType().getInheritPartners()) {
+                IssueCompany issueCompany = new IssueCompany();
+                IssueIsp issueIsp = new IssueIsp();
+                IssueHosting issueHosting = new IssueHosting();
+
+                if (parentIssue.getIssueCompanies() != null && parentIssue.getIssueCompanies().size() > 0) {
+                    issue.getIssueCompanies().clear();
+                    issue.getIssueCompanies().addAll(parentIssue.getIssueCompanies());
+                    Iterator<IssueCompany> itrCompany = issue.getIssueCompanies().iterator();
+                    ConvertUtil.copyProperties(itrCompany.next(), issueCompany, "id");
+                    issueCompany.setIssue(issue);
+                    issueCompany.setCompanyField(parentIssue.getIssueCompanies().iterator().next().getCompanyField());
+                    this.issueCompanyRepository.saveAndFlush(issueCompany);
+                } else {
+                    this.issueCompanyRepository.deleteByIssueId(issue.getId());
+                    this.issueCompanyRepository.flush();
+                }
+                if (parentIssue.getIssueIspFields() != null && parentIssue.getIssueIspFields().size() > 0) {
+                    issue.getIssueIspFields().clear();
+                    issue.getIssueIspFields().addAll(parentIssue.getIssueIspFields());
+                    Iterator<IssueIsp> itrIsp = issue.getIssueIspFields().iterator();
+                    ConvertUtil.copyProperties(itrIsp.next(), issueIsp, "id");
+                    issueIsp.setIssue(issue);
+                    issueIsp.setIspField(parentIssue.getIssueIspFields().iterator().next().getIspField());
+                    this.issueIspRepository.saveAndFlush(issueIsp);
+                } else {
+                    this.issueIspRepository.deleteByIssueId(issue.getId());
+                    this.issueIspRepository.flush();
+                }
+                if (parentIssue.getIssueHostingFields() != null && parentIssue.getIssueHostingFields().size() > 0) {
+                    issue.getIssueHostingFields().clear();
+                    issue.getIssueHostingFields().addAll(parentIssue.getIssueHostingFields());
+                    Iterator<IssueHosting> itrHosting = issue.getIssueHostingFields().iterator();
+                    ConvertUtil.copyProperties(itrHosting.next(), issueHosting, "id");
+                    issueHosting.setIssue(issue);
+                    issueHosting.setHostingField(parentIssue.getIssueHostingFields().iterator().next().getHostingField());
+                    this.issueHostingRepository.saveAndFlush(issueHosting);
+                } else {
+                    this.issueHostingRepository.deleteByIssueId(issue.getId());
+                    this.issueHostingRepository.flush();
+                }
+            }
+        }
+        return issue;
+    }
+
     @Override
     public void findPartner(Map<String, Object> resJsonData, Map<String, Object> params) {
         Long issueTypeId = MapUtil.getLong(params, "issueTypeId");

--
Gitblit v1.8.0