From fe2b018f2c33d4444ed8a9c731f78e8f9ec6aadc Mon Sep 17 00:00:00 2001
From: jhjang <jhjang@maprex.co.kr>
Date: 화, 14 12월 2021 10:37:28 +0900
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java          |   38 +++++--
 src/main/java/kr/wisestone/owl/vo/IssueVo.java                             |    9 +
 src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java     |   11 ++
 src/main/java/kr/wisestone/owl/repository/DepartmentRepository.java        |    3 
 src/main/webapp/scripts/app/companyField/companyFieldModify.controller.js  |    4 
 src/main/webapp/views/issue/issueListNormal.html                           |    4 
 src/main/resources/mybatis/query-template/issue-template.xml               |   24 ++++
 src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java                |    2 
 src/main/webapp/views/companyField/companyFieldModify.html                 |    2 
 src/main/webapp/scripts/app/issue/issueAdd.controller.js                   |    6 
 src/main/webapp/scripts/app/issue/issueModify.controller.js                |   21 ++++
 src/main/webapp/scripts/components/utils/autoComplete.controller.js        |   18 +-
 src/main/java/kr/wisestone/owl/service/UserDepartmentService.java          |    3 
 src/main/webapp/scripts/app/issue/issueAddRelation.controller.js           |   20 +++
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java   |    4 
 src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java |    5 +
 src/main/webapp/scripts/app/issue/issueList.controller.js                  |   14 ++
 src/main/webapp/views/issue/issueAddRelation.html                          |   31 ++++-
 src/main/webapp/views/issue/issueModify.html                               |   32 +++++-
 src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js      |    3 
 src/main/webapp/views/companyField/companyFieldAdd.html                    |    2 
 21 files changed, 202 insertions(+), 54 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java b/src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java
index 452bb22..0f43f7d 100644
--- a/src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java
+++ b/src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java
@@ -21,8 +21,6 @@
 
     Long findBydepartmentId(Long Id);
 
-    Long countInDepartment(Long Id);
-
     List<Map<String, Object>> findByDepartmentIds(UserCondition condition);
 
     List<Map<String, Object>> findProjectDepartment(DepartmentCondition departmentCondition);
