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 2d8a417..b4a9bb3 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 @@ -114,7 +114,13 @@ public class LevyNotiImpltInfoVO extends PagingVO { /** 행위유형명 (GROUP_CONCAT) */ private String actTypeCdNms; - + + /** 구조유형명 (GROUP_CONCAT) */ + private String strctIdxCdNms; + + /** 위반 면적 */ + private String vltnAreas; + /** 소유자ID (GROUP_CONCAT) */ private String ownrIds; 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 45bf2df..9b59814 100644 --- a/src/main/java/go/kr/project/noti/model/NotiImpltInfoVO.java +++ b/src/main/java/go/kr/project/noti/model/NotiImpltInfoVO.java @@ -124,6 +124,12 @@ public class NotiImpltInfoVO extends PagingVO { /** 행위유형명 (GROUP_CONCAT) */ private String actTypeCdNms; + + /** 구조유형명 (GROUP_CONCAT) */ + private String strctIdxCdNms; + + /** 위반 면적 */ + private String vltnAreas; /** 소유자ID (GROUP_CONCAT) */ private String ownrIds; 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 83b1248..b2df87c 100644 --- a/src/main/resources/mybatis/mapper/levy/levy/LevyMapper_maria.xml +++ b/src/main/resources/mybatis/mapper/levy/levy/LevyMapper_maria.xml @@ -64,6 +64,8 @@ RGTR_NM, MDFR_NM, ACT_TYPE_CD_NMS, + STRCT_IDX_CD_NMS, + VLTN_AREAS, OWNR_IDS, OWNR_FLNMS FROM ( @@ -99,6 +101,18 @@ FROM tb_act_info ai2 LEFT JOIN tb_act_type act2 ON act2.ACT_TYPE_CD = ai2.ACT_TYPE_CD WHERE ai2.CRDN_YR = c.CRDN_YR AND ai2.CRDN_NO = c.CRDN_NO AND ai2.DEL_YN = 'N') AS ACT_TYPE_CD_NMS, + (SELECT GROUP_CONCAT(DISTINCT strct.STRCT_NM SEPARATOR ', ') + FROM tb_act_info ai + LEFT JOIN tb_strct_idx strct ON strct.STRCT_IDX_CD = ai.STRCT_IDX_CD + WHERE ai.CRDN_YR = c.CRDN_YR + AND ai.CRDN_NO = c.CRDN_NO + AND ai.DEL_YN = 'N') AS STRCT_IDX_CD_NMS, + (SELECT GROUP_CONCAT(DISTINCT CONCAT(tli.vltn_area, '㎡') SEPARATOR ', ') + FROM tb_levy_info tli + WHERE tli.CRDN_YR = c.CRDN_YR + AND tli.CRDN_NO = c.CRDN_NO + AND tli.DEL_YN = 'N' + AND tli.IMPLT_TASK_SE_CD = '5') AS VLTN_AREAS, (SELECT GROUP_CONCAT(DISTINCT o2.OWNR_ID SEPARATOR ', ') FROM tb_ownr_info oi2 LEFT JOIN tb_ownr o2 ON o2.OWNR_ID = oi2.OWNR_ID AND o2.DEL_YN = 'N' diff --git a/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml b/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml index 051af05..ad0042a 100644 --- a/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml +++ b/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml @@ -64,6 +64,8 @@ RGTR_NM, MDFR_NM, ACT_TYPE_CD_NMS, + STRCT_IDX_CD_NMS, + VLTN_AREAS, OWNR_IDS, OWNR_FLNMS FROM ( @@ -99,6 +101,17 @@ FROM tb_act_info ai2 LEFT JOIN tb_act_type act2 ON act2.ACT_TYPE_CD = ai2.ACT_TYPE_CD WHERE ai2.CRDN_YR = c.CRDN_YR AND ai2.CRDN_NO = c.CRDN_NO AND ai2.DEL_YN = 'N') AS ACT_TYPE_CD_NMS, + (SELECT GROUP_CONCAT(DISTINCT strct.STRCT_NM SEPARATOR ', ') + FROM tb_act_info ai + LEFT JOIN tb_strct_idx strct ON strct.STRCT_IDX_CD = ai.STRCT_IDX_CD + WHERE ai.CRDN_YR = c.CRDN_YR + AND ai.CRDN_NO = c.CRDN_NO + AND ai.DEL_YN = 'N') AS STRCT_IDX_CD_NMS, + (SELECT GROUP_CONCAT(DISTINCT CONCAT(ai.ACTN_WHOL_AREA, '㎡') SEPARATOR ', ') + FROM tb_act_info ai + WHERE ai.CRDN_YR = c.CRDN_YR + AND ai.CRDN_NO = c.CRDN_NO + AND ai.DEL_YN = 'N') AS VLTN_AREAS, (SELECT GROUP_CONCAT(DISTINCT o2.OWNR_ID SEPARATOR ', ') FROM tb_ownr_info oi2 LEFT JOIN tb_ownr o2 ON o2.OWNR_ID = oi2.OWNR_ID AND o2.DEL_YN = 'N' 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 69bb3a0..fdc9c3a 100644 --- a/src/main/webapp/WEB-INF/views/levy/levy/list.jsp +++ b/src/main/webapp/WEB-INF/views/levy/levy/list.jsp @@ -69,6 +69,7 @@
  • +
  • @@ -461,6 +462,10 @@ this.openReport("implt"); }, + openImposiReport: function() { + this.openReport("imposition"); + }, + openReport: function(reportType) { // detailGrid에서 선택된 행 var detailInstance = this.detailGrid.instance; @@ -485,24 +490,68 @@ var impltTrprInfoId = detailRow.impltTrprInfoId; var rgtr = masterRow.rgtr; //선택한 등록자 ID + if (impltTaskSeCd != 5) { alert("이행강제금 부과통지서 및 부과내역서는 부과인 경우에만 조회할 수 있습니다."); return; } + var strctCount = masterRow.strctIdxCdNms + ? masterRow.strctIdxCdNms.split(',').length + : 0; + // 리포트 유형에 따라 jspNm 변경 + var jspNm = ''; if (reportType === "levi") { - var jspNm = 'levyReport.jsp' + jspNm = 'levyReport.jsp' } else if (reportType === "implt") { - var jspNm = 'impltReport.jsp' + jspNm = 'impltReport.jsp' + } else if (reportType === "imposition") { + if (strctCount == 1){ + jspNm = 'impositionA.jsp' //유형이 1개면 A타입으로 + } else if (strctCount == 2) { + jspNm = 'impositionB.jsp' + //구조유형 2개 분리 + var parts = masterRow.strctIdxCdNms.split(','); + var strctIdxCdNmsA = parts[0] ? parts[0].trim() : ''; + var strctIdxCdNmsB = parts[1] ? parts[1].trim() : ''; + //면적 2개 분리 + var vltnParts = masterRow.vltnAreas.split(','); + var vltnAreaA = vltnParts[0] ? vltnParts[0].trim() : ''; + var vltnAreaB = vltnParts[1] ? vltnParts[1].trim() : ''; + + // URL에 추가 + var strctParams = '&strctIdxCdNmsA=' + encodeURIComponent(strctIdxCdNmsA) + + '&strctIdxCdNmsB=' + encodeURIComponent(strctIdxCdNmsB) + + '&vltnAreaA=' + encodeURIComponent(vltnAreaA) + + '&vltnAreaB=' + encodeURIComponent(vltnAreaB); + } else if (strctCount >= 3){ + jspNm = 'impositionA.jsp'; + + var parts = masterRow.strctIdxCdNms.split(','); + var strctIdxCdNmsA = parts[0] ? parts[0].trim() : ''; // 첫 번째 유형만 + var remainingCount = strctCount - 1; // '외 n건' + + var strctIdxCdNmsDisplay = strctIdxCdNmsA + ' 외 ' + remainingCount + '건'; + + // vltnAreas 는 첫 번째 것만 사용 + var vltnParts = masterRow.vltnAreas.split(','); + var vltnAreaA = vltnParts[0] ? vltnParts[0].trim() : ''; + + var strctParams = '&strctIdxCdNmsA=' + encodeURIComponent(strctIdxCdNmsDisplay) + + '&vltnAreaA=' + encodeURIComponent(vltnAreaA); + } } + // 기본 strctParams 값 필요 (B타입 아닐 때도 대비) + if (typeof strctParams === 'undefined') strctParams = ''; var url = '<%=request.getContextPath()%>/ubi4/'+jspNm + '?crdnYr=' + encodeURIComponent(crdnYr) + '&crdnNo=' + encodeURIComponent(crdnNo) + '&impltTaskSeCd=' + encodeURIComponent(impltTaskSeCd) + '&impltTrprInfoId=' + encodeURIComponent(impltTrprInfoId) - + '&rgtr=' + encodeURIComponent(rgtr); + + '&rgtr=' + encodeURIComponent(rgtr) + + strctParams; var options = "width=800,height=1000,scrollbars=yes,resizable=yes"; window.open(url, "openReport", options); @@ -704,6 +753,11 @@ self.openImpltReport(); }); + // 부과예고서 리포트 보기 버튼 바인딩 + $("#openImposiBtn").on('click', function() { + self.openImposiReport(); + }); + // 주소 찾기 버튼 클릭 이벤트 $("#btnAddrSearch").on('click', function() { var popUrl = ''; diff --git a/src/main/webapp/WEB-INF/views/noti/list.jsp b/src/main/webapp/WEB-INF/views/noti/list.jsp index b3bfbad..b7176bd 100644 --- a/src/main/webapp/WEB-INF/views/noti/list.jsp +++ b/src/main/webapp/WEB-INF/views/noti/list.jsp @@ -66,6 +66,7 @@
    @@ -349,6 +350,101 @@ }); }, + openCorOrderReport: function() { + this.openReport("corOrder"); + }, + + openReport: function(reportType) { + // detailGrid에서 선택된 행 + var detailInstance = this.detailGrid.instance; + var detailRow = null; + var firstRow = detailInstance.getRow(0); + if (!firstRow) { + alert("이행자 정보가 존재하지 않습니다."); + return; + } + detailRow = firstRow; + + // masterGrid에서 선택된 행 + var masterRow = this.selectedRow; + if (!masterRow) { + alert("이행정보가 선택되지 않았습니다."); + return; + } + + var crdnYr = masterRow.crdnYr; + var crdnNo = masterRow.crdnNo; + var impltTaskSeCd = masterRow.impltTaskSeCd; + var impltTrprInfoId = detailRow.impltTrprInfoId; + var rgtr = masterRow.rgtr; //선택한 등록자 ID + + + if (impltTaskSeCd != 2) { + alert("시정명령인 경우에만 조회할 수 있습니다."); + return; + } + + var strctCount = masterRow.strctIdxCdNms + ? masterRow.strctIdxCdNms.split(',').length + : 0; + + // 리포트 유형에 따라 jspNm 변경 + var jspNm = ''; + if (reportType === "implt") { + jspNm = 'implt.jsp' + } else if (reportType === "implt") { + jspNm = 'impltReport.jsp' + } else if (reportType === "corOrder") { + if (strctCount == 1){ + jspNm = 'corOrderA.jsp' //유형이 1개면 A타입으로 + } else if (strctCount == 2) { + jspNm = 'corOrderB.jsp' + //구조유형 2개 분리 + var parts = masterRow.strctIdxCdNms.split(','); + var strctIdxCdNmsA = parts[0] ? parts[0].trim() : ''; + var strctIdxCdNmsB = parts[1] ? parts[1].trim() : ''; + //면적 2개 분리 + var vltnParts = masterRow.vltnAreas.split(','); + var vltnAreaA = vltnParts[0] ? vltnParts[0].trim() : ''; + var vltnAreaB = vltnParts[1] ? vltnParts[1].trim() : ''; + + // URL에 추가 + var strctParams = '&strctIdxCdNmsA=' + encodeURIComponent(strctIdxCdNmsA) + + '&strctIdxCdNmsB=' + encodeURIComponent(strctIdxCdNmsB) + + '&vltnAreaA=' + encodeURIComponent(vltnAreaA) + + '&vltnAreaB=' + encodeURIComponent(vltnAreaB); + } else if (strctCount >= 3){ + jspNm = 'corOrderA.jsp'; + + var parts = masterRow.strctIdxCdNms.split(','); + var strctIdxCdNmsA = parts[0] ? parts[0].trim() : ''; // 첫 번째 유형만 + var remainingCount = strctCount - 1; // '외 n건' + + var strctIdxCdNmsDisplay = strctIdxCdNmsA + ' 외 ' + remainingCount + '건'; + + // vltnAreas 는 첫 번째 것만 사용 + var vltnParts = masterRow.vltnAreas.split(','); + var vltnAreaA = vltnParts[0] ? vltnParts[0].trim() : ''; + + var strctParams = '&strctIdxCdNmsA=' + encodeURIComponent(strctIdxCdNmsDisplay) + + '&vltnAreaA=' + encodeURIComponent(vltnAreaA); + } + } + + // 기본 strctParams 값 필요 (B타입 아닐 때도 대비) + if (typeof strctParams === 'undefined') strctParams = ''; + var url = '<%=request.getContextPath()%>/ubi4/'+jspNm + + '?crdnYr=' + encodeURIComponent(crdnYr) + + '&crdnNo=' + encodeURIComponent(crdnNo) + + '&impltTaskSeCd=' + encodeURIComponent(impltTaskSeCd) + + '&impltTrprInfoId=' + encodeURIComponent(impltTrprInfoId) + + '&rgtr=' + encodeURIComponent(rgtr) + + strctParams; + + var options = "width=800,height=1000,scrollbars=yes,resizable=yes"; + window.open(url, "openReport", options); + }, + detailGrid : { instance : null, @@ -455,6 +551,11 @@ self.masterGrid.instance.setPerPage(perPage); }); + // 시정명령서 리포트 보기 버튼 바인딩 + $("#openCorOrderBtn").on('click', function() { + self.openCorOrderReport(); + }); + // 주소 찾기 버튼 클릭 이벤트 $("#btnAddrSearch").on('click', function() { var popUrl = ''; diff --git a/src/main/webapp/ubi4/corOrderA.jsp b/src/main/webapp/ubi4/corOrderA.jsp new file mode 100644 index 0000000..129d4b4 --- /dev/null +++ b/src/main/webapp/ubi4/corOrderA.jsp @@ -0,0 +1,137 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%! + String nullToStr(String s1, String s2) { + return ((s1 == null)?s2:s1); + } +%> +<% + String jrf = nullToStr(request.getParameter("jrf"), "corOrderA.jrf"); + String crdnYr = request.getParameter("crdnYr"); // 선택한 단속년도 + String crdnNo = request.getParameter("crdnNo"); // 선택한 단속번호 + String impltTaskSeCd = request.getParameter("impltTaskSeCd"); // 진행단계 코드 + String impltTrprInfoId = request.getParameter("impltTrprInfoId"); // 이행 대상자 정보 ID + String rgtr = request.getParameter("rgtr"); //로그인 id + String arg = "crdnYr#" + crdnYr + "#" + "crdnNo#" + crdnNo + "#" + "impltTaskSeCd#" + impltTaskSeCd + "#" + "impltTrprInfoId#" + impltTrprInfoId + "#" + "rgtr#" + rgtr + "#"; // 유비리포트 파라미터 + String resId = nullToStr(request.getParameter("resId"), "UBIHTML"); +%> + + + + + + +corOrder Report + + + + + + + +
    + + \ No newline at end of file diff --git a/src/main/webapp/ubi4/corOrderB.jsp b/src/main/webapp/ubi4/corOrderB.jsp new file mode 100644 index 0000000..75c6854 --- /dev/null +++ b/src/main/webapp/ubi4/corOrderB.jsp @@ -0,0 +1,144 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%! + String nullToStr(String s1, String s2) { + return ((s1 == null)?s2:s1); + } +%> +<% + String jrf = nullToStr(request.getParameter("jrf"), "corOrderB.jrf"); + String crdnYr = request.getParameter("crdnYr"); // 선택한 단속년도 + String crdnNo = request.getParameter("crdnNo"); // 선택한 단속번호 + String impltTaskSeCd = request.getParameter("impltTaskSeCd"); // 진행단계 코드 + String impltTrprInfoId = request.getParameter("impltTrprInfoId"); // 이행 대상자 정보 ID + String rgtr = request.getParameter("rgtr"); //로그인 id + String strctIdxCdNmsA = request.getParameter("strctIdxCdNmsA"); //구조1 + String strctIdxCdNmsB = request.getParameter("strctIdxCdNmsB"); //구조2 + String vltnAreaA = request.getParameter("vltnAreaA"); //위반면적1 + String vltnAreaB = request.getParameter("vltnAreaB"); //위반면적2 + String arg = "crdnYr#" + crdnYr + "#" + "crdnNo#" + crdnNo + "#" + "impltTaskSeCd#" + impltTaskSeCd + "#" + + "impltTrprInfoId#" + impltTrprInfoId + "#" + "rgtr#" + rgtr + "#" + + "strctIdxCdNmsA#" + strctIdxCdNmsA + "#" + "strctIdxCdNmsB#" + strctIdxCdNmsB + "#" + + "vltnAreaA#" + vltnAreaA + "#" + "vltnAreaB#" + vltnAreaB + "#"; // 유비리포트 파라미터 + String resId = nullToStr(request.getParameter("resId"), "UBIHTML"); +%> + + + + + + +corOrder Report + + + + + + + +
    + + \ No newline at end of file diff --git a/src/main/webapp/ubi4/impositionA.jsp b/src/main/webapp/ubi4/impositionA.jsp new file mode 100644 index 0000000..8b9fcbc --- /dev/null +++ b/src/main/webapp/ubi4/impositionA.jsp @@ -0,0 +1,137 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%! + String nullToStr(String s1, String s2) { + return ((s1 == null)?s2:s1); + } +%> +<% + String jrf = nullToStr(request.getParameter("jrf"), "impositionA.jrf"); + String crdnYr = request.getParameter("crdnYr"); // 선택한 단속년도 + String crdnNo = request.getParameter("crdnNo"); // 선택한 단속번호 + String impltTaskSeCd = request.getParameter("impltTaskSeCd"); // 진행단계 코드 + String impltTrprInfoId = request.getParameter("impltTrprInfoId"); // 이행 대상자 정보 ID + String rgtr = request.getParameter("rgtr"); //로그인 id + String arg = "crdnYr#" + crdnYr + "#" + "crdnNo#" + crdnNo + "#" + "impltTaskSeCd#" + impltTaskSeCd + "#" + "impltTrprInfoId#" + impltTrprInfoId + "#" + "rgtr#" + rgtr + "#"; // 유비리포트 파라미터 + String resId = nullToStr(request.getParameter("resId"), "UBIHTML"); +%> + + + + + + +imposition Report + + + + + + + +
    + + \ No newline at end of file diff --git a/src/main/webapp/ubi4/impositionB.jsp b/src/main/webapp/ubi4/impositionB.jsp new file mode 100644 index 0000000..8d57b1f --- /dev/null +++ b/src/main/webapp/ubi4/impositionB.jsp @@ -0,0 +1,144 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%! + String nullToStr(String s1, String s2) { + return ((s1 == null)?s2:s1); + } +%> +<% + String jrf = nullToStr(request.getParameter("jrf"), "impositionB.jrf"); + String crdnYr = request.getParameter("crdnYr"); // 선택한 단속년도 + String crdnNo = request.getParameter("crdnNo"); // 선택한 단속번호 + String impltTaskSeCd = request.getParameter("impltTaskSeCd"); // 진행단계 코드 + String impltTrprInfoId = request.getParameter("impltTrprInfoId"); // 이행 대상자 정보 ID + String rgtr = request.getParameter("rgtr"); //로그인 id + String strctIdxCdNmsA = request.getParameter("strctIdxCdNmsA"); //구조1 + String strctIdxCdNmsB = request.getParameter("strctIdxCdNmsB"); //구조2 + String vltnAreaA = request.getParameter("vltnAreaA"); //위반면적1 + String vltnAreaB = request.getParameter("vltnAreaB"); //위반면적2 + String arg = "crdnYr#" + crdnYr + "#" + "crdnNo#" + crdnNo + "#" + "impltTaskSeCd#" + impltTaskSeCd + "#" + + "impltTrprInfoId#" + impltTrprInfoId + "#" + "rgtr#" + rgtr + "#" + + "strctIdxCdNmsA#" + strctIdxCdNmsA + "#" + "strctIdxCdNmsB#" + strctIdxCdNmsB + "#" + + "vltnAreaA#" + vltnAreaA + "#" + "vltnAreaB#" + vltnAreaB + "#"; // 유비리포트 파라미터 + String resId = nullToStr(request.getParameter("resId"), "UBIHTML"); +%> + + + + + + +imposition Report + + + + + + + +
    + + \ No newline at end of file diff --git a/src/main/webapp/ubi4/work/corOrderA.jrf b/src/main/webapp/ubi4/work/corOrderA.jrf new file mode 100644 index 0000000..e724c9e Binary files /dev/null and b/src/main/webapp/ubi4/work/corOrderA.jrf differ diff --git a/src/main/webapp/ubi4/work/corOrderB.jrf b/src/main/webapp/ubi4/work/corOrderB.jrf new file mode 100644 index 0000000..0980c12 Binary files /dev/null and b/src/main/webapp/ubi4/work/corOrderB.jrf differ diff --git a/src/main/webapp/ubi4/work/impositionA.jrf b/src/main/webapp/ubi4/work/impositionA.jrf new file mode 100644 index 0000000..87bddd0 Binary files /dev/null and b/src/main/webapp/ubi4/work/impositionA.jrf differ diff --git a/src/main/webapp/ubi4/work/impositionB.jrf b/src/main/webapp/ubi4/work/impositionB.jrf new file mode 100644 index 0000000..a565498 Binary files /dev/null and b/src/main/webapp/ubi4/work/impositionB.jrf differ