From 729564acfd97630060acdd77694da87cc1c67979 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 18 11월 2021 09:41:41 +0900
Subject: [PATCH] 이슈관리 추가 완료 *DB날리고 실행

---
 src/main/java/kr/wisestone/owl/vo/IssueVo.java                           |   76 +-
 src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java |   72 +++
 src/main/java/kr/wisestone/owl/repository/IssueIspRepository.java        |   12 
 src/main/java/kr/wisestone/owl/domain/Issue.java                         |   69 +-
 src/main/resources/migration/V1_11__Alter_Table.sql                      |   51 ++
 src/main/java/kr/wisestone/owl/web/form/IssueForm.java                   |   54 +
 src/main/resources/mybatis/query-template/issueIsp-template.xml          |   27 +
 src/main/java/kr/wisestone/owl/mapper/IssueCompanyMapper.java            |   16 
 src/main/java/kr/wisestone/owl/mapper/IssueHostingMapper.java            |   16 
 src/main/java/kr/wisestone/owl/vo/IssueIspVo.java                        |   63 ++
 src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java     |   69 ++
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java        |  119 +++-
 src/main/resources/mybatis/query-template/issueCompany-template.xml      |   27 +
 src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java                    |   63 ++
 src/main/java/kr/wisestone/owl/domain/IssueHosting.java                  |  105 ++++
 src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java         |   39 +
 src/main/java/kr/wisestone/owl/mapper/IssueIspMapper.java                |   16 
 src/main/resources/migration/V1_1__Initial_Setup.sql                     |    3 
 src/main/resources/mybatis/query-template/issueHosting-template.xml      |   27 +
 src/main/webapp/scripts/app/issue/issueAdd.controller.js                 |   72 --
 src/main/java/kr/wisestone/owl/repository/IssueHostingRepository.java    |   12 
 src/main/java/kr/wisestone/owl/service/IssueCompanyService.java          |   15 
 src/main/java/kr/wisestone/owl/service/IssueHostingService.java          |   15 
 src/main/java/kr/wisestone/owl/domain/IssueCompany.java                  |  105 ++++
 src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java |   70 ++
 src/main/java/kr/wisestone/owl/repository/IssueCompanyRepository.java    |   12 
 src/main/java/kr/wisestone/owl/domain/IssueIsp.java                      |  105 ++++
 src/main/java/kr/wisestone/owl/service/IssueIspService.java              |   15 
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java |    1 
 src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java                    |   63 ++
 30 files changed, 1,233 insertions(+), 176 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/domain/Issue.java b/src/main/java/kr/wisestone/owl/domain/Issue.java
index c2738c0..6f57e22 100644
--- a/src/main/java/kr/wisestone/owl/domain/Issue.java
+++ b/src/main/java/kr/wisestone/owl/domain/Issue.java
@@ -46,18 +46,6 @@
     @JoinColumn(name = "severity_id")
     private Severity severity;
 
-    @ManyToOne(fetch=FetchType.LAZY)
-    @JoinColumn(name = "company_id")
-    private CompanyField companyField;
-
-    @ManyToOne(fetch=FetchType.LAZY)
-    @JoinColumn(name = "hosting_id")
-    private HostingField hostingFieldId;
-
-    @ManyToOne(fetch=FetchType.LAZY)
-    @JoinColumn(name = "isp_id")
-    private IspField ispFieldId;
-
     @OneToOne(mappedBy = "issue", cascade = {CascadeType.ALL}, orphanRemoval = true)
     private IssueRisk issueRisk;
 
@@ -87,6 +75,15 @@
 
     @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true)
     private Set<IssueCustomFieldValue> issueCustomFieldValues = new HashSet<>();
+
+    @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true)
+    private Set<IssueCompany> issueCompanies = new HashSet<>();
+
+    @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true)
+    private Set<IssueIsp> issueIsps = new HashSet<>();
+
+    @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true)
+    private Set<IssueHosting> issueHostings = new HashSet<>();
 
     @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true)
     private Set<IssueVersion> issueVersions = new HashSet<>();
@@ -177,30 +174,6 @@
         this.severity = severity;
     }
 
-    public CompanyField getCompanyField() {
-        return companyField;
-    }
-
-    public void setCompanyField(CompanyField companyField) {
-        this.companyField = companyField;
-    }
-
-    public HostingField getHostingFieldId() {
-        return hostingFieldId;
-    }
-
-    public void setHostingFieldId(HostingField hostingFieldId) {
-        this.hostingFieldId = hostingFieldId;
-    }
-
-    public IspField getIspFieldId() {
-        return ispFieldId;
-    }
-
-    public void setIspFieldId(IspField ispFieldId) {
-        this.ispFieldId = ispFieldId;
-    }
-
     public IssueRisk getIssueRisk() {
         return issueRisk;
     }
@@ -273,6 +246,30 @@
         this.issueCustomFieldValues = issueCustomFieldValues;
     }
 
+    public Set<IssueCompany> getIssueCompanies() {
+        return issueCompanies;
+    }
+
+    public void setIssueCompanies(Set<IssueCompany> issueCompanies) {
+        this.issueCompanies = issueCompanies;
+    }
+
+    public Set<IssueIsp> getIssueIspFields() {
+        return issueIsps;
+    }
+
+    public void setIssueIspFields(Set<IssueIsp> issueIsps) {
+        this.issueIsps = issueIsps;
+    }
+
+    public Set<IssueHosting> getIssueHostingFields() {
+        return issueHostings;
+    }
+
+    public void setIssueHostingFields(Set<IssueHosting> issueHostings) {
+        this.issueHostings = issueHostings;
+    }
+
     public String getStartDate() {
         return startDate;
     }