diff --git a/src/main/java/kr/wisestone/owl/repository/DepartmentRepository.java b/src/main/java/kr/wisestone/owl/repository/DepartmentRepository.java
index aa33730..aac092c 100644
--- a/src/main/java/kr/wisestone/owl/repository/DepartmentRepository.java
+++ b/src/main/java/kr/wisestone/owl/repository/DepartmentRepository.java
@@ -2,7 +2,8 @@
 
 import kr.wisestone.owl.domain.Department;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.query.Param;
 
 public interface DepartmentRepository extends JpaRepository<Department, Long> {
-
+    Long countById(@Param("id")Long id);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/UserDepartmentService.java b/src/main/java/kr/wisestone/owl/service/UserDepartmentService.java
index c364fc5..b09e517 100644
--- a/src/main/java/kr/wisestone/owl/service/UserDepartmentService.java
+++ b/src/main/java/kr/wisestone/owl/service/UserDepartmentService.java
@@ -6,6 +6,7 @@
 import kr.wisestone.owl.web.form.UserDepartmentForm;
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.List;
 import java.util.Map;
 
 public interface UserDepartmentService extends AbstractService<UserDepartment, Long, JpaRepository<UserDepartment, Long>> {
@@ -13,4 +14,6 @@
     void userDepartmentDetail(Map<String, Object> resJsonData, UserCondition make);
 
     void userDepartmentModify(UserDepartmentForm userDepartmentForm);
+
+    List<UserDepartment> findByDepartmentId(Long id);
 }
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 67037b3..ed1783e 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -212,15 +212,13 @@
         for (Map<String, Object> result : results) {
             CompanyFieldVo companyFieldVo = ConvertUtil.convertMapToClass(result, CompanyFieldVo.class);
             if(companyFieldVo.getIspId() != null && companyFieldVo.getIspId() != -1){
-                //IspField ispField = this.ispFieldRepository.getOne(companyFieldVo.getIspId());
                 IspField ispField = this.ispFieldService.getIsp(companyFieldVo.getIspId());
                 if(ispField != null){
                     IspFieldVo ispFieldVo = ConvertUtil.copyProperties(ispField, IspFieldVo.class);
                     companyFieldVo.setIspFieldVo(ispFieldVo);
                 }
             }
-            if(companyFieldVo.getHostingId() != null && companyFieldVo.getIspId() != -1){
-                //HostingField hostingField = this.hostingFieldRepository.getOne(companyFieldVo.getHostingId());
+            if(companyFieldVo.getHostingId() != null && companyFieldVo.getHostingId() != -1){
                 HostingField hostingField = this.hostingFieldService.getHosting(companyFieldVo.getHostingId());
                 if(hostingField != null){
                     HostingFieldVo hostingFieldVo = ConvertUtil.copyProperties(hostingField, HostingFieldVo.class);
diff --git a/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
index 6c22513..c7e7000 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
@@ -2,6 +2,7 @@
 
 import kr.wisestone.owl.domain.*;
 import kr.wisestone.owl.mapper.DepartmentMapper;
+import kr.wisestone.owl.repository.UserDepartmentRepository;
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.web.condition.DepartmentCondition;
 import kr.wisestone.owl.web.condition.UserCondition;
@@ -38,6 +39,9 @@
 
     @Autowired
     private DepartmentRepository departmentRepository;
+
+    @Autowired
+    private UserDepartmentService userDepartmentService;
 
     @Autowired
     private DepartmentMapper departmentMapper;
@@ -233,7 +237,12 @@
 
     @Override
     public boolean countInDepartment(Long id) {
-        return this.departmentMapper.countInDepartment(id) > 0;
+        boolean result = false;
+        List<UserDepartment> usingDepartments = this.userDepartmentService.findByDepartmentId(id);
+        if(usingDepartments != null && usingDepartments.size() > 0){
+            result = true;
+        }
+        return result;
     }
 
     //  DepartmentVos �뜲�씠�꽣瑜� �뿊���뿉�꽌 �몴�떆�븷 �닔 �엳�뒗 �뜲�씠�꽣濡� 蹂�寃쏀븳�떎.
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 f5641ed..3e0ea24 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -12,6 +12,7 @@
 import kr.wisestone.owl.domain.enumType.IssueHistoryType;
 import kr.wisestone.owl.domain.enumType.IssueStatusType;
 import kr.wisestone.owl.exception.OwlRuntimeException;
+import kr.wisestone.owl.mapper.DepartmentMapper;
 import kr.wisestone.owl.mapper.IssueMapper;
 import kr.wisestone.owl.mapper.ProjectMapper;
 import kr.wisestone.owl.repository.IssueRelationRepository;
@@ -175,6 +176,9 @@
 
     @Autowired
     private UserDepartmentRepository userDepartmentRepository;
+
+    @Autowired
+    private DepartmentMapper departmentMapper;
 
     @Autowired
     private WorkflowDepartmentRepository workflowDepartmentRepository;
@@ -694,8 +698,22 @@
             for(UserDepartment myDepartment : myDepartments){
                 myDepartmentIds.add(myDepartment.getDepartmentId());
             }
+        } else {
+            myDepartmentIds.add(-1L);
         }
         issueCondition.setMyDepartmentIds(myDepartmentIds);
+    }
+
+    void SetAllDepartmentId(IssueCondition issueCondition){
+        List<Long> departmentIds = Lists.newArrayList();
+        List<Map<String, Object>> departmentList = this.departmentMapper.find(null);
+
+        if(departmentList != null && departmentList.size() > 0){
+            for(Map<String, Object> department : departmentList){
+                departmentIds.add((Long) department.get("id"));
+            }
+        }
+        issueCondition.setMyDepartmentIds(departmentIds);
     }
 
     void SetWorkflowDepartment(List<IssueVo> issueVos){
@@ -754,16 +772,16 @@
         Long totalCount = 0L;
         UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
 
-//        if (this.userWorkspaceService.checkWorkspaceManager(user)
-//                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE_PROJECT_ALL)) {
-            results = this.issueMapper.find(issueCondition);
-            totalCount = this.issueMapper.count(issueCondition);
-//        }
-//        } else{
-//            this.SetMyDepartmentId(issueCondition);
-//            results = this.issueMapper.findByDepartment(issueCondition);
-//            totalCount = this.issueMapper.countByDepartment(issueCondition);
-//        }
+        if (this.userWorkspaceService.checkWorkspaceManager(user)
+                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE_PROJECT_ALL)) {
+            this.SetAllDepartmentId(issueCondition);
+        } else{
+            this.SetMyDepartmentId(issueCondition);
+            /*results = this.issueMapper.findByDepartment(issueCondition);
+            totalCount = this.issueMapper.countByDepartment(issueCondition);*/
+        }
+        results = this.issueMapper.find(issueCondition);
+        totalCount = this.issueMapper.count(issueCondition);
 
 
         //  �뒠�떇 �쟾 - 0.8, 0.9, 0.9, 0.9, 0.9
diff --git a/src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java
index 09bdbb8..baa6a8a 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java
@@ -89,6 +89,11 @@
         this.userDepartmentRepository.saveAll(list);
     }
 
+    @Override
+    public List<UserDepartment> findByDepartmentId(Long id) {
+        return this.userDepartmentRepository.findByDepartmentId(id);
+    }
+
 
     // �궗�슜�옄 遺��꽌 ID濡� 議고쉶�븳�떎.
 //    @Override
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueVo.java b/src/main/java/kr/wisestone/owl/vo/IssueVo.java
index 264c5d3..aa34bb3 100644
--- a/src/main/java/kr/wisestone/owl/vo/IssueVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/IssueVo.java
@@ -56,6 +56,7 @@
     private String modifyByName;    //  蹂�寃쎌옄 �젙蹂� - �씠�뒋 蹂�寃� �젙蹂� �긽�꽭 �솗�씤�뿉�꽌 �궗�슜
     private WorkflowStatusVo workflowStatusVo;
     private IssueVo parentIssueVo;
+    private Long parentIssueId;
     private int downIssueCount;
     private int downIssueAllCount;
     private List<Long> workflowDepartmentIds; // �썙�겕�뵆濡쒖슦�뿉 �꽕�젙�븳 �떞�떦遺��꽌 ID
@@ -521,4 +522,12 @@
             this.issueTableConfigVos.add(issueTableConfigVo);
         }
     }
