OWL ITS + 탐지시스템(인터넷 진흥원)
** DB 초기화 필요
업체 - url 인덱스 추가 및 url 중복으로 추가 못하도록 수정
8개 파일 변경됨
55 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/constant/MsgConstants.java 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java 22 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/migration/V1_12__Alter_Table.sql 10 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties 4 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/i18n/ko/global.json 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/components/utils/autoComplete.controller.js 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/companyField/companyFieldAdd.html 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -225,6 +225,8 @@
    public static final String COMPANY_REMOVE_NOT_SELECT = "COMPANY_REMOVE_NOT_SELECT";   // 삭제할 업체가 선택되지 않았습니다.
    public static final String COMPANYFIELD_NOT_EXIST = "COMPANYFIELD_NOT_EXIST";   // 업체가 존재하지 않습니다.
    public static final String COMPANYFIELD_NOT_URL = "COMPANYFIELD_NOT_URL";   // URL이 입력되지 않았습니다.
    public static final String COMPANYFIELD_USED_URL = "COMPANYFIELD_USED_URL";   // URL이 이미 사용되고 있습니다.
    public static final String HOSTING_NOT_EXIST = "HOSTING_NOT_EXIST";   // 호스팅이 존재하지 않습니다.
    public static final String HOSTING_REMOVE_NOT_SELECT = "HOSTING_REMOVE_NOT_SELECT";   // 삭제할 호스팅이 선택되지 않았습니다.
src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java
@@ -2,7 +2,10 @@
import kr.wisestone.owl.domain.CompanyField;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
public interface CompanyFieldRepository extends JpaRepository<CompanyField, Long> {
    CompanyField findByUrl(@Param("url") String url);
}
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -1,9 +1,11 @@
package kr.wisestone.owl.service.impl;
import kr.wisestone.owl.domain.CompanyField;
import kr.wisestone.owl.domain.CustomField;
import kr.wisestone.owl.service.UserService;
import kr.wisestone.owl.web.condition.CompanyFieldCondition;
import kr.wisestone.owl.web.form.CompanyFieldForm;
import org.apache.commons.lang3.StringUtils;
import org.springframework.ui.Model;
import com.google.common.collect.Lists;
import kr.wisestone.owl.common.ExcelConditionCheck;
@@ -57,9 +59,26 @@
    // 업체 추가
    @Override
    public CompanyField addCompany(CompanyFieldForm companyFieldForm) {
        //  url 유효성 체크
        this.verifyUrl(companyFieldForm.getUrl());
        CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class);
        companyFieldRepository.saveAndFlush(companyField);
        return companyField;
    }
    //  url 유효성 체크
    private void verifyUrl(String url) {
        if (StringUtils.isEmpty(url)) {
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_URL));
        }
        CompanyField companyField = this.companyFieldRepository.findByUrl(url);
        if (companyField != null) {
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_USED_URL));
        }
    }
    // 업체 목록을 가져온다.
@@ -92,6 +111,9 @@
    // 업체 정로를 수정한다.
    @Override
    public void modifyCompany(CompanyFieldForm companyFieldForm) {
        //  url 유효성 체크
        this.verifyUrl(companyFieldForm.getUrl());
        CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class);
        companyFieldRepository.saveAndFlush(companyField);
    }
src/main/resources/migration/V1_12__Alter_Table.sql
@@ -1,13 +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_type` ADD COLUMN  `complete_issue_status_id` BIGINT(20) 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`);
src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
@@ -206,4 +206,6 @@
DEPARTMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uBD80\uC11C\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
COMPANY_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uC5C5\uCCB4\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
COMPANYFIELD_NOT_EXIST = \uC5C5\uCCB4\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
COMPANYFIELD_NOT_EXIST = \uC5C5\uCCB4\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
COMPANYFIELD_NOT_URL = URL\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
COMPANYFIELD_USED_URL = URL\uC774 \uC774\uBBF8 \uC0AC\uC6A9\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4.
src/main/webapp/i18n/ko/global.json
@@ -816,7 +816,7 @@
        "emptyUser": "선택할 수 있는 사용자가 없습니다.",
        "emptyProject": "선택할 수 있는 프로젝트가 없습니다.",
        "emptyDepartment": "선택할 수 있는 부서가 없습니다.",
        "emptyProjectDepartment": "선택할 수 있는 부서가 없습니다. <br> 프로젝트 설정에서 담당부서를 설정하거나,<br> 부서를 추가 해주세요",
        "emptyProjectDepartment": "선택할 수 있는 부서가 없습니다. <br> 워크플로우에서 담당부서를 설정하거나,<br> 부서를 추가 해주세요",
        "noDepartment": "담당부서가 없습니다.",
        "emptyCompany": "선택할 수 있는 업체가 없습니다.",
        "emptyIssue": "선택할 수 있는 이슈가 없습니다.",
src/main/webapp/scripts/components/utils/autoComplete.controller.js
@@ -315,7 +315,15 @@
                function getIssueDepartmentList(query, excludeList, page, callBack) {
                    var conditions = {
                        //issueTypeId : $scope.vm.form.issueTypeId,
                        issueTypeId : $rootScope.currentDetailIssueId,
                        issueTypeId : (function () {
                            var issueTypeId = "";
                            if ($rootScope.currentDetailIssueId != null) {
                                issueTypeId = $rootScope.currentDetailIssueId;
                            } else {
                                issueTypeId = $scope.vm.form.issueTypeId;
                            }
                            return issueTypeId;
                        })(),
                        departmentName : query,
                        userId : $rootScope.user.id,
                        projectId : (function () {
src/main/webapp/views/companyField/companyFieldAdd.html
@@ -166,6 +166,7 @@
                <div class="form-group">
                    <label for="companyFieldAddForm10" class="issue-label">
                        <span translate="companyField.url">url</span>
                        <code class="highlighter-rouge">*</code>
                    </label>
                    <input id="companyFieldAddForm10"
                           name="url"
@@ -176,6 +177,7 @@
                           ng-model="vm.form.url"
                           ng-maxlength="200"
                           maxlength="200"
                           required
                    >
                </div>
            </div>