diff --git a/src/main/java/kccf/lcltt/service/impl/LclttServiceImpl.java b/src/main/java/kccf/lcltt/service/impl/LclttServiceImpl.java index 6f55817..4b46c3b 100644 --- a/src/main/java/kccf/lcltt/service/impl/LclttServiceImpl.java +++ b/src/main/java/kccf/lcltt/service/impl/LclttServiceImpl.java @@ -30,18 +30,10 @@ public class LclttServiceImpl implements LclttService{ @Override public int insertLcltt(LclttVO vo) { - String[] adresArray = vo.getAdres1().split("\\s"); - - CmmDetailCodeVO cmmDetailCodeVO = new CmmDetailCodeVO(); - cmmDetailCodeVO.setAditAtrbInfoValue1(vo.getAreaCode()); - List codeList = lclttDAO.selectAreaSubCodeListAjax(cmmDetailCodeVO); - - for(int i = 0; i < codeList.size(); i++) { - if(codeList.get(i).getDetailCodeNm().equals(adresArray[1])) { - vo.setAreaSubCode(codeList.get(i).getDetailCode()); - } + if(vo.getAreaSubCode() == null || vo.getAreaSubCode().trim().isEmpty()) { + setAreaSubCodeByAdres(vo); } - + return lclttDAO.insertLcltt(vo); } @@ -52,20 +44,46 @@ public class LclttServiceImpl implements LclttService{ @Override public int updateLcltt(LclttVO vo) { - - String[] adresArray = vo.getAdres1().split("\\s"); - + if(vo.getAreaSubCode() == null || vo.getAreaSubCode().trim().isEmpty()) { + setAreaSubCodeByAdres(vo); + } + + return lclttDAO.updateLcltt(vo); + } + + /** + * 등록/수정 화면에서 구.군(areaSubCode)이 명시적으로 전달되지 않은 경우에 한해 + * 주소1(adres1)의 두 번째 단어(구.군명 추정)를 AREA_SUB_CODE 목록과 매칭하여 + * vo에 areaSubCode를 세팅하는 하위 호환용 폴백 로직이다. + * 예외 없이 매칭 실패 시 조용히 건너뛴다. + */ + private void setAreaSubCodeByAdres(LclttVO vo) { + if(vo.getAdres1() == null || vo.getAdres1().trim().isEmpty()) { + return; + } + + String[] adresArray = vo.getAdres1().trim().split("\\s+"); + + if(adresArray.length < 2) { + return; + } + + String adresGuGun = adresArray[1]; + CmmDetailCodeVO cmmDetailCodeVO = new CmmDetailCodeVO(); cmmDetailCodeVO.setAditAtrbInfoValue1(vo.getAreaCode()); List codeList = lclttDAO.selectAreaSubCodeListAjax(cmmDetailCodeVO); - + + if(codeList == null) { + return; + } + for(int i = 0; i < codeList.size(); i++) { - if(codeList.get(i).getDetailCodeNm().equals(adresArray[1])) { + if(adresGuGun.equals(codeList.get(i).getDetailCodeNm())) { vo.setAreaSubCode(codeList.get(i).getDetailCode()); + break; } } - - return lclttDAO.updateLcltt(vo); } @Override diff --git a/src/main/resources/egovframework/mapper/kccf/lcltt/LclttDAO.xml b/src/main/resources/egovframework/mapper/kccf/lcltt/LclttDAO.xml index 486281f..a3497cb 100644 --- a/src/main/resources/egovframework/mapper/kccf/lcltt/LclttDAO.xml +++ b/src/main/resources/egovframework/mapper/kccf/lcltt/LclttDAO.xml @@ -101,6 +101,7 @@ A.LCLTT_ID , A.LCLTT_NM , A.AREA_CODE , + A.AREA_SUB_CODE , A.ADRES1 , A.ADRES2 , A.ADRES1 || ' ' || A.ADRES2 AS ADRES , diff --git a/src/main/webapp/WEB-INF/jsp/mng/lcltt/lclttRegist.jsp b/src/main/webapp/WEB-INF/jsp/mng/lcltt/lclttRegist.jsp index ab3ff35..21d099b 100644 --- a/src/main/webapp/WEB-INF/jsp/mng/lcltt/lclttRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/mng/lcltt/lclttRegist.jsp @@ -47,6 +47,15 @@ + + + + +
+ + +
+ @@ -199,21 +208,53 @@