diff --git a/src/main/java/kr/wisestone/owl/domain/IssueCompany.java b/src/main/java/kr/wisestone/owl/domain/IssueCompany.java
new file mode 100644
index 0000000..6fd025d
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/domain/IssueCompany.java
@@ -0,0 +1,105 @@
+package kr.wisestone.owl.domain;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * Created by wisestone on 2018-03-07.
+ */
+@Entity
+public class IssueCompany extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String name;
+    private String manager;
+    private String tel;
+    private String email;
+    private String memo;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "issue_id")
+    private Issue issue;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "company_id")
+    private CompanyField companyField;
+
+    public IssueCompany(){}
+
+    public IssueCompany(Issue issue, CompanyField companyField, String name, String manager, String tel, String email, String memo){
+        this.issue = issue;
+        this.companyField = companyField;
+        this.name = name;
+        this.manager = manager;
+        this.tel = tel;
+        this.email = email;
+        this.memo = memo;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getManager() {
+        return manager;
+    }
+
+    public void setManager(String manager) {
+        this.manager = manager;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public Issue getIssue() {
+        return issue;
+    }
+
+    public void setIssue(Issue issue) {
+        this.issue = issue;
+    }
+
+    public CompanyField getCompanyField() {
+        return companyField;
+    }
+
+    public void setCompanyField(CompanyField companyField) {
+        this.companyField = companyField;
+    }
+}
diff --git a/src/main/java/kr/wisestone/owl/domain/IssueHosting.java b/src/main/java/kr/wisestone/owl/domain/IssueHosting.java
new file mode 100644
index 0000000..c7cd429
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/domain/IssueHosting.java
@@ -0,0 +1,105 @@
+package kr.wisestone.owl.domain;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * Created by wisestone on 2018-03-07.
+ */
+@Entity
+public class IssueHosting extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String name;
+    private String manager;
+    private String tel;
+    private String email;
+    private String memo;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "issue_id")
+    private Issue issue;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "hosting_id")
+    private HostingField hostingField;
+
+    public IssueHosting(){}
+
+    public IssueHosting(Issue issue, HostingField hostingField, String name, String manager, String tel, String email, String memo){
+        this.issue = issue;
+        this.hostingField = hostingField;
+        this.name = name;
+        this.manager = manager;
+        this.tel = tel;
+        this.email = email;
+        this.memo = memo;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getManager() {
+        return manager;
+    }
+
+    public void setManager(String manager) {
+        this.manager = manager;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public Issue getIssue() {
+        return issue;
+    }
+
+    public void setIssue(Issue issue) {
+        this.issue = issue;
+    }
+
+    public HostingField getHostingField() {
+        return hostingField;
+    }
+
+    public void setHostingField(HostingField hostingField) {
+        this.hostingField = hostingField;
+    }
+}
diff --git a/src/main/java/kr/wisestone/owl/domain/IssueIsp.java b/src/main/java/kr/wisestone/owl/domain/IssueIsp.java
new file mode 100644
index 0000000..681e980
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/domain/IssueIsp.java
@@ -0,0 +1,105 @@
+package kr.wisestone.owl.domain;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * Created by wisestone on 2018-03-07.
+ */
+@Entity
+public class IssueIsp extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String name;
+    private String manager;
+    private String tel;
+    private String email;
+    private String memo;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "issue_id")
+    private Issue issue;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "isp_id")
+    private IspField ispField;
+
+    public IssueIsp(){}
+
+    public IssueIsp(Issue issue, IspField ispField, String name, String manager, String tel, String email, String memo){
+        this.issue = issue;
+        this.ispField = ispField;
+        this.name = name;
+        this.manager = manager;
+        this.tel = tel;
+        this.email = email;
+        this.memo = memo;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getManager() {
+        return manager;
+    }
+
+    public void setManager(String manager) {
+        this.manager = manager;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public Issue getIssue() {
+        return issue;
+    }
+
+    public void setIssue(Issue issue) {
+        this.issue = issue;
+    }
+
+    public IspField getIspField() {
+        return ispField;
+    }
+
+    public void setIspField(IspField ispField) {
+        this.ispField = ispField;
+    }
+}
diff --git a/src/main/java/kr/wisestone/owl/mapper/IssueCompanyMapper.java b/src/main/java/kr/wisestone/owl/mapper/IssueCompanyMapper.java
new file mode 100644
index 0000000..1abebe9
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/mapper/IssueCompanyMapper.java
@@ -0,0 +1,16 @@
+package kr.wisestone.owl.mapper;
+
+import kr.wisestone.owl.web.condition.IssueCondition;
+import kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by wisestone on 2018-06-07.
+ */
+@Repository
+public interface IssueCompanyMapper {
+    List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition);
+}
diff --git a/src/main/java/kr/wisestone/owl/mapper/IssueHostingMapper.java b/src/main/java/kr/wisestone/owl/mapper/IssueHostingMapper.java
new file mode 100644
index 0000000..1f79d07
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/mapper/IssueHostingMapper.java
@@ -0,0 +1,16 @@
+package kr.wisestone.owl.mapper;
+
+import kr.wisestone.owl.web.condition.IssueCondition;
+import kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by wisestone on 2018-06-07.
+ */
+@Repository
+public interface IssueHostingMapper {
+    List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition);
+}
diff --git a/src/main/java/kr/wisestone/owl/mapper/IssueIspMapper.java b/src/main/java/kr/wisestone/owl/mapper/IssueIspMapper.java
new file mode 100644
index 0000000..1546cfe
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/mapper/IssueIspMapper.java
@@ -0,0 +1,16 @@
+package kr.wisestone.owl.mapper;
+
+import kr.wisestone.owl.web.condition.IssueCondition;
+import kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by wisestone on 2018-06-07.
+ */
+@Repository
+public interface IssueIspMapper {
+    List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition);
+}
diff --git a/src/main/java/kr/wisestone/owl/repository/IssueCompanyRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueCompanyRepository.java
new file mode 100644
index 0000000..1ac1e92
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/repository/IssueCompanyRepository.java
@@ -0,0 +1,12 @@
+package kr.wisestone.owl.repository;
+
+import kr.wisestone.owl.domain.IssueCompany;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+public interface IssueCompanyRepository extends JpaRepository<IssueCompany, Long> {
+
+    List<IssueCompany> findByIssueId(@Param("issueId") Long issueId);
+}
diff --git a/src/main/java/kr/wisestone/owl/repository/IssueHostingRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueHostingRepository.java
new file mode 100644
index 0000000..17235b4
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/repository/IssueHostingRepository.java
@@ -0,0 +1,12 @@
+package kr.wisestone.owl.repository;
+
+import kr.wisestone.owl.domain.IssueHosting;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+public interface IssueHostingRepository extends JpaRepository<IssueHosting, Long> {
+
+    List<IssueHosting> findByIssueId(@Param("issueId") Long issueId);
+}
diff --git a/src/main/java/kr/wisestone/owl/repository/IssueIspRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueIspRepository.java
new file mode 100644
index 0000000..9a2d0df
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/repository/IssueIspRepository.java
@@ -0,0 +1,12 @@
+package kr.wisestone.owl.repository;
+
+import kr.wisestone.owl.domain.IssueIsp;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+public interface IssueIspRepository extends JpaRepository<IssueIsp, Long> {
+
+    List<IssueIsp> findByIssueId(@Param("issueId") Long issueId);
+}
diff --git a/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java b/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java
new file mode 100644
index 0000000..1739482
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java
@@ -0,0 +1,15 @@
+package kr.wisestone.owl.service;
+
+import kr.wisestone.owl.domain.Issue;
+import kr.wisestone.owl.domain.IssueCompany;
+import kr.wisestone.owl.web.condition.IssueCondition;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IssueCompanyService extends AbstractService<IssueCompany, Long, JpaRepository<IssueCompany, Long>>{
+    void modifyIssueCompanyField(Issue issue, List<Map<String, Object>> issueCompanyField);
+
+    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
new file mode 100644
index 0000000..d62ec59
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/service/IssueHostingService.java
@@ -0,0 +1,15 @@
+package kr.wisestone.owl.service;
+
+import kr.wisestone.owl.domain.Issue;
+import kr.wisestone.owl.domain.IssueHosting;
+import kr.wisestone.owl.web.condition.IssueCondition;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IssueHostingService extends AbstractService<IssueHosting, Long, JpaRepository<IssueHosting, Long>>{
+    void modifyIssueHostingField(Issue issue, List<Map<String, Object>> issueHostingField);
+
+    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
new file mode 100644
index 0000000..071ff49
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/service/IssueIspService.java
@@ -0,0 +1,15 @@
+package kr.wisestone.owl.service;
+
+import kr.wisestone.owl.domain.Issue;
+import kr.wisestone.owl.domain.IssueIsp;
+import kr.wisestone.owl.web.condition.IssueCondition;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IssueIspService extends AbstractService<IssueIsp, Long, JpaRepository<IssueIsp, Long>>{
+    void modifyIssueIspField(Issue issue, List<Map<String, Object>> issueIspField);
+
+    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 3f1fd72..648bfdb 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -169,7 +169,6 @@
             throw new OwlRuntimeException(
                     this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_EXIST));
         }
-
         CompanyField companyField = this.findOne(id);
 
         if (companyField == 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
new file mode 100644
index 0000000..aa9ff25
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java
@@ -0,0 +1,70 @@
+package kr.wisestone.owl.service.impl;
+
+import kr.wisestone.owl.domain.*;
+import kr.wisestone.owl.mapper.IssueCompanyMapper;
+import kr.wisestone.owl.repository.IssueCompanyRepository;
+import kr.wisestone.owl.service.*;
+import kr.wisestone.owl.util.ConvertUtil;
+import kr.wisestone.owl.util.MapUtil;
+import kr.wisestone.owl.web.condition.IssueCondition;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Service
+public class IssueCompanyServiceImpl extends AbstractServiceImpl<IssueCompany, Long, JpaRepository<IssueCompany, Long>> implements IssueCompanyService {
+
+    private static final Logger log = LoggerFactory.getLogger(IssueCompanyServiceImpl.class);
+
+    @Autowired
+    private IssueCompanyRepository issueCompanyRepository;
+
+    @Autowired
+    private CompanyFieldService companyFieldService;
+
+    @Autowired
+    private IssueCompanyMapper issueCompanyMapper;
+
+    @Override
+    protected JpaRepository<IssueCompany, Long> getRepository() {
+        return this.issueCompanyRepository;
+    }
+
+    //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎.
+    @Override
+    @Transactional
+    public void modifyIssueCompanyField(Issue issue, List<Map<String, Object>> issueCompanyFields) {
+        if (issue != null) {
+            if (issueCompanyFields != null && issueCompanyFields.size() > 0) {
+                Map<String, Object> param = issueCompanyFields.get(0);
+
+                if (param != null) {
+                    IssueCompany newIssueCompany = ConvertUtil.convertMapToClass(param, IssueCompany.class);
+                    newIssueCompany.setIssue(issue);
+                    CompanyField companyField = this.companyFieldService.getCompany(MapUtil.getLong(param, "companyId"));
+                    newIssueCompany.setCompanyField(companyField);
+
+                    Set<IssueCompany> issueCompanies = issue.getIssueCompanies();
+                    if (issueCompanies != null && issueCompanies.size() > 0) {
+                        IssueCompany oldIssueCompany = issueCompanies.iterator().next();
+                        ConvertUtil.copyProperties(newIssueCompany, oldIssueCompany);
+                    }
+
+                    this.issueCompanyRepository.saveAndFlush(newIssueCompany);
+
+                }
+            }
+        }
+    }
+
+    @Override
+    @Transactional(readOnly = true)
+    public List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition) {
+        return this.issueCompanyMapper.findInIssueIds(issueCondition);
+    }
+}
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java
new file mode 100644
index 0000000..84c62c8
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java
@@ -0,0 +1,72 @@
+package kr.wisestone.owl.service.impl;
+
+import kr.wisestone.owl.domain.*;
+import kr.wisestone.owl.mapper.HostingFieldMapper;
+import kr.wisestone.owl.mapper.IssueHostingMapper;
+import kr.wisestone.owl.repository.IssueHostingRepository;
+import kr.wisestone.owl.service.*;
+import kr.wisestone.owl.util.ConvertUtil;
+import kr.wisestone.owl.util.MapUtil;
+import kr.wisestone.owl.web.condition.IssueCondition;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Service
+public class IssueHostingServiceImpl extends AbstractServiceImpl<IssueHosting, Long, JpaRepository<IssueHosting, Long>> implements IssueHostingService {
+
+    private static final Logger log = LoggerFactory.getLogger(IssueHostingServiceImpl.class);
+
+    @Autowired
+    private IssueHostingRepository issueHostingRepository;
+
+    @Autowired
+    private HostingFieldService hostingFieldService;
+
+    @Autowired
+    private IssueHostingMapper issueHostingMapper;
+
+    @Override
+    protected JpaRepository<IssueHosting, Long> getRepository() {
+        return this.issueHostingRepository;
+    }
+
+    //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎.
+    @Override
+    @Transactional
+    public void modifyIssueHostingField(Issue issue, List<Map<String, Object>> issueIspFields) {
+        if (issue != null) {
+            if (issueIspFields != null && issueIspFields.size() > 0) {
+                Map<String, Object> param = issueIspFields.get(0);
+
+                if (param != null) {
+                    IssueHosting newIssueHosting = ConvertUtil.convertMapToClass(param, IssueHosting.class);
+                    newIssueHosting.setIssue(issue);
+                    HostingField hostingField = this.hostingFieldService.getHosting(MapUtil.getLong(param, "hostingId"));
+                    newIssueHosting.setHostingField(hostingField);
+
+                    Set<IssueHosting> issueHostings = issue.getIssueHostingFields();
+                    if (issueHostings != null && issueHostings.size() > 0) {
+                        IssueHosting oldIssueHosting = issueHostings.iterator().next();
+                        ConvertUtil.copyProperties(newIssueHosting, oldIssueHosting);
+                    }
+
+                    this.issueHostingRepository.saveAndFlush(newIssueHosting);
+                }
+            }
+        }
+    }
+
+    @Override
+    @Transactional(readOnly = true)
+    public List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition) {
+        return issueHostingMapper.findInIssueIds(issueCondition);
+    }
+
+
+}
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java
new file mode 100644
index 0000000..1d7dbc7
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java
@@ -0,0 +1,69 @@
+package kr.wisestone.owl.service.impl;
+
+import kr.wisestone.owl.domain.*;
+import kr.wisestone.owl.mapper.IssueIspMapper;
+import kr.wisestone.owl.repository.IssueIspRepository;
+import kr.wisestone.owl.service.*;
+import kr.wisestone.owl.util.ConvertUtil;
+import kr.wisestone.owl.util.MapUtil;
+import kr.wisestone.owl.web.condition.IssueCondition;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Service
+public class IssueIspServiceImpl extends AbstractServiceImpl<IssueIsp, Long, JpaRepository<IssueIsp, Long>> implements IssueIspService {
+
+    private static final Logger log = LoggerFactory.getLogger(IssueIspServiceImpl.class);
+
+    @Autowired
+    private IssueIspRepository issueIspRepository;
+
+    @Autowired
+    private IspFieldService ispFieldService;
+
+    @Autowired
+    private IssueIspMapper issueIspMapper;
+
+    @Override
+    protected JpaRepository<IssueIsp, Long> getRepository() {
+        return this.issueIspRepository;
+    }
+
+    //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎.
+    @Override
+    @Transactional
+    public void modifyIssueIspField(Issue issue, List<Map<String, Object>> issueIspFields) {
+        if (issue != null) {
+            if (issueIspFields != null && issueIspFields.size() > 0) {
+                Map<String, Object> param = issueIspFields.get(0);
+
+                if (param != null) {
+                    IssueIsp newIssueIsp = ConvertUtil.convertMapToClass(param, IssueIsp.class);
+                    newIssueIsp.setIssue(issue);
+                    IspField ispField = this.ispFieldService.getIsp(MapUtil.getLong(param, "ispId"));
+                    newIssueIsp.setIspField(ispField);
+
+                    Set<IssueIsp> issueIsps = issue.getIssueIspFields();
+                    if (issueIsps != null && issueIsps.size() > 0) {
+                        IssueIsp oldIssueIsp = issueIsps.iterator().next();
+                        ConvertUtil.copyProperties(newIssueIsp, oldIssueIsp);
+                    }
+
+                    this.issueIspRepository.saveAndFlush(newIssueIsp);
+                }
+            }
+        }
+    }
+
+    @Override
+    @Transactional(readOnly = true)
+    public List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition) {
+        return this.issueIspMapper.findInIssueIds(issueCondition);
+    }
+}
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 1fdcfc3..800e2e7 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -44,7 +44,6 @@
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.util.*;
-import java.util.concurrent.locks.Condition;
 
 @Service
 public class IssueServiceImpl extends AbstractServiceImpl<Issue, Long, JpaRepository<Issue, Long>> implements IssueService {
@@ -89,6 +88,15 @@
 
     @Autowired
     private IssueCustomFieldValueService issueCustomFieldValueService;
+
+    @Autowired
+    private IssueCompanyService issueCompanyService;
+
+    @Autowired
+    private IssueIspService issueIspService;
+
+    @Autowired
+    private IssueHostingService issueHostingService;
 
     @Autowired
     private IssueUserService issueUserService;
@@ -197,22 +205,6 @@
         issue.setPriority(priority);
         issue.setSeverity(severity);
 
-        //  �뾽泥� �븘�뱶 �쑀�슚�꽦 泥댄겕
-        if(issueForm.getCompanyId() != null){
-            CompanyField companyField = this.companyFieldService.getCompany(issueForm.getCompanyId());
-            issue.setCompanyField(companyField);
-        }
-        //  ISP �븘�뱶 �쑀�슚�꽦 泥댄겕
-        if(issueForm.getIspId() != null) {
-            IspField ispField = this.ispFieldService.getIsp(issueForm.getIspId());
-            issue.setIspFieldId(ispField);
-        }
-        //  HOSTING �븘�뱶 �쑀�슚�꽦 泥댄겕
-        if (issueForm.getHostingId() != null){
-            HostingField hostingField = this.hostingFieldService.getHosting(issueForm.getHostingId());
-            issue.setHostingFieldId(hostingField);
-        }
-
         issue.setIssueNumber(this.issueNumberGeneratorService.generateIssueNumber(project));    //  媛� �봽濡쒖젥�듃�쓽 怨좎쑀 �씠�뒋 踰덊샇 �깮�꽦
 
         this.issueRepository.saveAndFlush(issue);
@@ -241,6 +233,12 @@
         this.reservationIssueEmail(issue.getId(), EmailType.ISSUE_ADD);
         //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_ADD));
+        //  �뾽泥� �젙蹂� ���옣
+        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm.getIssueCompanyFields());
+        //  ISP �젙蹂� ���옣
+        this.issueIspService.modifyIssueIspField(issue, issueForm.getIssueIspFields());
+        //  HOSTING �젙蹂� ���옣
+        this.issueHostingService.modifyIssueHostingField(issue, issueForm.getIssueHostingFields());
 
         return issue;
     }