+
+    public Long getParentIssueId() {
+        return parentIssueId;
+    }
+
+    public void setParentIssueId(Long parentIssueId) {
+        this.parentIssueId = parentIssueId;
+    }
 }
diff --git a/src/main/resources/mybatis/query-template/issue-template.xml b/src/main/resources/mybatis/query-template/issue-template.xml
index 6e07ef3..d4dea19 100644
--- a/src/main/resources/mybatis/query-template/issue-template.xml
+++ b/src/main/resources/mybatis/query-template/issue-template.xml
@@ -45,6 +45,7 @@
         LEFT OUTER JOIN issue_custom_field_value issue_custom FORCE INDEX(issueIdIndex) ON issue.id = issue_custom.issue_id
         LEFT OUTER JOIN issue_department isd FORCE INDEX(issueIdIndex) ON issue.id = isd.issue_id
         LEFT OUTER JOIN issue_user issue_user FORCE INDEX(issueIdIndex) ON issue.id = issue_user.issue_id
+        LEFT OUTER JOIN user_department ud ON ud.department_id = isd.department_id
         LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as attachedFileCount FROM attached_file GROUP BY issue_id)
         temp_attached_file on (temp_attached_file.issue_id = issue.id)
         LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as issueCommentCount FROM issue_comment GROUP BY issue_id)
@@ -172,6 +173,15 @@
         </choose>
 
         <choose>
+            <when test="departmentIds.size != 0 and myDepartmentIds != null and myDepartmentIds.size != 0">
+                AND isd.department_id IN
+                <foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </when>
+        </choose>
+
+        <choose>
             <when test="registerIds.size != 0">
                 AND issue.register_id IN
                 <foreach collection="registerIds" item="item" index="index" separator="," open="(" close=")">
@@ -208,7 +218,7 @@
         </if>
     </select>
 
-    <select id="findByDepartment" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition">
+    <!--<select id="findByDepartment" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition">
         SELECT
         DISTINCT issue.id as id,
         issue.register_id as registerId,
@@ -401,7 +411,7 @@
         <if test="page != null and !page.equals('')">
             limit #{pageSize} offset #{page};
         </if>
-    </select>
+    </select>-->
 
     <!--<select id="count" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.IssueCondition">
         SELECT
@@ -542,6 +552,7 @@
         FROM issue issue
         LEFT OUTER JOIN issue_department isd ON issue.id = isd.issue_id
         LEFT OUTER JOIN issue_status iss ON iss.id = issue.issue_status_id
+        LEFT OUTER JOIN user_department ud ON ud.department_id = isd.department_id
         WHERE 1=1
         AND issue.parent_issue_id IS NULL
         <if test="title != null and !title.equals('') ">
@@ -639,6 +650,15 @@
         </choose>
 
         <choose>
+            <when test="departmentIds.size != 0 and myDepartmentIds != null and myDepartmentIds.size != 0">
+                AND isd.department_id IN
+                <foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </when>
+        </choose>
+
+        <choose>
             <when test="registerIds.size != 0">
                 AND issue.register_id IN
                 <foreach collection="registerIds" item="item" index="index" separator="," open="(" close=")">
