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