From c317ab1a948b95337bfbc730fdef9d7edde67eec Mon Sep 17 00:00:00 2001
From: jhjang <jhjang@maprex.co.kr>
Date: 목, 09 12월 2021 14:23:05 +0900
Subject: [PATCH] - API 입력 및 수정시 오류 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java |  120 +++++++++++++++++++++++-------------------------------------
 1 files changed, 46 insertions(+), 74 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 8e77478..f0022e5 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -3,6 +3,7 @@
 import com.google.common.collect.Lists;
 import com.sun.org.apache.bcel.internal.generic.NEW;
 import kr.wisestone.owl.common.ExcelConditionCheck;
+import kr.wisestone.owl.common.IssueCustomFieldValueFormComparator;
 import kr.wisestone.owl.config.CommonConfiguration;
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.ElasticSearchConstants;
@@ -263,11 +264,8 @@
 
             List<IssueVo> issueVos = this.findIssue(issueApiForm, customFieldApiOverlaps, user.getId());
             int size = issueVos.size();
-            if (size == 1) {
+            if (size > 0) {
                 issueForm.setParentIssueId(issueVos.get(0).getId());
-            } else if (size > 1) {
-                throw new OwlRuntimeException(
-                        this.messageAccessor.getMessage(MsgConstants.API_OVERLAP_ERROR));
             }
 
             issueForm.setIsApi(Issue.IS_API_YES);
@@ -328,39 +326,36 @@
     }
 
     // 以묐났�맂 �긽�쐞 �씠�뒋 寃��깋