@@ -345,6 +343,9 @@
 
         issueMap.put("customFields", customFields);
         issueMap.put("description", issue.getDescription());
+
+        //�뾽泥�,ISP,HOSTING 異붽�
+
 
         StringBuilder attachedFileBuilder = new StringBuilder();
 
@@ -454,7 +455,7 @@
     @Override
     @Transactional(readOnly = true)
     public List<IssueVo> findChartIssue(Map<String, Object> resJsonData,
-                                   IssueCondition issueCondition, Pageable pageable) {
+                                        IssueCondition issueCondition, Pageable pageable) {
 
         //  寃��깋 議곌굔�쓣 留뚮뱺�떎
         if (!this.makeIssueSearchCondition(issueCondition,Lists.newArrayList("01", "02", "03"), pageable)) {
@@ -564,9 +565,16 @@
 
         //  �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂� 異붽�
         this.setIssueCustomFieldValue(issueVos, issueCondition);
+        //  �뾽泥� �젙蹂� 異붽�
+        //this.setIssueCompanyField(issueVos, issueCondition);
+        //  ISP �젙蹂� 異붽�
+        //this.setIssueIspField(issueVos, issueCondition);
+        //  HOSTING �젙蹂� 異붽�
+        //this.setIssueHostingField(issueVos, issueCondition);
+
     }
 
-        //  寃��깋 議곌굔�쓣 留뚮뱺�떎
+    //  寃��깋 議곌굔�쓣 留뚮뱺�떎
     private boolean makeIssueSearchCondition(IssueCondition condition, List<String> projectStatues, Pageable pageable) {
         if (pageable != null) {
             condition.setPage(pageable.getPageNumber() * pageable.getPageSize());
@@ -792,9 +800,6 @@
                     issueVo.setIssueStatusVo(ConvertUtil.copyProperties(issue.getIssueStatus(), IssueStatusVo.class));
                     issueVo.setPriorityVo(ConvertUtil.copyProperties(issue.getPriority(), PriorityVo.class));
                     issueVo.setSeverityVo(ConvertUtil.copyProperties(issue.getSeverity(), SeverityVo.class));
-                    issueVo.setCompanyFieldVo(ConvertUtil.copyProperties(issue.getCompanyField(), CompanyFieldVo.class));
-                    issueVo.setIspFieldVo(ConvertUtil.copyProperties(issue.getIspFieldId(), IspFieldVo.class));
-                    issueVo.setHostingFieldVo(ConvertUtil.copyProperties(issue.getHostingFieldId(), HostingFieldVo.class));
 
                     this.setRegister(issue, issueVo);   //  �벑濡앹옄 �젙蹂� �뀑�똿
                     //this.setIssueUser(issue, issueVo);  //  �떞�떦�옄 �젙蹂� �뀑�똿
@@ -836,9 +841,6 @@
         issueVo.setIssueStatusVo(issueStatusVo);
         issueVo.setPriorityVo(ConvertUtil.copyProperties(issue.getPriority(), PriorityVo.class));
         issueVo.setSeverityVo(ConvertUtil.copyProperties(issue.getSeverity(), SeverityVo.class));
-        issueVo.setCompanyFieldVo(ConvertUtil.copyProperties(issue.getCompanyField(), CompanyFieldVo.class));
-        issueVo.setIspFieldVo(ConvertUtil.copyProperties(issue.getIspFieldId(), IspFieldVo.class));
-        issueVo.setHostingFieldVo(ConvertUtil.copyProperties(issue.getHostingFieldId(), HostingFieldVo.class));
         this.setRegister(issue, issueVo);   //  �벑濡앹옄 �젙蹂� �뀑�똿
         //this.setIssueUser(issue, issueVo);  //  �떞�떦�옄 �젙蹂� �뀑�똿
         this.setIssueDepartment(issue, issueVo);  //  �떞�떦遺��꽌 �젙蹂� �뀑�똿
@@ -1612,6 +1614,69 @@
         }
     }
 
+    //  �뾽泥� �젙蹂� 異붽�
+    private void setIssueCompanyField(List<IssueVo> issueVos, IssueCondition issueCondition) {
+        //  �씠�뒋�뿉�꽌 ���옣�븳 �뾽泥� 媛믪쓣 議고쉶�븳�떎.
+        List<Map<String, Object>> issueCompanyFields = this.issueCompanyService.findInIssueIds(issueCondition);
+
+        for (IssueVo issueVo : issueVos) {
+            for (Map<String, Object> issueCompanyField : issueCompanyFields) {
+                if (issueVo.getId().equals(MapUtil.getLong(issueCompanyField, "issueId"))) {
+                    IssueCompanyVo issueCompanyVo = new IssueCompanyVo();
+                    issueCompanyVo.setName(MapUtil.getString(issueCompanyField, "companyName"));
+                    issueCompanyVo.setManager(MapUtil.getString(issueCompanyField, "companyManager"));
+                    issueCompanyVo.setTel(MapUtil.getString(issueCompanyField, "companyTel"));
+                    issueCompanyVo.setEmail(MapUtil.getString(issueCompanyField, "companyEmail"));
+                    issueCompanyVo.setMemo(MapUtil.getString(issueCompanyField, "companyMemo"));
+
+                    issueVo.addIssueCompanyFieldVo(issueCompanyVo);
+                }
+            }
+        }
+    }
+
+    //  Isp �젙蹂� 異붽�
+    private void setIssueIspField(List<IssueVo> issueVos, IssueCondition issueCondition) {
+        //  �씠�뒋�뿉�꽌 ���옣�븳 ISP 媛믪쓣 議고쉶�븳�떎.
+        /*List<Map<String, Object>> issueIspFields = this.issueIspFieldService.findInIssueIds(issueCondition);*/
+
+        /*for (IssueVo issueVo : issueVos) {
+            for (Map<String, Object> issueIspField : issueIspFields) {
+                if (issueVo.getId().equals(MapUtil.getLong(issueIspField, "issueId"))) {
+                    IssueIspFieldVo issueIspFieldVo = new IssueIspFieldVo();
+                    issueIspFieldVo.setName(MapUtil.getString(issueIspField, "name"));
+                    issueIspFieldVo.setManager(MapUtil.getString(issueIspField, "manager"));
+                    issueIspFieldVo.setTel(MapUtil.getString(issueIspField, "tel"));
+                    issueIspFieldVo.setEmail(MapUtil.getString(issueIspField, "email"));
+                    issueIspFieldVo.setMemo(MapUtil.getString(issueIspField, "memo"));
+
+                    issueVo.addIssueIspFieldVo(issueIspFieldVo);
+                }
+            }
+        }*/
+    }
+
+    // Hosting �젙蹂� 異붽�
+    private void setIssueHostingField(List<IssueVo> issueVos, IssueCondition issueCondition) {
+        //  �씠�뒋�뿉�꽌 ���옣�븳 Hosting 媛믪쓣 議고쉶�븳�떎.
+        List<Map<String, Object>> issueHostingFields = this.issueHostingService.findInIssueIds(issueCondition);
+
+        for (IssueVo issueVo : issueVos) {
+            for (Map<String, Object> issueHostingField : issueHostingFields) {
+                if (issueVo.getId().equals(MapUtil.getLong(issueHostingField, "issueId"))) {
+                    IssueHostingVo issueHostingVo = new IssueHostingVo();
+                    issueHostingVo.setName(MapUtil.getString(issueHostingField, "name"));
+                    issueHostingVo.setManager(MapUtil.getString(issueHostingField, "manager"));
+                    issueHostingVo.setTel(MapUtil.getString(issueHostingField, "tel"));
+                    issueHostingVo.setEmail(MapUtil.getString(issueHostingField, "email"));
+                    issueHostingVo.setMemo(MapUtil.getString(issueHostingField, "memo"));
+
+                    issueVo.addIssueHostingFieldVo(issueHostingVo);
+                }
+            }
+        }
+    }
+
     //  �뿰愿��씪媛� �젙蹂� 異붽�
     private void setRelationIssue(IssueVo issueVo, Long issueId) {
         List<IssueVo> relationIssues = this.issueRelationService.findRelationIssue(issueId);
@@ -1665,6 +1730,8 @@
                         result.put("customField_" + issueCustomFieldValueVo.getCustomFieldVo().getId().toString(), useValue + ", " + issueCustomFieldValueVo.getUseValue());
                     }
                 }
