OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-12-10 e8dd85537ec9060133956629019c429ffb22f8c0
업체 isp,호스팅 연동
16개 파일 변경됨
401 ■■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/domain/CompanyField.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java 51 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java 27 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java 24 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java 39 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java 19 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/migration/V1_13__Alter_Table.sql 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/companyField-template.xml 4 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/issue-template.xml 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/companyField/companyFieldAdd.controller.js 34 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/companyField/companyFieldModify.controller.js 61 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAdd.controller.js 54 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/companyField/companyFieldAdd.html 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/companyField/companyFieldModify.html 35 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/CompanyField.java
@@ -19,6 +19,8 @@
    private String url;
    private String email;
    private String memo;
    private Long ispId;
    private Long hostingId;
    public CompanyField() {}
@@ -77,4 +79,20 @@
    public void setUrl(String url) {
        this.url = url;
    }
    public Long getIspId() {
        return ispId;
    }
    public void setIspId(Long ispId) {
        this.ispId = ispId;
    }
    public Long getHostingId() {
        return hostingId;
    }
    public void setHostingId(Long hostingId) {
        this.hostingId = hostingId;
    }
}
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -6,10 +6,11 @@
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.service.*;
import kr.wisestone.owl.web.condition.CompanyFieldCondition;
import kr.wisestone.owl.web.form.CompanyFieldForm;
import org.apache.commons.lang3.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import com.google.common.collect.Lists;
import kr.wisestone.owl.common.ExcelConditionCheck;
@@ -18,8 +19,6 @@
import kr.wisestone.owl.exception.OwlRuntimeException;
import kr.wisestone.owl.mapper.CompanyFieldMapper;
import kr.wisestone.owl.repository.CompanyFieldRepository;
import kr.wisestone.owl.service.CompanyFieldService;
import kr.wisestone.owl.service.WorkspaceService;
import kr.wisestone.owl.util.ConvertUtil;
import kr.wisestone.owl.vo.*;
import kr.wisestone.owl.web.view.ExcelView;
@@ -33,6 +32,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Service
public class CompanyFieldServiceImpl extends AbstractServiceImpl<CompanyField, Long, JpaRepository<CompanyField, Long>> implements CompanyFieldService {
@@ -48,6 +48,12 @@
    @Autowired
    private HostingFieldRepository hostingFieldRepository;
    @Autowired
    private IspFieldService ispFieldService;
    @Autowired
    private HostingFieldService hostingFieldService;
    @Autowired
    private UserService userService;
@@ -112,13 +118,29 @@
    // 업체 상세 조회한다.
    @Override
    @Transactional
    public void detailCompany(Map<String, Object> resJsonData, CompanyFieldCondition companyFieldCondition) {
        CompanyFieldVo companyFieldVo = new CompanyFieldVo();
        IspFieldVo ispFieldVo = new IspFieldVo();
        HostingFieldVo hostingFieldVo = new HostingFieldVo();
        Long companyId = companyFieldCondition.getId();
        if (companyId != null) {
            CompanyField companyField = this.getCompany(companyId);
            IspField ispField = null;
            HostingField hostingField = null;
            if(companyField.getIspId() != null){
                ispField = this.ispFieldRepository.getOne(companyField.getIspId());
            }
            if(companyField.getHostingId() != null){
                hostingField = this.hostingFieldRepository.getOne(companyField.getHostingId());
            }
            companyFieldVo = ConvertUtil.copyProperties(companyField, CompanyFieldVo.class);
            ispFieldVo = ConvertUtil.copyProperties(ispField, IspFieldVo.class);
            hostingFieldVo = ConvertUtil.copyProperties(hostingField, HostingFieldVo.class);
            companyFieldVo.setIspFieldVo(ispFieldVo);
            companyFieldVo.setHostingFieldVo(hostingFieldVo);
        }
        resJsonData.put(Constants.REQ_KEY_CONTENT, companyFieldVo);
    }
@@ -185,28 +207,21 @@
    //  검색 결과를 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);
            if(ispField != null){
            if(companyFieldVo.getIspId() != null){
                //IspField ispField = this.ispFieldRepository.getOne(companyFieldVo.getIspId());
                IspField ispField = this.ispFieldService.getIsp(companyFieldVo.getIspId());
                IspFieldVo ispFieldVo = ConvertUtil.copyProperties(ispField, IspFieldVo.class);
                ispFieldVos.add(ispFieldVo);
                companyFieldVo.setIspFieldVo(ispFieldVo);
            }
            companyFieldVo.setIspFieldVos(ispFieldVos);
            HostingField hostingField = this.hostingFieldRepository.findByUrl(url);
            if(hostingField != null){
            if(companyFieldVo.getHostingId() != null){
                //HostingField hostingField = this.hostingFieldRepository.getOne(companyFieldVo.getHostingId());
                HostingField hostingField = this.hostingFieldService.getHosting(companyFieldVo.getHostingId());
                HostingFieldVo hostingFieldVo = ConvertUtil.copyProperties(hostingField, HostingFieldVo.class);
                hostingFieldVos.add(hostingFieldVo);
                companyFieldVo.setHostingFieldVo(hostingFieldVo);
            }
            companyFieldVo.setHostingFieldVos(hostingFieldVos);
            companyFieldVos.add(companyFieldVo);
        }
src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
@@ -58,30 +58,9 @@
    // Hosting 추가
    @Override
    public HostingField add(HostingFieldForm HostingFieldForm) {
        if(HostingFieldForm.getUrl() != null){
            //  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) {
        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 목록을 가져온다.
@@ -114,15 +93,9 @@
    // Hosting 정로를 수정한다.
    @Override
    public void modify(HostingFieldForm HostingFieldForm) {
        //  url 유효성 체크
        if(HostingFieldForm.getUrl() != null){
            this.verifyUrl(HostingFieldForm.getUrl(), HostingFieldForm.getId());
        }
        HostingField HostingField = ConvertUtil.copyProperties(HostingFieldForm, HostingField.class);
        hostingFieldRepository.saveAndFlush(HostingField);
    }
    // Hosting를 삭제한다.
    @Override
src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
@@ -58,11 +58,6 @@
    // Isp 추가
    @Override
    public IspField add(IspFieldForm IspFieldForm) {
        //  url 유효성 체크
        if(IspFieldForm.getUrl() != null){
            this.verifyUrl(IspFieldForm.getUrl(), null);
        }
        IspField IspField = ConvertUtil.copyProperties(IspFieldForm, IspField.class);
        ispFieldRepository.saveAndFlush(IspField);
        return IspField;
@@ -81,23 +76,6 @@
        return this.convertIspVoToMap(results, totalIspCount, pageable, resJsonData);
    }
    //  url 유효성 체크
    private void verifyUrl(String url, Long id) {
        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));
        }
    }
    // Isp 상세 조회한다.
    @Override
    public void detail(Map<String, Object> resJsonData, IspFieldCondition ispFieldCondition) {
@@ -115,8 +93,6 @@
    @Override
    public void modify(IspFieldForm IspFieldForm) {
        if(IspFieldForm.getUrl() != null){
            //  url 유효성 체크
            this.verifyUrl(IspFieldForm.getUrl(), IspFieldForm.getId());
        }
        IspField IspField = ConvertUtil.copyProperties(IspFieldForm, IspField.class);
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -1879,8 +1879,8 @@
        //hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.ASSIGNEE, issueVo, issueUserVos);
        //  담당자가 없으면 모든 사용자가 수정 권한을 갖는다.
        hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.ALL_ISSUE_MANAGER, issueVo, null, null, user);
        hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.ALL_PROJECT_MANAGER, issueVo, null, null, user);
        //hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.ALL_ISSUE_MANAGER, issueVo, null, null, user);
        //hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.ALL_PROJECT_MANAGER, issueVo, null, null, user);
        return hasPermission;
    }