-    private List<IssueVo> findIssue(IssueApiForm issueApiForm, List<CustomFieldApiOverlap> customFieldApiOverlaps, Long userId) {
+    private List<IssueVo> findIssue(IssueApiForm issueApiform, List<CustomFieldApiOverlap> customFieldApiOverlaps, Long userId) {
+        List<IssueCustomFieldValueForm> issueCustomFieldValueForms = issueApiform.getIssueCustomFieldValues();
+        List<IssueVo> resultIssueVos = Lists.newArrayList();
+        String comma = ",";
 
-        List<IssueVo> resultIssueVos = new ArrayList<>();
+        if (issueCustomFieldValueForms.size() > 0) {
+            String concatUseValue = "";
+            int useIdx = 0;
 
-        if (customFieldApiOverlaps != null && customFieldApiOverlaps.size() > 0) {
-            for (CustomFieldApiOverlap customFieldApiOverlap : customFieldApiOverlaps) {
-                for (IssueCustomFieldValueForm issueCustomFieldValue : issueApiForm.getIssueCustomFieldValues()) {
-                    IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition();
-                    issueCustomFieldValueCondition.setUseParentIssueId(true);
-                    if (customFieldApiOverlap.getCustomField().getId().equals(issueCustomFieldValue.getCustomFieldId())) {
-                        issueCustomFieldValueCondition.setUseValue(issueCustomFieldValue.getUseValue());
+            IssueCustomFieldValueFormComparator comp = new IssueCustomFieldValueFormComparator();
+            Collections.sort(issueCustomFieldValueForms, comp);
 
-                        List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition);
-                        if (results != null && results.size() > 0) {
-                            List<IssueVo> findIssueVos = new ArrayList<>();
-                            Collections.copy(resultIssueVos, findIssueVos);
-                            resultIssueVos.clear();
-                            for (Map<String, Object> result : results) {
-                                IssueVo issueVo = ConvertUtil.convertMapToClass(result, IssueVo.class);
-                                if (findIssueVos.size() == 0) {
-                                    resultIssueVos.add(issueVo);
-                                } else {
-                                    IssueVo findIssueVo = findIssueVo(findIssueVos, issueVo.getId());
-                                    if (findIssueVo != null) {
-                                        resultIssueVos.add(findIssueVo);
-                                    }
-                                }
-                            }
-                        } else {
-                            resultIssueVos.clear();
-                            return resultIssueVos;
+            for (IssueCustomFieldValueForm issueCustomFieldValueForm : issueCustomFieldValueForms) {
+                for(CustomFieldApiOverlap customFieldApiOverlap : customFieldApiOverlaps) {
+                    if (customFieldApiOverlap.getCustomField().getId().equals(issueCustomFieldValueForm.getCustomFieldId())) {
+                        if (useIdx > 0) {
+                            concatUseValue = concatUseValue.concat(comma);
                         }
+                        concatUseValue = concatUseValue.concat(issueCustomFieldValueForm.getUseValue());
+                        useIdx++;
                     }
+                }
+            }
+
+            IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition();
+            issueCustomFieldValueCondition.setUseValue(concatUseValue);
+            List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition);
+            if (results != null && results.size() > 0) {
+                for (Map<String, Object> result : results) {
+                    resultIssueVos.add(ConvertUtil.convertMapToClass(result, IssueVo.class));
                 }
             }
         }
@@ -1483,42 +1478,25 @@
     public List<IssueVo> findIssue(IssueApiForm issueApiform) {
 
         List<IssueCustomFieldValueForm> issueCustomFieldValueForms = issueApiform.getIssueCustomFieldValues();
-        List<IssueVo> resultIssueVos = new ArrayList<>();
+        List<IssueVo> resultIssueVos = Lists.newArrayList();
+        String comma = ",";
 
-        IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition();
-        issueCustomFieldValueCondition.setUseParentIssueId(false);
         if (issueCustomFieldValueForms.size() > 0) {
-            for (IssueCustomFieldValueForm issueCustomFieldValueForm : issueCustomFieldValueForms) {
-
-                CustomField customField = this.customFieldService.getCustomField(issueCustomFieldValueForm.getCustomFieldId());
-                CustomFieldType customFieldType = CustomFieldType.DATETIME;
-                if (customFieldType.equals(customField.getCustomFieldType())) {
-                    continue;
+            String concatUseValue = "";
+            for (int i = 0; i < issueCustomFieldValueForms.size(); i++) {
+                IssueCustomFieldValueForm issueCustomFieldValueForm = issueCustomFieldValueForms.get(i);
+                if (i > 0) {
+                    concatUseValue = concatUseValue.concat(comma);
                 }
-//                issueCustomFieldValueCondition.addUseValue(issueCustomFieldValueForm.getUseValue());
-                issueCustomFieldValueCondition.setUseValue(issueCustomFieldValueForm.getUseValue());
-                List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition);
-                if (results != null && results.size() > 0) {
-                    List<IssueVo> findIssueVos = new ArrayList<>();
-                    Collections.copy(resultIssueVos, findIssueVos);
-                    resultIssueVos.clear();
-                    for (Map<String, Object> result : results) {
-                        IssueVo issueVo = ConvertUtil.convertMapToClass(result, IssueVo.class);
+                concatUseValue = concatUseValue.concat(issueCustomFieldValueForm.getUseValue());
+            }
 
-                        issueVo.setParentIssueVo(this.getParentIssueVo(MapUtil.getLong(result, "parentIssueId")));
-
-                        if (findIssueVos.size() == 0) {
-                            resultIssueVos.add(issueVo);
-                        } else {
-                            IssueVo findIssueVo = findIssueVo(findIssueVos, issueVo.getId());
-                            if (findIssueVo != null) {
-                                resultIssueVos.add(findIssueVo);
-                            }
-                        }
-                    }
-                } else {
-                    resultIssueVos.clear();
-                    return resultIssueVos;
+            IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition();
+            issueCustomFieldValueCondition.setUseValue(concatUseValue);
+            List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition);
+            if (results != null && results.size() > 0) {
+                for (Map<String, Object> result : results) {
+                    resultIssueVos.add(ConvertUtil.convertMapToClass(result, IssueVo.class));
                 }
             }
         }
@@ -1534,15 +1512,6 @@
             }
         }
         return null;
-    }
-
-
-    // �븯�쐞 �씠�뒋媛� 紐⑤몢 醫낅즺 泥섎━ �릺�뿀�쓣 寃쎌슦 �긽�쐞�씠�뒋�룄 �셿猷� 泥섎━
-    private void setParentIssueComplete(Issue parentIssue) {
-        if (parentIssue != null) {
-            this.issueMapper.findNotCompleteByParentIssueId(parentIssue.getId());
-
-        }
     }
 
 
@@ -1570,10 +1539,12 @@
                 }
 
                 if (parentIssue != null) {
-                    List<Map<String, Object>> results = this.issueMapper.findNotCompleteByParentIssueId(parentIssue.getId());
+                    IssueCondition issueCondition = new IssueCondition(issueVo.getId(), parentIssue.getId());
+                    List<Map<String, Object>> results = this.issueMapper.findNotCompleteByParentIssueId(issueCondition);
                     // �븯�쐞 �씪媛먯씠 紐⑤몢 醫낅즺 �긽�깭�씪�븣 �긽�쐞 �씪媛먮룄 醫낅즺 泥섎━
                     if (results == null || results.size() == 0) {
                         parentIssue.setIssueStatus(issueType.getIssueStatus());
+                        this.issueRepository.saveAndFlush(parentIssue);
                     }
                 }
 
@@ -1660,6 +1631,7 @@
             this.issueHistoryService.detectIssueStatus(issue, issueForm, detectIssueChange, oldIssueStatus, issueStatus);
         }
 
+        // db�뿉 ���옣
         issue = this.saveIssue(issueForm, checkIssueData);
 
         //  �씠�뒋 �씠�젰 �벑濡�

--
Gitblit v1.8.0