+
+                //�뾽泥�, ISP, �샇�뒪�똿 異붽�
 
                 results.add(result);
             } catch (Exception e) {
@@ -1830,6 +1897,8 @@
             this.bulkInsertIssueCustomFieldValue(issueForms, issueTypeCustomFieldMaps);
             //  3.628 - 3.445
 
+            // �뾽泥�,ISP,�샇�뒪�똿 異붽�
+
             /*serviceStart.stop();
             log.debug("2李� ���옣 �떆媛� : " + serviceStart.getTime());*/
 
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java b/src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java
new file mode 100644
index 0000000..816143e
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java
@@ -0,0 +1,63 @@
+package kr.wisestone.owl.vo;
+
+/**
+ * Created by wisestone on 2018-06-01.
+ */
+public class IssueCompanyVo extends BaseVo{
+    private Long id;
+    private String name;
+    private String manager;
+    private String tel;
+    private String email;
+    private String memo;
+
+    public IssueCompanyVo(){}
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getManager() {
+        return manager;
+    }
+
+    public void setManager(String manager) {
+        this.manager = manager;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+}
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java b/src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java
new file mode 100644
index 0000000..c5ca3ae
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java
@@ -0,0 +1,63 @@
+package kr.wisestone.owl.vo;
+
+/**
+ * Created by wisestone on 2018-06-01.
+ */
+public class IssueHostingVo extends BaseVo{
+    private Long id;
+    private String name;
+    private String manager;
+    private String tel;
+    private String email;
+    private String memo;
+
+    public IssueHostingVo(){}
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getManager() {
+        return manager;
+    }
+
+    public void setManager(String manager) {
+        this.manager = manager;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+}
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueIspVo.java b/src/main/java/kr/wisestone/owl/vo/IssueIspVo.java
new file mode 100644
index 0000000..ee07126
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/vo/IssueIspVo.java
@@ -0,0 +1,63 @@
+package kr.wisestone.owl.vo;
+
+/**
+ * Created by wisestone on 2018-06-01.
+ */
+public class IssueIspVo extends BaseVo{
+    private Long id;
+    private String name;
+    private String manager;
+    private String tel;
+    private String email;
+    private String memo;
+
+    public IssueIspVo(){}
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getManager() {
+        return manager;
+    }
+
+    public void setManager(String manager) {
+        this.manager = manager;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+}
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueVo.java b/src/main/java/kr/wisestone/owl/vo/IssueVo.java
index ab9768d..c616527 100644
--- a/src/main/java/kr/wisestone/owl/vo/IssueVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/IssueVo.java
@@ -1,6 +1,7 @@
 package kr.wisestone.owl.vo;
 
 import com.google.common.collect.Lists;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -35,9 +36,6 @@
     private PriorityVo priorityVo;  //  �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜
     private SeverityVo severityVo;  //  �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜
     private UserVo registerVo;  //  �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜
-    private CompanyFieldVo companyFieldVo; //  �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜
-    private IspFieldVo ispFieldVo; //  �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜
-    private HostingFieldVo hostingFieldVo; //  �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜
     private Boolean modifyPermissionCheck = Boolean.FALSE;
     private List<UserVo> userVos = Lists.newArrayList();
     private List<DepartmentVo> departmentVos = Lists.newArrayList(); //�떞�떦遺��꽌 異붽�
@@ -52,9 +50,11 @@
     private Long attachedFileCount;
     private Long issueCommentCount;
     private String modifyByName;    //  蹂�寃쎌옄 �젙蹂� - �씠�뒋 蹂�寃� �젙蹂� �긽�꽭 �솗�씤�뿉�꽌 �궗�슜
-    private String byName;    //  蹂�寃쎌옄 �젙蹂� - �씠�뒋 蹂�寃� �젙蹂� �긽�꽭 �솗�씤�뿉�꽌 �궗�슜
     private WorkflowStatusVo workflowStatusVo;
     private Long parentIssueId;     // �긽�쐞 �씪媛�
+    private List<IssueCompanyVo> issueCompanyVos = Lists.newArrayList();
+    private List<IssueIspVo> issueIspVos = Lists.newArrayList();
+    private List<IssueHostingVo> issueHostingVos = Lists.newArrayList();
 
     public IssueVo(){}
 
@@ -314,6 +314,42 @@
         this.issueCustomFieldValueVos.add(issueCustomFieldValueVo);
     }
 
+    public List<IssueCompanyVo> getIssueCompanyFieldVos() {
+        return issueCompanyVos;
+    }
+
+    public void setIssueCompanyFieldVos(List<IssueCompanyVo> issueCompanyVos) {
+        this.issueCompanyVos = issueCompanyVos;
+    }
+
+    public void addIssueCompanyFieldVo(IssueCompanyVo issueCompanyVo) {
+        this.issueCompanyVos.add(issueCompanyVo);
+    }
+
+    public List<IssueIspVo> getIssueIspFieldVos() {
+        return issueIspVos;
+    }
+
+    public void setIssueIspFieldVos(List<IssueIspVo> issueIspVos) {
+        this.issueIspVos = issueIspVos;
+    }
+
+    public void addIssueIspFieldVo(IssueIspVo issueIspVo) {
+        this.issueIspVos.add(issueIspVo);
+    }
+
+    public List<IssueHostingVo> getIssueHostingFieldVos() {
+        return issueHostingVos;
+    }
+
+    public void setIssueHostingFieldVos(List<IssueHostingVo> issueHostingVos) {
+        this.issueHostingVos = issueHostingVos;
+    }
+
+    public void addIssueHostingFieldVo(IssueHostingVo issueHostingVo) {
+        this.issueHostingVos.add(issueHostingVo);
+    }
+
     public Long getAttachedFileCount() {
         return attachedFileCount;
     }
@@ -338,30 +374,6 @@
         this.registerVo = registerVo;
     }
 
-    public CompanyFieldVo getCompanyFieldVo() {
-        return companyFieldVo;
-    }
-
-    public void setCompanyFieldVo(CompanyFieldVo companyFieldVo) {
-        this.companyFieldVo = companyFieldVo;
-    }
-
-    public IspFieldVo getIspFieldVo() {
-        return ispFieldVo;
-    }
-
-    public void setIspFieldVo(IspFieldVo ispFieldVo) {
-        this.ispFieldVo = ispFieldVo;
-    }
-
-    public HostingFieldVo getHostingFieldVo() {
-        return hostingFieldVo;
-    }
-
-    public void setHostingFieldVo(HostingFieldVo hostingFieldVo) {
-        this.hostingFieldVo = hostingFieldVo;
-    }
-
     public List<IssueHistoryVo> getIssueHistoryVos() {
         return issueHistoryVos;
     }
@@ -376,14 +388,6 @@
 
     public void setModifyByName(String modifyByName) {
         this.modifyByName = modifyByName;
-    }
-
-    public String getByName() {
-        return byName;
-    }
-
-    public void setByName(String byName) {
-        this.byName = byName;
     }
 
     public void setWorkflowStatusVo(WorkflowStatusVo workflowStatusVo) {
diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
index adaf960..2399de7 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
@@ -44,6 +44,9 @@
     private List<Long> registerIds = Lists.newArrayList();
     private List<String> issueIds = Lists.newArrayList();   //  �씠�뒋 紐⑸줉 寃��깋�뿉�꽌 �궗�슜�옄 �젙�쓽 �븘�뱶濡� 1李� 寃��깋�븳 寃곌낵瑜� �떞�쓣�븣 �궗�슜
     private List<Map<String, Object>> issueCustomFields = Lists.newArrayList();
+    private List<Map<String, Object>> issueCompanyField = Lists.newArrayList();
+    private List<Map<String, Object>> issueIspField = Lists.newArrayList();
+    private List<Map<String, Object>> issueHostingField = Lists.newArrayList();
     private List<Long> statusIds = Lists.newArrayList();
     private List<Long> excludeIds = Lists.newArrayList();
 
@@ -84,6 +87,18 @@
 
         if (MapUtil.getObject(conditions, "issueCustomFields") != null) {
             condition.setIssueCustomFields((List)MapUtil.getObject(conditions, "issueCustomFields"));
+        }
+
+        if (MapUtil.getObject(conditions, "issueCompanyField") != null) {
+            condition.setIssueCompanyField((List)MapUtil.getObject(conditions, "issueCompanyField"));
+        }
+
+        if (MapUtil.getObject(conditions, "issueIspField") != null) {
+            condition.setIssueIspField((List)MapUtil.getObject(conditions, "issueIspField"));
+        }
+
+        if (MapUtil.getObject(conditions, "issueHostingField") != null) {
+            condition.setIssueHostingField((List)MapUtil.getObject(conditions, "issueHostingField"));
         }
 
         if (StringUtils.hasText(MapUtil.getString(conditions, "beginRegisterDate"))) {
@@ -355,6 +370,30 @@
         this.issueCustomFields = issueCustomFields;
     }
 
+    public List<Map<String, Object>> getIssueCompanyField() {
+        return issueCompanyField;
+    }
+
+    public void setIssueCompanyField(List<Map<String, Object>> issueCompanyField) {
+        this.issueCompanyField = issueCompanyField;
+    }
+
+    public List<Map<String, Object>> getIssueIspField() {
+        return issueIspField;
+    }
+
+    public void setIssueIspField(List<Map<String, Object>> issueIspField) {
+        this.issueIspField = issueIspField;
+    }
+
+    public List<Map<String, Object>> getIssueHostingField() {
+        return issueHostingField;
+    }
+
+    public void setIssueHostingField(List<Map<String, Object>> issueHostingField) {
+        this.issueHostingField = issueHostingField;
+    }
+
     public List<String> getIssueIds() {
         return issueIds;
     }
diff --git a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java
index 1350967..9f3a6cc 100644
--- a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java
+++ b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java
@@ -37,9 +37,9 @@
     private List<Long> removeIds = Lists.newArrayList();
     private List<Long> ids = Lists.newArrayList();  //  �씠�뒋 �떎以� �긽�깭 蹂�寃쎌뿉�꽌 �궗�슜
     private String comment; //  �씠�뒋 �긽�깭 蹂�寃쎌뿉�꽌 蹂�寃� �궗�쑀瑜� �엯�젰�븷 �븣 �궗�슜
-    private Long companyId;    //�뾽泥댄븘�뱶
-    private Long ispId;    //ISP�븘�뱶
-    private Long hostingId;    //�샇�뒪�똿�븘�뱶
+    private List<Map<String, Object>> issueCompanyFields = Lists.newArrayList();
+    private List<Map<String, Object>> issueIspFields = Lists.newArrayList();
+    private List<Map<String, Object>> issueHostingFields = Lists.newArrayList();
     private Long parentIssueId; // �긽�쐞 �씠�뒋
 
     public IssueForm() {
@@ -98,18 +98,18 @@
         }
 
         //  �뾽泥� �븘�뱶 �젙蹂�
-        if (MapUtil.getLongs(params, "companyFieldId") != null){
-            form.setCompanyId(MapUtil.getLong(params, "companyFieldId"));
+        if (MapUtil.getObject(params, "issueCompanyFields") != null){
+            form.setIssueCompanyFields((List)MapUtil.getObject(params, "issueCompanyFields"));
         }
 
         //  ISP �븘�뱶 �젙蹂�
-        if (MapUtil.getLongs(params, "ispFieldId") != null){
-            form.setIspId(MapUtil.getLong(params, "ispFieldId"));
+        if (MapUtil.getObject(params, "issueIspFields") != null){
+            form.setIssueIspFields((List)MapUtil.getObject(params, "issueIspFields"));
         }
 
         //  HOSTING �븘�뱶 �젙蹂�
-        if (MapUtil.getLongs(params, "hostingFieldId") != null){
-            form.setHostingId(MapUtil.getLong(params, "hostingFieldId"));
+        if (MapUtil.getObject(params, "issueHostingFields") != null){
+            form.setIssueHostingFields((List)MapUtil.getObject(params, "issueHostingFields"));
         }
         return form;
     }
@@ -290,28 +290,40 @@
         this.comment = comment;
     }
 
-    public Long getCompanyId() {
-        return companyId;
+    public List<Map<String, Object>> getIssueCompanyFields() {
+        return issueCompanyFields;
     }
 
-    public void setCompanyId(Long companyId) {
-        this.companyId = companyId;
+    public void setIssueCompanyFields(List<Map<String, Object>> issueCompanyFields) {
+        this.issueCompanyFields = issueCompanyFields;
     }
 
-    public Long getIspId() {
-        return ispId;
+    public void addissueCompanyField(Map<String, Object> issueCompanyFields) {
+        this.issueCompanyFields.add(issueCompanyFields);
     }
 
-    public void setIspId(Long ispId) {
-        this.ispId = ispId;
+    public List<Map<String, Object>> getIssueIspFields() {
+        return issueIspFields;
     }
 
-    public Long getHostingId() {
-        return hostingId;
+    public void setIssueIspFields(List<Map<String, Object>> issueIspFields) {
+        this.issueIspFields = issueIspFields;
     }
 
-    public void setHostingId(Long hostingId) {
-        this.hostingId = hostingId;
+    public void addIssueIspField(Map<String, Object> issueIspFields) {
+        this.issueIspFields.add(issueIspFields);
+    }
+
+    public List<Map<String, Object>> getIssueHostingFields() {
+        return issueHostingFields;
+    }
+
+    public void setIssueHostingFields(List<Map<String, Object>> issueHostingFields) {
+        this.issueHostingFields = issueHostingFields;
+    }
+
+    public void addIssueHostingField(Map<String, Object> issueHostingFields) {
+        this.issueHostingFields.add(issueHostingFields);
     }
 
     public Long getParentIssueId() {
diff --git a/src/main/resources/migration/V1_11__Alter_Table.sql b/src/main/resources/migration/V1_11__Alter_Table.sql
index caf331d..e2de0ac 100644
--- a/src/main/resources/migration/V1_11__Alter_Table.sql
+++ b/src/main/resources/migration/V1_11__Alter_Table.sql
@@ -129,3 +129,54 @@
 
 -- �긽�쐞 �씠�뒋
 ALTER TABLE `issue` ADD COLUMN  `parent_issue_id` BIGINT(11) NULL;
+
+CREATE TABLE `issue_company` (
+    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+    `issue_id` bigint(20) NOT NULL,
+    `company_id` bigint(20) DEFAULT NULL,
+    `name` VARCHAR(50) NULL,
+    `manager` VARCHAR(50) NULL,
+    `tel` VARCHAR (50) NULL,
+    `email` VARCHAR (255) NULL,
+    `memo` VARCHAR(255) NULL,
+    `register_id` bigint(20) NOT NULL COMMENT 'register_id',
+    `register_date` timestamp NULL DEFAULT NULL COMMENT 'register_date',
+    `modify_id` bigint(20) NOT NULL COMMENT 'modify_id',
+    `modify_date` timestamp NULL DEFAULT NULL COMMENT 'modify_date',
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX `companyIdIndex` (`company_id`) USING BTREE
+    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+CREATE TABLE `issue_hosting` (
+    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+    `issue_id` bigint(20) NOT NULL,
+    `hosting_id` bigint(20) DEFAULT NULL,
+    `name` VARCHAR(50) NULL,
+    `manager` VARCHAR(50) NULL,
+    `tel` VARCHAR (50) NULL,
+    `email` VARCHAR (255) NULL,
+    `memo` VARCHAR(255) NULL,
+    `register_id` bigint(20) NOT NULL COMMENT 'register_id',
+    `register_date` timestamp NULL DEFAULT NULL COMMENT 'register_date',
+    `modify_id` bigint(20) NOT NULL COMMENT 'modify_id',
+    `modify_date` timestamp NULL DEFAULT NULL COMMENT 'modify_date',
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX `hostingIdIndex` (`hosting_id`) USING BTREE
+    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+CREATE TABLE `issue_isp` (
+    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+    `issue_id` bigint(20) NOT NULL,
+    `isp_id` bigint(20) DEFAULT NULL,
+    `name` VARCHAR(50) NULL,
+    `manager` VARCHAR(50) NULL,
+    `tel` VARCHAR (50) NULL,
+    `email` VARCHAR (255) NULL,
+    `memo` VARCHAR(255) NULL,
+    `register_id` bigint(20) NOT NULL COMMENT 'register_id',
+    `register_date` timestamp NULL DEFAULT NULL COMMENT 'register_date',
+    `modify_id` bigint(20) NOT NULL COMMENT 'modify_id',
+    `modify_date` timestamp NULL DEFAULT NULL COMMENT 'modify_date',
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX `ispIdIndex` (`isp_id`) USING BTREE
+    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
diff --git a/src/main/resources/migration/V1_1__Initial_Setup.sql b/src/main/resources/migration/V1_1__Initial_Setup.sql
index 54b934e..6474c42 100644
--- a/src/main/resources/migration/V1_1__Initial_Setup.sql
+++ b/src/main/resources/migration/V1_1__Initial_Setup.sql
@@ -80,9 +80,6 @@
     `project_id` bigint(20) DEFAULT NULL,
     `priority_id` bigint(20) DEFAULT NULL,
     `severity_id` bigint(20) DEFAULT NULL,
-    `company_id` bigint(20) DEFAULT NULL,
-    `hosting_id` bigint(20) DEFAULT NULL,
-    `isp_id` bigint(20) DEFAULT NULL,
     `title` varchar(300) DEFAULT NULL,
     `description` mediumtext COMMENT 'description',
     `reverse_index` bigint(20) DEFAULT NULL,
diff --git a/src/main/resources/mybatis/query-template/issueCompany-template.xml b/src/main/resources/mybatis/query-template/issueCompany-template.xml
new file mode 100644
index 0000000..5f1bab4
--- /dev/null
+++ b/src/main/resources/mybatis/query-template/issueCompany-template.xml
@@ -0,0 +1,27 @@
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="kr.wisestone.owl.mapper.IssueCompanyMapper">
+
+    <select id="findInIssueIds" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition">
+        SELECT
+        ic.issue_id as issueId,
+        ic.company_id as companyId,
+        ic.name as companyName,
+        ic.manager as companyManager,
+        ic.tel as companyTel,
+        ic.email as companyEmail,
+        ic.memo as companyMemo
+        FROM issue_company ic
+        WHERE 1=1
+        <choose>
+            <when test="issueIds.size != 0">
+                AND ic.issue_id IN
+                <foreach collection="issueIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </when>
+        </choose>
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/query-template/issueHosting-template.xml b/src/main/resources/mybatis/query-template/issueHosting-template.xml
new file mode 100644
index 0000000..6acbbc9
--- /dev/null
+++ b/src/main/resources/mybatis/query-template/issueHosting-template.xml
@@ -0,0 +1,27 @@
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="kr.wisestone.owl.mapper.IssueHostingMapper">
+
+    <select id="findInIssueIds" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition">
+        SELECT
+        ih.issue_id as issueId,
+        ih.hosting_id as hostingId,
+        ih.name as hostingName,
+        ih.manager as hostingManager,
+        ih.tel as hostingTel,
+        ih.email as hostingEmail,
+        ih.memo as hostingMemo
+        FROM issue_hosting ih
+        WHERE 1=1
+        <choose>
+            <when test="issueIds.size != 0">
+                AND ih.issue_id IN
+                <foreach collection="issueIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </when>
+        </choose>
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/query-template/issueIsp-template.xml b/src/main/resources/mybatis/query-template/issueIsp-template.xml
new file mode 100644
index 0000000..2d70cb5
--- /dev/null
+++ b/src/main/resources/mybatis/query-template/issueIsp-template.xml
@@ -0,0 +1,27 @@
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="kr.wisestone.owl.mapper.IssueIspMapper">
+
+    <select id="findInIssueIds" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition">
+        SELECT
+        ii.issue_id as issueId,
+        ii.isp_id as ispId,
+        ii.name as ispName,
+        ii.manager as ispManager,
+        ii.tel as ispTel,
+        ii.email as ispEmail,
+        ii.memo as ispMemo
+        FROM issue_isp ii
+        WHERE 1=1
+        <choose>
+            <when test="issueIds.size != 0">
+                AND ii.issue_id IN
+                <foreach collection="issueIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </when>
+        </choose>
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
index 14a3616..56c98ce 100644
--- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -340,6 +340,7 @@
 
                 // �뾽泥댁젙蹂� 寃곌낵 媛� Event 泥섎━(set)
                 $scope.$on("companyFieldEvent", function (event, result) {
+                    $scope.vm.companyId = result[0].id;
                     $scope.vm.companyManager = result[0].manager;
                     $scope.vm.companyTel = result[0].tel;
                     $scope.vm.companyEmail = result[0].email;
@@ -349,6 +350,7 @@
 
                 // ISP�젙蹂� 寃곌낵 媛� Event 泥섎━(set)
                 $scope.$on("ispFieldEvent", function (event, result) {
+                    $scope.vm.ispId = result[0].id;
                     $scope.vm.ispCode = result[0].code;
                     $scope.vm.ispManager = result[0].manager;
                     $scope.vm.ispTel = result[0].tel;
@@ -358,6 +360,7 @@
 
                 // �샇�뒪�똿�젙蹂� 寃곌낵 媛� Event 泥섎━(set)
                 $scope.$on("hostingFieldEvent", function (event, result) {
+                    $scope.vm.hostingId = result[0].id;
                     $scope.vm.hostingCode = result[0].code;
                     $scope.vm.hostingManager = result[0].manager;
                     $scope.vm.hostingTel = result[0].tel;
@@ -457,74 +460,35 @@
                         startCompleteDateRange : $scope.vm.form.startCompleteDateRange,
                         detectingDateRange : $scope.vm.form.detectingDateRange,
 
-                        companyFields : (function () {
+                        issueCompanyFields : (function () {
                             var companyFields = [];
 
-                            angular.forEach($scope.vm.form.companyFields, function (companyField) {
-                                var useValues = [];
-
-                                if (angular.isArray(companyField.useValues)) {
-                                    angular.forEach(companyField.useValues, function (useValue) {
-                                        useValues.push(useValue.value);
-                                    });
-                                }
-                                else {
-                                    useValues.push(companyField.useValues);
-                                }
-
-                                //  useValues 瑜� 諛곗뿴濡� 蹂��솚�븳�떎.
-                                var temp = angular.copy(companyField);
-                                temp.useValues = useValues;
-                                companyFields.push(temp);
-                            });
+                            var  companyField = $scope.vm.form.companyFields[0];
+                            companyField.companyId = companyField.id;
+                            companyField.id = null;
+                            companyFields.push(companyField);
 
                             return companyFields;
                         })(),
 
-                        ispFields : (function () {
+                        issueIspFields : (function () {
                             var ispFields = [];
 
-                            angular.forEach($scope.vm.form.ispFields, function (ispField) {
-                                var useValues = [];
-
-                                if (angular.isArray(ispField.useValues)) {
-                                    angular.forEach(ispField.useValues, function (useValue) {
-                                        useValues.push(useValue.value);
-                                    });
-                                }
-                                else {
-                                    useValues.push(ispField.useValues);
-                                }
-
-                                //  useValues 瑜� 諛곗뿴濡� 蹂��솚�븳�떎.
-                                var temp = angular.copy(ispField);
-                                temp.useValues = useValues;
-                                ispFields.push(temp);
-                            });
+                            var  ispField = $scope.vm.form.ispFields[0];
+                            ispField.ispId = ispField.id;
+                            ispField.id = null;
+                            ispFields.push(ispField);
 
                             return ispFields;
                         })(),
 
-                        hostingFields : (function () {
+                        issueHostingFields : (function () {
                             var hostingFields = [];
 
-                            angular.forEach($scope.vm.form.hostingFields, function (hostingField) {
-                                var useValues = [];
-
-                                if (angular.isArray(hostingField.useValues)) {
-                                    angular.forEach(hostingField.useValues, function (useValue) {
-                                        useValues.push(useValue.value);
-                                    });
-                                }
-                                else {
-                                    useValues.push(hostingField.useValues);
-                                }
-
-                                //  useValues 瑜� 諛곗뿴濡� 蹂��솚�븳�떎.
-                                var temp = angular.copy(hostingField);
-                                temp.useValues = useValues;
-                                hostingFields.push(temp);
-                            });
+                            var  hostingField = $scope.vm.form.hostingFields[0];
+                            hostingField.hostingId = hostingField.id;
+                            hostingField.id = null;
+                            hostingFields.push(hostingField);
 
                             return hostingFields;
                         })(),

--
Gitblit v1.8.0