From 107ab8e67d089738ad8b3a1ff0efc96680a13cf6 Mon Sep 17 00:00:00 2001
From: wyu <kknd09321@nate.com>
Date: 목, 09 12월 2021 14:29:47 +0900
Subject: [PATCH] Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa

---
 src/main/java/kr/wisestone/owl/util/ConvertUtil.java                      |    2 
 src/main/webapp/views/issue/issueAdd.html                                 |   12 +
 src/main/webapp/scripts/app/ispField/ispFieldModify.controller.js         |    3 
 src/main/webapp/views/ispField/ispFieldModify.html                        |    2 
 src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java                     |   23 ++
 src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java      |   28 +++
 src/main/webapp/scripts/app/api/apiSetting.controller.js                  |    6 
 src/main/java/kr/wisestone/owl/web/controller/IssueController.java        |   24 +++
 src/main/webapp/scripts/main.js                                           |    2 
 src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java     |    2 
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java         |   83 +++++++++
 src/main/resources/migration/V1_12__Alter_Table.sql                       |   18 --
 src/main/webapp/scripts/components/issue/issue.service.js                 |   12 +
 src/main/webapp/views/api/apiSettingOverlap.html                          |    2 
 src/main/java/kr/wisestone/owl/repository/IspFieldRepository.java         |    4 
 src/main/webapp/scripts/app/issue/issueAdd.controller.js                  |   18 ++
 src/main/webapp/scripts/app/hostingField/hostingFieldModify.controller.js |    2 
 src/main/resources/migration/V1_13__Alter_Table.sql                       |   17 ++
 src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java     |    1 
 src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java          |    8 
 src/main/java/kr/wisestone/owl/service/IssueService.java                  |    4 
 src/main/java/kr/wisestone/owl/repository/HostingFieldRepository.java     |    5 
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java  |   44 ++++
 src/main/webapp/scripts/app/issue/issueList.controller.js                 |  110 ++++++++++++-
 src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java  |   28 +++
 src/main/webapp/i18n/ko/global.json                                       |    3 
 src/main/webapp/index.html                                                |    2 
 27 files changed, 416 insertions(+), 49 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java b/src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java
index d8fff79..3520b7e 100644
--- a/src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java
+++ b/src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java
@@ -8,4 +8,5 @@
 
     CompanyField findByUrl(@Param("url") String url);
 
+    CompanyField findByUrlAndIdNot(@Param("url") String url, @Param("id") Long id);
 }
diff --git a/src/main/java/kr/wisestone/owl/repository/HostingFieldRepository.java b/src/main/java/kr/wisestone/owl/repository/HostingFieldRepository.java
index 406f77d..528ac5a 100644
--- a/src/main/java/kr/wisestone/owl/repository/HostingFieldRepository.java
+++ b/src/main/java/kr/wisestone/owl/repository/HostingFieldRepository.java
@@ -1,8 +1,13 @@
 package kr.wisestone.owl.repository;
 
+import kr.wisestone.owl.domain.CompanyField;
 import kr.wisestone.owl.domain.HostingField;
+import kr.wisestone.owl.domain.IspField;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.query.Param;
 
 public interface HostingFieldRepository extends JpaRepository<HostingField, Long> {
+    HostingField findByUrl(@Param("url") String url);
 
+    HostingField findByUrlAndIdNot(@Param("url") String url, @Param("id") Long id);
 }
diff --git a/src/main/java/kr/wisestone/owl/repository/IspFieldRepository.java b/src/main/java/kr/wisestone/owl/repository/IspFieldRepository.java
index 1da6f7f..8b4a52c 100644
--- a/src/main/java/kr/wisestone/owl/repository/IspFieldRepository.java
+++ b/src/main/java/kr/wisestone/owl/repository/IspFieldRepository.java
@@ -1,8 +1,12 @@
 package kr.wisestone.owl.repository;
 
+import kr.wisestone.owl.domain.CompanyField;
 import kr.wisestone.owl.domain.IspField;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.query.Param;
 
 public interface IspFieldRepository extends JpaRepository<IspField, Long> {
+    IspField findByUrl(@Param("url") String url);
 
+    IspField findByUrlAndIdNot(@Param("url") String url, @Param("id") Long id);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/IssueService.java b/src/main/java/kr/wisestone/owl/service/IssueService.java
index fff9510..302a9e4 100644
--- a/src/main/java/kr/wisestone/owl/service/IssueService.java
+++ b/src/main/java/kr/wisestone/owl/service/IssueService.java
@@ -54,6 +54,10 @@
 
     void removeIssues(IssueForm issueForm);
 
+    void removeAllIssues(IssueForm issueForm);
+
+    void removeDownIssues(IssueForm issueForm);
+
     void modifyIssueStatus(IssueForm issueForm, User user);
 
     Issue getIssue(Long taskId);
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 06d7e86..383e006 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -2,6 +2,10 @@
 
 import kr.wisestone.owl.domain.CompanyField;
 import kr.wisestone.owl.domain.CustomField;
+import kr.wisestone.owl.domain.HostingField;
+import kr.wisestone.owl.domain.IspField;
+import kr.wisestone.owl.repository.HostingFieldRepository;
+import kr.wisestone.owl.repository.IspFieldRepository;
 import kr.wisestone.owl.service.UserService;
 import kr.wisestone.owl.web.condition.CompanyFieldCondition;
 import kr.wisestone.owl.web.form.CompanyFieldForm;
@@ -40,6 +44,12 @@
     private CompanyFieldMapper companyFieldMapper;
 
     @Autowired
+    private IspFieldRepository ispFieldRepository;
+
+    @Autowired
+    private HostingFieldRepository hostingFieldRepository;
+
+    @Autowired
     private UserService userService;
 
     @Autowired
@@ -60,7 +70,7 @@
     @Override
     public CompanyField addCompany(CompanyFieldForm companyFieldForm) {
         //  url �쑀�슚�꽦 泥댄겕
-        this.verifyUrl(companyFieldForm.getUrl());
+        this.verifyUrl(companyFieldForm.getUrl(), null);
 
         CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class);
         companyFieldRepository.saveAndFlush(companyField);
@@ -68,12 +78,18 @@
     }
 
     //  url �쑀�슚�꽦 泥댄겕
