feat: 지반정보 입력 시스템에서 신규 프로젝트 생성 시 특정 항목을 입력 안 하면 입력하라고 안내하도록 수정

main
thkim 2025-01-02 18:02:19 +09:00
parent a06baeea96
commit 3677ea6a9a
7 changed files with 85 additions and 4 deletions

View File

@ -1,3 +1,9 @@
#src\main\resources\egovframework\egovProps\globals.properties #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_info.jsp
src\main\webapp\WEB-INF\views\web\input\meta_info1.jsp 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

View File

@ -59,6 +59,7 @@ public class ProjectListController {
params.put("PROJECT_NAME", projectName); params.put("PROJECT_NAME", projectName);
// 사업명(프로젝트 명) 중복 검사를 수행한다. // 사업명(프로젝트 명) 중복 검사를 수행한다.
ArrayList<HashMap<String, Object>> arrProjectCodeAndProjectName = masterService.getProjectCodeAndProjectNameByProjectName(params); ArrayList<HashMap<String, Object>> arrProjectCodeAndProjectName = masterService.getProjectCodeAndProjectNameByProjectName(params);
ArrayList<HashMap<String, Object>> arrProjectCodeAndProjectNameByProjectNameFromTempMetaInfo= masterService.getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(params);
if( 0 < arrProjectCodeAndProjectName.size() ) { if( 0 < arrProjectCodeAndProjectName.size() ) {
@ -67,12 +68,22 @@ public class ProjectListController {
} else { } else {
jsonObject.put("result", "false"); jsonObject.put("result", "false");
jsonObject.put("resultCode", "The name already exists."); 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 { } else {
jsonObject.put("result", "true"); jsonObject.put("result", "true");
jsonObject.put("message", ""); jsonObject.put("message", "");
} }
} }
response.setContentType("application/json; charset=UTF-8"); // 응답 헤더 설정 response.setContentType("application/json; charset=UTF-8"); // 응답 헤더 설정

View File

@ -52,4 +52,6 @@ public interface ProjectListMapper {
public ArrayList getExpertOpinion(HashMap<String, Object> params); public ArrayList getExpertOpinion(HashMap<String, Object> params);
public ArrayList<HashMap<String, Object>> getProjectCodeAndProjectNameByProjectName(HashMap<String, Object> params); public ArrayList<HashMap<String, Object>> getProjectCodeAndProjectNameByProjectName(HashMap<String, Object> params);
public ArrayList<HashMap<String, Object>> getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(HashMap<String, Object> params);
} }

View File

@ -50,4 +50,5 @@ public interface ProjectListService {
public ArrayList getExpertOpinion(HashMap<String, Object> params); public ArrayList getExpertOpinion(HashMap<String, Object> params);
public ArrayList<HashMap<String, Object>> getProjectCodeAndProjectNameByProjectName(HashMap<String, Object> params); public ArrayList<HashMap<String, Object>> getProjectCodeAndProjectNameByProjectName(HashMap<String, Object> params);
public ArrayList<HashMap<String, Object>> getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(HashMap<String, Object> params);
} }

View File

@ -215,4 +215,11 @@ public class ProjectListServiceImpl implements ProjectListService {
return projectListMapper.getProjectCodeAndProjectNameByProjectName(params); return projectListMapper.getProjectCodeAndProjectNameByProjectName(params);
} }
@Override
public ArrayList<HashMap<String, Object>> getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(HashMap<String, Object> params) {
return projectListMapper.getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo(params);
}
} }

View File

@ -1334,4 +1334,16 @@ INSERT INTO TEMP_META_INFO (
tpi.USE_YN != 'N' AND REPLACE(tpi.PROJECT_NAME, ' ', '') = REPLACE(#{PROJECT_NAME}, ' ', '') tpi.USE_YN != 'N' AND REPLACE(tpi.PROJECT_NAME, ' ', '') = REPLACE(#{PROJECT_NAME}, ' ', '')
]]> ]]>
</select> </select>
<select id="getProjectCodeAndProjectNameByProjectNameFromTempMetaInfo" parameterType="map" resultType="java.util.HashMap">
<![CDATA[
SELECT
tmi.PROJECT_CODE,
tmi.PROJECT_NAME
FROM
TEMP_META_INFO tmi
WHERE
REPLACE(tmi.PROJECT_NAME, ' ', '') = REPLACE(#{PROJECT_NAME}, ' ', '')
]]>
</select>
</mapper> </mapper>

View File

@ -185,7 +185,7 @@ function shakeAndHighlight(targetEle, message) {
targetEle.classList.remove("shake-animation"); targetEle.classList.remove("shake-animation");
//targetEle.focus(); //targetEle.focus();
showSnackbar(); showSnackbar();
}, 300); }, 700);
} }
function showSnackbar() { function showSnackbar() {
@ -199,6 +199,38 @@ function showSnackbar() {
setTimeout(function(){ x.className = x.className.replace("show", ""); }, 4000); 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() { window.onload = function() {
@ -218,6 +250,16 @@ window.onload = function() {
//fn_onkeyNumber("TEL","phone"); //fn_onkeyNumber("TEL","phone");
//fn_onkeyNumber("PHONE","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"); var telInput = document.getElementById("TEL");
telInput.addEventListener('focusout', function(event) { telInput.addEventListener('focusout', function(event) {
@ -292,7 +334,7 @@ function hasNonNumericCharacters(str) {
function removeNonNumeric(str) { function removeNonNumeric(str) {
let inputValue = String(str); let inputValue = String(str);
return inputValue.replace(/[^0-9]/g, '');; return inputValue.replace(/[^0-9]/g, '');
} }
function fn_excel_input(){ function fn_excel_input(){