diff --git a/src/main/webapp/scripts/app/companyField/companyFieldModify.controller.js b/src/main/webapp/scripts/app/companyField/companyFieldModify.controller.js
index 7a452d3..30b0a5b 100644
--- a/src/main/webapp/scripts/app/companyField/companyFieldModify.controller.js
+++ b/src/main/webapp/scripts/app/companyField/companyFieldModify.controller.js
@@ -84,14 +84,14 @@
                         name : $rootScope.preventXss($scope.vm.form.name),
                         ispId : (function () {  // ISP �븘�씠�뵒
                             var ispId = -1;
-                            if ($scope.vm.form.issueIspFields.length > 0) {
+                            if ($scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0) {
                                 ispId = $scope.vm.form.ispId;
                             }
                             return ispId;
                         })(),
                         hostingId : (function () {  // Hosting �븘�씠�뵒
                             var hostingId = -1;
-                            if ($scope.vm.form.issueHostingFields.length > 0) {
+                            if ($scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0) {
                                 hostingId = $scope.vm.form.hostingId;
                             }
                             return hostingId;
diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
index a207ca6..7255a12 100644
--- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -464,7 +464,7 @@
 
                         companyId : (function () {   //  �뾽泥� �븘�씠�뵒
                             var companyId = -1;
-                            if ($scope.vm.form.issueCompanyFields.length > 0) {
+                            if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0) {
                                 companyId = $scope.vm.form.issueCompanyFields[0].id;
                             }
                             return companyId;
@@ -472,7 +472,7 @@
 
                         ispId : (function () {  // ISP �븘�씠�뵒
                             var ispId = -1;
-                            if ($scope.vm.form.issueIspFields.length > 0) {
+                            if ($scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0) {
                                 ispId = $scope.vm.form.issueIspFields[0].id;
                             }
                             return ispId;
@@ -480,7 +480,7 @@
 
                         hostingId : (function () {  // Hosting �븘�씠�뵒
                             var hostingId = -1;
-                            if ($scope.vm.form.issueHostingFields.length > 0) {
+                            if ($scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0) {
                                 hostingId = $scope.vm.form.issueHostingFields[0].id;
                             }
                             return hostingId;
diff --git a/src/main/webapp/scripts/app/issue/issueAddRelation.controller.js b/src/main/webapp/scripts/app/issue/issueAddRelation.controller.js
index 0109b26..8b2295b 100644
--- a/src/main/webapp/scripts/app/issue/issueAddRelation.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAddRelation.controller.js
@@ -395,6 +395,9 @@
 
                 // �뾽泥댁젙蹂� 寃곌낵 媛� Event 泥섎━(set)
                 $scope.$on("companyFieldEvent", function (event, result) {
+                    var ispFieldVo = result[0].ispFieldVo;
+                    var hostingFieldVo = result[0].hostingFieldVo;
+
                     $scope.vm.companyId = result[0].id;
                     $scope.vm.companyName = result[0].name;
                     $scope.vm.companyManager = result[0].manager;
@@ -403,6 +406,21 @@
                     $scope.vm.companyUrl = result[0].url;
                     $scope.vm.companyMemo = result[0].memo;
 
+                    $scope.vm.ispName = ispFieldVo.name;
+                    $scope.vm.ispCode = ispFieldVo.code;
+                    $scope.vm.ispManager = ispFieldVo.manager;
+                    $scope.vm.ispTel = ispFieldVo.tel;
+                    $scope.vm.ispEmail = ispFieldVo.email;
+                    $scope.vm.ispUrl = ispFieldVo.url;
+                    $scope.vm.ispMemo = ispFieldVo.memo;
+
+                    $scope.vm.hostingName = hostingFieldVo.name;
+                    $scope.vm.hostingCode = hostingFieldVo.code;
+                    $scope.vm.hostingManager = hostingFieldVo.manager;
+                    $scope.vm.hostingTel = hostingFieldVo.tel;
+                    $scope.vm.hostingEmail = hostingFieldVo.email;
+                    $scope.vm.hostingUrl = hostingFieldVo.url;
+                    $scope.vm.hostingMemo = hostingFieldVo.memo;
                 });
 
                 // ISP�젙蹂� 寃곌낵 媛� Event 泥섎━(set)
@@ -496,7 +514,7 @@
                         hostingId : (function () {
                             var hostingId = -1;
 
-                            if ($scope.vm.form.issueHostingFields.length > 0) {
+                            if ($scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0) {
                                 hostingId = $scope.vm.form.issueHostingFields[0].id;
                             }
 
diff --git a/src/main/webapp/scripts/app/issue/issueList.controller.js b/src/main/webapp/scripts/app/issue/issueList.controller.js
index ed3d50f..a4eeb0e 100644
--- a/src/main/webapp/scripts/app/issue/issueList.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueList.controller.js
@@ -624,6 +624,20 @@
 
                         if (result.data.message.status === "success") {
                             if (result.data.data !=  null && result.data.data.length > 0) {
+                                //var resultSize = result.data.data.length;
+                                for (var i = 0; i < result.data.data.length; i++) {
+                                    if (result.data.data[i].parentIssueId != null) {
+                                        result.data.data.splice(i, 1);
+                                        i--;
+                                    }else if ($scope.vm.search.issueTypeIds !== null && $scope.vm.search.issueTypeIds.length > 0
+                                            && result.data.data[i].issueTypeId !== $scope.vm.search.issueTypeIds[0].fieldKey) {
+                                        result.data.data.splice(i, 1);
+                                        i--;
+                                    }
+                                }
+                            }
+
+                            if (result.data.data !=  null && result.data.data.length > 0) {
                                 $scope.vm.issueTypeId = result.data.data[0].issueTypeId;
                                 $scope.vm.projectKey = result.data.data[0].projectKey;
                                 $scope.vm.issueNumber = result.data.data[0].issueNumber;
diff --git a/src/main/webapp/scripts/app/issue/issueModify.controller.js b/src/main/webapp/scripts/app/issue/issueModify.controller.js
index 6c18b0b..f4df672 100644
--- a/src/main/webapp/scripts/app/issue/issueModify.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueModify.controller.js
@@ -371,6 +371,9 @@
 
                 // �뾽泥댁젙蹂� 寃곌낵 媛� Event 泥섎━(set)
                 $scope.$on("companyFieldEvent", function (event, result) {
+                    var ispFieldVo = result[0].ispFieldVo;
+                    var hostingFieldVo = result[0].hostingFieldVo;
+
                     $scope.vm.companyId = result[0].id;
                     $scope.vm.companyName = result[0].name;
                     $scope.vm.companyManager = result[0].manager;
@@ -378,6 +381,22 @@
                     $scope.vm.companyEmail = result[0].email;
                     $scope.vm.companyUrl = result[0].url;
                     $scope.vm.companyMemo = result[0].memo;
+
+                    $scope.vm.ispName = ispFieldVo.name;
+                    $scope.vm.ispCode = ispFieldVo.code;
+                    $scope.vm.ispManager = ispFieldVo.manager;
+                    $scope.vm.ispTel = ispFieldVo.tel;
+                    $scope.vm.ispEmail = ispFieldVo.email;
+                    $scope.vm.ispUrl = ispFieldVo.url;
+                    $scope.vm.ispMemo = ispFieldVo.memo;
+
+                    $scope.vm.hostingName = hostingFieldVo.name;
+                    $scope.vm.hostingCode = hostingFieldVo.code;
+                    $scope.vm.hostingManager = hostingFieldVo.manager;
+                    $scope.vm.hostingTel = hostingFieldVo.tel;
+                    $scope.vm.hostingEmail = hostingFieldVo.email;
+                    $scope.vm.hostingUrl = hostingFieldVo.url;
+                    $scope.vm.hostingMemo = hostingFieldVo.memo;
 
                 });
 
@@ -471,7 +490,7 @@
                         hostingId : (function () {
                             var hostingId = -1;
 
-                            if ($scope.vm.form.issueHostingFields.length > 0) {
+                            if ($scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0) {
                                 hostingId = $scope.vm.form.issueHostingFields[0].id;
                             }
 
diff --git a/src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js b/src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js
index e4f78ef..4d5625a 100644
--- a/src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js
@@ -25,7 +25,7 @@
                     ispVos : parameter.ispVos,
                     hostingVos : parameter.hostingVos,
                     partners : parameter.partnersAll.slice(),
-                    html : "issueSendMailPartners.html",
+                    html : "",
                     form : {
                         id : parameter.issueId,  //  �씠�뒋 踰덊샇
                         projects : [{ id : parameter.projectId}],  //  �봽濡쒖젥�듃
@@ -90,6 +90,7 @@
                     })
                 }
 
+
                 //  �궗�슜�옄 �궘�젣
                 function removeMailTarget(index) {
                     $scope.vm.form.mailUsers.splice(index, 1);
diff --git a/src/main/webapp/scripts/components/utils/autoComplete.controller.js b/src/main/webapp/scripts/components/utils/autoComplete.controller.js
index dae28cc..638c1dd 100644
--- a/src/main/webapp/scripts/components/utils/autoComplete.controller.js
+++ b/src/main/webapp/scripts/components/utils/autoComplete.controller.js
@@ -133,13 +133,13 @@
                 function getIssueList(query, issueTypeId, excludeList, page, callBack) {
                     var conditions = {
                         name : query,
-                        issueTypeIds : (function () {
+                        /*issueTypeIds : (function () {
                             var ids = [];
 
                             ids.push(issueTypeId);
 
                             return ids;
-                        })(),
+                        })(),*/
                         excludeIds : (function () {
                             var excludeIds = [];
 
@@ -175,13 +175,13 @@
                 function getDownIssueList(query, issueTypeId, excludeList, page, callBack) {
                     var conditions = {
                         name : query,
-                        // issueTypeIds : (function () {
-                        //     var ids = [];
-                        //
-                        //     ids.push(issueTypeId);
-                        //
-                        //     return ids;
-                        // })(),
+                        issueTypeIds : (function () {
+                            var ids = [];
+
+                            ids.push(issueTypeId);
+
+                            return ids;
+                        })(),
                         excludeIds : (function () {
                             var excludeIds = [];
 
diff --git a/src/main/webapp/views/companyField/companyFieldAdd.html b/src/main/webapp/views/companyField/companyFieldAdd.html
index ed0d363..a73a0f8 100644
--- a/src/main/webapp/views/companyField/companyFieldAdd.html
+++ b/src/main/webapp/views/companyField/companyFieldAdd.html
@@ -42,7 +42,7 @@
                                     page="vm.autoCompletePage.ispField.page"
                                     total-page="vm.autoCompletePage.ispField.totalPage"
                                     input-disabled="false"
-                                    translation-texts="{ empty : 'common.emptyHosting' }"
+                                    translation-texts="{ empty : 'common.emptyIsp' }"
                                     broad-cast="ispFieldEvent"
                                     extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
                     type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
diff --git a/src/main/webapp/views/companyField/companyFieldModify.html b/src/main/webapp/views/companyField/companyFieldModify.html
index 9909836..d9c912c 100644
--- a/src/main/webapp/views/companyField/companyFieldModify.html
+++ b/src/main/webapp/views/companyField/companyFieldModify.html
@@ -41,7 +41,7 @@
                                         page="vm.autoCompletePage.ispField.page"
                                         total-page="vm.autoCompletePage.ispField.totalPage"
                                         input-disabled="false"
-                                        translation-texts="{ empty : 'common.emptyHosting' }"
+                                        translation-texts="{ empty : 'common.emptyIsp' }"
                                         broad-cast="ispFieldEvent"
                                         extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
                     type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
diff --git a/src/main/webapp/views/issue/issueAddRelation.html b/src/main/webapp/views/issue/issueAddRelation.html
index 1c58f18..c00d990 100644
--- a/src/main/webapp/views/issue/issueAddRelation.html
+++ b/src/main/webapp/views/issue/issueAddRelation.html
@@ -380,7 +380,8 @@
             <div ng-show="fn.containsPartner('�뾽泥�')" class="row">
                 <div class="col-lg-8 fontcolor_green">
                     <label class="issue-label"><span class="fontcolor_green" translate="companyField.info">�뾽泥댁젙蹂�</span>
-                        &nbsp;&nbsp;<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;�뾽泥� �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 �뾽泥� �젙蹂닿� 議고쉶�맗�땲�떎.</span>
+                        &nbsp;&nbsp;<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;
+                            &nbsp;�뾽泥� �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 �뾽泥� �젙蹂닿� 議고쉶�릺硫�, �뾽泥댁젙蹂댁뿉�꽌 異붽��븳 ISP, �샇�뒪�똿 �젙蹂대�� 遺덈윭�샃�땲�떎.</span>
                     </label>
                 </div>
             </div>
@@ -486,7 +487,7 @@
             <div ng-show="fn.containsPartner('ISP')" class="row">
                 <div class="col-lg-8 fontcolor_green">
                     <label class="issue-label"><span class="fontcolor_green" translate="ispField.info">ISP �젙蹂�</span>
-                        &nbsp;&nbsp;<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;ISP �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 ISP �젙蹂닿� 議고쉶�맗�땲�떎.</span>
+                        &nbsp;&nbsp;<!--<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;ISP �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 ISP �젙蹂닿� 議고쉶�맗�땲�떎.</span>-->
                     </label>
                 </div>
             </div>
@@ -495,7 +496,15 @@
                 <div class="col-lg-4">
                     <div class="form-group mb10">
                         <label class="issue-label"> <span translate="ispField.name">ISP �씠由�</span> </label>
-                        <js-autocomplete-single data-input-name="ispField"
+                        <input name="ispName"
+                               type="text"
+                               class="form-control"
+                               kr-input
+                               autocomplete="off"
+                               ng-model="vm.ispName"
+                               ng-maxlength="100"
+                               maxlength="100">
+                        <!--<js-autocomplete-single data-input-name="ispField"
                                                 selected-model="vm.form.issueIspFields"
                                                 search="vm.ispName"
                                                 source="fn.getIssueIspFieldList(vm.ispName, vm.form.issueIspFields, vm.autoCompletePage.ispField.page, fn.getIssueIspFieldListCallBack)"
@@ -505,7 +514,7 @@
                                                 translation-texts="{ empty : 'common.emptyIsp' }"
                                                 broad-cast="ispFieldEvent"
                                                 extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
-                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
+                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>-->
                     </div>
                 </div>
                 <div class="col-lg-4">
@@ -606,7 +615,7 @@
             <div ng-show="fn.containsPartner('�샇�뒪�똿')" class="row">
                 <div class="col-lg-8 fontcolor_green">
                     <label class="issue-label"><span class="fontcolor_green" translate="hostingField.info">�샇�뒪�똿 �젙蹂�</span>
-                        &nbsp;&nbsp;<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;�샇�뒪�똿 �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 �샇�뒪�똿 �젙蹂닿� 議고쉶�맗�땲�떎.</span>
+                        &nbsp;&nbsp;<!--<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;�샇�뒪�똿 �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 �샇�뒪�똿 �젙蹂닿� 議고쉶�맗�땲�떎.</span>-->
                     </label>
                 </div>
             </div>
@@ -615,7 +624,15 @@
                 <div class="col-lg-4">
                     <div class="form-group mb10">
                         <label class="issue-label"> <span translate="hostingField.name">�샇�뒪�똿 �씠由�</span> </label>
-                        <js-autocomplete-single data-input-name="hostingField"
+                        <input name="hostingName"
+                               type="text"
+                               class="form-control"
+                               kr-input
+                               autocomplete="off"
+                               ng-model="vm.hostingName"
+                               ng-maxlength="100"
+                               maxlength="100">
+                        <!--<js-autocomplete-single data-input-name="hostingField"
                                                 selected-model="vm.form.issueHostingFields"
                                                 search="vm.hostingName"
                                                 source="fn.getIssueHostingFieldList(vm.hostingName, vm.form.issueHostingFields, vm.autoCompletePage.hostingField.page, fn.getIssueHostingFieldListCallBack)"
@@ -625,7 +642,7 @@
                                                 translation-texts="{ empty : 'common.emptyHosting' }"
                                                 broad-cast="hostingFieldEvent"
                                                 extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
-                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
+                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>-->
                     </div>
                 </div>
                 <div class="col-lg-4">
diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html
index e81993d..9de5670 100644
--- a/src/main/webapp/views/issue/issueListNormal.html
+++ b/src/main/webapp/views/issue/issueListNormal.html
@@ -336,8 +336,8 @@
 
                             <!--    �슦痢�  -->
                             <div class="col-5" >
-                                <span class="issue-detail-label" style="position: relative; left: 18.8rem; bottom: 5px"><span style="color: #0a7cf8">�뾾</span> �셿猷� �씠�뒋 �닲湲곌린</span>
-                                <label class='switch' style="left: 19.3rem"><input type='checkbox' ng-model='vm.hideIssue' ng-click='fn.getPageList(0)'>
+                                <span class="issue-detail-label" style="position: relative; left: 16.8rem; bottom: 5px"><span style="color: #0a7cf8">�뾾</span> �셿猷� �씠�뒋 �닲湲곌린</span>
+                                <label class='switch' style="left: 17.3rem"><input type='checkbox' ng-model='vm.hideIssue' ng-click='fn.getPageList(0)'>
                                     <span class='slider round'></span>
                                 </label>
                                 <form class="form-inline justify-content-sm-end  pull-right" method="post" action="/issue/downloadExcel" name="issueListForm" >
diff --git a/src/main/webapp/views/issue/issueModify.html b/src/main/webapp/views/issue/issueModify.html
index d9d3a1e..f7264f5 100644
--- a/src/main/webapp/views/issue/issueModify.html
+++ b/src/main/webapp/views/issue/issueModify.html
@@ -370,7 +370,8 @@
             <div ng-show="fn.containsPartner('�뾽泥�')" class="row">
                 <div class="col-lg-8 fontcolor_green">
                     <label class="issue-label"><span class="fontcolor_green" translate="companyField.info">�뾽泥댁젙蹂�</span>
-                        &nbsp;&nbsp;<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;�뾽泥� �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 �뾽泥� �젙蹂닿� 議고쉶�맗�땲�떎.</span>
+                        &nbsp;&nbsp;<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;
+                            &nbsp;�뾽泥� �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 �뾽泥� �젙蹂닿� 議고쉶�릺硫�, �뾽泥댁젙蹂댁뿉�꽌 異붽��븳 ISP, �샇�뒪�똿 �젙蹂대�� 遺덈윭�샃�땲�떎.</span>
                     </label>
                 </div>
             </div>
@@ -476,7 +477,7 @@
             <div ng-show="fn.containsPartner('ISP')" class="row">
                 <div class="col-lg-8 fontcolor_green">
                     <label class="issue-label"><span class="fontcolor_green" translate="ispField.info">ISP �젙蹂�</span>
-                        &nbsp;&nbsp;<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;ISP �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 ISP �젙蹂닿� 議고쉶�맗�땲�떎.</span>
+                        <!--&nbsp;&nbsp;<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;ISP �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 ISP �젙蹂닿� 議고쉶�맗�땲�떎.</span>-->
                     </label>
                 </div>
             </div>
@@ -485,7 +486,15 @@
                 <div class="col-lg-4">
                     <div class="form-group mb10">
                         <label class="issue-label"> <span translate="ispField.name">ISP �씠由�</span> </label>
-                        <js-autocomplete-single data-input-name="ispField"
+                        <input name="ispName"
+                               type="text"
+                               class="form-control"
+                               kr-input
+                               autocomplete="off"
+                               ng-model="vm.ispName"
+                               ng-maxlength="100"
+                               maxlength="100">
+                        <!--<js-autocomplete-single data-input-name="ispField"
                                                 selected-model="vm.form.issueIspFields"
                                                 search="vm.ispName"
                                                 source="fn.getIssueIspFieldList(vm.ispName, vm.form.issueIspFields, vm.autoCompletePage.ispField.page, fn.getIssueIspFieldListCallBack)"
@@ -495,7 +504,7 @@
                                                 translation-texts="{ empty : 'common.emptyIsp' }"
                                                 broad-cast="ispFieldEvent"
                                                 extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
-                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
+                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>-->
                     </div>
                 </div>
                 <div class="col-lg-4">
@@ -596,7 +605,7 @@
             <div ng-show="fn.containsPartner('�샇�뒪�똿')" class="row">
                 <div class="col-lg-8 fontcolor_green">
                     <label class="issue-label"><span class="fontcolor_green" translate="hostingField.info">�샇�뒪�똿 �젙蹂�</span>
-                        &nbsp;&nbsp;<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;�샇�뒪�똿 �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 �샇�뒪�똿 �젙蹂닿� 議고쉶�맗�땲�떎.</span>
+                        &nbsp;&nbsp;<!--<span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code>&nbsp;&nbsp;�샇�뒪�똿 �씠由� �겢由��떆 �꽑�깮�맂 �씠由꾩쓽 �샇�뒪�똿 �젙蹂닿� 議고쉶�맗�땲�떎.</span>-->
                     </label>
                 </div>
             </div>
@@ -605,8 +614,17 @@
                 <div class="col-lg-4">
                     <div class="form-group mb10">
                         <label class="issue-label"> <span translate="hostingField.name">�샇�뒪�똿 �씠由�</span> </label>
-                        <js-autocomplete-single data-input-name="hostingField"
+                        <input name="hostingName"
+                               type="text"
+                               class="form-control"
+                               kr-input
+                               autocomplete="off"
+                               ng-model="vm.hostingName"
+                               ng-maxlength="100"
+                               maxlength="100">
+                        <!--<js-autocomplete-single data-input-name="hostingField"
                                                 selected-model="vm.form.issueHostingFields"
+                                                ng-model="vm.hostingName"
                                                 search="vm.hostingName"
                                                 source="fn.getIssueHostingFieldList(vm.hostingName, vm.form.issueHostingFields, vm.autoCompletePage.hostingField.page, fn.getIssueHostingFieldListCallBack)"
                                                 page="vm.autoCompletePage.hostingField.page"
@@ -615,7 +633,7 @@
                                                 translation-texts="{ empty : 'common.emptyHosting' }"
                                                 broad-cast="hostingFieldEvent"
                                                 extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
-                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
+                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>-->
                     </div>
                 </div>
                 <div class="col-lg-4">

--
Gitblit v1.8.0