src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java
@@ -11,14 +11,15 @@
    private String email;
    private String url;
    private String memo;
    private Long ispId;
    private Long hostingId;
    private List<IspFieldVo> ispFieldVos = Lists.newArrayList();
    private List<HostingFieldVo> hostingFieldVos = Lists.newArrayList();
    private IspFieldVo ispFieldVo;
    private HostingFieldVo hostingFieldVo;
    public CompanyFieldVo() {}
    public CompanyFieldVo(String manager, String tel, String email, String memo) {
        this.manager = manager;
        this.tel = tel;
        this.email = email;
@@ -66,19 +67,35 @@
        this.url = url;
    }
    public List<IspFieldVo> getIspFieldVos() {
        return ispFieldVos;
    public IspFieldVo getIspFieldVo() {
        return ispFieldVo;
    }
    public void setIspFieldVos(List<IspFieldVo> ispFieldVos) {
        this.ispFieldVos = ispFieldVos;
    public void setIspFieldVo(IspFieldVo ispFieldVo) {
        this.ispFieldVo = ispFieldVo;
    }
    public List<HostingFieldVo> getHostingFieldVos() {
        return hostingFieldVos;
    public HostingFieldVo getHostingFieldVo() {
        return hostingFieldVo;
    }
    public void setHostingFieldVos(List<HostingFieldVo> hostingFieldVos) {
        this.hostingFieldVos = hostingFieldVos;
    public void setHostingFieldVo(HostingFieldVo hostingFieldVo) {
        this.hostingFieldVo = hostingFieldVo;
    }
    public Long getIspId() {
        return ispId;
    }
    public void setIspId(Long ispId) {
        this.ispId = ispId;
    }
    public Long getHostingId() {
        return hostingId;
    }
    public void setHostingId(Long hostingId) {
        this.hostingId = hostingId;
    }
}
src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java
@@ -12,6 +12,8 @@
    private String email;
    private String url;
    private String memo;
    private Long ispId;
    private Long hostingId;
    private Integer Page;
    private Integer PageSize;
@@ -91,4 +93,20 @@
    public void setUrl(String url) {
        this.url = url;
    }
    public Long getIspId() {
        return ispId;
    }
    public void setIspId(Long ispId) {
        this.ispId = ispId;
    }
    public Long getHostingId() {
        return hostingId;
    }
    public void setHostingId(Long hostingId) {
        this.hostingId = hostingId;
    }
}
src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java
@@ -12,6 +12,9 @@
    private String tel;
    private String url;
    private String memo;
    private Long ispId;
    private Long hostingId;
    private List<Long> removeIds = Lists.newArrayList();
    public CompanyFieldForm() {
@@ -57,6 +60,22 @@
        this.memo = memo;
    }
    public Long getIspId() {
        return ispId;
    }
    public void setIspId(Long ispId) {
        this.ispId = ispId;
    }
    public Long getHostingId() {
        return hostingId;
    }
    public void setHostingId(Long hostingId) {
        this.hostingId = hostingId;
    }
    public List<Long> getRemoveIds() {
        return removeIds;
    }
src/main/resources/migration/V1_13__Alter_Table.sql
@@ -15,3 +15,13 @@
-- 업체의 url 컬럼 INDEX 추가
ALTER TABLE `company_field` ADD INDEX `urlIndex`(`url`);
ALTER TABLE `company_field` ADD COLUMN `isp_id` bigint(20) DEFAULT NULL;
ALTER TABLE `company_field` ADD COLUMN `hosting_id` bigint(20) DEFAULT NULL;
ALTER TABLE `company_field` ADD INDEX `ispIdIndex`(`isp_id`);
ALTER TABLE `company_field` ADD INDEX `hostingIdIndex`(`hosting_id`);
src/main/resources/mybatis/query-template/companyField-template.xml
@@ -11,7 +11,9 @@
        cf.tel as tel,
        cf.email as email,
        cf.url as url,
        cf.memo as memo
        cf.memo as memo,
        cf.isp_id as ispId,
        cf.hosting_id as hostingId
        FROM
        company_field cf
        WHERE 1=1
src/main/resources/mybatis/query-template/issue-template.xml
@@ -252,7 +252,7 @@
        LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as issueCommentCount FROM issue_comment GROUP BY issue_id)
        temp_issue_comment on (temp_issue_comment.issue_id = issue.id)
        WHERE 1=1
        <if test="keyWord != null and !keyWord.equals('') ">
        <if test="keyWord != null and !keyWord.equals('') and myDepartmentIds.size != 0">
            AND issue.title like CONCAT('%',#{keyWord},'%')
            OR issue.description like CONCAT('%',#{keyWord},'%')
            OR issue.start_date like CONCAT('%',#{keyWord},'%')
src/main/webapp/scripts/app/companyField/companyFieldAdd.controller.js
@@ -22,11 +22,8 @@
                    form : {
                        name : "",  //업체명
                        ispName : "",
                        hostingId : "",
                        hostingName : "",
                        //companyType : "", //업체분류
                        //profitYN : "",  //영리/비영리
                        //industry : "",  //산업분류
                        //domain : "",  //도메인
                        manager : "",   //담당자
                        tel : "",  //전화번호
                        email : "",  //이메일
@@ -44,7 +41,6 @@
                        }
                    }
                };
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
@@ -67,18 +63,34 @@
                    return false;
                }
                $scope.$on("ispFieldEvent", function (event, result) {
                    $scope.vm.form.ispId = result[0].id;
                });
                $scope.$on("hostingFieldEvent", function (event, result) {
                    $scope.vm.form.hostingId = result[0].id;
                });
                //  폼 전송
                function formSubmit(condition) {
                    $rootScope.spinner = true;
                    var content = {
                        name : $rootScope.preventXss($scope.vm.form.name),    //  업체명
                        ispName : $rootScope.preventXss($scope.vm.form.ispName),    //  업체명
                        hostingName : $rootScope.preventXss($scope.vm.form.hostingName),    //  업체명
                        //companyType : $scope.vm.form.companyType, //업체분류
                        //profitYN : $scope.vm.form.profitYN,  //영리/비영리
                        //industry : $scope.vm.form.industry,  //산업분류
                        //domain : $scope.vm.form.domain,  //도메인
                        ispId : (function () {  // ISP 아이디
                            var ispId = -1;
                            if ($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) {
                                hostingId = $scope.vm.form.hostingId;
                            }
                            return hostingId;
                        })(),
                        manager : $scope.vm.form.manager,   //담당자
                        tel : $scope.vm.form.tel,  //전화번호
                        email : $scope.vm.form.email,  //이메일
src/main/webapp/scripts/app/companyField/companyFieldModify.controller.js
@@ -8,27 +8,56 @@
        'angular'
    ],
    function (app, angular) {
        app.controller('companyFieldModifyController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'CompanyField', 'parameter', 'SweetAlert', '$filter', '$q',
            function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, CompanyField, parameter, SweetAlert, $filter, $q) {
        app.controller('companyFieldModifyController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'CompanyField', 'parameter', 'SweetAlert', '$filter', '$q', '$injector','$controller',
            function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, CompanyField, parameter, SweetAlert, $filter, $q, $injector, $controller) {
                $scope.fn = {
                    detail : detail,  //  상세 조회
                    cancel : cancel,    //  팝업 창 닫기
                    formSubmit : formSubmit,    //  폼 전송
                    formCheck : formCheck,  //  폼 체크
                    getIssueIspFieldListCallBack : getIssueIspFieldListCallBack,
                    getIssueHostingFieldListCallBack : getIssueHostingFieldListCallBack
                };
                $scope.vm = {
                    id : parameter.id,
                    form : {
                        name : "",  //업체명
                        ispId : "",
                        ispName : "",
                        hostingName : "",
                        hostingId : "",
                        manager : "",   //담당자
                        tel : "",  //전화번호
                        email : "",  //이메일
                        url : "", // url
                        memo : ""  //메모(비고)
                    },
                    autoCompletePage : {
                        ispField : {
                            page : 0,
                            totalPage : 0
                        },
                        hostingField : {
                            page : 0,
                            totalPage : 0
                        }
                    }
                };
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                // ISP정보 autocomplete page 업데이트
                function getIssueIspFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage;
                }
                // 호스팅정보 autocomplete page 업데이트
                function getIssueHostingFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage;
                }
                function formCheck(formInvalid) {
                    if (formInvalid) {
@@ -38,6 +67,14 @@
                    return false;
                }
                $scope.$on("ispFieldEvent", function (event, result) {
                    $scope.vm.form.ispId = result[0].id;
                });
                $scope.$on("hostingFieldEvent", function (event, result) {
                    $scope.vm.form.hostingId = result[0].id;
                });
                //  폼 전송
                function formSubmit() {
                    $rootScope.spinner = true;
@@ -45,10 +82,20 @@
                    var content = {
                        id : parameter.id,
                        name : $rootScope.preventXss($scope.vm.form.name),
                        /*companyType : $rootScope.preventXss($scope.vm.form.companyType),
                        profitYN : $rootScope.preventXss($scope.vm.form.profitYN),
                        industry : $rootScope.preventXss($scope.vm.form.industry),
                        domain : $rootScope.preventXss($scope.vm.form.domain),*/
                        ispId : (function () {  // ISP 아이디
                            var ispId = -1;
                            if ($scope.vm.form.ispId != null) {
                                ispId = $scope.vm.form.ispId;
                            }
                            return ispId;
                        })(),
                        hostingId : (function () {  // Hosting 아이디
                            var hostingId = -1;
                            if ($scope.vm.form.hostingId != null) {
                                hostingId = $scope.vm.form.hostingId;
                            }
                            return hostingId;
                        })(),
                        manager : $rootScope.preventXss($scope.vm.form.manager),
                        tel : $rootScope.preventXss($scope.vm.form.tel),
                        email : $rootScope.preventXss($scope.vm.form.email),
@@ -102,6 +149,8 @@
                                $scope.vm.form.tel = result.data.content.tel;
                                $scope.vm.form.url = result.data.content.url;
                                $scope.vm.form.memo = result.data.content.memo;
                                $scope.vm.form.ispName = result.data.content.ispFieldVo.name;
                                $scope.vm.form.hostingName = result.data.content.hostingFieldVo.name;
                            }
                        }
                        else {
src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -388,8 +388,8 @@
                // 업체정보 결과 값 Event 처리(set)
                $scope.$on("companyFieldEvent", function (event, result) {
                    var ispFieldVos = result[0].ispFieldVos[0];
                    var hostingFieldVos = result[0].hostingFieldVos[0];
                    var ispFieldVo = result[0].ispFieldVo;
                    var hostingFieldVo = result[0].hostingFieldVo;
                    $scope.vm.companyId = result[0].id;
                    $scope.vm.companyName = result[0].name;
@@ -399,34 +399,34 @@
                    $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.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 = 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;
                    $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)
                // $scope.$on("ispFieldEvent", function (event, result) {
                //     $scope.vm.ispId = result[0].id;
                //     $scope.vm.ispName = result[0].name;
                //     $scope.vm.ispCode = result[0].code;
                //     $scope.vm.ispManager = result[0].manager;
                //     $scope.vm.ispTel = result[0].tel;
                //     $scope.vm.ispEmail = result[0].email;
                //     $scope.vm.ispUrl = result[0].url;
                //     $scope.vm.ispMemo = result[0].memo;
                // });
                //ISP정보 결과 값 Event 처리(set)
                $scope.$on("ispFieldEvent", function (event, result) {
                    $scope.vm.ispId = result[0].id;
                    $scope.vm.ispName = result[0].name;
                    $scope.vm.ispCode = result[0].code;
                    $scope.vm.ispManager = result[0].manager;
                    $scope.vm.ispTel = result[0].tel;
                    $scope.vm.ispEmail = result[0].email;
                    $scope.vm.ispUrl = result[0].url;
                    $scope.vm.ispMemo = result[0].memo;
                });
                // 호스팅정보 결과 값 Event 처리(set)
                $scope.$on("hostingFieldEvent", function (event, result) {
src/main/webapp/views/companyField/companyFieldAdd.html
@@ -36,6 +36,7 @@
                </label>
                <js-autocomplete-single data-input-name="ispField"
                                    selected-model="vm.form.issueIspFields"
                                    ng-model="vm.form.ispName"
                                    search="vm.form.ispName"
                                    source="fn.getIssueIspFieldList(vm.ispName, vm.form.issueIspFields, vm.autoCompletePage.issueIspFields.page, fn.getIssueIspFieldListCallBack)"
                                    page="vm.autoCompletePage.IspField.page"
src/main/webapp/views/companyField/companyFieldModify.html
@@ -29,6 +29,41 @@
                       required>
                <small translate="companyField.enterSpecialCharacters">업체 이름에는 특수 문자를 입력 할수 없습니다.</small>
            </div>
            <div class="form-group">
                <label class="issue-label">
                    <span translate="ispField.name">ISP 이름</span>
                </label>
                <js-autocomplete-single data-input-name="ispField"
                                        selected-model="vm.form.issueIspFields"
                                        ng-model="vm.form.ispName"
                                        search="vm.form.ispName"
                                        source="fn.getIssueIspFieldList(vm.ispName, vm.form.issueIspFields, vm.autoCompletePage.issueIspFields.page, fn.getIssueIspFieldListCallBack)"
                                        page="vm.autoCompletePage.ispField.page"
                                        total-page="vm.autoCompletePage.ispField.totalPage"
                                        input-disabled="false"
                                        translation-texts="{ empty : 'common.emptyHosting' }"
                                        broad-cast="ispFieldEvent"
                                        extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
                    type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
            </div>
            <div class="form-group">
                <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.form.hostingName"
                                        search="vm.form.hostingName"
                                        source="fn.getIssueHostingFieldList(vm.hostingName, vm.form.issueHostingFields, vm.autoCompletePage.hostingField.page, fn.getIssueHostingFieldListCallBack)"
                                        page="vm.autoCompletePage.hostingField.page"
                                        total-page="vm.autoCompletePage.hostingField.totalPage"
                                        input-disabled="false"
                                        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>
            </div>
            <div>
                <div class="form-group">
                    <label for="companyFieldAddForm10" class="issue-label">