OWL ITS + 탐지시스템(인터넷 진흥원)
업체 기준 ISP/호스팅 연동 진행중
- ISP,호스팅 이름은 autoComplete 형태라 못 불러오는 문제 있음
15개 파일 변경됨
182 ■■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/repository/HostingFieldRepository.java 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/repository/IspFieldRepository.java 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java 44 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java 28 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java 28 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/util/ConvertUtil.java 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java 23 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/hostingField/hostingFieldModify.controller.js 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/ispField/ispFieldModify.controller.js 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAdd.controller.js 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/ispField/ispFieldModify.html 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueAdd.html 12 ●●●●● 패치 | 보기 | raw | blame | 히스토리
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);
}
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);
}
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);
}
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);
        }
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);
    }
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);
    }
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:
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());
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;
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;
    }
}
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),
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),
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)
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"
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"