-    private void verifyUrl(String url) {
+    private void verifyUrl(String url, Long id) {
         if (StringUtils.isEmpty(url)) {
             throw new OwlRuntimeException(
                     this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_URL));
         }
-        CompanyField companyField = this.companyFieldRepository.findByUrl(url);
+        CompanyField companyField;
+
+        if(id == null){
+            companyField = this.companyFieldRepository.findByUrl(url);
+        } else {
+            companyField = this.companyFieldRepository.findByUrlAndIdNot(url,id);
+        }
 
         if (companyField != null) {
             throw new OwlRuntimeException(
@@ -94,7 +110,6 @@
         return this.convertCompanyVoToMap(results, totalCompanyCount, pageable, resJsonData);
     }
 
-
     // �뾽泥� �긽�꽭 議고쉶�븳�떎.
     @Override
     public void detailCompany(Map<String, Object> resJsonData, CompanyFieldCondition companyFieldCondition) {
@@ -112,7 +127,7 @@
     @Override
     public void modifyCompany(CompanyFieldForm companyFieldForm) {
         //  url �쑀�슚�꽦 泥댄겕
-        this.verifyUrl(companyFieldForm.getUrl());
+        this.verifyUrl(companyFieldForm.getUrl(), companyFieldForm.getId());
 
         CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class);
         companyFieldRepository.saveAndFlush(companyField);
@@ -170,9 +185,28 @@
     //  寃��깋 寃곌낵瑜� CompanyFieldVo 濡� 蹂��솚�븳�떎.
     private List<CompanyFieldVo> convertCompanyVoToMap(List<Map<String, Object>> results, Long totalCompanyCount, Pageable pageable, Map<String, Object> resJsonData) {
         List<CompanyFieldVo> companyFieldVos = Lists.newArrayList();
+        List<IspFieldVo> ispFieldVos = Lists.newArrayList();
+        List<HostingFieldVo> hostingFieldVos = Lists.newArrayList();
 
         for (Map<String, Object> result : results) {
             CompanyFieldVo companyFieldVo = ConvertUtil.convertMapToClass(result, CompanyFieldVo.class);
+
+            String url = companyFieldVo.getUrl();
+
+            IspField ispField = this.ispFieldRepository.findByUrl(url);
+            IspFieldVo ispFieldVo = ConvertUtil.copyProperties(ispField, IspFieldVo.class);
+            if(ispFieldVo != null){
+                ispFieldVos.add(ispFieldVo);
+            }
+            companyFieldVo.setIspFieldVos(ispFieldVos);
+
+            HostingField hostingField = this.hostingFieldRepository.findByUrl(url);
+            HostingFieldVo hostingFieldVo = ConvertUtil.copyProperties(hostingField, HostingFieldVo.class);
+            if(hostingFieldVo != null){
+                hostingFieldVos.add(hostingFieldVo);
+            }
+            companyFieldVo.setHostingFieldVos(hostingFieldVos);
+
             companyFieldVos.add(companyFieldVo);
         }
 
diff --git a/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
index eee1084..d969fe6 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
@@ -4,6 +4,7 @@
 import kr.wisestone.owl.common.ExcelConditionCheck;
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.MsgConstants;
+import kr.wisestone.owl.domain.CompanyField;
 import kr.wisestone.owl.domain.HostingField;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.mapper.HostingFieldMapper;
@@ -18,6 +19,7 @@
 import kr.wisestone.owl.web.condition.HostingFieldCondition;
 import kr.wisestone.owl.web.form.HostingFieldForm;
 import kr.wisestone.owl.web.view.ExcelView;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -56,9 +58,32 @@
     // Hosting 異붽�
     @Override
     public HostingField add(HostingFieldForm HostingFieldForm) {
+        //  url �쑀�슚�꽦 泥댄겕
+        this.verifyUrl(HostingFieldForm.getUrl(), null);
+
         HostingField HostingField = ConvertUtil.copyProperties(HostingFieldForm, HostingField.class);
         hostingFieldRepository.saveAndFlush(HostingField);
         return HostingField;
+    }
+
+    //  url �쑀�슚�꽦 泥댄겕
+    private void verifyUrl(String url, Long id) {
+        if (StringUtils.isEmpty(url)) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_URL));
+        }
+        HostingField hostingField;
+
+        if(id == null){
+            hostingField = this.hostingFieldRepository.findByUrl(url);
+        } else {
+            hostingField = this.hostingFieldRepository.findByUrlAndIdNot(url,id);
+        }
+
+        if (hostingField != null) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_USED_URL));
+        }
     }
 
     // Hosting 紐⑸줉�쓣 媛��졇�삩�떎.
@@ -91,6 +116,9 @@
     // Hosting �젙濡쒕�� �닔�젙�븳�떎.
     @Override
     public void modify(HostingFieldForm HostingFieldForm) {
+        //  url �쑀�슚�꽦 泥댄겕
+        this.verifyUrl(HostingFieldForm.getUrl(), HostingFieldForm.getId());
+
         HostingField HostingField = ConvertUtil.copyProperties(HostingFieldForm, HostingField.class);
         hostingFieldRepository.saveAndFlush(HostingField);
     }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
index d3fb15f..110f026 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
@@ -4,6 +4,7 @@
 import kr.wisestone.owl.common.ExcelConditionCheck;
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.MsgConstants;
+import kr.wisestone.owl.domain.CompanyField;
 import kr.wisestone.owl.domain.IspField;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.mapper.IspFieldMapper;
