From fe21896bff9b9305df0294e0352b343e0dd4d0b9 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 월, 14 3월 2022 12:55:20 +0900
Subject: [PATCH] - api로 이슈 추가 시 하위이슈기준 IP/SITE 일 경우 코드 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java |  364 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 253 insertions(+), 111 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 654acc7..545ec04 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -310,7 +310,7 @@
                 }
 
                 // 以묐났�맂 �긽�쐞 �씠�뒋寃��깋
-                List<Issue> issues = this.findIssue(issueApiForm, customFieldApiOverlaps, user.getId());
+                List<Issue> issues = this.findIssue(issueApiForm, issueForm, customFieldApiOverlaps, user.getId());
                 int size = issues.size();
                 if (size > 0) {
                     Issue targetIssue = issues.get(0);
@@ -327,7 +327,6 @@
             // �궗�슜�옄 �젙�쓽 �븘�뱶 �꽕�젙
             issueForm.setIssueCustomFields(issueApiForm.getCustomFieldValues());
             //  媛숈� �룄硫붿씤 �뾽泥� 李얘린
-            this.findCompanyField(issueForm);
 
             // api �엯�젰媛� �쟻�슜
             ConvertUtil.copyProperties(issueApiForm, issueForm);
@@ -339,10 +338,15 @@
         }
     }
 
