diff --git a/src/main/java/go/kr/project/levy/levy/controller/LevyController.java b/src/main/java/go/kr/project/levy/levy/controller/LevyController.java index 0101d3f..35eb30d 100644 --- a/src/main/java/go/kr/project/levy/levy/controller/LevyController.java +++ b/src/main/java/go/kr/project/levy/levy/controller/LevyController.java @@ -63,6 +63,14 @@ public class LevyController { .sortAscending(true) .build(); model.addAttribute("impltTaskSeCdList", commonCodeService.selectCodeDetailList(impltTaskSeCdSearchVO)); + + //법정동 읍면동 코드 조회(법정동 검색용) + CmmnCodeSearchVO stdgEmdCdSearchVO = CmmnCodeSearchVO.builder() + .searchCdGroupId("STDG_EMD_CD") + .sortColumn("SORT_ORDR") + .sortAscending(true) + .build(); + model.addAttribute("stdgEmdCdList", commonCodeService.selectCodeDetailList(stdgEmdCdSearchVO)); return "levy/levy/list"+ TilesConstants.BASE; } diff --git a/src/main/java/go/kr/project/levy/levy/model/LevyNotiImpltInfoVO.java b/src/main/java/go/kr/project/levy/levy/model/LevyNotiImpltInfoVO.java index d7ecc23..c1c0105 100644 --- a/src/main/java/go/kr/project/levy/levy/model/LevyNotiImpltInfoVO.java +++ b/src/main/java/go/kr/project/levy/levy/model/LevyNotiImpltInfoVO.java @@ -115,19 +115,37 @@ public class LevyNotiImpltInfoVO extends PagingVO { private String rgtrNm; private String mdrfNm; - // ==================== 검색 조건 ==================== + // ==================== 검색 조건 ==================== - /** 검색 조건 - 단속 연도 */ - private String schCrdnYr; + /** 검색 조건 - 단속 연도 */ + private String schCrdnYr; - /** 검색 조건 - 진행 단계 코드 */ - private String schImpltTaskSeCd; + /** 검색 조건 - 진행 단계 코드 */ + private String schImpltTaskSeCd; - /** 검색 조건 - 행정처분시작일 */ - private String schImpltBgngYmd1; - private String schImpltBgngYmd2; - // ==================== 이행 대상자 정보, 등록용도 ==================== + /** 검색 조건 - 행정처분시작일 */ + private String schImpltBgngYmd1; + private String schImpltBgngYmd2; - /** 이행 대상자 정보 리스트 */ - private List impltTrprInfoList; + /** 검색 조건 - 법정동 읍면동 코드 */ + private String schStdgEmdCd; + + /** 검색 조건 - 우편번호 */ + private String schZip; + + /** 검색 조건 - 지번 주소 */ + private String schLotnoAddr; + + /** 검색 조건 - 상세 주소 */ + private String schDtlAddr; + + /** 검색 조건 - 지번 본번 */ + private String schLotnoMno; + + /** 검색 조건 - 지번 부번 */ + private String schLotnoSno; + // ==================== 이행 대상자 정보, 등록용도 ==================== + + /** 이행 대상자 정보 리스트 */ + private List impltTrprInfoList; } \ No newline at end of file diff --git a/src/main/java/go/kr/project/noti/controller/NotiController.java b/src/main/java/go/kr/project/noti/controller/NotiController.java index 95c3c74..4004b8a 100644 --- a/src/main/java/go/kr/project/noti/controller/NotiController.java +++ b/src/main/java/go/kr/project/noti/controller/NotiController.java @@ -61,6 +61,14 @@ public class NotiController { .sortAscending(true) .build(); model.addAttribute("impltTaskSeCdList", commonCodeService.selectCodeDetailList(impltTaskSeCdSearchVO)); + + // 법정동 읍면동 코드 조회(법정동 검색용) + CmmnCodeSearchVO stdgEmdCdSearchVO = CmmnCodeSearchVO.builder() + .searchCdGroupId("STDG_EMD_CD") + .sortColumn("SORT_ORDR") + .sortAscending(true) + .build(); + model.addAttribute("stdgEmdCdList", commonCodeService.selectCodeDetailList(stdgEmdCdSearchVO)); return "noti/list"+ TilesConstants.BASE; } diff --git a/src/main/java/go/kr/project/noti/model/NotiImpltInfoVO.java b/src/main/java/go/kr/project/noti/model/NotiImpltInfoVO.java index a4265be..c2dc270 100644 --- a/src/main/java/go/kr/project/noti/model/NotiImpltInfoVO.java +++ b/src/main/java/go/kr/project/noti/model/NotiImpltInfoVO.java @@ -136,6 +136,24 @@ public class NotiImpltInfoVO extends PagingVO { /** 검색 조건 - 행정처분시작일 */ private String schImpltBgngYmd1; private String schImpltBgngYmd2; + + /** 검색 조건 - 법정동 읍면동 코드 */ + private String schStdgEmdCd; + + /** 검색 조건 - 우편번호 */ + private String schZip; + + /** 검색 조건 - 지번 주소 */ + private String schLotnoAddr; + + /** 검색 조건 - 상세 주소 */ + private String schDtlAddr; + + /** 검색 조건 - 지번 본번 */ + private String schLotnoMno; + + /** 검색 조건 - 지번 부번 */ + private String schLotnoSno; // ==================== 이행 대상자 정보, 등록용도 ==================== /** 이행 대상자 정보 리스트 */ diff --git a/src/main/resources/mybatis/mapper/levy/levy/LevyMapper_maria.xml b/src/main/resources/mybatis/mapper/levy/levy/LevyMapper_maria.xml index 8c94cc4..ad0bcd9 100644 --- a/src/main/resources/mybatis/mapper/levy/levy/LevyMapper_maria.xml +++ b/src/main/resources/mybatis/mapper/levy/levy/LevyMapper_maria.xml @@ -31,6 +31,7 @@ p.LOTNO_ADDR, p.LOTNO_MNO, p.LOTNO_SNO, + p.LOTNO_WHOL_ADDR, impltTaskSe.CD_NM as IMPLT_TASK_SE_CD_NM, ru.USER_NM AS RGTR_NM, /* 등록자 명 */ mu.USER_NM AS MDFR_NM /* 수정자 명 */ @@ -52,6 +53,24 @@ AND ii.IMPLT_TASK_SE_CD IN ('4', '5', '6') + + AND p.STDG_EMD_CD = #{schStdgEmdCd} + + + AND p.ZIP LIKE CONCAT('%', #{schZip}, '%') + + + AND p.LOTNO_ADDR LIKE CONCAT('%', #{schLotnoAddr}, '%') + + + AND p.DTL_ADDR LIKE CONCAT('%', #{schDtlAddr}, '%') + + + AND p.LOTNO_MNO = #{schLotnoMno} + + + AND p.LOTNO_SNO = #{schLotnoSno} + ORDER BY CRDN_NO DESC LIMIT #{startIndex}, #{perPage} @@ -73,6 +92,24 @@ AND ii.IMPLT_TASK_SE_CD IN ('4', '5', '6') + + AND p.STDG_EMD_CD = #{schStdgEmdCd} + + + AND p.ZIP LIKE CONCAT('%', #{schZip}, '%') + + + AND p.LOTNO_ADDR LIKE CONCAT('%', #{schLotnoAddr}, '%') + + + AND p.DTL_ADDR LIKE CONCAT('%', #{schDtlAddr}, '%') + + + AND p.LOTNO_MNO = #{schLotnoMno} + + + AND p.LOTNO_SNO = #{schLotnoSno} + diff --git a/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml b/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml index 7dbca41..297057d 100644 --- a/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml +++ b/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml @@ -61,6 +61,24 @@ AND ii.IMPLT_TASK_SE_CD IN ('1', '2', '3') + + AND p.STDG_EMD_CD = #{schStdgEmdCd} + + + AND p.ZIP LIKE CONCAT('%', #{schZip}, '%') + + + AND p.LOTNO_ADDR LIKE CONCAT('%', #{schLotnoAddr}, '%') + + + AND p.DTL_ADDR LIKE CONCAT('%', #{schDtlAddr}, '%') + + + AND p.LOTNO_MNO = #{schLotnoMno} + + + AND p.LOTNO_SNO = #{schLotnoSno} + ORDER BY ii.CRDN_NO DESC, a.ACT_NO ASC LIMIT #{startIndex}, #{perPage} diff --git a/src/main/webapp/WEB-INF/views/levy/levy/list.jsp b/src/main/webapp/WEB-INF/views/levy/levy/list.jsp index 470d85c..18c70e3 100644 --- a/src/main/webapp/WEB-INF/views/levy/levy/list.jsp +++ b/src/main/webapp/WEB-INF/views/levy/levy/list.jsp @@ -43,6 +43,26 @@ style="width: 120px;" maxlength="10" validation-check="required" value="${dateUtil:getCurrentDateTime('yyyy-MM-dd')}" /> +
  • 법정동
  • +
  • + +
  • + +
      +
    • 주소 검색
    • +
    • + + + + + + +
    • @@ -133,11 +153,23 @@ var schImpltTaskSeCd = $.trim(nvl($("#schImpltTaskSeCd").val(), "")); var schImpltBgngYmd1 = $.trim(nvl($("#schImpltBgngYmd1").val(), "")).replace(/-/g, ""); var schImpltBgngYmd2 = $.trim(nvl($("#schImpltBgngYmd2").val(), "")).replace(/-/g, ""); + var schStdgEmdCd = $.trim(nvl($("#schStdgEmdCd").val(), "")); + var schZip = $.trim(nvl($("#schZip").val(), "")); + var schLotnoAddr = $.trim(nvl($("#schLotnoAddr").val(), "")); + var schDtlAddr = $.trim(nvl($("#schDtlAddr").val(), "")); + var schLotnoMno = $.trim(nvl($("#schLotnoMno").val(), "")); + var schLotnoSno = $.trim(nvl($("#schLotnoSno").val(), "")); SEARCH_MASTER_COND.schCrdnYr = schCrdnYr; SEARCH_MASTER_COND.schImpltTaskSeCd = schImpltTaskSeCd; SEARCH_MASTER_COND.schImpltBgngYmd1 = schImpltBgngYmd1; SEARCH_MASTER_COND.schImpltBgngYmd2 = schImpltBgngYmd2; + SEARCH_MASTER_COND.schStdgEmdCd = schStdgEmdCd; + SEARCH_MASTER_COND.schZip = schZip; + SEARCH_MASTER_COND.schLotnoAddr = schLotnoAddr; + SEARCH_MASTER_COND.schDtlAddr = schDtlAddr; + SEARCH_MASTER_COND.schLotnoMno = schLotnoMno; + SEARCH_MASTER_COND.schLotnoSno = schLotnoSno; //console.log(SEARCH_MASTER_COND.schImpltBgngYmd2); }; @@ -234,7 +266,7 @@ header: '행정처분시작일', name: 'impltBgngYmd', align: 'center', - width: 110, + width: 120, formatter: function (e) { return e.value ? moment(e.value).format('YYYY-MM-DD') : ''; } @@ -243,22 +275,23 @@ header: '행정처분종료일', name: 'impltEndYmd', align: 'center', - width: 110, + width: 120, formatter: function (e) { return e.value ? moment(e.value).format('YYYY-MM-DD') : ''; } }, + { header: '위치', name: 'lotnoWholAddr', align: 'left', minWidth: 300 }, { header: '등록일시', name: 'regDt', align: 'center', - width: 130 + width: 140 }, { header: '등록자', name: 'rgtrNm', align: 'center', - width: 100 + width: 120 } ]; }, @@ -557,6 +590,14 @@ $("#schImpltBgngYmd1").val(INITIAL_SEARCH_VALUES.schImpltBgngYmd1); $("#schImpltBgngYmd2").val(INITIAL_SEARCH_VALUES.schImpltBgngYmd2); + // 추가 검색 조건 초기화(법정동/주소) + $("#schStdgEmdCd").val(""); + $("#schZip").val(""); + $("#schLotnoAddr").val(""); + $("#schDtlAddr").val(""); + $("#schLotnoMno").val(""); + $("#schLotnoSno").val(""); + // 마스터 그리드만 1페이지부터 재조회 (상세는 마스터 성공 시 초기화) self.masterGrid.instance.readData(1); }); @@ -583,6 +624,26 @@ $("#openReviBtn").on('click', function() { self.openReviReport(); }); + + // 주소 찾기 버튼 클릭 이벤트 + $("#btnAddrSearch").on('click', function() { + var popUrl = ''; + var params = '?callback=searchAddrCallback'; + + // 중요로직: 법정동이 선택된 경우 동 이름을 검색어로 전달(시군구명 + 읍면동명) + var selectedEmd = $('#schStdgEmdCd').val(); + if (selectedEmd) { + var selectedEmdText = $('#schStdgEmdCd option:selected').text(); + if (selectedEmdText && selectedEmdText !== '전체') { + params += '&keyword=' + encodeURIComponent( '${sessionScope.sessionVO.user.orgCdNm} ' + selectedEmdText + ' '); + } + } else { + params += '&keyword=' + encodeURIComponent( '${sessionScope.sessionVO.user.orgCdNm} '); + } + + popUrl += params; + openPopup(popUrl, 570, 530, '주소 찾기'); + }); }, /** @@ -606,6 +667,21 @@ LevyList.refreshList(); }; + /** + * 주소 검색 콜백 함수 + * - 주소 검색 팝업의 검색결과를 전달 받아 해당 필드에 설정 + * @param {Object} obj - 주소 검색 결과 객체 + */ + window.searchAddrCallback = function(obj) { + // 중요로직: 주소 검색 결과를 각 필드에 설정 + $("#schZip").val(obj.zipNo || ""); + $("#schLotnoAddr").val(obj.jibunAddr || ""); + $("#schLotnoMno").val(obj.lnbrMnnm || ""); + $("#schLotnoSno").val(obj.lnbrSlno || ""); + // 상세주소는 사용자가 직접 입력 + $("#schDtlAddr").focus(); + }; + // DOM 준비 완료 시 초기화 $(document).ready(function() { LevyList.init(); diff --git a/src/main/webapp/WEB-INF/views/noti/list.jsp b/src/main/webapp/WEB-INF/views/noti/list.jsp index 898ac4b..21263b5 100644 --- a/src/main/webapp/WEB-INF/views/noti/list.jsp +++ b/src/main/webapp/WEB-INF/views/noti/list.jsp @@ -42,6 +42,26 @@ style="width: 120px;" maxlength="10" validation-check="required" value="${dateUtil:getCurrentDateTime('yyyy-MM-dd')}" /> +
    • 법정동
    • +
    • + +
    • +
    +
      +
    • 주소 검색
    • +
    • + + + + + + +
    • @@ -119,11 +139,23 @@ var schImpltTaskSeCd = $.trim(nvl($("#schImpltTaskSeCd").val(), "")); var schImpltBgngYmd1 = $.trim(nvl($("#schImpltBgngYmd1").val(), "")).replace(/-/g, ""); var schImpltBgngYmd2 = $.trim(nvl($("#schImpltBgngYmd2").val(), "")).replace(/-/g, ""); + var schStdgEmdCd = $.trim(nvl($("#schStdgEmdCd").val(), "")); + var schZip = $.trim(nvl($("#schZip").val(), "")); + var schLotnoAddr = $.trim(nvl($("#schLotnoAddr").val(), "")); + var schDtlAddr = $.trim(nvl($("#schDtlAddr").val(), "")); + var schLotnoMno = $.trim(nvl($("#schLotnoMno").val(), "")); + var schLotnoSno = $.trim(nvl($("#schLotnoSno").val(), "")); SEARCH_MASTER_COND.schCrdnYr = schCrdnYr; SEARCH_MASTER_COND.schImpltTaskSeCd = schImpltTaskSeCd; SEARCH_MASTER_COND.schImpltBgngYmd1 = schImpltBgngYmd1; SEARCH_MASTER_COND.schImpltBgngYmd2 = schImpltBgngYmd2; + SEARCH_MASTER_COND.schStdgEmdCd = schStdgEmdCd; + SEARCH_MASTER_COND.schZip = schZip; + SEARCH_MASTER_COND.schLotnoAddr = schLotnoAddr; + SEARCH_MASTER_COND.schDtlAddr = schDtlAddr; + SEARCH_MASTER_COND.schLotnoMno = schLotnoMno; + SEARCH_MASTER_COND.schLotnoSno = schLotnoSno; }; var NotiList = { @@ -378,6 +410,14 @@ $("#schImpltBgngYmd1").val(INITIAL_SEARCH_VALUES.schImpltBgngYmd1); $("#schImpltBgngYmd2").val(INITIAL_SEARCH_VALUES.schImpltBgngYmd2); + // 추가 검색 조건 초기화(법정동/주소) + $("#schStdgEmdCd").val(""); + $("#schZip").val(""); + $("#schLotnoAddr").val(""); + $("#schDtlAddr").val(""); + $("#schLotnoMno").val(""); + $("#schLotnoSno").val(""); + self.masterGrid.instance.readData(1); }); @@ -392,6 +432,26 @@ var perPage = parseInt($(this).val(), 10); self.masterGrid.instance.setPerPage(perPage); }); + + // 주소 찾기 버튼 클릭 이벤트 + $("#btnAddrSearch").on('click', function() { + var popUrl = ''; + var params = '?callback=searchAddrCallback'; + + // 중요로직: 법정동이 선택된 경우 동 이름을 검색어로 전달(시군구명 + 읍면동명) + var selectedEmd = $('#schStdgEmdCd').val(); + if (selectedEmd) { + var selectedEmdText = $('#schStdgEmdCd option:selected').text(); + if (selectedEmdText && selectedEmdText !== '전체') { + params += '&keyword=' + encodeURIComponent( '${sessionScope.sessionVO.user.orgCdNm} ' + selectedEmdText + ' '); + } + } else { + params += '&keyword=' + encodeURIComponent( '${sessionScope.sessionVO.user.orgCdNm} '); + } + + popUrl += params; + openPopup(popUrl, 570, 530, '주소 찾기'); + }); }, init: function() { @@ -408,6 +468,21 @@ NotiList.refreshList(); }; + /** + * 주소 검색 콜백 함수 + * - 주소 검색 팝업의 검색결과를 전달 받아 해당 필드에 설정 + * @param {Object} obj - 주소 검색 결과 객체 + */ + window.searchAddrCallback = function(obj) { + // 중요로직: 주소 검색 결과를 각 필드에 설정 + $("#schZip").val(obj.zipNo || ""); + $("#schLotnoAddr").val(obj.jibunAddr || ""); + $("#schLotnoMno").val(obj.lnbrMnnm || ""); + $("#schLotnoSno").val(obj.lnbrSlno || ""); + // 상세주소는 사용자가 직접 입력 + $("#schDtlAddr").focus(); + }; + $(document).ready(function() { NotiList.init(); });