@@ -18,6 +19,7 @@
 import kr.wisestone.owl.web.condition.IspFieldCondition;
 import kr.wisestone.owl.web.form.IspFieldForm;
 import kr.wisestone.owl.web.view.ExcelView;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -56,6 +58,9 @@
     // Isp 異붽�
     @Override
     public IspField add(IspFieldForm IspFieldForm) {
+        //  url �쑀�슚�꽦 泥댄겕
+        this.verifyUrl(IspFieldForm.getUrl(), null);
+
         IspField IspField = ConvertUtil.copyProperties(IspFieldForm, IspField.class);
         ispFieldRepository.saveAndFlush(IspField);
         return IspField;
@@ -72,6 +77,26 @@
         Long totalIspCount = this.ispFieldMapper.count(condition);
 
         return this.convertIspVoToMap(results, totalIspCount, pageable, resJsonData);
+    }
+
+    //  url �쑀�슚�꽦 泥댄겕
+    private void verifyUrl(String url, Long id) {
+        if (StringUtils.isEmpty(url)) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_URL));
+        }
+        IspField ispField;
+
+        if(id == null){
+            ispField = this.ispFieldRepository.findByUrl(url);
+        } else {
+            ispField = this.ispFieldRepository.findByUrlAndIdNot(url,id);
+        }
+
+        if (ispField != null) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_USED_URL));
+        }
     }
 
 
@@ -91,6 +116,9 @@
     // Isp �젙濡쒕�� �닔�젙�븳�떎.
     @Override
     public void modify(IspFieldForm IspFieldForm) {
+        //  url �쑀�슚�꽦 泥댄겕
+        this.verifyUrl(IspFieldForm.getUrl(), IspFieldForm.getId());
+
         IspField IspField = ConvertUtil.copyProperties(IspFieldForm, IspField.class);
         ispFieldRepository.saveAndFlush(IspField);
     }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
index 8e77478..2a11e37 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -2096,20 +2096,95 @@
         List<Issue> removeIssues = Lists.newArrayList();
 
         for (Long issueId : issueForm.getRemoveIds()) {
+            //�븯�쐞�씠�뒋 泥댄겕
+            List<Issue> downIssues = this.issueRepository.findByParentIssueId(issueId);
+            if(downIssues != null && downIssues.size() > 0){
+                for(Issue downIssue : downIssues){
+                    if(downIssue.getParentIssue() != null){
+                        downIssue.setParentIssue(null);
+                    }
+                }
+            }
+
             Issue issue = this.issueRemoves(issueId, user);
             removeIssues.add(issue);
         }
 
-        if (removeIssues.size() > 0) {
-            //this.issueRepository.deleteAll(removeIssues);
-        }
+        /*if (removeIssues.size() > 0) {
+            this.issueRepository.deleteAll(removeIssues);
+        }*/
 
         //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_REMOVE));
     }
 
