From b2b8a75a8f5a35717bb89a07c2fe35ea16b6a99c Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 수, 19 1월 2022 09:55:16 +0900
Subject: [PATCH] 이슈 히스토리 - 중복되어서 나오는 문제 해결 및 업체에 추가된 항목들도 변경 시 이력 남기도록 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java        |   38 +++--
 src/main/java/kr/wisestone/owl/service/IssueCompanyService.java          |    2 
 src/main/java/kr/wisestone/owl/service/IssueHostingService.java          |    2 
 src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java |   56 +++-----
 src/main/java/kr/wisestone/owl/service/IssueIspService.java              |    2 
 src/main/java/kr/wisestone/owl/service/CompanyFieldService.java          |    2 
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java |    3 
 src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java     |   56 ++++-----
 src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java |  184 +++++++++++++++++-------------
 src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java |   15 -
 10 files changed, 182 insertions(+), 178 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java b/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
index c29f9a8..00d8255 100644
--- a/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
+++ b/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
@@ -38,4 +38,6 @@
     ModelAndView downloadExcelTemplate(HttpServletRequest request, Model model);
 
     void importExcel(MultipartFile multipartFile) throws Exception;
+
+    CompanyFieldVo CreateCompanyFieldCategory(CompanyFieldVo companyFieldVo, CompanyField companyField);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java b/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java
index a1c68ae..3b13118 100644
--- a/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java
+++ b/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java
@@ -10,7 +10,7 @@
 import java.util.Map;
 
 public interface IssueCompanyService extends AbstractService<IssueCompany, Long, JpaRepository<IssueCompany, Long>>{
-    void modifyIssueCompanyField(Issue issue, IssueForm issueForm);
+    void modifyIssueCompanyField(Issue issue, IssueForm issueForm, StringBuilder detectIssueChange);
 
     List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/IssueHostingService.java b/src/main/java/kr/wisestone/owl/service/IssueHostingService.java
index dad3358..da6ac20 100644
--- a/src/main/java/kr/wisestone/owl/service/IssueHostingService.java
+++ b/src/main/java/kr/wisestone/owl/service/IssueHostingService.java
@@ -10,7 +10,7 @@
 import java.util.Map;
 
 public interface IssueHostingService extends AbstractService<IssueHosting, Long, JpaRepository<IssueHosting, Long>>{
-    void modifyIssueHostingField(Issue issue, IssueForm issueForm);
+    void modifyIssueHostingField(Issue issue, IssueForm issueForm, StringBuilder detectIssueChange);
 
     List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/IssueIspService.java b/src/main/java/kr/wisestone/owl/service/IssueIspService.java
index 531aaf3..ef83011 100644
--- a/src/main/java/kr/wisestone/owl/service/IssueIspService.java
+++ b/src/main/java/kr/wisestone/owl/service/IssueIspService.java
@@ -10,7 +10,7 @@
 import java.util.Map;
 
 public interface IssueIspService extends AbstractService<IssueIsp, Long, JpaRepository<IssueIsp, Long>>{
-    void modifyIssueIspField(Issue issue, IssueForm issueForm);
+    void modifyIssueIspField(Issue issue, IssueForm issueForm, StringBuilder detectIssueChange);
 
     List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
index 5c5ea3e..d1512ee 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -147,7 +147,8 @@
      * @param companyFieldVo CompanyFieldVo
      * @param companyField CompanyField
      */
-    private CompanyFieldVo CreateCompanyFieldCategory(CompanyFieldVo companyFieldVo, CompanyField companyField) {
+    @Override
+    public CompanyFieldVo CreateCompanyFieldCategory(CompanyFieldVo companyFieldVo, CompanyField companyField) {
         if (companyField.getCompanyTypeId() != null && companyField.getCompanyTypeId() != -1) {
             CompanyFieldCategory companyType = this.companyFieldCategoryService.find(companyField.getCompanyTypeId());
             if (companyType != null) {
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java
index c7ea8ac..dbd380b 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java
@@ -7,6 +7,7 @@
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.util.MapUtil;
+import kr.wisestone.owl.vo.CompanyFieldVo;
 import kr.wisestone.owl.web.condition.IssueCondition;
 import kr.wisestone.owl.web.form.CompanyFieldForm;
 import kr.wisestone.owl.web.form.IspFieldForm;
@@ -50,7 +51,7 @@
      * @param issueForm IssueForm
      * @param issue Issue
      */
-    private void CreateCompanyField(IssueForm issueForm, Issue issue) {
+    private void CreateCompanyField(IssueForm issueForm, Issue issue, StringBuilder sb) {
 
         CompanyFieldForm companyFieldForm = new CompanyFieldForm();
         companyFieldForm.setName(issueForm.getCompanyName());
@@ -67,7 +68,6 @@
 
         IssueCompany newIssueCompany = CreateIssueCompany(companyFieldForm, issue);
         CompanyField companyField = new CompanyField();
-        StringBuilder sb = new StringBuilder();
 
         // �궗�슜�옄媛� 吏곸젒 �엯�젰 �떆 COMPANY 紐⑸줉�뿉 異붽�
         if (newIssueCompany.getCompanyField() == null) {
@@ -82,8 +82,6 @@
                 issueHistoryService.detectIssueCompany(IssueHistoryType.ADD, null, companyFieldForm, newIssueCompany, sb);
             }
         }
-        // 異붽� �씠�젰
-        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
         this.issueCompanyRepository.saveAndFlush(newIssueCompany);
     }
 
@@ -106,20 +104,27 @@
     //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎.
     @Override
     @Transactional
-    public void modifyIssueCompanyField(Issue issue, IssueForm issueForm) {
+    public void modifyIssueCompanyField(Issue issue, IssueForm issueForm, StringBuilder sb) {
         if (issue != null) {
-            StringBuilder sb = new StringBuilder();
             IssueCompany issueCompany = this.issueCompanyRepository.findByIssueId(issue.getId());
             List<Map<String, Object>> issueCompanyFields = issueForm.getIssueCompanyFields();
 
             if (issueCompanyFields != null && issueCompanyFields.size() > 0) {
                 Map<String, Object> param = issueCompanyFields.get(0);
 
+                CompanyFieldVo companyFieldVo = new CompanyFieldVo();
+                CompanyField companyField = ConvertUtil.convertMapToClass(param, CompanyField.class);
+                companyFieldVo = this.companyFieldService.CreateCompanyFieldCategory(companyFieldVo, companyField);
+                param.put("companyTypeName", companyFieldVo.getCompanyTypeName());
+                param.put("parentSectorName", companyFieldVo.getParentSectorName());
+                param.put("childSectorName", companyFieldVo.getChildSectorName());
+                param.put("regionName", companyFieldVo.getRegionName());
+                param.put("statusName", companyFieldVo.getStatusName());
+
                 if (issueCompany != null) { //�닔�젙 �떆
                     // 蹂�寃� �씠�젰 癒쇱� �궓湲곌퀬 issueCompany�뿉 set�븯湲�
                     issueHistoryService.detectIssueCompany(IssueHistoryType.MODIFY, param, null, issueCompany, sb);
-                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
-                    
+
                     issueCompany.setName(MapUtil.getString(param, "name"));
                     issueCompany.setEmail(MapUtil.getString(param, "email"));
                     issueCompany.setUrl(MapUtil.getString(param, "url"));
@@ -139,49 +144,30 @@
 
                     IssueCompany newIssueCompany = CreateIssueCompany(companyFieldForm, issue);
 
-                    CompanyFieldCategory companyType = this.companyFieldCategoryService.find(companyFieldForm.getCompanyTypeId());
-                    if (companyType != null) {
-                        companyFieldForm.setCompanyTypeName(companyType.getUseValue());
-                    }
-
-                    CompanyFieldCategory parentSector = this.companyFieldCategoryService.find(companyFieldForm.getParentSectorId());
-                    if (parentSector != null) {
-                        companyFieldForm.setParentSectorName(parentSector.getUseValue());
-                    }
-
-                    CompanyFieldCategory childSector = this.companyFieldCategoryService.find(companyFieldForm.getChildSectorId());
-                    if (childSector != null) {
-                        companyFieldForm.setChildSectorName(childSector.getUseValue());
-                    }
-
-                    CompanyFieldCategory region = this.companyFieldCategoryService.find(companyFieldForm.getRegionId());
-                    if (region != null) {
-                        companyFieldForm.setRegionName(region.getUseValue());
-                    }
-
-                    CompanyFieldCategory status = this.companyFieldCategoryService.find(companyFieldForm.getStatusId());
-                    if (status != null) {
-                        companyFieldForm.setStatusName(status.getUseValue());
-                    }
+                    companyFieldVo = this.companyFieldService.CreateCompanyFieldCategory(companyFieldVo, companyField);
+                    companyFieldForm.setCompanyTypeName(companyFieldVo.getCompanyTypeName());
+                    companyFieldForm.setParentSectorName(companyFieldVo.getParentSectorName());
+                    companyFieldForm.setChildSectorName(companyFieldVo.getChildSectorName());
+                    companyFieldForm.setRegionName(companyFieldVo.getRegionName());
+                    companyFieldForm.setStatusName(companyFieldVo.getStatusName());
 
                     // 異붽� �씠�젰
                     issueHistoryService.detectIssueCompany(IssueHistoryType.ADD, param, companyFieldForm, newIssueCompany, sb);
-                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                     this.issueCompanyRepository.saveAndFlush(newIssueCompany);
                 }
 
             } else if(issueForm.getCompanyName() != null && !issueForm.getCompanyName().equals("")) {
                 //�뾽泥댁젙蹂� 吏곸젒 異붽�
-                CreateCompanyField(issueForm, issue);
+                CreateCompanyField(issueForm, issue, sb);
             } else {
                 this.issueCompanyRepository.deleteByIssueId(issue.getId());
                 this.issueCompanyRepository.flush();
 
                 if (issueCompany != null) {
                     issueHistoryService.detectIssueCompany(IssueHistoryType.DELETE, null, null, issueCompany, sb);
-                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                 }
             }
+            //issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
         }
     }
 
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
index 3e03fc3..08c1f04 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
@@ -560,7 +560,7 @@
         Long companyFieldId = 0L;
         Long id = 0L;
         String name = "";
-        /*String manager = "";
+        String manager = "";
         String tel = "";
         String email = "";
         String memo = "";
@@ -573,32 +573,42 @@
         String parentSectorName = "";
         String childSectorName = "";
         String regionName = "";
-        String statusName = "";*/
+        String statusName = "";
 
         if (param != null) {
             id = MapUtil.getLong(param, "companyId");
             name = MapUtil.getString(param, "name");
-            /*manager = MapUtil.getString(param, "manager");
+            manager = MapUtil.getString(param, "manager");
             tel = MapUtil.getString(param, "tel");
             email = MapUtil.getString(param, "email");
             memo = MapUtil.getString(param, "memo");
+            companyTypeId = MapUtil.getLong(param, "companyTypeId");
+            parentSectorId = MapUtil.getLong(param, "parentSectorId");
+            childSectorId = MapUtil.getLong(param, "childSectorId");
+            regionId = MapUtil.getLong(param, "regionId");
+            statusId = MapUtil.getLong(param, "statusId");
             companyTypeName = MapUtil.getString(param, "companyTypeName");
             parentSectorName = MapUtil.getString(param, "parentSectorName");
             childSectorName = MapUtil.getString(param, "childSectorName");
             regionName = MapUtil.getString(param, "regionName");
-            statusName = MapUtil.getString(param, "statusName");*/
+            statusName = MapUtil.getString(param, "statusName");
         }else if(companyFieldForm != null) {
             id = companyFieldForm.getId();
             name = companyFieldForm.getName();
-            /*manager = companyFieldForm.getManager();
+            manager = companyFieldForm.getManager();
             tel = companyFieldForm.getTel();
             email = companyFieldForm.getEmail();
             memo = companyFieldForm.getMemo();
+            companyTypeId = companyFieldForm.getCompanyTypeId();
+            parentSectorId = companyFieldForm.getParentSectorId();
+            childSectorId = companyFieldForm.getChildSectorId();
+            regionId = companyFieldForm.getRegionId();
+            statusId = companyFieldForm.getStatusId();
             companyTypeName = companyFieldForm.getCompanyTypeName();
             parentSectorName = companyFieldForm.getParentSectorName();
             childSectorName = companyFieldForm.getChildSectorName();
             regionName = companyFieldForm.getRegionName();
-            statusName = companyFieldForm.getStatusName();*/
+            statusName = companyFieldForm.getStatusName();
         }
         if (issueCompany.getCompanyField() != null && issueCompany.getCompanyField().getId() != null) {
             companyFieldId = issueCompany.getCompanyField().getId();
@@ -611,43 +621,45 @@
             if (id != null && !companyFieldId.equals(id)) {
                 description.append("<span translate=\"issue.issueCompanyModifyHistory\">�뾽泥� �젙蹂닿� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
                 description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + name + "</span>");
+            } else {
+                if (companyFieldId.equals(id) && manager != null && (issueCompany.getManager() == null || !issueCompany.getManager().equals(manager))) {
+                    description.append("<span translate=\"issue.issueCompanyModifyManagerHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �떞�떦�옄媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
+                }
+                if (companyFieldId.equals(id) && tel != null && (issueCompany.getTel() == null || !issueCompany.getTel().equals(tel))) {
+                    description.append("<span translate=\"issue.issueCompanyModifyTelHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �쟾�솕踰덊샇媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
+                }
+                if (companyFieldId.equals(id) && email != null && (issueCompany.getEmail() == null || !issueCompany.getEmail().equals(email))) {
+                    description.append("<span translate=\"issue.issueCompanyModifyEmailHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �씠硫붿씪�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
+                }
+                if (companyFieldId.equals(id) && memo != null && (issueCompany.getMemo() == null || !issueCompany.getMemo().equals(memo))) {
+                    description.append("<span translate=\"issue.issueCompanyModifyMemoHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 鍮꾧퀬媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
+                }
+                if (companyFieldId.equals(id) && companyTypeName != null && (issueCompany.getCompanyTypeId() == null || !issueCompany.getCompanyTypeId().equals(companyTypeId))) {
+                    description.append("<span translate=\"issue.issueCompanyModifyCompanyTypeHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 湲곗뾽援щ텇�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + companyTypeName + "</span>");
+                }
+                if (companyFieldId.equals(id) && parentSectorName != null && (issueCompany.getParentSectorId() == null || !issueCompany.getParentSectorId().equals(parentSectorId))) {
+                    description.append("<span translate=\"issue.issueCompanyModifyParentSectorHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �뾽醫�(��遺꾨쪟)�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + parentSectorName + "</span>");
+                }
+                if (companyFieldId.equals(id) && childSectorName != null && (issueCompany.getChildSectorId() == null || !issueCompany.getChildSectorId().equals(childSectorId))) {
+                    description.append("<span translate=\"issue.issueCompanyModifyChildSectorHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �뾽醫�(以묐텇瑜�)�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + childSectorName + "</span>");
+                }
+                if (companyFieldId.equals(id) && statusName != null && (issueCompany.getStatusId() == null || !issueCompany.getStatusId().equals(statusId))) {
+                    description.append("<span translate=\"issue.issueCompanyModifyStatusHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �긽�깭媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + statusName + "</span>");
+                }
+                if (companyFieldId.equals(id) && regionName != null && (issueCompany.getRegionId() == null || !issueCompany.getRegionId().equals(regionId))) {
+                    description.append("<span translate=\"issue.issueCompanyModifyRegionHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 吏��뿭�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + regionName + "</span>");
+                }
             }
-            /*if (companyFieldId.equals(id) && manager != null && (issueCompany.getManager() == null || !issueCompany.getManager().equals(manager))) {
-                description.append("<span translate=\"issue.issueCompanyModifyManagerHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �떞�떦�옄媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
-            }
-            if (companyFieldId.equals(id) && tel != null && (issueCompany.getTel() == null || !issueCompany.getTel().equals(tel))) {
-                description.append("<span translate=\"issue.issueCompanyModifyTelHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �쟾�솕踰덊샇媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
-            }
-            if (companyFieldId.equals(id) && email != null && (issueCompany.getEmail() == null || !issueCompany.getEmail().equals(email))) {
-                description.append("<span translate=\"issue.issueCompanyModifyEmailHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �씠硫붿씪�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
-            }
-            if (companyFieldId.equals(id) && memo != null && (issueCompany.getMemo() == null || !issueCompany.getMemo().equals(memo))) {
-                description.append("<span translate=\"issue.issueCompanyModifyMemoHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 鍮꾧퀬媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
-            }
-            if (companyFieldId.equals(id) && companyTypeName != null && (issueCompany.getCompanyTypeId() == null || !issueCompany.getCompanyTypeId().equals(companyTypeId))) {
-                description.append("<span translate=\"issue.issueCompanyModifyCompanyTypeHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 湲곗뾽援щ텇�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + companyTypeName + "</span>");
-            }
-            if (companyFieldId.equals(id) && parentSectorName != null && (issueCompany.getParentSectorId() == null || !issueCompany.getParentSectorId().equals(parentSectorId))) {
-                description.append("<span translate=\"issue.issueCompanyModifyParentSectorHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �뾽醫�(��遺꾨쪟)�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + parentSectorName + "</span>");
-            }
-            if (companyFieldId.equals(id) && childSectorName != null && (issueCompany.getChildSectorId() == null || !issueCompany.getChildSectorId().equals(childSectorId))) {
-                description.append("<span translate=\"issue.issueCompanyModifyChildSectorHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �뾽醫�(以묐텇瑜�)�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + childSectorName + "</span>");
-            }
-            if (companyFieldId.equals(id) && statusName != null && (issueCompany.getStatusId() == null || !issueCompany.getStatusId().equals(statusId))) {
-                description.append("<span translate=\"issue.issueCompanyModifyStatusHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �긽�깭媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + statusName + "</span>");
-            }
-            if (companyFieldId.equals(id) && regionName != null && (issueCompany.getRegionId() == null || !issueCompany.getRegionId().equals(regionId))) {
-                description.append("<span translate=\"issue.issueCompanyModifyRegionHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 吏��뿭�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + regionName + "</span>");
-            }*/
+
         } else {
             description.append("<span translate=\"issue.issueCompanyRemoveHistory\">�뾽泥� �젙蹂닿� �궘�젣�릺�뿀�뒿�땲�떎. " + issueCompany.getCompanyField().getName() + "</span>");
             description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueCompany.getCompanyField().getName() + "</span>");
@@ -667,17 +679,17 @@
         if (param != null) {
             id = MapUtil.getLong(param, "ispId");
             name = MapUtil.getString(param, "name");
-            /*manager = MapUtil.getString(param, "manager");
+            manager = MapUtil.getString(param, "manager");
             tel = MapUtil.getString(param, "tel");
             email = MapUtil.getString(param, "email");
-            memo = MapUtil.getString(param, "memo");*/
+            memo = MapUtil.getString(param, "memo");
         }else if(ispFieldForm != null) {
             id = ispFieldForm.getId();
             name = ispFieldForm.getName();
-            /*manager = ispFieldForm.getManager();
+            manager = ispFieldForm.getManager();
             tel = ispFieldForm.getTel();
             email = ispFieldForm.getEmail();
-            memo = ispFieldForm.getMemo();*/
+            memo = ispFieldForm.getMemo();
         }
 
         if (issueIsp.getIspField() != null && issueIsp.getIspField().getId() != null) {
@@ -691,23 +703,24 @@
             if (id != null && !ispFieldId.equals(id)) { //�닔�젙 �븷 寃쎌슦
                 description.append("<span translate=\"issue.issueIspModifyHistory\">ISP �젙蹂닿� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
                 description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + name + "</span>");
+            } else {
+                if (ispFieldId.equals(id) && manager != null && (issueIsp.getManager() == null || !issueIsp.getManager().equals(manager))) {
+                    description.append("<span translate=\"issue.issueIspModifyManagerHistory\">ISP �젙蹂댁쓽 �떞�떦�옄媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
+                }
+                if (ispFieldId.equals(id) && tel != null && (issueIsp.getTel() == null || !issueIsp.getTel().equals(tel))) {
+                    description.append("<span translate=\"issue.issueIspModifyTelHistory\">ISP �젙蹂댁쓽 �쟾�솕踰덊샇媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
+                }
+                if (ispFieldId.equals(id) && email != null && (issueIsp.getEmail() == null || !issueIsp.getEmail().equals(email))) {
+                    description.append("<span translate=\"issue.issueIspModifyEmailHistory\">ISP �젙蹂댁쓽 �씠硫붿씪�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
+                }
+                if (ispFieldId.equals(id) && memo != null && (issueIsp.getMemo() == null || !issueIsp.getMemo().equals(memo))) {
+                    description.append("<span translate=\"issue.issueIspModifyMemoHistory\">ISP �젙蹂댁쓽 鍮꾧퀬媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
+                }
             }
-            /*if (ispFieldId.equals(id) && manager != null && (issueIsp.getManager() == null || !issueIsp.getManager().equals(manager))) {
-                description.append("<span translate=\"issue.issueIspModifyManagerHistory\">ISP �젙蹂댁쓽 �떞�떦�옄媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
-            }
-            if (ispFieldId.equals(id) && tel != null && (issueIsp.getTel() == null || !issueIsp.getTel().equals(tel))) {
-                description.append("<span translate=\"issue.issueIspModifyTelHistory\">ISP �젙蹂댁쓽 �쟾�솕踰덊샇媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
-            }
-            if (ispFieldId.equals(id) && email != null && (issueIsp.getEmail() == null || !issueIsp.getEmail().equals(email))) {
-                description.append("<span translate=\"issue.issueIspModifyEmailHistory\">ISP �젙蹂댁쓽 �씠硫붿씪�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
-            }
-            if (ispFieldId.equals(id) && memo != null && (issueIsp.getMemo() == null || !issueIsp.getMemo().equals(memo))) {
-                description.append("<span translate=\"issue.issueIspModifyMemoHistory\">ISP �젙蹂댁쓽 鍮꾧퀬媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
-            }*/
         } else {
             description.append("<span translate=\"issue.issueIspRemoveHistory\">ISP �젙蹂닿� �궘�젣�릺�뿀�뒿�땲�떎. " + issueIsp.getIspField().getName() + "</span>");
             description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueIsp.getIspField().getName() + "</span>");
@@ -727,17 +740,17 @@
         if (param != null) {
             id = MapUtil.getLong(param, "hostingId");
             name = MapUtil.getString(param, "name");
-            /*manager = MapUtil.getString(param, "manager");
+            manager = MapUtil.getString(param, "manager");
             tel = MapUtil.getString(param, "tel");
             email = MapUtil.getString(param, "email");
-            memo = MapUtil.getString(param, "memo");*/
+            memo = MapUtil.getString(param, "memo");
         }else if(hostingFieldForm != null) {
             id = hostingFieldForm.getId();
             name = hostingFieldForm.getName();
-            /*manager = hostingFieldForm.getManager();
+            manager = hostingFieldForm.getManager();
             tel = hostingFieldForm.getTel();
             email = hostingFieldForm.getEmail();
-            memo = hostingFieldForm.getMemo();*/
+            memo = hostingFieldForm.getMemo();
         }
 
         if (issueHosting.getHostingField() != null && issueHosting.getHostingField().getId() != null) {
@@ -751,23 +764,24 @@
             if(id != null && !hostingFieldId.equals(id)){ //�닔�젙 �븷 寃쎌슦
                 description.append("<span translate=\"issue.issueHostingModifyHistory\">�샇�뒪�똿 �젙蹂닿� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
                 description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + name + "</span>");
+            } else {
+                if(hostingFieldId.equals(id) && manager != null && (issueHosting.getManager() == null || !issueHosting.getManager().equals(manager))){
+                    description.append("<span translate=\"issue.issueHostingModifyManagerHistory\">�샇�뒪�똿 �젙蹂댁쓽 �떞�떦�옄媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
+                }
+                if(hostingFieldId.equals(id) && tel != null && (issueHosting.getTel() == null || !issueHosting.getTel().equals(tel))){
+                    description.append("<span translate=\"issue.issueHostingModifyTelHistory\">�샇�뒪�똿 �젙蹂댁쓽 �쟾�솕踰덊샇媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
+                }
+                if(hostingFieldId.equals(id) && email != null && (issueHosting.getEmail() == null || !issueHosting.getEmail().equals(email))){
+                    description.append("<span translate=\"issue.issueHostingModifyEmailHistory\">�샇�뒪�똿 �젙蹂댁쓽 �씠硫붿씪�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
+                }
+                if(hostingFieldId.equals(id) && memo != null && (issueHosting.getMemo() == null || !issueHosting.getMemo().equals(memo))){
+                    description.append("<span translate=\"issue.issueHostingModifyMemoHistory\">�샇�뒪�똿 �젙蹂댁쓽 鍮꾧퀬媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
+                }
             }
-            /*if(hostingFieldId.equals(id) && manager != null && (issueHosting.getManager() == null || !issueHosting.getManager().equals(manager))){
-                description.append("<span translate=\"issue.issueHostingModifyManagerHistory\">�샇�뒪�똿 �젙蹂댁쓽 �떞�떦�옄媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
-            }
-            if(hostingFieldId.equals(id) && tel != null && (issueHosting.getTel() == null || !issueHosting.getTel().equals(tel))){
-                description.append("<span translate=\"issue.issueHostingModifyTelHistory\">�샇�뒪�똿 �젙蹂댁쓽 �쟾�솕踰덊샇媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
-            }
-            if(hostingFieldId.equals(id) && email != null && (issueHosting.getEmail() == null || !issueHosting.getEmail().equals(email))){
-                description.append("<span translate=\"issue.issueHostingModifyEmailHistory\">�샇�뒪�똿 �젙蹂댁쓽 �씠硫붿씪�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
-            }
-            if(hostingFieldId.equals(id) && memo != null && (issueHosting.getMemo() == null || !issueHosting.getMemo().equals(memo))){
-                description.append("<span translate=\"issue.issueHostingModifyMemoHistory\">�샇�뒪�똿 �젙蹂댁쓽 鍮꾧퀬媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
-                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
-            }*/
         } else {
             description.append("<span translate=\"issue.issueHostingRemoveHistory\">�샇�뒪�똿 �젙蹂닿� �궘�젣�릺�뿀�뒿�땲�떎. " + issueHosting.getHostingField().getName() + "</span>");
             description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueHosting.getHostingField().getName() + "</span>");
@@ -948,6 +962,12 @@
             switch (customField.getCustomFieldType()) {
                 case INPUT :
                 case SINGLE_SELECT :
+                case NUMBER :
+                case DATETIME :
+                case IP_ADDRESS :
+                case EMAIL :
+                case SITE :
+                case TEL :
                     boolean existIssueCustomFieldValue = false;
 
                     for (IssueCustomFieldValue savedIssueCustomFieldValue : issue.getIssueCustomFieldValues()) {
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java
index 40ec470..932da15 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java
@@ -52,8 +52,7 @@
      * @param issueForm IssueForm
      * @param issue Issue
      */
-    private void CreateHostingField(IssueForm issueForm, Issue issue) {
-        StringBuilder sb = new StringBuilder();
+    private void CreateHostingField(IssueForm issueForm, Issue issue, StringBuilder sb) {
         // issueHosting �븘�뱶 �뤌 留뚮뱾湲�
         HostingFieldForm hostingFieldForm = new HostingFieldForm();
         hostingFieldForm.setName(issueForm.getHostingName());
@@ -80,8 +79,6 @@
                 issueHistoryService.detectIssueHosting(IssueHistoryType.ADD, null, hostingFieldForm, newIssueHosting, sb);
             }
         }
-        // 異붽� �씠�젰
-        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
         this.issueHostingRepository.saveAndFlush(newIssueHosting);
     }
 
@@ -117,10 +114,9 @@
     //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎.
     @Override
     @Transactional
-    public void modifyIssueHostingField(Issue issue, IssueForm issueForm) {
+    public void modifyIssueHostingField(Issue issue, IssueForm issueForm, StringBuilder sb) {
         if (issue != null) {
             IssueHosting issueHosting = this.issueHostingRepository.findByIssueId(issue.getId());
-            StringBuilder sb = new StringBuilder();
             List<Map<String, Object>> issueHostingFields = issueForm.getIssueHostingFields();
             if (issueHostingFields != null && issueHostingFields.size() > 0) {
                 Map<String, Object> param = issueHostingFields.get(0);
@@ -128,7 +124,6 @@
                 if (issueHosting != null) { //�닔�젙 �떆
                     // 蹂�寃� �씠�젰 �궓湲곌퀬 issueHosting�뿉 set �빐二쇨린
                     issueHistoryService.detectIssueHosting(IssueHistoryType.MODIFY, param, null, issueHosting, sb);
-                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
 
                     issueHosting.setName(MapUtil.getString(param, "name"));
                     issueHosting.setEmail(MapUtil.getString(param, "email"));
@@ -144,21 +139,21 @@
                     IssueHosting newIssueHosting = CreateIssueHosting(param, issue);
                     // 異붽� �씠�젰
                     issueHistoryService.detectIssueHosting(IssueHistoryType.ADD, param, null, newIssueHosting, sb);
-                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                     this.issueHostingRepository.saveAndFlush(newIssueHosting);
                 }
+
             }else if (issueForm.getHostingName() != null && !issueForm.getHostingName().equals("")) {
                 // �샇�뒪�똿 �젙蹂� 吏곸젒 異붽�
-                CreateHostingField(issueForm, issue);
+                CreateHostingField(issueForm, issue, sb);
             } else {
                 this.issueHostingRepository.deleteByIssueId(issue.getId());
                 this.issueHostingRepository.flush();
 
                 if (issueHosting != null) {
                     issueHistoryService.detectIssueHosting(IssueHistoryType.DELETE, null, null, issueHosting, sb);
-                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                 }
             }
+            //issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
         }
     }
 
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 955cb24..4bf324b 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java
@@ -49,7 +49,7 @@
      * @param issueForm IssueForm
      * @param issue Issue
      */
-    private void CreateIspField(IssueForm issueForm, Issue issue) {
+    private void CreateIspField(IssueForm issueForm, Issue issue, StringBuilder sb) {
         // issueIsp �븘�뱶 �뤌 留뚮뱾湲�
         IspFieldForm ispFieldForm = new IspFieldForm();
         ispFieldForm.setName(issueForm.getIspName());
@@ -62,7 +62,6 @@
 
         IssueIsp newIssueIsp = CreateIssueIsp(ispFieldForm, issue);
         IspField ispField = new IspField();
-        StringBuilder sb = new StringBuilder();
 
         // �궗�슜�옄媛� 吏곸젒 �엯�젰�떆�뿉 ISP 紐⑸줉�뿉 異붽�
         if (newIssueIsp.getIspField() == null) {
@@ -77,8 +76,6 @@
                 issueHistoryService.detectIssueIsp(IssueHistoryType.ADD, null, ispFieldForm, newIssueIsp, sb);
             }
         }
-        // 異붽� �씠�젰
-        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
         this.issueIspRepository.saveAndFlush(newIssueIsp);
     }
 
@@ -116,50 +113,47 @@
     //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎.
     @Override
     @Transactional
-    public void modifyIssueIspField(Issue issue, IssueForm issueForm) {
+    public void modifyIssueIspField(Issue issue, IssueForm issueForm, StringBuilder sb) {
         if (issue != null) {
-            StringBuilder sb = new StringBuilder();
             IssueIsp issueIsp = this.issueIspRepository.findByIssueId(issue.getId());
             List<Map<String, Object>> issueIspFields = issueForm.getIssueIspFields();
+
             if (issueIspFields != null && issueIspFields.size() > 0) {
                 Map<String, Object> param = issueIspFields.get(0);
 
-                    if (issueIsp != null) {//�닔�젙 �떆
-                        // 蹂�寃� �씠�젰 �궓湲곌퀬 issueIsp�뿉 set�빐二쇨린
-                        issueHistoryService.detectIssueIsp(IssueHistoryType.MODIFY, param, null, issueIsp, sb);
-                        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
+                if (issueIsp != null) {//�닔�젙 �떆
+                    // 蹂�寃� �씠�젰 �궓湲곌퀬 issueIsp�뿉 set�빐二쇨린
+                    issueHistoryService.detectIssueIsp(IssueHistoryType.MODIFY, param, null, issueIsp, sb);
 
-                        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"));
+                    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"));
 
-                        this.issueIspRepository.saveAndFlush(issueIsp);
+                    this.issueIspRepository.saveAndFlush(issueIsp);
 
-                    } else { //異붽� �떆
-                        IssueIsp newIssueIsp = CreateIssueIsp(param, issue);
-                        // 異붽� �씠�젰
-                        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 { //異붽� �떆
+                    IssueIsp newIssueIsp = CreateIssueIsp(param, issue);
+                    // 異붽� �씠�젰
+                    issueHistoryService.detectIssueIsp(IssueHistoryType.ADD, param, null, newIssueIsp, sb);
+                    this.issueIspRepository.saveAndFlush(newIssueIsp);
+                }
+
+            } else if (issueForm.getIspName() != null && !issueForm.getIspName().equals("")) {
                 //ISP�젙蹂� 吏곸젒 異붽�
-                CreateIspField(issueForm, issue);
-            }
-            else {
+                CreateIspField(issueForm, issue, sb);
+            } else {
                 this.issueIspRepository.deleteByIssueId(issue.getId());
                 this.issueIspRepository.flush();
 
                 if (issueIsp != null) {
                     issueHistoryService.detectIssueIsp(IssueHistoryType.DELETE, null, null, issueIsp, sb);
-                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                 }
             }
+            //issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
         }
     }
 
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 554ba66..ce55b1b 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -486,6 +486,8 @@
     @Override
     @Transactional
     public Issue addIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
+        StringBuilder detectIssueChange = new StringBuilder();
+
         //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
         Workspace workspace = this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
         //  �봽濡쒖젥�듃 �쑀�슚�꽦 泥댄겕
@@ -528,11 +530,11 @@
         //  �떞�떦遺��꽌 吏��젙
         this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds());
         //  �뾽泥� �젙蹂� ���옣
-        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
+        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
         //  ISP �젙蹂� ���옣
-        this.issueIspService.modifyIssueIspField(issue, issueForm);
+        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
         //  HOSTING �젙蹂� ���옣
-        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
+        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
 
         //  泥⑤� �뙆�씪 ���옣
         //  multipartFile �쓣 file Map List 媛앹껜濡� 蹂�寃쏀븳�떎.
@@ -579,6 +581,8 @@
     @Override
     @Transactional
     public Issue addDownIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
+        StringBuilder detectIssueChange = new StringBuilder();
+
         //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
         Workspace workspace = this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
         //  �봽濡쒖젥�듃 �쑀�슚�꽦 泥댄겕
@@ -621,11 +625,11 @@
         //  �떞�떦遺��꽌 吏��젙
         this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds());
         //  �뾽泥� �젙蹂� ���옣
-        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
+        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
         //  ISP �젙蹂� ���옣
-        this.issueIspService.modifyIssueIspField(issue, issueForm);
+        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
         //  HOSTING �젙蹂� ���옣
-        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
+        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
 
         //  泥⑤� �뙆�씪 ���옣
         //  multipartFile �쓣 file Map List 媛앹껜濡� 蹂�寃쏀븳�떎.
@@ -656,6 +660,7 @@
     @Override
     @Transactional
     public Issue addRelIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
+        StringBuilder detectIssueChange = new StringBuilder();
         //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
         Workspace workspace = this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
         //  �봽濡쒖젥�듃 �쑀�슚�꽦 泥댄겕
@@ -698,11 +703,11 @@
         //  �떞�떦遺��꽌 吏��젙
         this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds());
         //  �뾽泥� �젙蹂� ���옣
-        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
+        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
         //  ISP �젙蹂� ���옣
-        this.issueIspService.modifyIssueIspField(issue, issueForm);
+        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
         //  HOSTING �젙蹂� ���옣
-        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
+        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
 
         //  泥⑤� �뙆�씪 ���옣
         //  multipartFile �쓣 file Map List 媛앹껜濡� 蹂�寃쏀븳�떎.
@@ -2087,20 +2092,21 @@
         this.checkNotHaveIssueIdAttachedFile(issue, issueForm);
         //  �궗�슜�옄 �젙�쓽 �븘�뱶 ���옣
         this.issueCustomFieldValueService.modifyIssueCustomFieldValue(issue, issueForm.getIssueCustomFields());
-        //  �씠�뒋 �씠�젰 �벑濡�
-        if (!StringUtils.isEmpty(detectIssueChange.toString())) {
-            this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.MODIFY, detectIssueChange.toString());
-        }
         //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
         UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class);
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(userVo, ElasticSearchConstants.ISSUE_MODIFY));
 
         //  �뾽泥� �젙蹂� ���옣
-        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
+        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
         //  ISP �젙蹂� ���옣
-        this.issueIspService.modifyIssueIspField(issue, issueForm);
+        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
         //  HOSTING �젙蹂� ���옣
-        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
+        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
+
+        //  �씠�뒋 �씠�젰 �벑濡�
+        if (!StringUtils.isEmpty(detectIssueChange.toString())) {
+            this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.MODIFY, detectIssueChange.toString());
+        }
 
         return issue;
     }

--
Gitblit v1.8.0