From 716586b849dd2368fb59a54adeda2d65122f643b Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 금, 14 1월 2022 21:07:07 +0900
Subject: [PATCH] - 이슈 수정 시 파트너 정보 수정 오류 - 이슈 상세 페이지에서 연관/하위 이슈의 파트너 정보 보여주기

---
 src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java |  112 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 70 insertions(+), 42 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java
index c5203db..a87e858 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java
@@ -31,6 +31,9 @@
     private IspFieldService ispFieldService;
 
     @Autowired
+    private IssueService issueService;
+
+    @Autowired
     private IssueHistoryService issueHistoryService;
 
     @Autowired
@@ -41,51 +44,75 @@
         return this.issueIspRepository;
     }
 
+
+    /**
+     * �씠�뒋 ISP 留뚮뱾湲�
+     * @param ispFieldForm IspFieldForm
+     * @param issue �씠�뒋
+     * @return IssueIsp
+     */
+    private IssueIsp CreateIssueIsp(IspFieldForm ispFieldForm, Issue issue) {
+        IssueIsp issueIsp = ConvertUtil.copyProperties(ispFieldForm, IssueIsp.class);
+        issueIsp.setIssue(issue);
+        IspField ispField = this.ispFieldService.getIsp(ispFieldForm.getId());
+        if (ispField != null) {
+            issueIsp.setIspField(ispField);
+        }
+
+        return issueIsp;
+    }
+
+
+    /**
+     *  �씠�뒋 ISP 留뚮뱾湲�
+     * @param ispFieldMap Map<String, Object> IspFieldForm map
+     * @param issue �씠�뒋
+     * @return ISPIssue
+     */
+    private IssueIsp CreateIssueIsp(Map<String, Object> ispFieldMap, Issue issue) {
+        IspFieldForm ispFieldForm = ConvertUtil.convertMapToClass(ispFieldMap, IspFieldForm.class);
+        ispFieldForm.setId(MapUtil.getLong(ispFieldMap, "ispId"));
+        return CreateIssueIsp(ispFieldForm, issue);
+    }
+
+
     //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎.
     @Override
     @Transactional
     public void modifyIssueIspField(Issue issue, IssueForm issueForm) {
         if (issue != null) {
             List<Map<String, Object>> issueIspFields = issueForm.getIssueIspFields();
+            Map<String, Object> param = issueIspFields.get(0);
+
             if (issueIspFields != null && issueIspFields.size() > 0) {
-                Map<String, Object> param = issueIspFields.get(0);
+                IssueIsp issueIsp = this.issueIspRepository.findByIssueId(issue.getId());
 
-                if (param != null && param.get("ispId") != null  && param.get("ispId") != "") {
-                    IspField ispField = this.ispFieldService.getIsp(MapUtil.getLong(param, "ispId"));
-
-                    Set<IssueIsp> issueIsps = issue.getIssueIspFields();
-                    IssueIsp issueIsp = new IssueIsp();
-                    if (issueIsps != null && issueIsps.size() > 0) {//�닔�젙 �븷 寃쎌슦
-                        issueIsp = issueIsps.iterator().next();
-                        // 蹂�寃� �씠�젰
-                        StringBuilder sb = new StringBuilder();
-                        issueHistoryService.detectIssueIsp(IssueHistoryType.MODIFY, param, null, issueIsp, sb);
-                        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
-
-                        issueIsp.setIspField(ispField);
-                        issueIsp.setName(MapUtil.getString(param, "name"));
-                        issueIsp.setEmail(MapUtil.getString(param, "email"));
-                        issueIsp.setCode(MapUtil.getString(param, "code"));
-                        issueIsp.setUrl(MapUtil.getString(param, "url"));
-                        issueIsp.setManager(MapUtil.getString(param, "manager"));
-                        issueIsp.setTel(MapUtil.getString(param, "tel"));
-                        issueIsp.setMemo(MapUtil.getString(param, "memo"));
-                    } else  {//異붽� �븷 寃쎌슦
-                        issueIsp = ConvertUtil.convertMapToClass(param, IssueIsp.class);
-                        issueIsp.setIssue(issue);
-                        if (ispField != null) {
-                            issueIsp.setIspField(ispField);
-                        }
-                        // 異붽� �씠�젰
-                        StringBuilder sb = new StringBuilder();
-                        issueHistoryService.detectIssueIsp(IssueHistoryType.ADD, param, null, issueIsp, sb);
-                        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
-                    }
+                if (issueIsp != null) {//�닔�젙 �떆
+                    issueIsp.setName(MapUtil.getString(param, "name"));
+                    issueIsp.setEmail(MapUtil.getString(param, "email"));
+                    issueIsp.setCode(MapUtil.getString(param, "code"));
+                    issueIsp.setUrl(MapUtil.getString(param, "url"));
+                    issueIsp.setManager(MapUtil.getString(param, "manager"));
+                    issueIsp.setTel(MapUtil.getString(param, "tel"));
+                    issueIsp.setMemo(MapUtil.getString(param, "memo"));
+                    // 蹂�寃� �씠�젰
+                    StringBuilder sb = new StringBuilder();
+                    issueHistoryService.detectIssueIsp(IssueHistoryType.MODIFY, param, null, issueIsp, sb);
+                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                     this.issueIspRepository.saveAndFlush(issueIsp);
-                }else {
-                    this.issueIspRepository.deleteById(MapUtil.getLong(param, "id"));
+
+                } else { //異붽� �떆
+                    IssueIsp newIssueIsp = CreateIssueIsp(param, issue);
+                    // 異붽� �씠�젰
+                    StringBuilder sb = new StringBuilder();
+                    issueHistoryService.detectIssueIsp(IssueHistoryType.ADD, param, null, newIssueIsp, sb);
+                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
+                    this.issueIspRepository.saveAndFlush(newIssueIsp);
                 }
-            } else if(issueForm.getIspName() != null && !issueForm.getIspName().equals("")) {
+            }
+            // �궗�슜�옄媛� 吏곸젒 �엯�젰�떆
+            else if(issueForm.getIspName() != null && !issueForm.getIspName().equals("")) {
+                // issueIsp �븘�뱶 �뤌 留뚮뱾湲�
                 IspFieldForm ispFieldForm = new IspFieldForm();
                 ispFieldForm.setName(issueForm.getIspName());
                 ispFieldForm.setCode(issueForm.getIspCode());
@@ -95,17 +122,18 @@
                 ispFieldForm.setTel(issueForm.getIspTel());
                 ispFieldForm.setMemo(issueForm.getIspMemo());
 
-                IspField ispField = this.ispFieldService.add(ispFieldForm);
-                IssueIsp issueIsp = ConvertUtil.copyProperties(ispFieldForm, IssueIsp.class);
-                issueIsp.setIssue(issue);
-                if (ispField != null) {
-                    issueIsp.setIspField(ispField);
+                IssueIsp newIssueIsp = CreateIssueIsp(ispFieldForm, issue);
+                IspField ispField = new IspField();
+                // �궗�슜�옄媛� 吏곸젒 �엯�젰�떆�뿉 ISP 紐⑸줉�뿉 異붽�
+                if (newIssueIsp.getIspField() == null) {
+                    ispField = this.ispFieldService.add(ispFieldForm);
+                    newIssueIsp.setIspField(ispField);
                 }
                 // 異붽� �씠�젰
                 StringBuilder sb = new StringBuilder();
-                issueHistoryService.detectIssueIsp(IssueHistoryType.ADD, null, ispField, issueIsp, sb);
+                issueHistoryService.detectIssueIsp(IssueHistoryType.ADD, param, null, newIssueIsp, sb);
                 issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
-                this.issueIspRepository.saveAndFlush(issueIsp);
+                this.issueIspRepository.saveAndFlush(newIssueIsp);
             }
         }
     }

--
Gitblit v1.8.0