+    //  �씠�뒋瑜� �궘�젣�븳�떎.
+    @Override
+    @Transactional
+    public void removeAllIssues(IssueForm issueForm) {
+        //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
+        User user = this.webAppUtil.getLoginUserObject();
+        this.workspaceService.checkUseWorkspace();
+
+        if (issueForm.getRemoveIds().size() < 1) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.ISSUE_REMOVE_NOT_SELECT));
+        }
+
+        List<Issue> removeIssues = Lists.newArrayList();
+
+        for (Long issueId : issueForm.getRemoveIds()) {
+            //�븯�쐞�씠�뒋 泥댄겕
+            List<Issue> downIssues = this.issueRepository.findByParentIssueId(issueId);
+            if(downIssues != null && downIssues.size() > 0){
+                for(Issue downIssue : downIssues){
+                    Long downIssueId = downIssue.getId();
+                    downIssue = this.issueRemoves(downIssueId, user);
+                    removeIssues.add(downIssue);
+                }
+            }
+            Issue issue = this.issueRemoves(issueId, user);
+            removeIssues.add(issue);
+        }
+        //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
+        log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_REMOVE));
+    }
+
+    //  �븯�쐞�씠�뒋瑜� �궘�젣�븳�떎.
+    @Override
+    @Transactional
+    public void removeDownIssues(IssueForm issueForm) {
+        //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
+        User user = this.webAppUtil.getLoginUserObject();
+        this.workspaceService.checkUseWorkspace();
+
+        if (issueForm.getRemoveIds().size() < 1) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.ISSUE_REMOVE_NOT_SELECT));
+        }
+
+        List<Issue> removeIssues = Lists.newArrayList();
+        Long downIssueId = 0L;
+        for (Long issueId : issueForm.getRemoveIds()) {
+            //�궘�젣 �븷 �씠�뒋�쓽 �븯�쐞�씠�뒋 泥댄겕
+            List<Issue> downIssues = this.issueRepository.findByParentIssueId(issueId);
+            if(downIssues != null && downIssues.size() > 0){
+                for(Issue downIssue : downIssues){
+                    downIssueId = downIssue.getId();
+                }
+            }
+            Issue issue = this.issueRemoves(downIssueId, user);
+            removeIssues.add(issue);
+        }
+        //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
+        log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_REMOVE));
+    }
+
     private Issue issueRemoves(Long issueId, User user) {
-        Issue issue = this.getIssue(issueId);
+        Issue issue = null;
+        if(issueId != null){
+            issue = this.getIssue(issueId);
+        }
         //  �씠�뒋 �닔�젙 沅뚰븳�쓣 媛뽮퀬 �엳�뒗吏� �솗�씤
         this.verifyIssueModifyPermission(issue, user);
 
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
index 1ffff50..0c3b5b1 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
@@ -80,6 +80,8 @@
         for (ProjectType projectType : projectTypes) {
             List<IssueType> issueTypes = Lists.newArrayList();
             Workflow workflow = this.workflowService.findByWorkspaceIdAndProjectType(workspace.getId(), projectType);
+            //String projectKey = "BTS";
+            //Project project = this.projectService.findByProjectKey(projectKey);
 
             switch (projectType) {
                 case BTS_PROJECT:
diff --git a/src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java
index f5f077d..09ccec0 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java
@@ -93,6 +93,9 @@
     private ProjectService projectService;
 
     @Autowired
+    private IssueTypeService issueTypeService;
+
+    @Autowired
     private UserSecurityService userSecurityService;
 
     @Autowired
@@ -258,7 +261,10 @@
                 this.userWorkspaceService.addUserWorkspace(user, workspace, true, true);
 
                 //  湲곕낯�쑝濡� �젣怨듬릺�뒗 �봽濡쒖젥�듃瑜� �깮�꽦�븳�떎.
-//                this.projectService.addDefaultProject(user, workspace);
+                this.projectService.addDefaultProject(user, workspace);
+
+                // 湲곕낯�쑝濡� �젣怨듬릺�뒗 �봽濡쒖젥�듃瑜� �씠�뒋 �쑀�삎�쓽 �궗�슜 �봽濡쒖젥�듃濡� �꽕�젙
+                //this.issueTypeService.addDefaultUsedProject(workspace);
 
                 user.setLastWorkspaceId(workspace.getId());
 
diff --git a/src/main/java/kr/wisestone/owl/util/ConvertUtil.java b/src/main/java/kr/wisestone/owl/util/ConvertUtil.java
index c4470cf..5bc0f35 100644
--- a/src/main/java/kr/wisestone/owl/util/ConvertUtil.java
+++ b/src/main/java/kr/wisestone/owl/util/ConvertUtil.java
@@ -5,6 +5,8 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import kr.wisestone.owl.constant.MsgConstants;
 import kr.wisestone.owl.exception.OwlRuntimeException;
+import kr.wisestone.owl.vo.CompanyFieldVo;
+import kr.wisestone.owl.vo.IspFieldVo;
 import org.apache.commons.lang3.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java b/src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java
index 6ab7497..f09ad46 100644
--- a/src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java
@@ -1,5 +1,9 @@
 package kr.wisestone.owl.vo;
 
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
 public class CompanyFieldVo extends UsePartnerVo {
 
     private String manager;
@@ -7,6 +11,9 @@
     private String email;
     private String url;
     private String memo;
+
+    private List<IspFieldVo> ispFieldVos = Lists.newArrayList();
+    private List<HostingFieldVo> hostingFieldVos = Lists.newArrayList();
 
     public CompanyFieldVo() {}
 
@@ -58,4 +65,20 @@
     public void setUrl(String url) {
         this.url = url;
     }
+
+    public List<IspFieldVo> getIspFieldVos() {
+        return ispFieldVos;
+    }
+
+    public void setIspFieldVos(List<IspFieldVo> ispFieldVos) {
+        this.ispFieldVos = ispFieldVos;
+    }
+
+    public List<HostingFieldVo> getHostingFieldVos() {
+        return hostingFieldVos;
+    }
+
+    public void setHostingFieldVos(List<HostingFieldVo> hostingFieldVos) {
+        this.hostingFieldVos = hostingFieldVos;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/controller/IssueController.java b/src/main/java/kr/wisestone/owl/web/controller/IssueController.java
index f752960..460c4b5 100644
--- a/src/main/java/kr/wisestone/owl/web/controller/IssueController.java
+++ b/src/main/java/kr/wisestone/owl/web/controller/IssueController.java
@@ -137,6 +137,30 @@
         return this.setSuccessMessage(resJsonData);
     }
 
+    //  �븯�쐞�씠�뒋 �궘�젣
+    @RequestMapping(value = "/issue/removeAll", produces = MediaType.APPLICATION_JSON_VALUE)
+    public
+    @ResponseBody
+    Map<String, Object> removesAll(@RequestBody Map<String, Map<String, Object>> params) {
+        Map<String, Object> resJsonData = new HashMap<>();
+
+        this.issueService.removeAllIssues(IssueForm.make(params.get(Constants.REQ_KEY_CONTENT)));
+
+        return this.setSuccessMessage(resJsonData);
+    }
+
+    //  �븯�쐞�씠�뒋 �궘�젣
+    /*@RequestMapping(value = "/issue/removeDown", produces = MediaType.APPLICATION_JSON_VALUE)
+    public
+    @ResponseBody
+    Map<String, Object> removesDown(@RequestBody Map<String, Map<String, Object>> params) {
+        Map<String, Object> resJsonData = new HashMap<>();
+
+        this.issueService.removeDownIssues(IssueForm.make(params.get(Constants.REQ_KEY_CONTENT)));
+
+        return this.setSuccessMessage(resJsonData);
+    }*/
+
     //  �씠�뒋 �떎以� �긽�깭 蹂�寃�
     @RequestMapping(value = "/issue/modifyMultiIssueStatus", produces = MediaType.APPLICATION_JSON_VALUE)
     public
diff --git a/src/main/resources/migration/V1_12__Alter_Table.sql b/src/main/resources/migration/V1_12__Alter_Table.sql
index 36a476b..9944ff1 100644
--- a/src/main/resources/migration/V1_12__Alter_Table.sql
+++ b/src/main/resources/migration/V1_12__Alter_Table.sql
@@ -1,17 +1 @@
--- �븘�닔 �뜲�씠�꽣 �뿬遺�
-ALTER TABLE `custom_field` ADD COLUMN  `required_data` VARCHAR(1) NOT NULL DEFAULT 'N';
-
--- url �빆紐� 異붽�
-ALTER TABLE `company_field` ADD COLUMN  `url` VARCHAR(255) NULL;
-ALTER TABLE `isp_field` ADD COLUMN  `url` VARCHAR(255) NULL;
-ALTER TABLE `hosting_field` ADD COLUMN  `url` VARCHAR(255) NULL;
-
-ALTER TABLE `issue_company` ADD COLUMN  `url` VARCHAR(255) NULL;
-ALTER TABLE `issue_isp` ADD COLUMN  `url` VARCHAR(255) NULL;
-ALTER TABLE `issue_hosting` ADD COLUMN  `url` VARCHAR(255) NULL;
-
--- �옄�룞 �셿猷� �긽�깭 異붽�
-ALTER TABLE `issue_type` ADD COLUMN  `complete_issue_status_id` BIGINT(20) NULL;
-
--- �뾽泥댁쓽 url 而щ읆 INDEX 異붽�
-ALTER TABLE `company_field` ADD INDEX `urlIndex`(`url`);
+ALTER TABLE `user` ADD INDEX `levelIdIndex`(`level_id`);
\ No newline at end of file
diff --git a/src/main/resources/migration/V1_13__Alter_Table.sql b/src/main/resources/migration/V1_13__Alter_Table.sql
new file mode 100644
index 0000000..36a476b
--- /dev/null
+++ b/src/main/resources/migration/V1_13__Alter_Table.sql
@@ -0,0 +1,17 @@
+-- �븘�닔 �뜲�씠�꽣 �뿬遺�
+ALTER TABLE `custom_field` ADD COLUMN  `required_data` VARCHAR(1) NOT NULL DEFAULT 'N';
+
+-- url �빆紐� 異붽�
+ALTER TABLE `company_field` ADD COLUMN  `url` VARCHAR(255) NULL;
+ALTER TABLE `isp_field` ADD COLUMN  `url` VARCHAR(255) NULL;
+ALTER TABLE `hosting_field` ADD COLUMN  `url` VARCHAR(255) NULL;
+
+ALTER TABLE `issue_company` ADD COLUMN  `url` VARCHAR(255) NULL;
+ALTER TABLE `issue_isp` ADD COLUMN  `url` VARCHAR(255) NULL;
+ALTER TABLE `issue_hosting` ADD COLUMN  `url` VARCHAR(255) NULL;
+
+-- �옄�룞 �셿猷� �긽�깭 異붽�
+ALTER TABLE `issue_type` ADD COLUMN  `complete_issue_status_id` BIGINT(20) NULL;
+
+-- �뾽泥댁쓽 url 而щ읆 INDEX 異붽�
+ALTER TABLE `company_field` ADD INDEX `urlIndex`(`url`);
diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json
index 5c27969..3c091ba 100644
--- a/src/main/webapp/i18n/ko/global.json
+++ b/src/main/webapp/i18n/ko/global.json
@@ -218,6 +218,8 @@
         "settingTableDisplay": "�뀒�씠釉� �몴�떆 �꽕�젙",
         "deleteIssue": "�씠�뒋 �궘�젣",
         "wantToDeleteSelectIssue": "�꽑�깮�븳 �씠�뒋瑜� �궘�젣�븯寃좎뒿�땲源�? \n �궗�슜�옄媛� 吏곸젒 �궘�젣�븳 �씠�뒋�뒗 �뼱�뼚�븳 寃쎌슦�뿉�룄 蹂듦뎄媛� 遺덇��뒫�빀�땲�떎.",
+        "wantToDeleteOnlySelectIssue": "�꽑�깮�븳 �씠�뒋留� �궘�젣�븯寃좎뒿�땲源�? \n �궗�슜�옄媛� 吏곸젒 �궘�젣�븳 �씠�뒋�뒗 �뼱�뼚�븳 寃쎌슦�뿉�룄 蹂듦뎄媛� 遺덇��뒫�빀�땲�떎.",
+        "wantToDeleteSelectDownIssue": "�꽑�깮�븳 �씠�뒋�쓽 �븯�쐞 �씠�뒋媛� 議댁옱 �빀�땲�떎. \n �꽑�깮�븳 �씠�뒋�� �븯�쐞 �씠�뒋 紐⑤몢 �궘�젣�븯寃좎뒿�땲源�? \n �궗�슜�옄媛� 吏곸젒 �궘�젣�븳 �씠�뒋�뒗 �뼱�뼚�븳 寃쎌슦�뿉�룄 蹂듦뎄媛� 遺덇��뒫�빀�땲�떎.",
         "wantToDeleteSelectRelationIssue": "�꽑�깮�븳 �뿰愿� �씠�뒋瑜� �궘�젣�븯寃좎뒿�땲源�? \n �궗�슜�옄媛� 吏곸젒 �궘�젣�븳 �뿰愿� �씠�뒋�뒗 蹂듦뎄媛� 遺덇��뒫�빀�땲�떎.",
         "failedToSaveFieldConditions": "寃��깋 �븘�뱶 議곌굔 ���옣 �떎�뙣",
         "failedToGetSearchFieldCondition": "寃��깋 �븘�뱶 議곌굔 媛��졇�삤湲� �떎�뙣",
@@ -783,6 +785,7 @@
         "createIssue": "�씠�뒋 �깮�꽦",
         "updateIssue": "�씠�뒋 蹂�寃�",
         "deleteIssue": "�씠�뒋 �궘�젣",
+        "deleteDownIssue": "�븯�쐞 �씠�뒋 �궘�젣",
         "sendMailIssue": "�씠�뒋 硫붿씪 �쟾�넚",
         "updateTitle": "�젣紐⑹씠 蹂�寃쎈릺�뿀�뒿�땲�떎.",
         "updateContent": "�궡�슜�씠 蹂�寃쎈릺�뿀�뒿�땲�떎.",
diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html
index cdf13fd..e8de587 100644
--- a/src/main/webapp/index.html
+++ b/src/main/webapp/index.html
@@ -40,7 +40,7 @@
     <link type="text/css" rel="stylesheet" href="custom_components/js-autocomplete-single/js-autocomplete-single.css">
     <link type="text/css" rel="stylesheet" href="custom_components/js-autocomplete-multi/js-autocomplete-multi.css">
     <link type="text/css" rel="stylesheet" href="custom_components/js-html-diff/js-html-diff.css">
-    <link type="text/css" rel="stylesheet" href="assets/styles/main.css?version=1.0.0">
+    <link type="text/css" rel="stylesheet" href="assets/styles/main.css?version=0.9.0">
     <link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Rubik:300,400,500">
 
     <!--    google font -->
diff --git a/src/main/webapp/scripts/app/api/apiSetting.controller.js b/src/main/webapp/scripts/app/api/apiSetting.controller.js
index 70103fc..acb070f 100644
--- a/src/main/webapp/scripts/app/api/apiSetting.controller.js
+++ b/src/main/webapp/scripts/app/api/apiSetting.controller.js
@@ -140,7 +140,7 @@
                     });
                 }
 
-                $scope.$watch("vm.issueTypeId", function (newValue){
+                $scope.$watch("vm.issueTypeId", function (newValue, oldValue){
                     if (newValue != null && newValue !== "") {
                         $scope.fn.loadPage();
                     }
@@ -189,7 +189,6 @@
                 }
 
                 function onChangeIssueTypeOverlap() {
-                    $scope.fn.getIssueStatuses();
                     $scope.fn.getIssueTypeCustomFields();
                     $scope.fn.getOverlapList();
                 }
@@ -237,8 +236,6 @@
                             if (result.data.message.status === "success") {
                                 SweetAlert.swal($filter("translate")("api.successToApiAutoCompleteIssueStatus"), result.data.message.message, "success"); // "�꽕�젙 �꽦怨�"
                                 $scope.fn.getIssueTypes();
-                                $scope.fn.getIssueStatuses();
-                                $scope.fn.getIssueTypeCustomFields();
                             } else {
                                 SweetAlert.swal($filter("translate")("api.failedToApiAutoCompleteIssueStatus"), result.data.message.message, "error"); // "�꽕�젙 �떎�뙣"
                             }
@@ -403,6 +400,7 @@
                     if (tab === "API_COL_SETTING") {
                         $scope.fn.onChangeColumnSetting();
                     } else if (tab === "API_OVERLAP_SETTING") {
+                        $scope.fn.getIssueStatuses();
                         $scope.fn.onChangeIssueTypeOverlap();
                     } else if (tab === "API_SPEC_SETTING") {
                         $scope.fn.onChangeIssueTypeSpec();
diff --git a/src/main/webapp/scripts/app/hostingField/hostingFieldModify.controller.js b/src/main/webapp/scripts/app/hostingField/hostingFieldModify.controller.js
index 36df870..86c33ff 100644
--- a/src/main/webapp/scripts/app/hostingField/hostingFieldModify.controller.js
+++ b/src/main/webapp/scripts/app/hostingField/hostingFieldModify.controller.js
@@ -45,7 +45,7 @@
 
                     var content = {
                         id : parameter.id,
-                        code : $rootScope.preventXss($scope.vm.form.name),
+                        code : $rootScope.preventXss($scope.vm.form.code),
                         name : $rootScope.preventXss($scope.vm.form.name),
                         manager : $rootScope.preventXss($scope.vm.form.manager),
                         tel : $rootScope.preventXss($scope.vm.form.tel),
diff --git a/src/main/webapp/scripts/app/ispField/ispFieldModify.controller.js b/src/main/webapp/scripts/app/ispField/ispFieldModify.controller.js
index f654894..4182144 100644
--- a/src/main/webapp/scripts/app/ispField/ispFieldModify.controller.js
+++ b/src/main/webapp/scripts/app/ispField/ispFieldModify.controller.js
@@ -24,6 +24,7 @@
                         name : "",  //ISP紐�
                         manager : "",   //�떞�떦�옄
                         tel : "",  //�쟾�솕踰덊샇
+                        code : "",
                         email : "",  //�씠硫붿씪
                         url : "", // url
                         memo : ""  //硫붾え(鍮꾧퀬)
@@ -44,7 +45,7 @@
 
                     var content = {
                         id : parameter.id,
-                        code : $rootScope.preventXss($scope.vm.form.name),
+                        code : $rootScope.preventXss($scope.vm.form.code),
                         name : $rootScope.preventXss($scope.vm.form.name),
                         manager : $rootScope.preventXss($scope.vm.form.manager),
                         tel : $rootScope.preventXss($scope.vm.form.tel),
diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
index 18cb24a..5da56d6 100644
--- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -388,6 +388,9 @@
 
                 // �뾽泥댁젙蹂� 寃곌낵 媛� Event 泥섎━(set)
                 $scope.$on("companyFieldEvent", function (event, result) {
+                    var ispFieldVos = result[0].ispFieldVos[0];
+                    var hostingFieldVos = result[0].hostingFieldVos[0];
+
                     $scope.vm.companyId = result[0].id;
                     $scope.vm.companyName = result[0].name;
                     $scope.vm.companyManager = result[0].manager;
@@ -396,6 +399,21 @@
                     $scope.vm.companyUrl = result[0].url;
                     $scope.vm.companyMemo = result[0].memo;
 
+                    $scope.vm.ispName = ispFieldVos.name;
+                    $scope.vm.ispCode = ispFieldVos.code;
+                    $scope.vm.ispManager = ispFieldVos.manager;
+                    $scope.vm.ispTel = ispFieldVos.tel;
+                    $scope.vm.ispEmail = ispFieldVos.email;
+                    $scope.vm.ispUrl = ispFieldVos.url;
+                    $scope.vm.ispMemo = ispFieldVos.memo;
+
+                    $scope.vm.hostingName = hostingFieldVos.name;
+                    $scope.vm.hostingCode = hostingFieldVos.code;
+                    $scope.vm.hostingManager = hostingFieldVos.manager;
+                    $scope.vm.hostingTel = hostingFieldVos.tel;
+                    $scope.vm.hostingEmail = hostingFieldVos.email;
+                    $scope.vm.hostingUrl = hostingFieldVos.url;
+                    $scope.vm.hostingMemo = hostingFieldVos.memo;
                 });
 
                 // ISP�젙蹂� 寃곌낵 媛� Event 泥섎━(set)
diff --git a/src/main/webapp/scripts/app/issue/issueList.controller.js b/src/main/webapp/scripts/app/issue/issueList.controller.js
index 006dc38..c596f5d 100644
--- a/src/main/webapp/scripts/app/issue/issueList.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueList.controller.js
@@ -689,6 +689,7 @@
                 function removes() {
                     var removeIds = [];
                     var removePermission = true;
+                    var downIssueIds = false;
 
                     angular.forEach($scope.vm.responseData.data, function (data) {
                         if (data.checked && data.modifyPermissionCheck) {
@@ -697,6 +698,10 @@
 
                         if (data.checked && !data.modifyPermissionCheck) {
                             removePermission = false;
+                        }
+
+                        if (data.downIssueAllCount > 0){
+                            downIssueIds = true;
                         }
                     });
 
@@ -719,25 +724,23 @@
                         return;
                     }
 
-                    //  �궘�젣 �븣由�
-                    SweetAlert.swal({
-                            title : $filter("translate")("issue.deleteIssue"), // �씠�뒋 �궘�젣
-                            text : $filter("translate")("issue.wantToDeleteSelectIssue"), // �꽑�깮�븳 �씠�뒋�쓣 �궘�젣�븯寃좎뒿�땲源�? �궘�젣�맂 �씠�뒋�� 蹂듦뎄�븷 �닔 �뾾�뒿�땲�떎.
+                    if (downIssueIds) {
+                        SweetAlert.swal({
+                            title : $filter("translate")("common.deleteIssue"), // �씠�뒋 �궘�젣
+                            text : $filter("translate")("issue.wantToDeleteSelectDownIssue"), // �븯�쐞 �씠�뒋媛� 議댁옱 �빀�땲�떎. �꽑�깮�븳 �씠�뒋�� �븯�쐞 �씠�뒋 紐⑤몢 �궘�젣�븯寃좎뒿�땲源�? �궘�젣�맂 �씠�뒋�뒗 蹂듦뎄�븷 �닔 �뾾�뒿�땲�떎.
                             type : "warning",
                             showCancelButton : true,
                             confirmButtonColor : "#DD6B55",
                             confirmButtonText : $filter("translate")("common.delete"), // �궘�젣
                             cancelButtonText : $filter("translate")("common.cancel"), // 痍⑥냼
                             closeOnConfirm : false,
-                            closeOnCancel : true
+                            closeOnCancel : false
                         },
                         function (isConfirm) {
-                            SweetAlert.close();
-
-                            if (isConfirm) {
+                            if (isConfirm) { //�씠�뒋 + �븯�쐞 �궘�젣
                                 $rootScope.spinner = true;
 
-                                Issue.remove($resourceProvider.getContent(
+                                Issue.removeAllIssues($resourceProvider.getContent(
                                     { removeIds : removeIds },
                                     $resourceProvider.getPageContent(0, 0))).then(function (result) {
 
@@ -745,9 +748,7 @@
                                         $timeout(function () {
                                             SweetAlert.success($filter("translate")("common.deleteSucceeded"), result.data.message.message); // �궘�젣 �꽦怨�
                                         }, 100);
-
                                         $scope.fn.listView();
-
                                         $scope.fn.getPageList(0);
                                     }
                                     else {
@@ -755,11 +756,96 @@
                                             SweetAlert.error($filter("translate")("common.deleteFailed"), result.data.message.message); // �궘�젣 �떎�뙣
                                         }, 100);
                                     }
-
                                     $rootScope.spinner = false;
                                 });
+
+                            } else {//  �꽑�깮 �븳 �씠�뒋留� �궘�젣
+                                //  �궘�젣 �븣由�
+                                SweetAlert.swal({
+                                        title : $filter("translate")("issue.deleteIssue"), // �씠�뒋 �궘�젣
+                                        text : $filter("translate")("issue.wantToDeleteOnlySelectIssue"), // �꽑�깮�븳 �씠�뒋留� �궘�젣�븯寃좎뒿�땲源�? �궘�젣�맂 �씠�뒋�� 蹂듦뎄�븷 �닔 �뾾�뒿�땲�떎.
+                                        type : "warning",
+                                        showCancelButton : true,
+                                        confirmButtonColor : "#DD6B55",
+                                        confirmButtonText : $filter("translate")("common.delete"), // �궘�젣
+                                        cancelButtonText : $filter("translate")("common.cancel"), // 痍⑥냼
+                                        closeOnConfirm : false,
+                                        closeOnCancel : true
+                                    },
+                                    function (isConfirm) {
+                                        SweetAlert.close();
+
+                                        if (isConfirm) {
+                                            $rootScope.spinner = true;
+
+                                            Issue.remove($resourceProvider.getContent(
+                                                { removeIds : removeIds },
+                                                $resourceProvider.getPageContent(0, 0))).then(function (result) {
+
+                                                if (result.data.message.status === "success") {
+                                                    $timeout(function () {
+                                                        SweetAlert.success($filter("translate")("common.deleteSucceeded"), result.data.message.message); // �궘�젣 �꽦怨�
+                                                    }, 100);
+
+                                                    $scope.fn.listView();
+
+                                                    $scope.fn.getPageList(0);
+                                                }
+                                                else {
+                                                    $timeout(function () {
+                                                        SweetAlert.error($filter("translate")("common.deleteFailed"), result.data.message.message); // �궘�젣 �떎�뙣
+                                                    }, 100);
+                                                }
+
+                                                $rootScope.spinner = false;
+                                            });
+                                        }
+                                    });
                             }
                         });
+                    } else {
+                        //  �궘�젣 �븣由�
+                        SweetAlert.swal({
+                                title : $filter("translate")("issue.deleteIssue"), // �씠�뒋 �궘�젣
+                                text : $filter("translate")("issue.wantToDeleteSelectIssue"), // �꽑�깮�븳 �씠�뒋�쓣 �궘�젣�븯寃좎뒿�땲源�? �궘�젣�맂 �씠�뒋�� 蹂듦뎄�븷 �닔 �뾾�뒿�땲�떎.
+                                type : "warning",
+                                showCancelButton : true,
+                                confirmButtonColor : "#DD6B55",
+                                confirmButtonText : $filter("translate")("common.delete"), // �궘�젣
+                                cancelButtonText : $filter("translate")("common.cancel"), // 痍⑥냼
+                                closeOnConfirm : false,
+                                closeOnCancel : true
+                            },
+                            function (isConfirm) {
+                                SweetAlert.close();
+
+                                if (isConfirm) {
+                                    $rootScope.spinner = true;
+
+                                    Issue.remove($resourceProvider.getContent(
+                                        { removeIds : removeIds },
+                                        $resourceProvider.getPageContent(0, 0))).then(function (result) {
+
+                                        if (result.data.message.status === "success") {
+                                            $timeout(function () {
+                                                SweetAlert.success($filter("translate")("common.deleteSucceeded"), result.data.message.message); // �궘�젣 �꽦怨�
+                                            }, 100);
+
+                                            $scope.fn.listView();
+
+                                            $scope.fn.getPageList(0);
+                                        }
+                                        else {
+                                            $timeout(function () {
+                                                SweetAlert.error($filter("translate")("common.deleteFailed"), result.data.message.message); // �궘�젣 �떎�뙣
+                                            }, 100);
+                                        }
+
+                                        $rootScope.spinner = false;
+                                    });
+                                }
+                            });
+                    }
                 }
 
                 //  �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙
diff --git a/src/main/webapp/scripts/components/issue/issue.service.js b/src/main/webapp/scripts/components/issue/issue.service.js
index d606b2b..e4c3f90 100644
--- a/src/main/webapp/scripts/components/issue/issue.service.js
+++ b/src/main/webapp/scripts/components/issue/issue.service.js
@@ -92,6 +92,18 @@
                     return response;
                 });
             },
+            removeAllIssues : function (conditions) {
+                return $http.post("issue/removeAll", conditions).then(function (response) {
+                    $log.debug("�븯�쐞�씠�뒋 �궘�젣 寃곌낵 : ", response);
+                    return response;
+                });
+            },
+            /*removeDownIssues : function (conditions) {
+                return $http.post("issue/removeDown", conditions).then(function (response) {
+                    $log.debug("�븯�쐞�씠�뒋 �궘�젣 寃곌낵 : ", response);
+                    return response;
+                });
+            },*/
             importExcel : function (conditions) {
                 conditions.url = "issue/importExcel";
                 return $upload.upload(conditions).then(function (response) {
diff --git a/src/main/webapp/scripts/main.js b/src/main/webapp/scripts/main.js
index ef59c0d..0973abc 100644
--- a/src/main/webapp/scripts/main.js
+++ b/src/main/webapp/scripts/main.js
@@ -4,7 +4,7 @@
 'use strict';
 
 require.config({
-    urlArgs : "bust=v1.0.0",
+    urlArgs : "bust=v0.9.0",
     paths : {
         'jquery' : '../bower_components/jquery/dist/jquery',
         'jquery-ui' : '../bower_components/jquery-ui/jquery-ui',
diff --git a/src/main/webapp/views/api/apiSettingOverlap.html b/src/main/webapp/views/api/apiSettingOverlap.html
index 6d83e51..ecfe175 100644
--- a/src/main/webapp/views/api/apiSettingOverlap.html
+++ b/src/main/webapp/views/api/apiSettingOverlap.html
@@ -62,7 +62,7 @@
                     class="form-control input-sm issue-select-label"
                     ng-style="{ 'color' : fn.getOptionColor(vm.completeIssueStatuses, vm.completeIssueStatusId) }"
                     ng-model="vm.completeIssueStatusId"
-                    ng-change="fn.onChangeIssueTypeSpec()"
+                    ng-change="fn.onChangeIssueTypeOverlap()"
                     required>
                 <option ng-repeat="issueStatus in vm.completeIssueStatuses"
                         ng-style="{ 'color' : issueStatus.color, 'font-weight': 600 }"
diff --git a/src/main/webapp/views/ispField/ispFieldModify.html b/src/main/webapp/views/ispField/ispFieldModify.html
index b4cd4bc..0598f3d 100644
--- a/src/main/webapp/views/ispField/ispFieldModify.html
+++ b/src/main/webapp/views/ispField/ispFieldModify.html
@@ -12,7 +12,7 @@
         <form role="form" name="hostingFieldModifyForm">
             <div class="form-group">
                 <label for="hostingFieldModifyForm1">
-                    <span translate="hostingField.name">ISP紐�</span>
+                    <span translate="ispField.name">ISP紐�</span>
                     <code class="highlighter-rouge">*</code>
                 </label>
                 <input id="hostingFieldModifyForm1"
diff --git a/src/main/webapp/views/issue/issueAdd.html b/src/main/webapp/views/issue/issueAdd.html
index e55ca04..57e7322 100644
--- a/src/main/webapp/views/issue/issueAdd.html
+++ b/src/main/webapp/views/issue/issueAdd.html
@@ -487,6 +487,17 @@
                 <div class="col-lg-4">
                     <div class="form-group mb10">
                         <label class="issue-label"> <span translate="ispField.name">ISP �씠由�</span> </label>
+                        <!--<input ng-click="show==false"
+                               ng-show="show"
+                               ng-hide="!show"
+                               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"
@@ -609,6 +620,7 @@
                         <label class="issue-label"> <span translate="hostingField.name">�샇�뒪�똿 �씠由�</span> </label>
                         <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"

--
Gitblit v1.8.0