|
|
|
|
@ -6,175 +6,199 @@
|
|
|
|
|
|
|
|
|
|
<!-- 이행정보 조회 -->
|
|
|
|
|
<select id="selectImpltInfoList" parameterType="NotiImpltInfoVO" resultType="NotiImpltInfoVO">
|
|
|
|
|
SELECT
|
|
|
|
|
ii.IMPLT_INFO_ID,
|
|
|
|
|
ii.SGG_CD,
|
|
|
|
|
ii.CRDN_YR,
|
|
|
|
|
ii.CRDN_NO,
|
|
|
|
|
ii.IMPLT_TASK_SE_CD,
|
|
|
|
|
ii.IMPLT_BGNG_YMD,
|
|
|
|
|
ii.IMPLT_END_YMD,
|
|
|
|
|
ii.REG_DT,
|
|
|
|
|
ii.RGTR,
|
|
|
|
|
ii.MDFCN_DT,
|
|
|
|
|
ii.MDFR,
|
|
|
|
|
ii.DEL_YN,
|
|
|
|
|
ii.DEL_DT,
|
|
|
|
|
ii.DLTR,
|
|
|
|
|
-- 단속 정보 (조인)
|
|
|
|
|
c.DSCL_YMD,
|
|
|
|
|
c.EXMNR,
|
|
|
|
|
c.RGN_SE_CD,
|
|
|
|
|
rgnSeCd.CD_NM as RGN_SE_CD_NM,
|
|
|
|
|
p.STDG_EMD_CD,
|
|
|
|
|
stdgEmdCd.CD_NM as STDG_EMD_CD_NM,
|
|
|
|
|
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, /* 수정자 명 */
|
|
|
|
|
/* 중요로직: GROUP_CONCAT을 이용하여 단속건별 행위유형, 소유자 정보 집계 */
|
|
|
|
|
(SELECT GROUP_CONCAT(DISTINCT act2.VLTN_BDST SEPARATOR ', ')
|
|
|
|
|
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 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'
|
|
|
|
|
WHERE oi2.CRDN_YR = c.CRDN_YR
|
|
|
|
|
AND oi2.CRDN_NO = c.CRDN_NO
|
|
|
|
|
AND oi2.DEL_YN = 'N') AS OWNR_IDS, /* 소유자ID */
|
|
|
|
|
(SELECT GROUP_CONCAT(DISTINCT o2.FLNM SEPARATOR ', ')
|
|
|
|
|
FROM tb_ownr_info oi2
|
|
|
|
|
LEFT JOIN tb_ownr o2 ON o2.OWNR_ID = oi2.OWNR_ID AND o2.DEL_YN = 'N'
|
|
|
|
|
WHERE oi2.CRDN_YR = c.CRDN_YR
|
|
|
|
|
AND oi2.CRDN_NO = c.CRDN_NO
|
|
|
|
|
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'
|
|
|
|
|
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 (
|
|
|
|
|
/* NotiMapper.selectImpltInfoList : 이행정보 목록 조회 (단속년도/번호별 최대 순번만) */
|
|
|
|
|
SELECT
|
|
|
|
|
IMPLT_INFO_ID,
|
|
|
|
|
SGG_CD,
|
|
|
|
|
CRDN_YR,
|
|
|
|
|
CRDN_NO,
|
|
|
|
|
IMPLT_TASK_SE_CD,
|
|
|
|
|
IMPLT_BGNG_YMD,
|
|
|
|
|
IMPLT_END_YMD,
|
|
|
|
|
REG_DT,
|
|
|
|
|
RGTR,
|
|
|
|
|
MDFCN_DT,
|
|
|
|
|
MDFR,
|
|
|
|
|
DEL_YN,
|
|
|
|
|
DEL_DT,
|
|
|
|
|
DLTR,
|
|
|
|
|
DSCL_YMD,
|
|
|
|
|
EXMNR,
|
|
|
|
|
RGN_SE_CD,
|
|
|
|
|
RGN_SE_CD_NM,
|
|
|
|
|
STDG_EMD_CD,
|
|
|
|
|
STDG_EMD_CD_NM,
|
|
|
|
|
LOTNO_ADDR,
|
|
|
|
|
LOTNO_MNO,
|
|
|
|
|
LOTNO_SNO,
|
|
|
|
|
LOTNO_WHOL_ADDR,
|
|
|
|
|
IMPLT_TASK_SE_CD_NM,
|
|
|
|
|
RGTR_NM,
|
|
|
|
|
MDFR_NM,
|
|
|
|
|
ACT_TYPE_CD_NMS,
|
|
|
|
|
OWNR_IDS,
|
|
|
|
|
OWNR_FLNMS
|
|
|
|
|
FROM (
|
|
|
|
|
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 impltTaskSe ON impltTaskSe.CD_GROUP_ID = 'IMPLT_TASK_SE_CD' AND impltTaskSe.CD_ID = ii.IMPLT_TASK_SE_CD
|
|
|
|
|
LEFT JOIN tb_cd_detail stdgEmdCd ON stdgEmdCd.CD_GROUP_ID = 'STDG_EMD_CD' AND stdgEmdCd.CD_ID = p.STDG_EMD_CD
|
|
|
|
|
LEFT JOIN tb_cd_detail rgnSeCd ON rgnSeCd.CD_GROUP_ID = 'RGN_SE_CD' AND rgnSeCd.CD_ID = c.RGN_SE_CD
|
|
|
|
|
LEFT JOIN tb_user ru ON ii.RGTR = ru.USER_ID
|
|
|
|
|
LEFT JOIN tb_user mu ON ii.MDFR = mu.USER_ID
|
|
|
|
|
WHERE ii.CRDN_YR = #{schCrdnYr}
|
|
|
|
|
AND ii.DEL_YN = 'N'
|
|
|
|
|
AND ii.IMPLT_BGNG_YMD BETWEEN #{schImpltBgngYmd1} AND #{schImpltBgngYmd2}
|
|
|
|
|
/* 중요로직: 조치처리상태가 미조치(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))
|
|
|
|
|
<if test='schImpltTaskSeCd != null and schImpltTaskSeCd != ""'>
|
|
|
|
|
AND ii.IMPLT_TASK_SE_CD = #{schImpltTaskSeCd}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schImpltTaskSeCd == null or schImpltTaskSeCd == ""'>
|
|
|
|
|
AND ii.IMPLT_TASK_SE_CD IN ('1', '2', '3')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schStdgEmdCd != null and schStdgEmdCd != ""'>
|
|
|
|
|
AND p.STDG_EMD_CD = #{schStdgEmdCd}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schZip != null and schZip != ""'>
|
|
|
|
|
AND p.ZIP LIKE CONCAT('%', #{schZip}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoAddr != null and schLotnoAddr != ""'>
|
|
|
|
|
AND p.LOTNO_ADDR LIKE CONCAT('%', #{schLotnoAddr}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schDtlAddr != null and schDtlAddr != ""'>
|
|
|
|
|
AND p.DTL_ADDR LIKE CONCAT('%', #{schDtlAddr}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoMno != null and schLotnoMno != ""'>
|
|
|
|
|
AND p.LOTNO_MNO = #{schLotnoMno}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoSno != null and schLotnoSno != ""'>
|
|
|
|
|
AND p.LOTNO_SNO = #{schLotnoSno}
|
|
|
|
|
</if>
|
|
|
|
|
ii.IMPLT_INFO_ID,
|
|
|
|
|
ii.SGG_CD,
|
|
|
|
|
ii.CRDN_YR,
|
|
|
|
|
ii.CRDN_NO,
|
|
|
|
|
ii.IMPLT_TASK_SE_CD,
|
|
|
|
|
ii.IMPLT_BGNG_YMD,
|
|
|
|
|
ii.IMPLT_END_YMD,
|
|
|
|
|
ii.REG_DT,
|
|
|
|
|
ii.RGTR,
|
|
|
|
|
ii.MDFCN_DT,
|
|
|
|
|
ii.MDFR,
|
|
|
|
|
ii.DEL_YN,
|
|
|
|
|
ii.DEL_DT,
|
|
|
|
|
ii.DLTR,
|
|
|
|
|
c.DSCL_YMD,
|
|
|
|
|
c.EXMNR,
|
|
|
|
|
c.RGN_SE_CD,
|
|
|
|
|
rgnSeCd.CD_NM as RGN_SE_CD_NM,
|
|
|
|
|
p.STDG_EMD_CD,
|
|
|
|
|
stdgEmdCd.CD_NM as STDG_EMD_CD_NM,
|
|
|
|
|
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,
|
|
|
|
|
(SELECT GROUP_CONCAT(DISTINCT act2.VLTN_BDST SEPARATOR ', ')
|
|
|
|
|
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 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'
|
|
|
|
|
WHERE oi2.CRDN_YR = c.CRDN_YR AND oi2.CRDN_NO = c.CRDN_NO AND oi2.DEL_YN = 'N') AS OWNR_IDS,
|
|
|
|
|
(SELECT GROUP_CONCAT(DISTINCT o2.FLNM SEPARATOR ', ')
|
|
|
|
|
FROM tb_ownr_info oi2
|
|
|
|
|
LEFT JOIN tb_ownr o2 ON o2.OWNR_ID = oi2.OWNR_ID AND o2.DEL_YN = 'N'
|
|
|
|
|
WHERE oi2.CRDN_YR = c.CRDN_YR AND oi2.CRDN_NO = c.CRDN_NO AND oi2.DEL_YN = 'N') AS OWNR_FLNMS,
|
|
|
|
|
/* 중요로직: 단속년도/번호별로 순번이 큰 순서대로 번호 부여 (1이 최대 순번) */
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY ii.CRDN_YR, ii.CRDN_NO ORDER BY IFNULL(impltTaskSe.SORT_ORDR, 0) DESC) as rn
|
|
|
|
|
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'
|
|
|
|
|
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 impltTaskSe ON impltTaskSe.CD_GROUP_ID = 'IMPLT_TASK_SE_CD' AND impltTaskSe.CD_ID = ii.IMPLT_TASK_SE_CD
|
|
|
|
|
LEFT JOIN tb_cd_detail stdgEmdCd ON stdgEmdCd.CD_GROUP_ID = 'STDG_EMD_CD' AND stdgEmdCd.CD_ID = p.STDG_EMD_CD
|
|
|
|
|
LEFT JOIN tb_cd_detail rgnSeCd ON rgnSeCd.CD_GROUP_ID = 'RGN_SE_CD' AND rgnSeCd.CD_ID = c.RGN_SE_CD
|
|
|
|
|
LEFT JOIN tb_user ru ON ii.RGTR = ru.USER_ID
|
|
|
|
|
LEFT JOIN tb_user mu ON ii.MDFR = mu.USER_ID
|
|
|
|
|
WHERE ii.CRDN_YR = #{schCrdnYr}
|
|
|
|
|
AND ii.DEL_YN = 'N'
|
|
|
|
|
AND ii.IMPLT_BGNG_YMD BETWEEN #{schImpltBgngYmd1} AND #{schImpltBgngYmd2}
|
|
|
|
|
AND (IFNULL(act_cnt.ACT_ALL_CNT, 0) != 0 AND IFNULL(act_cnt.ACT_ALL_CNT, 0) != IFNULL(act_cnt.ACT_COMPLT_CNT, 0))
|
|
|
|
|
<if test='schImpltTaskSeCd != null and schImpltTaskSeCd != ""'>
|
|
|
|
|
AND ii.IMPLT_TASK_SE_CD = #{schImpltTaskSeCd}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schImpltTaskSeCd == null or schImpltTaskSeCd == ""'>
|
|
|
|
|
AND ii.IMPLT_TASK_SE_CD IN ('1', '2', '3')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schStdgEmdCd != null and schStdgEmdCd != ""'>
|
|
|
|
|
AND p.STDG_EMD_CD = #{schStdgEmdCd}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schZip != null and schZip != ""'>
|
|
|
|
|
AND p.ZIP LIKE CONCAT('%', #{schZip}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoAddr != null and schLotnoAddr != ""'>
|
|
|
|
|
AND p.LOTNO_ADDR LIKE CONCAT('%', #{schLotnoAddr}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schDtlAddr != null and schDtlAddr != ""'>
|
|
|
|
|
AND p.DTL_ADDR LIKE CONCAT('%', #{schDtlAddr}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoMno != null and schLotnoMno != ""'>
|
|
|
|
|
AND p.LOTNO_MNO = #{schLotnoMno}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoSno != null and schLotnoSno != ""'>
|
|
|
|
|
AND p.LOTNO_SNO = #{schLotnoSno}
|
|
|
|
|
</if>
|
|
|
|
|
) ranked
|
|
|
|
|
WHERE rn = 1
|
|
|
|
|
<choose>
|
|
|
|
|
<!-- system 메뉴 패턴 준수: sortAscending(Boolean) 사용 -->
|
|
|
|
|
<!-- 중요로직: 화면 sortColumn은 컬럼 name 기준(crdnNo)으로 전달되므로 화이트리스트 매핑 적용 -->
|
|
|
|
|
<when test="sortColumn != null and (sortColumn == 'crdnNo' or sortColumn == 'CRDN_NO') and sortAscending != null and sortAscending == true">
|
|
|
|
|
ORDER BY ii.CRDN_NO ASC
|
|
|
|
|
ORDER BY CRDN_NO ASC
|
|
|
|
|
</when>
|
|
|
|
|
<when test="sortColumn != null and (sortColumn == 'crdnNo' or sortColumn == 'CRDN_NO') and sortAscending != null and sortAscending == false">
|
|
|
|
|
ORDER BY ii.CRDN_NO DESC
|
|
|
|
|
ORDER BY CRDN_NO DESC
|
|
|
|
|
</when>
|
|
|
|
|
<otherwise>
|
|
|
|
|
ORDER BY ii.CRDN_NO DESC
|
|
|
|
|
ORDER BY CRDN_NO DESC
|
|
|
|
|
</otherwise>
|
|
|
|
|
</choose>
|
|
|
|
|
<if test='pagingYn != null and pagingYn == "Y"'>
|
|
|
|
|
LIMIT #{startIndex}, #{perPage}
|
|
|
|
|
</if>
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 이행정보 조회 -->
|
|
|
|
|
|
|
|
|
|
<!-- 이행정보 조회 총 개수 -->
|
|
|
|
|
<select id="selectImpltInfoListTotalCount" parameterType="NotiImpltInfoVO" resultType="int">
|
|
|
|
|
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'
|
|
|
|
|
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
|
|
|
|
|
WHERE ii.CRDN_YR = #{schCrdnYr}
|
|
|
|
|
AND ii.DEL_YN = 'N'
|
|
|
|
|
AND ii.IMPLT_BGNG_YMD BETWEEN #{schImpltBgngYmd1} AND #{schImpltBgngYmd2}
|
|
|
|
|
/* 중요로직: 조치처리상태가 미조치(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))
|
|
|
|
|
<if test='schImpltTaskSeCd != null and schImpltTaskSeCd != ""'>
|
|
|
|
|
AND ii.IMPLT_TASK_SE_CD = #{schImpltTaskSeCd}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schImpltTaskSeCd == null or schImpltTaskSeCd == ""'>
|
|
|
|
|
AND ii.IMPLT_TASK_SE_CD IN ('1', '2', '3')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schStdgEmdCd != null and schStdgEmdCd != ""'>
|
|
|
|
|
AND p.STDG_EMD_CD = #{schStdgEmdCd}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schZip != null and schZip != ""'>
|
|
|
|
|
AND p.ZIP LIKE CONCAT('%', #{schZip}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoAddr != null and schLotnoAddr != ""'>
|
|
|
|
|
AND p.LOTNO_ADDR LIKE CONCAT('%', #{schLotnoAddr}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schDtlAddr != null and schDtlAddr != ""'>
|
|
|
|
|
AND p.DTL_ADDR LIKE CONCAT('%', #{schDtlAddr}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoMno != null and schLotnoMno != ""'>
|
|
|
|
|
AND p.LOTNO_MNO = #{schLotnoMno}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoSno != null and schLotnoSno != ""'>
|
|
|
|
|
AND p.LOTNO_SNO = #{schLotnoSno}
|
|
|
|
|
</if>
|
|
|
|
|
/* NotiMapper.selectImpltInfoListTotalCount : 이행정보 목록 총 개수 조회 (단속년도/번호별 최대 순번만) */
|
|
|
|
|
SELECT COUNT(*)
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT ii.IMPLT_INFO_ID,
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY ii.CRDN_YR, ii.CRDN_NO ORDER BY IFNULL(impltTaskSe.SORT_ORDR, 0) DESC) as rn
|
|
|
|
|
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'
|
|
|
|
|
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 impltTaskSe ON impltTaskSe.CD_GROUP_ID = 'IMPLT_TASK_SE_CD' AND impltTaskSe.CD_ID = ii.IMPLT_TASK_SE_CD
|
|
|
|
|
WHERE ii.CRDN_YR = #{schCrdnYr}
|
|
|
|
|
AND ii.DEL_YN = 'N'
|
|
|
|
|
AND ii.IMPLT_BGNG_YMD BETWEEN #{schImpltBgngYmd1} AND #{schImpltBgngYmd2}
|
|
|
|
|
AND (IFNULL(act_cnt.ACT_ALL_CNT, 0) != 0 AND IFNULL(act_cnt.ACT_ALL_CNT, 0) != IFNULL(act_cnt.ACT_COMPLT_CNT, 0))
|
|
|
|
|
<if test='schImpltTaskSeCd != null and schImpltTaskSeCd != ""'>
|
|
|
|
|
AND ii.IMPLT_TASK_SE_CD = #{schImpltTaskSeCd}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schImpltTaskSeCd == null or schImpltTaskSeCd == ""'>
|
|
|
|
|
AND ii.IMPLT_TASK_SE_CD IN ('1', '2', '3')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schStdgEmdCd != null and schStdgEmdCd != ""'>
|
|
|
|
|
AND p.STDG_EMD_CD = #{schStdgEmdCd}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schZip != null and schZip != ""'>
|
|
|
|
|
AND p.ZIP LIKE CONCAT('%', #{schZip}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoAddr != null and schLotnoAddr != ""'>
|
|
|
|
|
AND p.LOTNO_ADDR LIKE CONCAT('%', #{schLotnoAddr}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schDtlAddr != null and schDtlAddr != ""'>
|
|
|
|
|
AND p.DTL_ADDR LIKE CONCAT('%', #{schDtlAddr}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoMno != null and schLotnoMno != ""'>
|
|
|
|
|
AND p.LOTNO_MNO = #{schLotnoMno}
|
|
|
|
|
</if>
|
|
|
|
|
<if test='schLotnoSno != null and schLotnoSno != ""'>
|
|
|
|
|
AND p.LOTNO_SNO = #{schLotnoSno}
|
|
|
|
|
</if>
|
|
|
|
|
) ranked
|
|
|
|
|
WHERE rn = 1
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ==================== 이행 대상자 정보(TB_IMPLT_TRPR_INFO) 관련 쿼리 ==================== -->
|
|
|
|
|
|
|
|
|
|
<!-- 이행 대상자 정보 목록 조회 -->
|
|
|
|
|
<select id="selectImpltTrprInfoList" parameterType="NotiImpltTrprInfoVO"
|
|
|
|
|
resultType="NotiImpltTrprInfoVO">
|
|
|
|
|
/* NotiMapper.selectImpltTrprInfoList : 이행 대상자 정보 목록 조회 */
|
|
|
|
|
SELECT
|
|
|
|
|
MIN(iti.IMPLT_TRPR_INFO_ID) AS IMPLT_TRPR_INFO_ID,
|
|
|
|
|
iti.SGG_CD,
|
|
|
|
|
@ -185,22 +209,19 @@
|
|
|
|
|
iti.IMPLT_TRPR_ZIP,
|
|
|
|
|
iti.IMPLT_TRPR_SE_CD,
|
|
|
|
|
MIN(iti.OWNR_ACTR_INFO_ID) as OWNR_ACTR_INFO_ID,
|
|
|
|
|
-- 코드성 데이터 조인 (코드명)
|
|
|
|
|
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 tb_act_info act ON act.CRDN_YR = c.CRDN_YR AND act.CRDN_NO = c.CRDN_NO AND act.DEL_YN = 'N' AND act.ACTN_PRCS_STTS_CD != '3'
|
|
|
|
|
-- 코드성 데이터 조인
|
|
|
|
|
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'
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
</mapper>
|
|
|
|
|
</mapper>
|
|
|
|
|
|