diff --git a/list.txt b/list.txt index b9e6a0f0..7e8d7946 100644 --- a/list.txt +++ b/list.txt @@ -1,3 +1,9 @@ #src\main\resources\egovframework\egovProps\globals.properties src\main\webapp\WEB-INF\views\web\input\meta_info.jsp -src\main\webapp\WEB-INF\views\web\input\meta_info1.jsp \ No newline at end of file +src\main\webapp\WEB-INF\views\web\input\meta_info1.jsp +# 신규 프로젝트 생성 시, 프로젝트 명 중복 여부 개선 +src\main\java\geoinfo\regi\projectList\service\ProjectListService.java +src\main\java\geoinfo\regi\projectList\service\impl\ProjectListServiceImpl.java +src\main\java\geoinfo\regi\projectList\service\ProjectListMapper.java +src\main\resources\egovframework\sqlmap\mapper\regi\projectList.xml +src\main\java\geoinfo\regi\projectList\ProjectListController.java \ No newline at end of file diff --git a/src/main/java/geoinfo/regi/projectList/ProjectListController.java b/src/main/java/geoinfo/regi/projectList/ProjectListController.java index 52fcc94b..bf95a8fc 100644 --- a/src/main/java/geoinfo/regi/projectList/ProjectListController.java +++ b/src/main/java/geoinfo/regi/projectList/ProjectListController.java @@ -59,6 +59,7 @@ public class ProjectListController { params.put("PROJECT_NAME", projectName); // 사업명(프로젝트 명) 중복 검사를 수행한다. ArrayList> arrProjectCodeAndProjectName = masterService.getProjectCodeAndProjectNameByProjectName(params); + ArrayList> arrProjectCodeAndProjectNameByProjectNameFromTempMetaInfo= masterService.getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(params); if( 0 < arrProjectCodeAndProjectName.size() ) { @@ -67,12 +68,22 @@ public class ProjectListController { } else { jsonObject.put("result", "false"); jsonObject.put("resultCode", "The name already exists."); - jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요."); + jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 1"); + } + } else if( 0 < arrProjectCodeAndProjectNameByProjectNameFromTempMetaInfo.size() ) { + + if( projectCode != null && arrProjectCodeAndProjectNameByProjectNameFromTempMetaInfo.size() == 1 && projectCode.equals(arrProjectCodeAndProjectNameByProjectNameFromTempMetaInfo.get(0).get("PROJECT_CODE")) ) { + // 나 자신의 프로젝트가 검색된 거임. + } else { + jsonObject.put("result", "false"); + jsonObject.put("resultCode", "The name already exists."); + jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 2"); } } else { jsonObject.put("result", "true"); jsonObject.put("message", ""); } + } response.setContentType("application/json; charset=UTF-8"); // 응답 헤더 설정 diff --git a/src/main/java/geoinfo/regi/projectList/service/ProjectListMapper.java b/src/main/java/geoinfo/regi/projectList/service/ProjectListMapper.java index e664b82e..088e4d65 100644 --- a/src/main/java/geoinfo/regi/projectList/service/ProjectListMapper.java +++ b/src/main/java/geoinfo/regi/projectList/service/ProjectListMapper.java @@ -52,4 +52,6 @@ public interface ProjectListMapper { public ArrayList getExpertOpinion(HashMap params); public ArrayList> getProjectCodeAndProjectNameByProjectName(HashMap params); + public ArrayList> getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(HashMap params); + } diff --git a/src/main/java/geoinfo/regi/projectList/service/ProjectListService.java b/src/main/java/geoinfo/regi/projectList/service/ProjectListService.java index fa919f1a..7c1093fc 100644 --- a/src/main/java/geoinfo/regi/projectList/service/ProjectListService.java +++ b/src/main/java/geoinfo/regi/projectList/service/ProjectListService.java @@ -50,4 +50,5 @@ public interface ProjectListService { public ArrayList getExpertOpinion(HashMap params); public ArrayList> getProjectCodeAndProjectNameByProjectName(HashMap params); + public ArrayList> getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(HashMap params); } diff --git a/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java b/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java index faf967da..638389ce 100644 --- a/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java +++ b/src/main/java/geoinfo/regi/projectList/service/impl/ProjectListServiceImpl.java @@ -214,5 +214,12 @@ public class ProjectListServiceImpl implements ProjectListService { public ArrayList> getProjectCodeAndProjectNameByProjectName(HashMap params) { return projectListMapper.getProjectCodeAndProjectNameByProjectName(params); } + + @Override + public ArrayList> getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(HashMap params) { + return projectListMapper.getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(params); + } + + } diff --git a/src/main/resources/egovframework/sqlmap/mapper/regi/projectList.xml b/src/main/resources/egovframework/sqlmap/mapper/regi/projectList.xml index 4d5f720d..f6f1ea37 100644 --- a/src/main/resources/egovframework/sqlmap/mapper/regi/projectList.xml +++ b/src/main/resources/egovframework/sqlmap/mapper/regi/projectList.xml @@ -1334,4 +1334,16 @@ INSERT INTO TEMP_META_INFO ( tpi.USE_YN != 'N' AND REPLACE(tpi.PROJECT_NAME, ' ', '') = REPLACE(#{PROJECT_NAME}, ' ', '') ]]> + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/web/input/meta_info1.jsp b/src/main/webapp/WEB-INF/views/web/input/meta_info1.jsp index 43643ed6..f203d4ea 100644 --- a/src/main/webapp/WEB-INF/views/web/input/meta_info1.jsp +++ b/src/main/webapp/WEB-INF/views/web/input/meta_info1.jsp @@ -185,7 +185,7 @@ function shakeAndHighlight(targetEle, message) { targetEle.classList.remove("shake-animation"); //targetEle.focus(); showSnackbar(); - }, 300); + }, 700); } function showSnackbar() { @@ -199,6 +199,38 @@ function showSnackbar() { setTimeout(function(){ x.className = x.className.replace("show", ""); }, 4000); } +/** + * 한글 은/는 return 함수 + */ +function getKoreanParticle(word) { + // 입력받은 문자열의 마지막 글자를 추출합니다. + const lastChar = word.slice(-1); + + // 자음으로 끝나는 경우 '은'을, 모음으로 끝나는 경우 '는'을 반환합니다. + const consonants = 'ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ'; + if (consonants.includes(lastChar)) { + return '은'; + } else { + return '는'; + } +} + + +/** + * 특정 input의 1 또는 -로 되어 있는 것을 제거한 뒤에 그 값이 빈 값이면 필수값이라고 사용자에게 안내한다. + */ +function requirementInputData(id, fieldName) { + var InputCompanyEle = document.getElementById(id); + InputCompanyEle.addEventListener('focusout', function(event) { + + let inputValue = event.target.value; + + if( inputValue.replace(/[1|\-]/g, '').trim() === "" ) { + shakeAndHighlight(event.target, fieldName + getKoreanParticle(fieldName) +' 필수 값입니다.'); + } + + }); +} window.onload = function() { @@ -218,6 +250,16 @@ window.onload = function() { //fn_onkeyNumber("TEL","phone"); //fn_onkeyNumber("PHONE","phone"); + requirementInputData("INPUT_COMPANY", "입력기관"); + requirementInputData("DEPT", "부서명"); + requirementInputData("ADMIN_NAME", "담당자"); + requirementInputData("EMAIL", "Email"); + requirementInputData("SEARCHDATE", "시추날짜(시작날짜)"); + requirementInputData("HOLE_ADMIN_NAME", "시추담당자"); + requirementInputData("HOLE_COMPANY", "시추업체"); + + + // 전화번호 var telInput = document.getElementById("TEL"); telInput.addEventListener('focusout', function(event) { @@ -292,7 +334,7 @@ function hasNonNumericCharacters(str) { function removeNonNumeric(str) { let inputValue = String(str); - return inputValue.replace(/[^0-9]/g, '');; + return inputValue.replace(/[^0-9]/g, ''); } function fn_excel_input(){