+    /**
+     * �룄硫붿씤�씠 �룞�씪�븳 �뾽泥� 李얘린
+     * @param issueForm IssueForm
+     * @return IssueForm
+     */
     private IssueForm findCompanyField(IssueForm issueForm) {
         if(issueForm.getIssueCustomFields() != null && issueForm.getIssueCustomFields().size() > 0) {
             CompanyFieldCondition condition = new CompanyFieldCondition();
-            List<Map<String, Object>> companyFields = this.companyFieldService.find(condition);
+            List<Map<String, Object>> companyFields = Lists.newArrayList();
             List<Map<String, Object>> issueCompanyFields = Lists.newArrayList();
             List<Map<String, Object>> issueIspFields = Lists.newArrayList();
             List<Map<String, Object>> issueHostingFields = Lists.newArrayList();
@@ -350,27 +354,36 @@
             for (Map<String, Object> issueCustomField : issueForm.getIssueCustomFields()) {
                 Long customFieldId = MapUtil.getLong(issueCustomField, "customFieldId");
                 CustomField customField = this.customFieldService.getCustomField(customFieldId);
-                if(customField != null && customField.getCustomFieldType().toString().equals("SITE") && customField.getName().equals("�룄硫붿씤")) {
+                if(customField != null && customField.getCustomFieldType().equals(SITE) && customField.getName().equals("�룄硫붿씤")) {
                     String useValue = issueCustomField.get("useValue").toString();
+                    String[] urlArr = null;
+                    List<String> urls = Lists.newArrayList();
+                    if (useValue.contains(",")) {
+                        urlArr = useValue.split(",");
+                        urls.addAll(Arrays.asList(urlArr));
+                    } else {
+                        urls.add(useValue);
+                    }
+                    condition.setUrl(urls);
+                    companyFields = this.companyFieldService.find(condition);
+
                     if(companyFields != null && companyFields.size() > 0) {
                         for (Map<String, Object> companyField : companyFields) {
                             CompanyFieldVo companyFieldVo = ConvertUtil.convertMapToClass(companyField, CompanyFieldVo.class);
-                            if(companyFieldVo.getUrl() != null && useValue.equals(companyFieldVo.getUrl())) {
-                                companyField.put("companyId", companyField.get("id"));
-                                issueCompanyFields.add(companyField);
-                                if(companyFieldVo.getIspId() != null && companyFieldVo.getIspId() != -1) {
-                                    Map<String, Object> ispField = this.ispFieldService.find(companyFieldVo.getIspId());
-                                    if (ispField != null) {
-                                        ispField.put("ispId", ispField.get("id"));
-                                        issueIspFields.add(ispField);
-                                    }
+                            companyField.put("companyId", companyField.get("id"));
+                            issueCompanyFields.add(companyField);
+                            if(companyFieldVo.getIspId() != null && companyFieldVo.getIspId() != -1) {
+                                Map<String, Object> ispField = this.ispFieldService.find(companyFieldVo.getIspId());
+                                if (ispField != null) {
+                                    ispField.put("ispId", ispField.get("id"));
+                                    issueIspFields.add(ispField);
                                 }
-                                if(companyFieldVo.getHostingId() != null && companyFieldVo.getHostingId() != -1) {
-                                    Map<String, Object> hostingField = this.hostingFieldService.find(companyFieldVo.getHostingId());
-                                    if (hostingField != null) {
-                                        hostingField.put("hostingId", hostingField.get("id"));
-                                        issueHostingFields.add(hostingField);
-                                    }
+                            }
+                            if(companyFieldVo.getHostingId() != null && companyFieldVo.getHostingId() != -1) {
+                                Map<String, Object> hostingField = this.hostingFieldService.find(companyFieldVo.getHostingId());
+                                if (hostingField != null) {
+                                    hostingField.put("hostingId", hostingField.get("id"));
+                                    issueHostingFields.add(hostingField);
                                 }
                             }
                         }
@@ -383,6 +396,41 @@
         }
 
         return issueForm;
+    }
+
+    /**
+     * 議곌굔�뿉 留욌뒗 �뙆�듃�꼫 �젙蹂� 李얘린
+     * @param condition CompanyFieldCondition
+     * @param issueCompanyFields List<Map<String, Object>>
+     * @param issueIspFields List<Map<String, Object>>
+     * @param issueHostingFields List<Map<String, Object>>
+     */
+    private void findPartner(CompanyFieldCondition condition, List<Map<String, Object>> issueCompanyFields
+            , List<Map<String, Object>> issueIspFields, List<Map<String, Object>> issueHostingFields) {
+
+        List<Map<String, Object>> companyFields = this.companyFieldService.find(condition);
+
+        if(companyFields != null && companyFields.size() > 0) {
+            for (Map<String, Object> companyField : companyFields) {
+                CompanyFieldVo companyFieldVo = ConvertUtil.convertMapToClass(companyField, CompanyFieldVo.class);
+                companyField.put("companyId", companyField.get("id"));
+                issueCompanyFields.add(companyField);
+                if(companyFieldVo.getIspId() != null && companyFieldVo.getIspId() != -1) {
+                    Map<String, Object> ispField = this.ispFieldService.find(companyFieldVo.getIspId());
+                    if (ispField != null) {
+                        ispField.put("ispId", ispField.get("id"));
+                        issueIspFields.add(ispField);
+                    }
+                }
+                if(companyFieldVo.getHostingId() != null && companyFieldVo.getHostingId() != -1) {
+                    Map<String, Object> hostingField = this.hostingFieldService.find(companyFieldVo.getHostingId());
+                    if (hostingField != null) {
+                        hostingField.put("hostingId", hostingField.get("id"));
+                        issueHostingFields.add(hostingField);
+                    }
+                }
+            }
+        }
     }
 
     private User convertToUser(String token) {
@@ -411,10 +459,12 @@
             // 媛��긽 �긽�쐞 �씠�뒋 異붽�
             parentIssueForm.setUseIssueCustomFields(issueApiForm.getUseIssueCustomFieldIds());
             //  媛숈� �룄硫붿씤 �뾽泥� 李얘린
-            IssueForm partners = this.findCompanyField(parentIssueForm);
-            parentIssueForm.setIssueCompanyFields(partners.getIssueCompanyFields());
-            parentIssueForm.setIssueIspFields(partners.getIssueIspFields());
-            parentIssueForm.setIssueHostingFields(partners.getIssueHostingFields());
+            if (parentIssueForm.getIssueCompanyFields() == null) {
+                IssueForm partners = this.findCompanyField(parentIssueForm);
+                parentIssueForm.setIssueCompanyFields(partners.getIssueCompanyFields());
+                parentIssueForm.setIssueIspFields(partners.getIssueIspFields());
+                parentIssueForm.setIssueHostingFields(partners.getIssueHostingFields());
+            }
 
             Issue issue = addIssue(user, parentIssueForm, null);
             issues.add(issue);
@@ -436,23 +486,63 @@
     }
 
     // 以묐났�맂 �긽�쐞 �씠�뒋 寃��깋
-    private List<Issue> findIssue(IssueApiForm issueApiform, List<CustomFieldApiOverlap> customFieldApiOverlaps, Long userId) {
+    private List<Issue> findIssue(IssueApiForm issueApiform, IssueForm issueForm, List<CustomFieldApiOverlap> customFieldApiOverlaps, Long userId) {
         List<IssueCustomFieldValueForm> issueCustomFieldValueForms = issueApiform.getIssueCustomFieldValues();
         List<Issue> resultIssueVos = Lists.newArrayList();
         String comma = ",";
 
         if (issueCustomFieldValueForms.size() > 0) {
             String concatUseValue = "";
+            String customFieldType = "";
             int useIdx = 0;
+            int cntIp = 0;
+            int cntSite = 0;
 
             IssueCustomFieldValueFormComparator comp = new IssueCustomFieldValueFormComparator();
             Collections.sort(issueCustomFieldValueForms, comp);
 
             List<String> userValues = Lists.newArrayList();
+            CompanyFieldCondition condition = new CompanyFieldCondition();
+            List<Map<String, Object>> issueCompanyFields = Lists.newArrayList();
+            List<Map<String, Object>> issueIspFields = Lists.newArrayList();
+            List<Map<String, Object>> issueHostingFields = Lists.newArrayList();
+
             for (IssueCustomFieldValueForm issueCustomFieldValueForm : issueCustomFieldValueForms) {
                 userValues.add(issueCustomFieldValueForm.getUseValue());
+
                 for(CustomFieldApiOverlap customFieldApiOverlap : customFieldApiOverlaps) {
                     if (customFieldApiOverlap.getCustomField().getId().equals(issueCustomFieldValueForm.getCustomFieldId())) {
+
+                        String useValue = issueCustomFieldValueForm.getUseValue();
+                        if (useValue.contains(" ")) {
+                            useValue = useValue.replace(" ","");
+                        }
+
+                        if (customFieldApiOverlap.getCustomField().getCustomFieldType().equals(IP_ADDRESS)) {
+                            long ip = ConvertUtil.ipToLong(useValue);
+                            customFieldType = IP_ADDRESS.toString();
+                            if (cntIp == 0){
+                                condition.setIp(ip);
+                            }
+                            cntIp ++;
+                        }
+
+                        if(customFieldApiOverlap.getCustomField().getCustomFieldType().equals(SITE)) {
+                            customFieldType = SITE.toString();
+                            String[] urlArr = null;
+                            List<String> urls = Lists.newArrayList();
+                            if (useValue.contains(",")) {
+                                urlArr = useValue.split(",");
+                                urls.addAll(Arrays.asList(urlArr));
+                            } else {
+                                urls.add(useValue);
+                            }
+                            if (cntSite == 0) {
+                                condition.setUrl(urls);
+                            }
+                            cntSite ++;
+                        }
+
                         if (useIdx > 0) {
                             concatUseValue = concatUseValue.concat(comma);
                         }
@@ -462,12 +552,40 @@
                 }
             }
 
+            // 異붽� �븷 url or ip�뿉 �룷�븿�릺�뼱�엳�뒗 �뙆�듃�꼫 李얘린
+            this.findPartner(condition, issueCompanyFields, issueIspFields, issueHostingFields);
+
+            issueForm.setIssueCompanyFields(issueCompanyFields);
+            issueForm.setIssueIspFields(issueIspFields);
+            issueForm.setIssueHostingFields(issueHostingFields);
+
             IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition();
             issueCustomFieldValueCondition.setUseValue(concatUseValue);
             issueCustomFieldValueCondition.setUseValues(userValues);
             issueCustomFieldValueCondition.setIssueTypeId(issueApiform.getIssueTypeId());
+            issueCustomFieldValueCondition.setCustomFieldType(customFieldType);
 //            issueCustomFieldValueCondition.setIssueStatusType("CLOSE");
-            List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition);
+            List<Map<String, Object>> results = Lists.newArrayList();
+            if (customFieldType.equals(IP_ADDRESS.toString()) && issueForm.getIssueCompanyFields() != null && issueForm.getIssueCompanyFields().size() > 0) {
+                long ipValue = 0;
+                if (concatUseValue.contains(",")) {
+                    String[] arr = concatUseValue.split(",");
+                    for (String str : arr) {
+                        ipValue = ConvertUtil.ipToLong(str);
+                    }
+                } else {
+                    ipValue = ConvertUtil.ipToLong(concatUseValue);
+                }
+                issueCustomFieldValueCondition.setUseValue(String.valueOf(ipValue));
+            }
+
+            if (issueCustomFieldValueCondition.getCustomFieldType() != null && !issueCustomFieldValueCondition.getCustomFieldType().equals("")) {
+                //  �궗�슜�옄�젙�쓽�븘�뱶 ���엯�씠 IP_ADDRESS �삉�뒗 SITE �씪 寃쎌슦 
+                results = this.issueMapper.findByCustomFieldValueByCompany(issueCustomFieldValueCondition);
+            } else {
+                results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition);
+            }
+
             if (results != null && results.size() > 0) {
                 for (Map<String, Object> result : results) {
                     resultIssueVos.add(this.getIssue(MapUtil.getLong(result, "id")));
@@ -534,6 +652,16 @@
         issue = this.issueRepository.saveAndFlush(issue);
 
         issue.setReverseIndex(issue.getId() * -1);  //  荑쇰━ �냽�룄 媛쒖꽑�쓣 �쐞�빐 由щ쾭�뒪 �씤�뜳�뒪 �깮�꽦
+
+        if (issueForm.getParentIssueId() != null){
+            Issue parentIssue = this.getIssue(issueForm.getParentIssueId());
+            if (issueForm.getIsApi().equals(Issue.IS_API_YES)
+                    || (issueForm.getInheritYn() != null && issueForm.getInheritYn())) {
+                //  �븯�쐞�씠�뒋�뿉 �긽�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂� �쟻�슜
+                this.inheritPartners(issue, parentIssue);
+            }
+        }
+
         //  �떞�떦�옄 吏��젙
         //this.issueUserService.modifyIssueUser(issue, project.getWorkspace(), issueForm.getUserIds());
         //  �떞�떦遺��꽌 吏��젙
@@ -581,15 +709,15 @@
     //  �븯�쐞�씠�뒋瑜� �깮�꽦�븳�떎.
     @Override
     @Transactional
-    public Issue addDownIssue(IssueForm issueForm, List<MultipartFile> multipartFiles) {
+    public Issue addDownIssue(Map<String, Object> resJsonData, IssueForm issueForm, List<MultipartFile> multipartFiles) {
         User user = this.webAppUtil.getLoginUserObject();
-        return addDownIssue(user, issueForm, multipartFiles);
+        return addDownIssue(resJsonData, user, issueForm, multipartFiles);
     }
 
     //  �븯�쐞�씠�뒋瑜� �깮�꽦�븳�떎.
     @Override
     @Transactional
-    public Issue addDownIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
+    public Issue addDownIssue(Map<String, Object> resJsonData, User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
         StringBuilder detectIssueChange = new StringBuilder();
 
         //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
@@ -653,6 +781,7 @@
         this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.ADD, null);
         //  �씠�뒋 �쐞�뿕 愿�由� �깮�꽦
         this.issueRiskService.addIssueRisk(issue, project.getWorkspace());
+
         //  �쁺�냽�꽦 而⑦뀓�뒪�듃 鍮꾩슦湲�
         this.clear();
         //  �씠�뒋 �깮�꽦, �궘�젣�떆 �삁�빟 �씠硫붿씪�뿉 �벑濡앺빐�넃�뒗�떎.
@@ -662,7 +791,22 @@
         UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class);
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(userVo, ElasticSearchConstants.ISSUE_ADD));
 
+        IssueVo issueVo = this.convertToIssueVo(issue);
+        resJsonData.put(Constants.RES_KEY_CONTENTS, issueVo);
+
         return issue;
+    }
+
+    /**
+     * Issue瑜� IssueVo濡� 蹂��솚(�븯�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂� �긽�냽 �떆 �븘�슂)
+     * @param issue Issue
+     * @return IssueVo
+     */
+    private IssueVo convertToIssueVo(Issue issue) {
+        IssueVo issueVo = ConvertUtil.copyProperties(issue, IssueVo.class);
+        issueVo.setInheritPartners(issue.getIssueType().getInheritPartners());
+        issueVo.setUsePartner(issue.getIssueType().getUsePartner());
+        return issueVo;
     }
 
     //  �뿰愿��씠�뒋瑜� �깮�꽦�븳�떎.
@@ -2576,21 +2720,24 @@
                     this.messageAccessor.getMessage(MsgConstants.ISSUE_REMOVE_NOT_SELECT));
         }
 
-        List<Issue> removeIssues = Lists.newArrayList();
+        Set<Long> removeIds = new HashSet<>();
 
         for (Long issueId : issueForm.getRemoveIds()) {
+            removeIds.add(issueId);
             //�븯�쐞�씠�뒋 泥댄겕
             List<Issue> downIssues = this.issueRepository.findByParentIssueId(issueId);
             if(downIssues != null && downIssues.size() > 0){
                 for(Issue downIssue : downIssues){
                     Long downIssueId = downIssue.getId();
-                    downIssue = this.issueRemoves(downIssueId, user);
-                    removeIssues.add(downIssue);
+                    removeIds.add(downIssueId);
                 }
             }
-            Issue issue = this.issueRemoves(issueId, user);
-            removeIssues.add(issue);
         }
+
+        for (Long removeId : removeIds) {
+            this.issueRemoves(removeId, user);
+        }
+
         //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_REMOVE));
     }
@@ -2848,8 +2995,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();
@@ -3101,6 +3256,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;
@@ -3140,6 +3298,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);
                 }
             }
@@ -3149,58 +3316,28 @@
             }
             //  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());
 
-                IssueDepartment issueDepartment = new IssueDepartment();
-                issueDepartment.setIssue(issue);
-                issueDepartment.setWorkspace(workspace);
-
+                //  �썙�겕�뵆濡쒖슦 ��湲� �긽�깭�쓽 遺��꽌 異붽�
                 List<Long> departmentsIds = this.workflowDepartmentService.findFirstDepartmentIds(workflow);
                 if (departmentsIds != null && departmentsIds.size() > 0) {
-                    for (Long departmentId : departmentsIds) {
-                        issueDepartment.setDepartment(this.departmentService.getDepartment(departmentId));
-                    }
-                    issue.addIssueDepartment(issueDepartment);
+                    this.issueDepartmentService.add(departmentsIds, workspace, issue);
                 }
-
-                saveIssueForm.setIssueStatusId(issueStatus.getId());
-
                 this.setIssuePartners(saveIssueForm, issue);
             }
-
 
             //  0.416 - 0.439
 
@@ -3239,24 +3376,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);
@@ -3267,7 +3401,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);
@@ -3278,7 +3412,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);
@@ -3288,7 +3422,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);
@@ -3396,39 +3530,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) {
@@ -3436,6 +3538,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