src/main/java/kr/wisestone/owl/constant/MsgConstants.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties | ●●●●● 패치 | 보기 | raw | blame | 히스토리 |
src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -187,6 +187,7 @@ public static final String EXCEL_IMPORT_ISP_NOT_EXIST = "EXCEL_IMPORT_ISP_NOT_EXIST"; // 다음 엑셀 라인에서 입력된 ISP명으로 검색되는 ISP가 없습니다. public static final String EXCEL_IMPORT_HOSTING_NOT_EXIST = "EXCEL_IMPORT_HOSTING_NOT_EXIST"; // 다음 엑셀 라인에서 입력된 호스팅명으로 검색되는 호스팅이 없습니다. public static final String EXCEL_IMPORT_PARENT_SECTOR_NOT_EQUAL = "EXCEL_IMPORT_PARENT_SECTOR_NOT_EQUAL"; // 다음 엑셀 라인에서 입력된 업종(중분류)은 업종(대분류)에 속해있지 않습니다. public static final String EXCEL_IMPORT_PARENT_SECTOR_IS_NULL = "EXCEL_IMPORT_PARENT_SECTOR_IS_NULL"; // 다음 엑셀 라인에서 업종(중분류)만 입력 했습니다. 업종(대분류)도 입력이 필요합니다. public static final String EXCEL_IMPORT_COMPANY_TYPE_NOT_EXIST = "EXCEL_IMPORT_COMPANY_TYPE_NOT_EXIST"; // 다음 엑셀 라인에서 입력된 기업구분명으로 검색되는 기업구분이 없습니다 public static final String EXCEL_IMPORT_PARENT_SECTOR_NOT_EXIST = "EXCEL_IMPORT_PARENT_SECTOR_NOT_EXIST"; // 다음 엑셀 라인에서 입력된 업종명으로 검색되는 업종(대분류)이 없습니다 @@ -242,9 +243,12 @@ public static final String USER_DEPARTMENT_CHANGE = "USER_DEPARTMENT_CHANGE"; // 사용자의 부서가 변경 되었습니다. 다시 로그인 해주세요. 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 COMPANY_NAME_ALREADY_IN_USE = "COMPANY_NAME_ALREADY_IN_USE"; // 해당 업체명은 이미 등록되어 있습니다. public static final String COMPANY_NO_TITLE = "COMPANY_NO_TITLE"; // 업체명이 입력되지 않았습니다. public static final String COMPANY_NOT_EXIST = "COMPANY_NOT_EXIST"; // 업체가 존재하지 않습니다. public static final String COMPANY_NOT_URL = "COMPANY_NOT_URL"; // URL이 입력되지 않았습니다. public static final String COMPANY_USED_URL = "COMPANY_USED_URL"; // URL이 이미 사용되고 있습니다. public static final String COMPANY_NAME_MAX_LENGTH_OUT = "COMPANY_NAME_MAX_LENGTH_OUT"; // 업체명은 최대 300글자까지 입력할 수 있습니다. public static final String HOSTING_NOT_EXIST = "HOSTING_NOT_EXIST"; // 호스팅이 존재하지 않습니다. public static final String HOSTING_CODE_NOT_ENTER = "HOSTING_CODE_NOT_ENTER"; // 호스팅의 코드는 필수 입력 값입니다. src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java
@@ -8,6 +8,10 @@ public interface CompanyFieldRepository extends JpaRepository<CompanyField, Long> { List<CompanyField> findByNameAndIdNot(@Param("name") String name, @Param("id") Long id); List<CompanyField> findByName(@Param("name") String name); CompanyField findByUrl(@Param("url") String url); CompanyField findByUrlAndIdNot(@Param("url") String url, @Param("id") Long id); src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -81,6 +81,8 @@ // 업체 추가 @Override public CompanyField addCompany(CompanyFieldForm companyFieldForm) { // 업체명 중복 체크 this.verifyTitle(companyFieldForm.getName(), null); // url 유효성 체크 this.verifyUrl(companyFieldForm.getUrl(), null); @@ -109,7 +111,7 @@ private void verifyUrl(String url, Long id) { if (StringUtils.isEmpty(url)) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_URL)); this.messageAccessor.getMessage(MsgConstants.COMPANY_NOT_URL)); } CompanyField companyField; @@ -121,7 +123,7 @@ if (companyField != null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_USED_URL)); this.messageAccessor.getMessage(MsgConstants.COMPANY_USED_URL)); } } @@ -218,6 +220,8 @@ // 업체 정로를 수정한다. @Override public void modifyCompany(CompanyFieldForm companyFieldForm) { // 업체명 유효성 체크 this.verifyTitle(companyFieldForm.getName(), companyFieldForm.getId()); // url 유효성 체크 this.verifyUrl(companyFieldForm.getUrl(), companyFieldForm.getId()); @@ -236,10 +240,12 @@ companyFieldForm.setEmail(emails.trim()); } if (companyFieldForm.getChildSectorId() != null) { CompanyFieldCategory companyFieldCategory = this.companyFieldCategoryService.find(companyFieldForm.getChildSectorId()); if (!companyFieldCategory.getParentId().equals(companyFieldForm.getParentSectorId())) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.PARENT_SECTOR_NOT_EQUAL)); } } CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class); @@ -382,7 +388,7 @@ for (int rowIndex = 0; rowIndex < lastRowNum; rowIndex++) { // 0번은 헤더는 무시한다. Row row = sheet.getRow(rowIndex); // 헤더 정보를 추출한다 - 사용자 정의 필드 정보를 가져오기 위해 // 헤더 정보를 추출한다 if (rowIndex == 1) { for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) { Cell cell = row.getCell(cellIndex); @@ -443,7 +449,6 @@ CompanyFieldForm companyFieldForm = new CompanyFieldForm(); companyFieldForm.setRegisterId(this.webAppUtil.getLoginId()); // 제목, 내용, 프로젝트 키, 이슈 타입, 우선순위, 중요도, 담당자, 시작일, 종료일, 사용자 정의 필드 for (int cellIndex = 0; cellIndex < headers.size(); cellIndex++) { Cell cell = row.getCell(cellIndex); switch (cellIndex) { @@ -525,6 +530,7 @@ if (cellNullCheck(cell)) { this.setCompanyFormStatus(cell, statusMaps, companyFieldForm, rowIndex); } break; case 12: // 비고 @@ -568,10 +574,19 @@ private void setCompanyFormChildSector(Cell cell, Map<String, Map<String, Object>> childSectorMaps, CompanyFieldForm companyFieldForm, int rowIndex) { if (cell != null) { Map<String, Object> childSectorMap = childSectorMaps.get(CommonUtil.convertExcelStringToCell(cell)); // 대분류 없이 중분류만 입력했을경우 if (companyFieldForm.getParentSectorId() == null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_PARENT_SECTOR_IS_NULL, rowIndex)); } // 중분류가 대분류에 속해있지 않는 경우 if (!companyFieldForm.getParentSectorId().equals(MapUtil.getLong(childSectorMap, "parentId"))) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_PARENT_SECTOR_NOT_EQUAL, rowIndex)); } companyFieldForm.setChildSectorId(MapUtil.getLong(childSectorMap, "id")); } } @@ -658,7 +673,7 @@ String title = CommonUtil.convertExcelStringToCell(cell); // 업체명 유효성 체크 this.verifyTitle(title); this.verifyTitle(title, null); companyFieldForm.setName(title); } @@ -677,15 +692,31 @@ } // 업체명 유효성 체크 private void verifyTitle(String title) { if (StringUtils.isEmpty(title)) { private void verifyTitle(String title, Long id) { List<CompanyField> companyFields = new ArrayList<>(); // 업체명 중복 체크 if (id != null) { //수정 일 경우 companyFields = this.companyFieldRepository.findByNameAndIdNot(title, id); } else { // 추가 일 경우 companyFields = this.companyFieldRepository.findByName(title); } if (companyFields != null && companyFields.size() > 0) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.ISSUE_NO_TITLE)); this.messageAccessor.getMessage(MsgConstants.COMPANY_NAME_ALREADY_IN_USE)); } // 업체명 빈값 체크 if (StringUtils.isEmpty(title)) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANY_NO_TITLE)); } // 업체명 길이 체크 if (title.length() > 300) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.ISSUE_TITLE_MAX_LENGTH_OUT)); this.messageAccessor.getMessage(MsgConstants.COMPANY_NAME_MAX_LENGTH_OUT)); } } @@ -817,13 +848,13 @@ public CompanyField getCompany(Long id) { if (id == null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_EXIST)); this.messageAccessor.getMessage(MsgConstants.COMPANY_NOT_EXIST)); } CompanyField companyField = this.findOne(id); if (companyField == null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_EXIST)); this.messageAccessor.getMessage(MsgConstants.COMPANY_NOT_EXIST)); } return companyField; } src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
@@ -195,6 +195,7 @@ EXCEL_IMPORT_PARENT_SECTOR_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uC5C5\uC885\uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 \uC5C5\uC885(\uB300\uBD84\uB958)\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0} EXCEL_IMPORT_CHILD_SECTOR_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uC5C5\uC885\uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 \uC5C5\uC885(\uC911\uBD84\uB958)\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0} EXCEL_IMPORT_REGION_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uC9C0\uC5ED\uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 \uC9C0\uC5ED\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0} EXCEL_IMPORT_PARENT_SECTOR_IS_NULL=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC5C5\uC885(\uC911\uBD84\uB958)\uB9CC \uC785\uB825 \uD588\uC2B5\uB2C8\uB2E4. \n \uC5C5\uC885(\uB300\uBD84\uB958)\uB3C4 \uC785\uB825\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0} ISSUE_RESERVATION_VALUE_INVALID=\uC774\uC288 \uBC1C\uC0DD \uC608\uC57D\uC77C\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. ISSUE_RESERVATION_NOT_EXIST=\uC774\uC288 \uBC1C\uC0DD \uC608\uC57D \uC815\uBCF4\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. @@ -222,10 +223,13 @@ DEPARTMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uBD80\uC11C\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. USER_DEPARTMENT_CHANGE = \uC0AC\uC6A9\uC790\uC758 \uB4F1\uAE09\uC774 \uBCC0\uACBD \uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uB85C\uADF8\uC778 \uD574\uC8FC\uC138\uC694. COMPANY_NO_TITLE = \uC5C5\uCCB4\uBA85\uC774 \uC785\uB825\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_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. COMPANY_NOT_EXIST = \uC5C5\uCCB4\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. COMPANY_NOT_URL = URL\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. COMPANY_USED_URL = URL\uC774 \uC774\uBBF8 \uC0AC\uC6A9\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4. COMPANY_NAME_MAX_LENGTH_OUT = \uC5C5\uCCB4\uBA85\uC740 \uCD5C\uB300 300\uAE00\uC790\uAE4C\uC9C0 \uC785\uB825\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. COMPANY_NAME_ALREADY_IN_USE = \uD574\uB2F9 \uC5C5\uCCB4\uBA85\uC740 \uC774\uBBF8 \uB4F1\uB85D\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. HOSTING_NOT_EXIST = \uD638\uC2A4\uD305\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. HOSTING_CODE_NOT_ENTER = \uD638\uC2A4\uD305\uC758 \uCF54\uB4DC\uB294 \uD544\uC218 \uC785\uB825 \uAC12\uC785\uB2C8\uB2E4.