From 1f171ab4ee9841e6d4f2ee41fca7af52339ced5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Mon, 27 Oct 2025 13:08:31 +0900 Subject: [PATCH] =?UTF-8?q?=ED=96=89=EC=9C=84=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EC=A1=B0=EC=9D=B8=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C=EC=84=A0:?= =?UTF-8?q?=20=EC=A1=B0=EC=B9=98=EC=B2=98=EB=A6=AC=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=20=EB=B0=8F=20=EB=AF=B8=EC=A1=B0=EC=B9=98=20?= =?UTF-8?q?=ED=95=84=ED=84=B0=EB=A7=81=20=EC=B5=9C=EC=A0=81=ED=99=94,=20IN?= =?UTF-8?q?NER=20JOIN=20=EC=88=98=EC=A0=95=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/levy/levy/LevyMapper_maria.xml | 17 +++++++++++++ .../mybatis/mapper/noti/NotiMapper_maria.xml | 25 ++++++++++++++++--- 2 files changed, 38 insertions(+), 4 deletions(-) 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 cb51881..a8a56e4 100644 --- a/src/main/resources/mybatis/mapper/levy/levy/LevyMapper_maria.xml +++ b/src/main/resources/mybatis/mapper/levy/levy/LevyMapper_maria.xml @@ -189,11 +189,28 @@ impltTrprSe.CD_NM as IMPLT_TRPR_SE_CD_NM, sggCd.CD_NM as SGG_CD_NM FROM TB_IMPLT_TRPR_INFO iti + /* 중요로직: 메인 데이터 삭제 시 이행대상자가 조회되지 않도록 INNER JOIN 적용 */ + INNER JOIN TB_IMPLT_INFO ii ON iti.IMPLT_INFO_ID = ii.IMPLT_INFO_ID AND ii.DEL_YN = 'N' + INNER JOIN tb_crdn c ON ii.CRDN_YR = c.CRDN_YR AND ii.CRDN_NO = c.CRDN_NO AND c.DEL_YN = 'N' + INNER JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N' + /* 중요로직: 조치처리상태 확인을 위한 행위정보 조인 - 미조치 건만 조회 */ + INNER JOIN ( + SELECT + CRDN_YR, + CRDN_NO, + COUNT(1) as ACT_ALL_CNT, + SUM(CASE WHEN ACTN_PRCS_STTS_CD = '3' THEN 1 ELSE 0 END) as ACT_COMPLT_CNT + FROM tb_act_info + WHERE DEL_YN = 'N' + GROUP BY CRDN_YR, CRDN_NO + ) act_cnt ON act_cnt.CRDN_YR = c.CRDN_YR AND act_cnt.CRDN_NO = c.CRDN_NO -- 코드성 데이터 조인 LEFT JOIN tb_cd_detail impltTrprSe ON impltTrprSe.CD_GROUP_ID = 'IMPLT_TRPR_SE_CD' AND impltTrprSe.CD_ID = iti.IMPLT_TRPR_SE_CD LEFT JOIN tb_cd_detail sggCd ON sggCd.CD_GROUP_ID = 'SGG_CD' AND sggCd.CD_ID = iti.SGG_CD WHERE iti.IMPLT_INFO_ID = #{schImpltInfoId} AND iti.DEL_YN = 'N' + /* 중요로직: 조치처리상태가 미조치(1)인 건만 조회 - 행위정보가 있고 조치완료되지 않은 경우 */ + AND (IFNULL(act_cnt.ACT_ALL_CNT, 0) != 0 AND IFNULL(act_cnt.ACT_ALL_CNT, 0) != IFNULL(act_cnt.ACT_COMPLT_CNT, 0)) group by iti.SGG_CD, iti.IMPLT_INFO_ID, iti.IMPLT_TRPR_FLNM, iti.IMPLT_TRPR_ADDR, iti.IMPLT_TRPR_DADDR, iti.IMPLT_TRPR_ZIP, iti.IMPLT_TRPR_SE_CD ORDER BY iti.IMPLT_TRPR_SE_CD, iti.IMPLT_TRPR_FLNM diff --git a/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml b/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml index 7f1e74c..4c9621d 100644 --- a/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml +++ b/src/main/resources/mybatis/mapper/noti/NotiMapper_maria.xml @@ -56,9 +56,9 @@ AND oi2.DEL_YN = 'N') AS OWNR_FLNMS /* 소유자명 */ FROM TB_IMPLT_INFO ii INNER JOIN tb_crdn c ON ii.CRDN_YR = c.CRDN_YR AND ii.CRDN_NO = c.CRDN_NO AND c.DEL_YN = 'N' - LEFT JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N' + INNER JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N' /* 중요로직: 조치처리상태 확인을 위한 행위정보 조인 - 미조치 건만 조회 */ - LEFT JOIN ( + INNER JOIN ( SELECT CRDN_YR, CRDN_NO, @@ -126,9 +126,9 @@ SELECT Count(*) FROM TB_IMPLT_INFO ii INNER JOIN tb_crdn c ON ii.CRDN_YR = c.CRDN_YR AND ii.CRDN_NO = c.CRDN_NO AND c.DEL_YN = 'N' - LEFT JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N' + INNER JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N' /* 중요로직: 조치처리상태 확인을 위한 행위정보 조인 - 미조치 건만 조회 */ - LEFT JOIN ( + INNER JOIN ( SELECT CRDN_YR, CRDN_NO, @@ -189,11 +189,28 @@ impltTrprSe.CD_NM as IMPLT_TRPR_SE_CD_NM, sggCd.CD_NM as SGG_CD_NM FROM TB_IMPLT_TRPR_INFO iti + /* 중요로직: 메인 데이터 삭제 시 이행대상자가 조회되지 않도록 INNER JOIN 적용 */ + INNER JOIN TB_IMPLT_INFO ii ON iti.IMPLT_INFO_ID = ii.IMPLT_INFO_ID AND ii.DEL_YN = 'N' + INNER JOIN tb_crdn c ON ii.CRDN_YR = c.CRDN_YR AND ii.CRDN_NO = c.CRDN_NO AND c.DEL_YN = 'N' + INNER JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N' + /* 중요로직: 조치처리상태 확인을 위한 행위정보 조인 - 미조치 건만 조회 */ + INNER JOIN ( + SELECT + CRDN_YR, + CRDN_NO, + COUNT(1) as ACT_ALL_CNT, + SUM(CASE WHEN ACTN_PRCS_STTS_CD = '3' THEN 1 ELSE 0 END) as ACT_COMPLT_CNT + FROM tb_act_info + WHERE DEL_YN = 'N' + GROUP BY CRDN_YR, CRDN_NO + ) act_cnt ON act_cnt.CRDN_YR = c.CRDN_YR AND act_cnt.CRDN_NO = c.CRDN_NO -- 코드성 데이터 조인 LEFT JOIN tb_cd_detail impltTrprSe ON impltTrprSe.CD_GROUP_ID = 'IMPLT_TRPR_SE_CD' AND impltTrprSe.CD_ID = iti.IMPLT_TRPR_SE_CD LEFT JOIN tb_cd_detail sggCd ON sggCd.CD_GROUP_ID = 'SGG_CD' AND sggCd.CD_ID = iti.SGG_CD WHERE iti.IMPLT_INFO_ID = #{schImpltInfoId} AND iti.DEL_YN = 'N' + /* 중요로직: 조치처리상태가 미조치(1)인 건만 조회 - 행위정보가 있고 조치완료되지 않은 경우 */ + AND (IFNULL(act_cnt.ACT_ALL_CNT, 0) != 0 AND IFNULL(act_cnt.ACT_ALL_CNT, 0) != IFNULL(act_cnt.ACT_COMPLT_CNT, 0)) group by iti.SGG_CD, iti.IMPLT_INFO_ID, iti.IMPLT_TRPR_FLNM, iti.IMPLT_TRPR_ADDR, iti.IMPLT_TRPR_DADDR, iti.IMPLT_TRPR_ZIP, iti.IMPLT_TRPR_SE_CD ORDER BY iti.IMPLT_TRPR_SE_CD, iti.IMPLT_TRPR_FLNM