<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.fims.sndb.dao.SndngDtlMapper">

<!-- 발송 상세 정보 매퍼
 ========== 변경 이력 ==========
 2023-08-25	JoJH 최초 작성
 ============================ -->

<resultMap id="sndngDtlRow" type="cokr.xit.fims.sndb.SndngDtl"> <!-- 발송 상세 -->
	<result property="sndngDtlId"			column="SNDNG_DTL_ID" />			<!-- 발송 상세 ID -->
	<result property="sndngId"				column="SNDNG_ID" />				<!-- 발송 ID -->
	<result property="svbtcId"				column="SVBTC_ID" />				<!-- 공시송달 ID -->
	<result property="crdnId"				column="CRDN_ID" />					<!-- 단속 ID -->
	<result property="linkTrgtCd"			column="LINK_TRGT_CD" />			<!-- 연계 대상 코드 -->
	<result property="linkMngKey"			column="LINK_MNG_KEY" />			<!-- 연계 관리 키 -->
	<result property="sndngSeCd"			column="SNDNG_SE_CD" />				<!-- 발송 구분 코드 -->
	<result property="sndngYmd"				column="SNDNG_YMD" />				<!-- 발송 일자 -->
	<result property="sndngEndYmd"			column="SNDNG_END_YMD" />			<!-- 발송 종료 일자 -->
	<result property="vhrno"				column="VHRNO" />					<!-- 차량번호 -->
	<result property="crdnDt"				column="CRDN_DT" />					<!-- 단속 일시 -->
	<result property="crdnStdgNm"			column="CRDN_STDG_NM" />			<!-- 단속 법정동 명 -->
	<result property="crdnPlc"				column="CRDN_PLC" />				<!-- 단속 장소 -->
	<result property="fyr"					column="FYR" />						<!-- 회계연도 -->
	<result property="levyNo"				column="LEVY_NO" />					<!-- 부과 번호 -->
	<result property="levyYmd"				column="LEVY_YMD" />				<!-- 부과 일자 -->
	<result property="dudtYmd"				column="DUDT_YMD" />				<!-- 납기 일자 -->
	<result property="dudtAftrYmd"			column="DUDT_AFTR_YMD" />			<!-- 납기 후 일자 -->
	<result property="ffnlgAmt"				column="FFNLG_AMT" />				<!-- 과태료 금액 -->
	<result property="pcptax"				column="PCPTAX" />					<!-- 본세 -->
	<result property="adamt"				column="ADAMT" />					<!-- 가산금 -->
	<result property="lastAmt"				column="LAST_AMT" />				<!-- 최종 금액 -->
	<result property="dudtAftrAmt"			column="DUDT_AFTR_AMT" />			<!-- 납기 후 금액 -->
	<result property="rcpnNm"				column="RCPN_NM" />					<!-- 수령인 명 -->
	<result property="rcpnBrdt"				column="RCPN_BRDT" />				<!-- 수령인 생년월일 -->
	<result property="rcpnAddr"				column="RCPN_ADDR" />				<!-- 수령인 주소 -->
	<result property="rcpnDtlAddr"			column="RCPN_DTL_ADDR" />			<!-- 수령인 상세 주소 -->
	<result property="rcpnZip"				column="RCPN_ZIP" />				<!-- 수령인 우편번호 -->
	<result property="conKey"				column="CON_KEY" />					<!-- 외부연계식별키 -->
	<result property="rgNo"					column="RG_NO" />					<!-- 등기 번호 -->
	<result property="dlvrYmd"				column="DLVR_YMD" />				<!-- 배달 일자 -->
	<result property="dlvrTm"				column="DLVR_TM" />					<!-- 배달 시각 -->
	<result property="undlvrRsnCd"			column="UNDLVR_RSN_CD" />			<!-- 미배달 사유 코드 -->
	<result property="undlvrRsnNm"			column="UNDLVR_RSN_NM" />			<!-- 미배달 사유 명 -->
	<result property="actlRcpnNm"			column="ACTL_RCPN_NM" />			<!-- 실제 수령인 명 -->
	<result property="rcpnRelNm"			column="RCPN_REL_NM" />				<!-- 수령인 관계 명 -->
	<result property="sndngDtlSttsCd"		column="SNDNG_DTL_STTS_CD" />		<!-- 발송 상세 상태 코드 -->
	<result property="bfrSndngDtlSttsCd"	column="BFR_SNDNG_DTL_STTS_CD" />	<!-- 전 발송 상세 상태 코드 -->
	<result property="bfrDlvrYmd"			column="BFR_DLVR_YMD" />			<!-- 전 배달 일자 -->
	<result property="bfrDlvrTm"			column="BFR_DLVR_TM" />				<!-- 전 배달 시각 -->
	<result property="sndngRcvmtCd"			column="SNDNG_RCVMT_CD" />			<!-- 발송 수납 코드 -->
	<result property="addrChgCd"			column="ADDR_CHG_CD" />				<!-- 주소 변경 코드 -->
	<result property="taxNo"				column="TAX_NO" />					<!-- 납세 번호 -->
	<result property="epayno"				column="EPAYNO" />					<!-- 전자납부번호 -->
	<result property="bankNm"				column="BANK_NM" />					<!-- 은행 명 -->
	<result property="vrActno"				column="VR_ACTNO" />				<!-- 가상 계좌번호 -->
	<result property="bankNm2"				column="BANK_NM2" />				<!-- 은행 명2 -->
	<result property="vrActno2"				column="VR_ACTNO2" />				<!-- 가상 계좌번호2 -->
	<result property="bankNm3"				column="BANK_NM3" />				<!-- 은행 명3 -->
	<result property="vrActno3"				column="VR_ACTNO3" />				<!-- 가상 계좌번호3 -->
	<result property="bankNm4"				column="BANK_NM4" />				<!-- 은행 명4 -->
	<result property="vrActno4"				column="VR_ACTNO4" />				<!-- 가상 계좌번호4 -->
	<result property="bankNm5"				column="BANK_NM5" />				<!-- 은행 명5 -->
	<result property="vrActno5"				column="VR_ACTNO5" />				<!-- 가상 계좌번호5 -->
	<result property="bankNm6"				column="BANK_NM6" />				<!-- 은행 명6 -->
	<result property="vrActno6"				column="VR_ACTNO6" />				<!-- 가상 계좌번호6 -->
	<result property="bankNm7"				column="BANK_NM7" />				<!-- 은행 명7 -->
	<result property="vrActno7"				column="VR_ACTNO7" />				<!-- 가상 계좌번호7 -->
	<result property="bankNm8"				column="BANK_NM8" />				<!-- 은행 명8 -->
	<result property="vrActno8"				column="VR_ACTNO8" />				<!-- 가상 계좌번호8 -->
	<result property="bankNm9"				column="BANK_NM9" />				<!-- 은행 명9 -->
	<result property="vrActno9"				column="VR_ACTNO9" />				<!-- 가상 계좌번호9 -->
	<result property="bankNm10"				column="BANK_NM10" />				<!-- 은행 명10 -->
	<result property="vrActno10"			column="VR_ACTNO10" />				<!-- 가상 계좌번호10 -->
	<result property="bankNm11"				column="BANK_NM11" />				<!-- 은행 명11 -->
	<result property="vrActno11"			column="VR_ACTNO11" />				<!-- 가상 계좌번호11 -->
	<result property="bankNm12"				column="BANK_NM12" />				<!-- 은행 명12 -->
	<result property="vrActno12"			column="VR_ACTNO12" />				<!-- 가상 계좌번호12 -->
	<result property="bankNm13"				column="BANK_NM13" />				<!-- 은행 명13 -->
	<result property="vrActno13"			column="VR_ACTNO13" />				<!-- 가상 계좌번호13 -->
	<result property="bankNm14"				column="BANK_NM14" />				<!-- 은행 명14 -->
	<result property="vrActno14"			column="VR_ACTNO14" />				<!-- 가상 계좌번호14 -->
	<result property="bankNm15"				column="BANK_NM15" />				<!-- 은행 명15 -->
	<result property="vrActno15"			column="VR_ACTNO15" />				<!-- 가상 계좌번호15 -->
	<result property="bankNm16"				column="BANK_NM16" />				<!-- 은행 명16 -->
	<result property="vrActno16"			column="VR_ACTNO16" />				<!-- 가상 계좌번호16 -->
	<result property="bankNm17"				column="BANK_NM17" />				<!-- 은행 명17 -->
	<result property="vrActno17"			column="VR_ACTNO17" />				<!-- 가상 계좌번호17 -->
	<result property="bankNm18"				column="BANK_NM18" />				<!-- 은행 명18 -->
	<result property="vrActno18"			column="VR_ACTNO18" />				<!-- 가상 계좌번호18 -->
	<result property="bankNm19"				column="BANK_NM19" />				<!-- 은행 명19 -->
	<result property="vrActno19"			column="VR_ACTNO19" />				<!-- 가상 계좌번호19 -->
	<result property="bankNm20"				column="BANK_NM20" />				<!-- 은행 명20 -->
	<result property="vrActno20"			column="VR_ACTNO20" />				<!-- 가상 계좌번호20 -->
	<result property="delYn"				column="DEL_YN" />					<!-- 삭제 여부 -->
	<result property="createdAt"			column="REG_DT" />					<!-- 등록 일시 -->
	<result property="createdBy"			column="RGTR" />					<!-- 등록자 -->
	<result property="lastModified"			column="MDFCN_DT" />				<!-- 수정 일시 -->
	<result property="modifiedBy"			column="MDFR" />					<!-- 수정자 -->
	<result property="removedAt"			column="DEL_DT" />					<!-- 삭제 일시 -->
	<result property="removedBy"			column="DLTR" />					<!-- 삭제자 -->
	<result property="delRsn"				column="DEL_RSN" />					<!-- 삭제 사유 -->
</resultMap>
	
<select id="selectSndngDetails" parameterType="map" resultMap="sndngDtlRow">/* 발송상세 객체 조회(sndngDtlMapper.selectSndngDetails) */
SELECT *
  FROM TB_SNDNG_DTL
<where>
<if test='sndngDtlIds != null'>AND SNDNG_DTL_ID IN (<foreach collection="sndngDtlIds" item="sndngDtlId" separator=",">#{sndngDtlId}</foreach>)</if>
<if test='crdnIds != null'>AND CRDN_ID IN (<foreach collection="crdnIds" item="crdnId" separator=",">#{crdnId}</foreach>)</if>
<if test='schLevyYmd != null'>	AND LEVY_YMD = #{schLevyYmd}</if>
<if test='schLevyYmdFrom != null and schLevyYmdTo != null'>	AND LEVY_YMD BETWEEN #{schLevyYmdFrom} AND #{schLevyYmdTo}</if>
<if test='schFrstDudtYmd != null'>   AND DUDT_YMD = #{schFrstDudtYmd}</if>
<if test='schFrstDudtYmdFrom != null and schFrstDudtYmdTo != null'>AND DUDT_YMD BETWEEN #{schFrstDudtYmdFrom} AND #{schFrstDudtYmdTo}</if>
<if test='schFyr != null'>   AND FYR = #{schFyr}</if>
<if test="sndngDtlSttsCds != null">   AND SNDNG_DTL_STTS_CD IN (<foreach collection="sndngDtlSttsCds" item="sttsCd" separator=",">#{sttsCd}</foreach>)</if>
   AND DEL_YN = 'N'
</where>
 ORDER BY SNDNG_DTL_ID
</select>

<select id="selectSndngDtlsToSync" parameterType="map" resultMap="sndngDtlRow">/* 서울 세외수입 연계대상 발송상세 객체 조회(sndngDtlMapper.selectSndngDtlsToSync) */
SELECT B.*
  FROM TB_CRDN A
     , TB_SNDNG_DTL B
 WHERE 1 = 1
   AND CRDN_STTS_CD IN ('23', '31', '42', '43', '51', '52', '53', '54', '61') <!-- 사전부과, 의견제출 접수, 사전통보 발송, 사전통보 완료, 부과, 독촉, 압류예고, 압류대상, 부과전송 -->
   AND NXRP_CRDN_LINK_YN = 'Y'
   AND A.CRDN_ID = B.CRDN_ID
   AND A.DEL_YN = 'N'
   AND B.DEL_YN = 'N'
 ORDER BY SNDNG_DTL_ID</select>

<sql id="selectList">SELECT SD.SNDNG_DTL_ID <!-- 발송 상세 ID -->
         , SD.SNDNG_ID          <!-- 발송 ID -->
         , SD.CRDN_ID           <!-- 단속 ID -->
         , SD.SVBTC_ID          <!-- 공시송달 ID -->
         , SD.LINK_TRGT_CD      <!-- 연계 대상 코드 -->
         , SD.LINK_MNG_KEY      <!-- 연계 관리 키 -->
         , SD.SNDNG_SE_CD       <!-- 발송 구분 코드 -->
         , (GET_CODE_NM('FIM047', SD.SNDNG_SE_CD)) AS SNDNG_SE_NM   <!-- 발송 구분 명 -->
         , SD.SNDNG_YMD         <!-- 발송 일자 -->
         , (GET_MASK_DATE(SD.SNDNG_YMD, '-')) AS SNDNG_YMD_MASK <!-- 발송 일자 -->
         , SD.SNDNG_END_YMD     <!-- 발송 종료 일자 -->
         , (GET_MASK_DATE(SD.SNDNG_END_YMD, '-')) AS SNDNG_END_YMD_MASK <!-- 발송 종료 일자 -->
         , SD.RCPN_NM           <!-- 수령인 명 -->
         , SD.RCPN_BRDT         <!-- 수령인 생년월일 -->
         , (GET_BRDT_FORMAT(SD.RCPN_BRDT, '.')) AS RCPN_BRDT_MASK   <!-- 수령인 생년월일 마스크 -->
         , SD.RCPN_ADDR         <!-- 수령인 주소 -->
         , SD.RCPN_DTL_ADDR     <!-- 수령인 상세 주소 -->
         , SD.RCPN_ZIP          <!-- 수령인 우편번호 -->
         , SD.CON_KEY           <!-- 외부연계식별키 -->
         , SD.RG_NO             <!-- 등기 번호 -->
         , SD.DLVR_YMD          <!-- 배달 일자 -->
         , SD.DLVR_TM           <!-- 배달 시각 -->
         , SD.UNDLVR_RSN_CD     <!-- 미배달 사유 코드 -->
         , SD.UNDLVR_RSN_NM     <!-- 미배달 사유 명 -->
         , SD.ACTL_RCPN_NM      <!-- 실제 수령인 명 -->
         , SD.RCPN_REL_NM       <!-- 수령인 관계 명 -->
         , SD.SNDNG_DTL_STTS_CD <!-- 발송 상세 상태 코드 -->
         , (GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD)) AS SNDNG_DTL_STTS_NM   <!-- 발송 상세 상태 명 -->
         , SD.BFR_SNDNG_DTL_STTS_CD <!-- 전 발송 상세 상태 코드 -->
         , (GET_CODE_NM('FIM050', SD.BFR_SNDNG_DTL_STTS_CD)) AS BFR_SNDNG_DTL_STTS_NM   <!-- 전 발송 상세 상태 명 -->
         , SD.BFR_DLVR_YMD      <!-- 전 배달 일자 -->
         , SD.BFR_DLVR_TM       <!-- 전 배달 시각 -->
         , SD.SNDNG_RCVMT_CD    <!-- 발송 수납 코드 -->
         , (GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD)) AS SNDNG_RCVMT_NM <!-- 발송 수납 명 -->
         , SD.ADDR_CHG_CD       <!-- 주소 변경 코드 -->
         , SD.CRDN_DT           <!-- 단속 일시 -->
         , SD.VHRNO             <!-- 차량번호 -->
         , SD.CRDN_STDG_NM      <!-- 단속 법정동 명 -->
         , SD.CRDN_PLC          <!-- 단속 장소 -->
         , SD.FYR               <!-- 회계연도 -->
         , SD.LEVY_NO           <!-- 부과 번호 -->
         , SD.LEVY_YMD          <!-- 부과 일자 -->
         , (GET_MASK_DATE(SD.LEVY_YMD, '.')) AS LEVY_YMD_MASK   <!-- 부과 일자 -->
         , SD.DUDT_YMD          <!-- 납기 일자 -->
         , (GET_MASK_DATE(SD.DUDT_YMD, '.')) AS DUDT_YMD_MASK   <!-- 납기 일자 -->
         , (GET_MASK_DATE(SD.DUDT_YMD, 'K')) AS DUDT_YMD_MASK_KOR   <!-- 납기 일자(한글표기) -->
         , SD.DUDT_AFTR_YMD     <!-- 납기 후 일자 -->
         , (GET_MASK_DATE(SD.DUDT_AFTR_YMD, '.')) AS DUDT_AFTR_YMD_MASK <!-- 납기 후 일자 -->
         , SD.FFNLG_AMT         <!-- 과태료 금액 -->
         , SD.PCPTAX            <!-- 본세 -->
         , SD.ADAMT             <!-- 가산금 -->
         , SD.LAST_AMT          <!-- 최종 금액 -->
         , SD.DUDT_AFTR_AMT     <!-- 납기 후 금액 -->
         , SD.TAX_NO            <!-- 납세 번호 -->
         , SD.EPAYNO            <!-- 전자납부번호 -->
         , (GET_MASK_EPAYNO(SD.EPAYNO)) AS EPAYNO_MASK  <!-- 전자납부번호 -->
         , SD.BANK_NM           <!-- 은행 명 -->
         , SD.VR_ACTNO          <!-- 가상 계좌번호 -->
         , SD.BANK_NM2          <!-- 은행 명 2 -->
         , SD.VR_ACTNO2         <!-- 가상 계좌번호 2 -->
         , SD.BANK_NM3          <!-- 은행 명 3 -->
         , SD.VR_ACTNO3         <!-- 가상 계좌번호 3 -->
         , SD.BANK_NM4          <!-- 은행 명 4 -->
         , SD.VR_ACTNO4         <!-- 가상 계좌번호 4 -->
         , SD.BANK_NM5          <!-- 은행 명 5 -->
         , SD.VR_ACTNO5         <!-- 가상 계좌번호 5 -->
         , SD.BANK_NM6          <!-- 은행 명 6 -->
         , SD.VR_ACTNO6         <!-- 가상 계좌번호 6 -->
         , SD.BANK_NM7          <!-- 은행 명 7 -->
         , SD.VR_ACTNO7         <!-- 가상 계좌번호 7 -->
         , SD.BANK_NM8          <!-- 은행 명 8 -->
         , SD.VR_ACTNO8         <!-- 가상 계좌번호 8 -->
         , SD.BANK_NM9          <!-- 은행 명 9 -->
         , SD.VR_ACTNO9         <!-- 가상 계좌번호 9 -->
         , SD.BANK_NM10         <!-- 은행 명 10 -->
         , SD.VR_ACTNO10        <!-- 가상 계좌번호 10 -->
         , SD.BANK_NM11         <!-- 은행 명 11 -->
         , SD.VR_ACTNO11        <!-- 가상 계좌번호 11 -->
         , SD.BANK_NM12         <!-- 은행 명 12 -->
         , SD.VR_ACTNO12        <!-- 가상 계좌번호 12 -->
         , SD.BANK_NM13         <!-- 은행 명 13 -->
         , SD.VR_ACTNO13        <!-- 가상 계좌번호 13 -->
         , SD.BANK_NM14         <!-- 은행 명 14 -->
         , SD.VR_ACTNO14        <!-- 가상 계좌번호 14 -->
         , SD.BANK_NM15         <!-- 은행 명 15 -->
         , SD.VR_ACTNO15        <!-- 가상 계좌번호 15 -->
         , SD.BANK_NM16         <!-- 은행 명 16 -->
         , SD.VR_ACTNO16        <!-- 가상 계좌번호 16 -->
         , SD.BANK_NM17         <!-- 은행 명 17 -->
         , SD.VR_ACTNO17        <!-- 가상 계좌번호 17 -->
         , SD.BANK_NM18         <!-- 은행 명 18 -->
         , SD.VR_ACTNO18        <!-- 가상 계좌번호 18 -->
         , SD.BANK_NM19         <!-- 은행 명 19 -->
         , SD.VR_ACTNO19        <!-- 가상 계좌번호 19 -->
         , SD.BANK_NM20         <!-- 은행 명 20 -->
         , SD.VR_ACTNO20        <!-- 가상 계좌번호 20 -->
         , SD.REG_DT            <!-- 등록 일시 -->
         , SD.RGTR              <!-- 등록자 -->
         , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.RGTR) AS RGTR_NM     <!-- 등록자 명 -->
         , SD.MDFCN_DT          <!-- 수정 일시 -->
         , SD.MDFR              <!-- 수정자 -->
         , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.MDFR) AS MDFR_NM     <!-- 수정자 명 -->
         , C.CRDN_STTS_CD       <!-- 단속 상태 코드 -->
         , C.CRDN_STTS_CHG_DT   <!-- 단속 상태 변경 일시 -->
         , P.RTPYR_TELNO        <!-- 전화번호 -->
         , P.RTPYR_MBL_TELNO    <!-- 휴대전화번호 -->
         , S.SGG_CD             <!-- 시군구 코드 -->
         , S.DEPT_CD            <!-- 부서 코드 -->
         , S.TASK_SE_CD         <!-- 업무 구분 코드 -->
         , S.SNDNG_REG_SE_CD    <!-- 발송 등록 구분 코드 -->
         , S.LEVY_BGNG_YMD      <!-- 부과 시작 일자 -->
         , S.LEVY_END_YMD       <!-- 부과 종료 일자 -->
         , S.TTL_NM             <!-- 제목 명 -->
         , S.DOC_NO             <!-- 문서 번호 -->
         , S.ETC_CN             <!-- 기타 내용 -->
         , S.TNOCS              <!-- 총건수 -->
         , S.GRAMT              <!-- 총금액 -->
         , S.DIV_KB             <!-- 취급 구분 -->
         , (GET_CODE_NM('EGP002', S.DIV_KB)) AS DIV_KB_NM   <!-- 취급 구분 명 -->
         , S.EPOST_NOTICE_ID    <!-- 전자우편 안내문 ID -->
         , S.SNDNG_STTS_CD      <!-- 발송 상태 코드 -->
         , S.RSND_YN            <!-- 재발송 여부 -->
      FROM TB_SNDNG_DTL     SD
     INNER JOIN TB_CRDN     C  ON (SD.CRDN_ID  = C.CRDN_ID)
     INNER JOIN TB_PAYER    P ON (C.RTPYR_ID  = P.RTPYR_ID)
LEFT OUTER JOIN TB_SNDNG    S  ON (SD.SNDNG_ID = S.SNDNG_ID)</sql>

<select id="selectSndngDtlList" parameterType="map" resultType="dataobject">/* 발송 상세 목록 조회(sndngDtlMapper.selectSndngDtlList) */
	<include refid="utility.paging-prefix" />
	<include refid="selectList" />
       <where>
           <if test="sndngId != null">
          AND SD.SNDNG_ID      =  #{sndngId}   <!-- 발송 Id -->
           </if>
           <if test="sndngDtlIds != null">
          AND SD.SNDNG_DTL_ID  IN (            <!-- 발송 상세 Ids -->
               <foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
            )
           </if>
           <if test="sndngDtlId != null">
          AND SD.SNDNG_DTL_ID  =  #{sndngDtlId} <!-- 발송 상세 Id -->
           </if>
           <if test="crdnId != null">
          AND SD.CRDN_ID       =  #{crdnId}    <!-- 단속 Id -->
           </if>
           <if test="sndngSeCd != null">
          AND SD.SNDNG_SE_CD   =  #{sndngSeCd} <!-- 발송 구분 코드 -->
           </if>
           <if test="schSndngYmd != null">
          AND SD.SNDNG_YMD     =  #{schSndngYmd}   <!-- 발송 일자 -->
           </if>
           <if test="schRcpnNm != null">
          AND SD.RCPN_NM       =  #{schRcpnNm} <!-- 수령인 명 -->
           </if>
           <if test="schRgNo != null">
          AND SD.RG_NO         =  #{schRgNo}   <!-- 등기번호 -->
           </if>
           <if test="schVhrno != null">
          AND SD.VHRNO         =  #{schVhrno}  <!-- 차량번호 -->
           </if>
           <if test="schFyr != null">
          AND SD.FYR           =  #{schFyr}    <!-- 회계연도 -->
           </if>
           <if test="schVhrno != null">
          AND SD.VHRNO         =  #{schVhrno}  <!-- 차량번호 -->
           </if>
           <if test="schLevyNoFrom != null">
          AND SD.LEVY_NO <![CDATA[>=]]> #{schLevyNoFrom}   <!-- 고지 번호 시작 -->
           </if>
           <if test="schSndngYmdTo != null">
          AND SD.LEVY_NO <![CDATA[<=]]> #{schLevyNoTo}     <!-- 고지 번호 종료 -->
           </if>
           <if test="delYn != null">
          AND SD.DEL_YN        =  #{delYn}     <!-- 삭제 여부 -->
           </if>
           <if test="sggCd != null">
          AND S.SGG_CD         =  #{sggCd}     <!-- 시군구 코드 -->
           </if>
           <if test="taskSeCd != null">
          AND S.TASK_SE_CD     =  #{taskSeCd}  <!-- 업무 구분 코드 -->
           </if>
       </where>
	<include refid="utility.orderBy" />
	<include refid="utility.paging-suffix" />
</select>

<select id="selectSndngDtls" parameterType="map" resultType="dataobject">/* 발송 상세 객체 가져오기(sndngDtlMapper.selectSndngDtls) */
	<include refid="selectList" />
       <where>
           <if test="sndngDtlIds != null">
          AND SD.SNDNG_DTL_ID  IN (            <!-- 발송 상세 Ids -->
               <foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
            )
           </if>
           <if test="sndngDtlId != null">
          AND SD.SNDNG_DTL_ID  =  #{sndngDtlId} <!-- 발송 상세 Id -->
           </if>
           <if test="sndngId != null">
          AND SD.SNDNG_ID      =  #{sndngId}   <!-- 발송 ID -->
           </if>
           <if test="crdnId != null">
          AND SD.CRDN_ID       =  #{crdnId}    <!-- 단속 ID -->
           </if>
           <if test="delYn != null">
          AND SD.DEL_YN        =  #{delYn}     <!-- 삭제 여부 -->
           </if>
       </where>
	<include refid="utility.orderBy" />
</select>

<select id="selectSndngTrgtDtlIds" parameterType="map" resultType="dataobject">/* 발송 ID로 발송상세 ID를 가져오기(sndngDtlMapper.selectSndngTrgtDtlIds) */
SELECT SNDNG_DTL_ID         <!-- 발송 상세 ID -->
     , CRDN_ID              <!-- 단속 ID -->
     , LINK_TRGT_CD         <!-- 연계 대상 코드 -->
     , LINK_MNG_KEY         <!-- 연계 관리 키 -->
     , SNDNG_DTL_STTS_CD    <!-- 발송 상세 상태 코드 -->
  FROM TB_SNDNG_DTL
<where>
<if test="sndngId != null">  AND SNDNG_ID =  #{sndngId}</if>
<if test="sndngDtlIds != null">  AND SNDNG_DTL_ID IN (<foreach collection="sndngDtlIds" item="sndngDtlId" separator=",">#{sndngDtlId}</foreach>)</if>
<if test="sndngDtlSttsCd != null">  AND SNDNG_DTL_STTS_CD = #{sndngDtlSttsCd}</if>
<if test='schLevyYmd != null'>AND LEVY_YMD = #{schLevyYmd}</if>
<if test='schFrstDudtYmd != null'>   AND DUDT_YMD = #{schFrstDudtYmd}</if>
<if test='schFyr != null'>   AND FYR = #{schFyr}</if>
   AND DEL_YN = 'N'   <!-- 삭제 여부 -->
 ORDER BY SNDNG_DTL_ID
</where>
</select>

<insert id="insertSndngDtl" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송 상세 등록(sndngDtlMapper.insertSndngDtl) */
    <selectKey resultType="string" keyProperty="sndngDtlId" keyColumn="NEW_ID" order="BEFORE">
        <include refid="numbering.keyBySggAndYear">
            <property name="TABLE_NAME" value="TB_SNDNG_DTL" />
            <property name="TABLE_KEY" value="SNDNG_DTL_ID" />
            <property name="sggCd" value="#{sggCd}" />
            <property name="pad" value="20" />
        </include>
    </selectKey>
    INSERT INTO TB_SNDNG_DTL (
           SNDNG_DTL_ID     <!-- 발송 상세 ID -->
         , SNDNG_ID         <!-- 발송 ID -->
         , CRDN_ID          <!-- 단속 ID -->
         , SVBTC_ID         <!-- 공시송달 ID -->
         , LINK_TRGT_CD     <!-- 연계 대상 코드 -->
         , LINK_MNG_KEY     <!-- 연계 관리 키 -->
         , SNDNG_SE_CD      <!-- 발송 구분 코드 -->
         , SNDNG_YMD        <!-- 발송 일자 -->
         , SNDNG_END_YMD    <!-- 발송 종료 일자 -->
         , RCPN_NM          <!-- 수령인 명 -->
         , RCPN_BRDT        <!-- 수령인 생년월일 -->
         , RCPN_ADDR        <!-- 수령인 주소 -->
         , RCPN_DTL_ADDR    <!-- 수령인 상세 주소 -->
         , RCPN_ZIP         <!-- 수령인 우편번호 -->
         , CON_KEY          <!-- 외부연계식별키 -->
         , RG_NO            <!-- 등기 번호 -->
         , DLVR_YMD         <!-- 배달 일자 -->
         , DLVR_TM          <!-- 배달 시각 -->
         , UNDLVR_RSN_CD    <!-- 미배달 사유 코드 -->
         , UNDLVR_RSN_NM    <!-- 미배달 사유 명 -->
         , ACTL_RCPN_NM     <!-- 실제 수령인 명 -->
         , RCPN_REL_NM      <!-- 수령인 관계 명 -->
         , SNDNG_DTL_STTS_CD <!-- 발송 상세 상태 코드 -->
         , BFR_SNDNG_DTL_STTS_CD <!-- 전 발송 상세 상태 코드 -->
         , BFR_DLVR_YMD     <!-- 전 배달 일자 -->
         , BFR_DLVR_TM      <!-- 전 배달 시각 -->
         , SNDNG_RCVMT_CD   <!-- 발송 수납 코드 -->
         , ADDR_CHG_CD      <!-- 주소 변경 코드 -->
         , CRDN_DT          <!-- 단속 일시 -->
         , VHRNO            <!-- 차량번호 -->
         , CRDN_STDG_NM     <!-- 단속 법정동 명 -->
         , CRDN_PLC         <!-- 단속 장소 -->
         , FYR              <!-- 회계연도 -->
         , LEVY_NO          <!-- 부과 번호 -->
         , LEVY_YMD         <!-- 부과 일자 -->
         , DUDT_YMD         <!-- 납기 일자 -->
         , DUDT_AFTR_YMD    <!-- 납기 후 일자 -->
         , FFNLG_AMT        <!-- 과태료 금액 -->
         , PCPTAX           <!-- 본세 -->
         , ADAMT            <!-- 가산금 -->
         , LAST_AMT         <!-- 최종 금액 -->
         , DUDT_AFTR_AMT    <!-- 납기 후 금액 -->
         , TAX_NO           <!-- 납세 번호 -->
         , EPAYNO           <!-- 전자납부번호 -->
         , BANK_NM          <!-- 은행 명 -->
         , VR_ACTNO         <!-- 가상 계좌번호 -->
         , BANK_NM2         <!-- 은행 명 2 -->
         , VR_ACTNO2        <!-- 가상 계좌번호 2 -->
         , BANK_NM3         <!-- 은행 명 3 -->
         , VR_ACTNO3        <!-- 가상 계좌번호 3 -->
         , BANK_NM4         <!-- 은행 명 4 -->
         , VR_ACTNO4        <!-- 가상 계좌번호 4 -->
         , BANK_NM5         <!-- 은행 명 5 -->
         , VR_ACTNO5        <!-- 가상 계좌번호 5 -->
         , BANK_NM6         <!-- 은행 명 6 -->
         , VR_ACTNO6        <!-- 가상 계좌번호 6 -->
         , BANK_NM7         <!-- 은행 명 7 -->
         , VR_ACTNO7        <!-- 가상 계좌번호 7 -->
         , BANK_NM8         <!-- 은행 명 8 -->
         , VR_ACTNO8        <!-- 가상 계좌번호 8 -->
         , BANK_NM9         <!-- 은행 명 9 -->
         , VR_ACTNO9        <!-- 가상 계좌번호 9 -->
         , BANK_NM10        <!-- 은행 명 10 -->
         , VR_ACTNO10       <!-- 가상 계좌번호 10 -->
         , BANK_NM11        <!-- 은행 명 11 -->
         , VR_ACTNO11       <!-- 가상 계좌번호 11 -->
         , BANK_NM12        <!-- 은행 명 12 -->
         , VR_ACTNO12       <!-- 가상 계좌번호 12 -->
         , BANK_NM13        <!-- 은행 명 13 -->
         , VR_ACTNO13       <!-- 가상 계좌번호 13 -->
         , BANK_NM14        <!-- 은행 명 14 -->
         , VR_ACTNO14       <!-- 가상 계좌번호 14 -->
         , BANK_NM15        <!-- 은행 명 15 -->
         , VR_ACTNO15       <!-- 가상 계좌번호 15 -->
         , BANK_NM16        <!-- 은행 명 16 -->
         , VR_ACTNO16       <!-- 가상 계좌번호 16 -->
         , BANK_NM17        <!-- 은행 명 17 -->
         , VR_ACTNO17       <!-- 가상 계좌번호 17 -->
         , BANK_NM18        <!-- 은행 명 18 -->
         , VR_ACTNO18       <!-- 가상 계좌번호 18 -->
         , BANK_NM19        <!-- 은행 명 19 -->
         , VR_ACTNO19       <!-- 가상 계좌번호 19 -->
         , BANK_NM20        <!-- 은행 명 20 -->
         , VR_ACTNO20       <!-- 가상 계좌번호 20 -->
         , DEL_YN           <!-- 삭제 여부 -->
         , REG_DT           <!-- 등록 일시 -->
         , RGTR             <!-- 등록자 -->
         , MDFCN_DT         <!-- 수정 일시 -->
         , MDFR             <!-- 수정자 -->
    ) VALUES (
           #{sndngDtlId}    <!-- 발송 상세 ID -->
         , #{sndngId}       <!-- 발송 ID -->
         , #{crdnId}        <!-- 단속 ID -->
         , #{svbtcId}       <!-- 공시송달 ID -->
         , #{linkTrgtCd}    <!-- 연계 대상 코드 -->
         , #{linkMngKey}    <!-- 연계 관리 키 -->
         , #{sndngSeCd}     <!-- 발송 구분 코드 -->
         , #{sndngYmd}      <!-- 발송 일자 -->
         , #{sndngEndYmd}   <!-- 발송 종료 일자 -->
         , #{rcpnNm}        <!-- 수령인 명 -->
         , #{rcpnBrdt}      <!-- 수령인 생년월일 -->
         , #{rcpnAddr}      <!-- 수령인 주소 -->
         , #{rcpnDtlAddr}   <!-- 수령인 상세 주소 -->
         , #{rcpnZip}       <!-- 수령인 우편번호 -->
         , #{conKey}        <!-- 외부연계식별키 -->
         , #{rgNo}          <!-- 등기 번호 -->
         , #{dlvrYmd}       <!-- 배달 일자 -->
         , #{dlvrTm}        <!-- 배달 시각 -->
         , #{undlvrRsnCd}   <!-- 미배달 사유 코드 -->
         , #{undlvrRsnNm}   <!-- 미배달 사유 명 -->
         , #{actlRcpnNm}    <!-- 실제 수령인 명 -->
         , #{rcpnRelNm}     <!-- 수령인 관계 명 -->
         , #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
         , #{bfrSndngDtlSttsCd} <!-- 전 발송 상세 상태 코드 -->
         , #{bfrDlvrYmd}    <!-- 전 배달 일자 -->
         , #{bfrDlvrTm}     <!-- 전 배달 시각 -->
         , #{sndngRcvmtCd}  <!-- 발송 수납 코드 -->
         , #{addrChgCd}     <!-- 주소 변경 코드 -->
         , #{crdnDt}        <!-- 단속 일시 -->
         , #{vhrno}         <!-- 차량번호 -->
         , #{crdnStdgNm}    <!-- 단속 법정동 명 -->
         , #{crdnPlc}       <!-- 단속 장소 -->
         , #{fyr}           <!-- 회계연도 -->
         , #{levyNo}        <!-- 부과 번호 -->
         , #{levyYmd}       <!-- 부과 일자 -->
         , #{dudtYmd}       <!-- 납기 일자 -->
         , #{dudtAftrYmd}   <!-- 납기 후 일자 -->
         , #{ffnlgAmt}      <!-- 과태료 금액 -->
         , #{pcptax}        <!-- 본세 -->
         , #{adamt}         <!-- 가산금 -->
         , #{lastAmt}       <!-- 최종 금액 -->
         , #{dudtAftrAmt}   <!-- 납기 후 금액 -->
         , #{taxNo}         <!-- 납세 번호 -->
         , #{epayno}        <!-- 전자납부번호 -->
         , #{bankNm}        <!-- 은행 명 -->
         , #{vrActno}       <!-- 가상 계좌번호 -->
         , #{bankNm2}       <!-- 은행 명 2 -->
         , #{vrActno2}      <!-- 가상 계좌번호 2 -->
         , #{bankNm3}       <!-- 은행 명 3 -->
         , #{vrActno3}      <!-- 가상 계좌번호 3 -->
         , #{bankNm4}       <!-- 은행 명 4 -->
         , #{vrActno4}      <!-- 가상 계좌번호 4 -->
         , #{bankNm5}       <!-- 은행 명 5 -->
         , #{vrActno5}      <!-- 가상 계좌번호 5 -->
         , #{bankNm6}       <!-- 은행 명 6 -->
         , #{vrActno6}      <!-- 가상 계좌번호 6 -->
         , #{bankNm7}       <!-- 은행 명 7 -->
         , #{vrActno7}      <!-- 가상 계좌번호 7 -->
         , #{bankNm8}       <!-- 은행 명 8 -->
         , #{vrActno8}      <!-- 가상 계좌번호 8 -->
         , #{bankNm9}       <!-- 은행 명 9 -->
         , #{vrActno9}      <!-- 가상 계좌번호 9 -->
         , #{bankNm10}      <!-- 은행 명 10 -->
         , #{vrActno10}     <!-- 가상 계좌번호 10 -->
         , #{bankNm11}      <!-- 은행 명 11 -->
         , #{vrActno11}     <!-- 가상 계좌번호 11 -->
         , #{bankNm12}      <!-- 은행 명 12 -->
         , #{vrActno12}     <!-- 가상 계좌번호 12 -->
         , #{bankNm13}      <!-- 은행 명 13 -->
         , #{vrActno13}     <!-- 가상 계좌번호 13 -->
         , #{bankNm14}      <!-- 은행 명 14 -->
         , #{vrActno14}     <!-- 가상 계좌번호 14 -->
         , #{bankNm15}      <!-- 은행 명 15 -->
         , #{vrActno15}     <!-- 가상 계좌번호 15 -->
         , #{bankNm16}      <!-- 은행 명 16 -->
         , #{vrActno16}     <!-- 가상 계좌번호 16 -->
         , #{bankNm17}      <!-- 은행 명 17 -->
         , #{vrActno17}     <!-- 가상 계좌번호 17 -->
         , #{bankNm18}      <!-- 은행 명 18 -->
         , #{vrActno18}     <!-- 가상 계좌번호 18 -->
         , #{bankNm19}      <!-- 은행 명 19 -->
         , #{vrActno19}     <!-- 가상 계좌번호 19 -->
         , #{bankNm20}      <!-- 은행 명 20 -->
         , #{vrActno20}     <!-- 가상 계좌번호 20 -->
         , 'N'              <!-- 삭제 여부 -->
         , <include refid="utility.now" />  <!-- 등록 일시 -->
         , #{createdBy}     <!-- 등록자 -->
         , <include refid="utility.now" />  <!-- 수정 일시 -->
         , #{modifiedBy}    <!-- 수정자 -->
    )
</insert>

<update id="updateSndngDtl" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송 상세 수정(sndngDtlMapper.updateSndngDtl) */
    UPDATE TB_SNDNG_DTL
       SET SVBTC_ID         = #{svbtcId}    <!-- 공시송달 ID -->
         , LINK_TRGT_CD     = #{linkTrgtCd} <!-- 연계 대상 코드 -->
         , LINK_MNG_KEY     = #{linkMngKey} <!-- 연계 관리 키 -->
         , SNDNG_SE_CD      = #{sndngSeCd}  <!-- 발송 구분 코드 -->
         , SNDNG_YMD        = #{sndngYmd}   <!-- 발송 일자 -->
         , SNDNG_END_YMD    = #{sndngEndYmd} <!-- 발송 종료 일자 -->
         , RCPN_NM          = #{rcpnNm}     <!-- 수령인 명 -->
         , RCPN_BRDT        = #{rcpnBrdt}   <!-- 수령인 생년월일 -->
         , RCPN_ADDR        = #{rcpnAddr}   <!-- 수령인 주소 -->
         , RCPN_DTL_ADDR    = #{rcpnDtlAddr} <!-- 수령인 상세 주소 -->
         , RCPN_ZIP         = #{rcpnZip}    <!-- 수령인 우편번호 -->
         , CON_KEY          = #{conKey}     <!-- 외부연계식별키 -->
         , RG_NO            = #{rgNo}       <!-- 등기 번호 -->
         , DLVR_YMD         = #{dlvrYmd}    <!-- 배달 일자 -->
         , DLVR_TM          = #{dlvrTm}     <!-- 배달 시각 -->
         , UNDLVR_RSN_CD    = #{undlvrRsnCd} <!-- 미배달 사유 코드 -->
         , UNDLVR_RSN_NM    = #{undlvrRsnNm} <!-- 미배달 사유 명 -->
         , ACTL_RCPN_NM     = #{actlRcpnNm} <!-- 실제 수령인 명 -->
         , RCPN_REL_NM      = #{rcpnRelNm}  <!-- 수령인 관계 명 -->
         , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
         , BFR_SNDNG_DTL_STTS_CD = #{bfrSndngDtlSttsCd} <!-- 전 발송 상세 상태 코드 -->
         , BFR_DLVR_YMD     = #{bfrDlvrYmd} <!-- 전 배달 일자 -->
         , BFR_DLVR_TM      = #{bfrDlvrTm}  <!-- 전 배달 시각 -->
         , SNDNG_RCVMT_CD   = #{sndngRcvmtCd}  <!-- 발송 수납 코드 -->
         , ADDR_CHG_CD      = #{addrChgCd}  <!-- 주소 변경 코드 -->
         , CRDN_DT          = #{crdnDt}     <!-- 단속 일시 -->
         , VHRNO            = #{vhrno}      <!-- 차량번호 -->
         , CRDN_STDG_NM     = #{crdnStdgNm} <!-- 단속 법정동 명 -->
         , CRDN_PLC         = #{crdnPlc}    <!-- 단속 장소 -->
         , FYR              = #{fyr}        <!-- 회계연도 -->
         , LEVY_NO          = #{levyNo}     <!-- 부과 번호 -->
         , LEVY_YMD         = #{levyYmd}    <!-- 부과 일자 -->
         , DUDT_YMD         = #{dudtYmd}    <!-- 납기 일자 -->
         , DUDT_AFTR_YMD    = #{dudtAftrYmd}<!-- 납기 후 일자 -->
         , FFNLG_AMT        = #{ffnlgAmt}   <!-- 과태료 금액 -->
         , PCPTAX           = #{pcptax}     <!-- 본세 -->
         , ADAMT            = #{adamt}      <!-- 가산금 -->
         , LAST_AMT         = #{lastAmt}    <!-- 최종 금액 -->
         , DUDT_AFTR_AMT    = #{dudtAftrAmt} <!-- 납기 후 금액 -->
         , TAX_NO           = #{taxNo}      <!-- 납세 번호 -->
         , EPAYNO           = #{epayno}     <!-- 전자납부번호 -->
         , BANK_NM          = #{bankNm}     <!-- 은행 명 -->
         , VR_ACTNO         = #{vrActno}    <!-- 가상 계좌번호 -->
         , BANK_NM2         = #{bankNm2}    <!-- 은행 명 2 -->
         , VR_ACTNO2        = #{vrActno2}   <!-- 가상 계좌번호 2 -->
         , BANK_NM3         = #{bankNm3}    <!-- 은행 명 3 -->
         , VR_ACTNO3        = #{vrActno3}   <!-- 가상 계좌번호 3 -->
         , BANK_NM4         = #{bankNm4}    <!-- 은행 명 4 -->
         , VR_ACTNO4        = #{vrActno4}   <!-- 가상 계좌번호 4 -->
         , BANK_NM5         = #{bankNm5}    <!-- 은행 명 5 -->
         , VR_ACTNO5        = #{vrActno5}   <!-- 가상 계좌번호 5 -->
         , BANK_NM6         = #{bankNm6}    <!-- 은행 명 6 -->
         , VR_ACTNO6        = #{vrActno6}   <!-- 가상 계좌번호 6 -->
         , BANK_NM7         = #{bankNm7}    <!-- 은행 명 7 -->
         , VR_ACTNO7        = #{vrActno7}   <!-- 가상 계좌번호 7 -->
         , BANK_NM8         = #{bankNm8}    <!-- 은행 명 8 -->
         , VR_ACTNO8        = #{vrActno8}   <!-- 가상 계좌번호 8 -->
         , BANK_NM9         = #{bankNm9}    <!-- 은행 명 9 -->
         , VR_ACTNO9        = #{vrActno9}   <!-- 가상 계좌번호 9 -->
         , BANK_NM10        = #{bankNm10}   <!-- 은행 명 10 -->
         , VR_ACTNO10       = #{vrActno10}  <!-- 가상 계좌번호 10 -->
         , BANK_NM11        = #{bankNm11}   <!-- 은행 명 11 -->
         , VR_ACTNO11       = #{vrActno11}  <!-- 가상 계좌번호 11 -->
         , BANK_NM12        = #{bankNm12}   <!-- 은행 명 12 -->
         , VR_ACTNO12       = #{vrActno12}  <!-- 가상 계좌번호 12 -->
         , BANK_NM13        = #{bankNm13}   <!-- 은행 명 13 -->
         , VR_ACTNO13       = #{vrActno13}  <!-- 가상 계좌번호 13 -->
         , BANK_NM14        = #{bankNm14}   <!-- 은행 명 14 -->
         , VR_ACTNO14       = #{vrActno14}  <!-- 가상 계좌번호 14 -->
         , BANK_NM15        = #{bankNm15}   <!-- 은행 명 15 -->
         , VR_ACTNO15       = #{vrActno15}  <!-- 가상 계좌번호 15 -->
         , BANK_NM16        = #{bankNm16}   <!-- 은행 명 16 -->
         , VR_ACTNO16       = #{vrActno16}  <!-- 가상 계좌번호 16 -->
         , BANK_NM17        = #{bankNm17}   <!-- 은행 명 17 -->
         , VR_ACTNO17       = #{vrActno17}  <!-- 가상 계좌번호 17 -->
         , BANK_NM18        = #{bankNm18}   <!-- 은행 명 18 -->
         , VR_ACTNO18       = #{vrActno18}  <!-- 가상 계좌번호 18 -->
         , BANK_NM19        = #{bankNm19}   <!-- 은행 명 19 -->
         , VR_ACTNO19       = #{vrActno19}  <!-- 가상 계좌번호 19 -->
         , BANK_NM20        = #{bankNm20}   <!-- 은행 명 20 -->
         , VR_ACTNO20       = #{vrActno20}  <!-- 가상 계좌번호 20 -->
         , MDFCN_DT         = <include refid="utility.now" />  <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
       AND DEL_YN           = 'N'
</update>

<update id="deleteSndngDtl" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송 상세 삭제(sndngDtlMapper.deleteSndngDtl) */
    UPDATE TB_SNDNG_DTL
       SET DEL_YN           = 'Y'
         , DEL_DT           = <include refid="utility.now" />   <!-- 삭제 일시 -->
         , DLTR             = #{modifiedBy} <!-- 삭제자 -->
         , DEL_RSN          = #{delRsn}     <!-- 삭제사유 -->
    <choose>
        <when test="sndngId != null">
     WHERE SNDNG_ID         = #{sndngId} <!-- 발송 ID -->
        </when>
        <when test="sndngDtlIds != null">
     WHERE SNDNG_DTL_ID     IN           <!-- 발송 상세 Ids -->
         ( <foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach> )
        </when>
        <otherwise>
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
        </otherwise>
    </choose>
       AND DEL_YN           = 'N'
</update>

<update id="updateSndngDtlSttsCd" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송 상세 상태 코드 수정(sndngDtlMapper.updateSndngDtlSttsCd) */
    UPDATE TB_SNDNG_DTL
       SET BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD <!-- 이전 발송 상세 상태 코드 -->
         , SNDNG_DTL_STTS_CD = #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
        <if test="sndngDtl.linkTrgtCd != null">
         , LINK_TRGT_CD     = #{linkTrgtCd} <!-- 연계 대상 코드 -->
        </if>
        <if test="sndngDtl.linkMngKey != null">
         , LINK_MNG_KEY     = #{linkMngKey} <!-- 연계 관리 키 -->
        </if>
         , MDFCN_DT         = <include refid="utility.now" />   <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
       AND DEL_YN           = 'N'
</update>

<update id="updateSndngDtlNxrpA03" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송 상세 수정(sndngDtlMapper.updateSndngDtlNxrpA03) */
    UPDATE TB_SNDNG_DTL
       SET BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD <!-- 이전 발송 상세 상태 코드 -->
         , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
         , RCPN_NM          = #{rcpnNm}     <!-- 수령인 명 -->
         , RCPN_BRDT        = #{rcpnBrdt}   <!-- 수령인 생년월일 -->
         , RCPN_ADDR        = #{rcpnAddr}   <!-- 수령인 주소 -->
         , RCPN_DTL_ADDR    = #{rcpnDtlAddr} <!-- 수령인 상세 주소 -->
         , RCPN_ZIP         = #{rcpnZip}    <!-- 수령인 우편번호 -->
         , FYR              = #{fyr}        <!-- 회계연도 -->
         , LEVY_NO          = #{levyNo}     <!-- 부과 번호 -->
         , FFNLG_AMT        = #{ffnlgAmt}   <!-- 과태료 금액 -->
         , PCPTAX           = #{pcptax}     <!-- 본세 -->
         , ADAMT            = #{adamt}      <!-- 가산금 -->
         , LAST_AMT         = #{lastAmt}    <!-- 최종 금액 -->
         , DUDT_AFTR_AMT    = #{dudtAftrAmt} <!-- 납기 후 금액 -->
         , TAX_NO           = #{taxNo}      <!-- 납세 번호 -->
         , EPAYNO           = #{epayno}     <!-- 전자납부번호 -->
         , BANK_NM          = #{bankNm}     <!-- 은행 명 -->
         , VR_ACTNO         = #{vrActno}    <!-- 가상 계좌번호 -->
         , BANK_NM2         = #{bankNm2}    <!-- 은행 명2 -->
         , VR_ACTNO2        = #{vrActno2}   <!-- 가상 계좌번호2 -->
         , BANK_NM3         = #{bankNm3}    <!-- 은행 명3 -->
         , VR_ACTNO3        = #{vrActno3}   <!-- 가상 계좌번호3 -->
         , BANK_NM4         = #{bankNm4}    <!-- 은행 명4 -->
         , VR_ACTNO4        = #{vrActno4}   <!-- 가상 계좌번호4 -->
         , BANK_NM5         = #{bankNm5}    <!-- 은행 명5 -->
         , VR_ACTNO5        = #{vrActno5}   <!-- 가상 계좌번호5 -->
         , BANK_NM6         = #{bankNm6}    <!-- 은행 명6 -->
         , VR_ACTNO6        = #{vrActno6}   <!-- 가상 계좌번호6 -->
         , BANK_NM7         = #{bankNm7}    <!-- 은행 명7 -->
         , VR_ACTNO7        = #{vrActno7}   <!-- 가상 계좌번호7 -->
         , BANK_NM8         = #{bankNm8}    <!-- 은행 명8 -->
         , VR_ACTNO8        = #{vrActno8}   <!-- 가상 계좌번호8 -->
         , BANK_NM9         = #{bankNm9}    <!-- 은행 명9 -->
         , VR_ACTNO9        = #{vrActno9}   <!-- 가상 계좌번호9 -->
         , BANK_NM10        = #{bankNm10}   <!-- 은행 명10 -->
         , VR_ACTNO10       = #{vrActno10}  <!-- 가상 계좌번호10 -->
         , BANK_NM11        = #{bankNm11}   <!-- 은행 명11 -->
         , VR_ACTNO11       = #{vrActno11}  <!-- 가상 계좌번호11 -->
         , BANK_NM12        = #{bankNm12}   <!-- 은행 명12 -->
         , VR_ACTNO12       = #{vrActno12}  <!-- 가상 계좌번호12 -->
         , BANK_NM13        = #{bankNm13}   <!-- 은행 명13 -->
         , VR_ACTNO13       = #{vrActno13}  <!-- 가상 계좌번호13 -->
         , BANK_NM14        = #{bankNm14}   <!-- 은행 명14 -->
         , VR_ACTNO14       = #{vrActno14}  <!-- 가상 계좌번호14 -->
         , BANK_NM15        = #{bankNm15}   <!-- 은행 명15 -->
         , VR_ACTNO15       = #{vrActno15}  <!-- 가상 계좌번호15 -->
         , BANK_NM16        = #{bankNm16}   <!-- 은행 명16 -->
         , VR_ACTNO16       = #{vrActno16}  <!-- 가상 계좌번호16 -->
         , BANK_NM17        = #{bankNm17}   <!-- 은행 명17 -->
         , VR_ACTNO17       = #{vrActno17}  <!-- 가상 계좌번호17 -->
         , BANK_NM18        = #{bankNm18}   <!-- 은행 명18 -->
         , VR_ACTNO18       = #{vrActno18}  <!-- 가상 계좌번호18 -->
         , BANK_NM19        = #{bankNm19}   <!-- 은행 명19 -->
         , VR_ACTNO19       = #{vrActno19}  <!-- 가상 계좌번호19 -->
         , BANK_NM20        = #{bankNm20}   <!-- 은행 명20 -->
         , VR_ACTNO20       = #{vrActno20}  <!-- 가상 계좌번호20 -->
         , MDFCN_DT         = <include refid="utility.now" /> <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
       AND DEL_YN           = 'N'
</update>

<update id="updateSndngDtlRcvmtCd" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송 상세 발송 수납 코드 수정(sndngDtlMapper.updateSndngDtlRcvmtCd) */
    UPDATE TB_SNDNG_DTL
       SET BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD <!-- 이전 발송 상세 상태 코드 -->
         , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
         , SNDNG_RCVMT_CD   = #{sndngRcvmtCd}   <!-- 발송 수납 코드 -->
         , MDFCN_DT         = <include refid="utility.now" /> <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
       AND DEL_YN           = 'N'
</update>

<update id="updateSndngDtlEPost" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 전자우편 발송상세 내역 수정(sndngDtlMapper.updateSndngDtlEPost) */
    UPDATE TB_SNDNG_DTL
       SET BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD <!-- 이전 발송 상세 상태 코드 -->
         , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
         , CON_KEY          = #{conKey}     <!-- 외부연계식별키 -->
         , RG_NO            = #{rgNo}       <!-- 등기 번호 -->
         , MDFCN_DT         =<include refid="utility.now" /> <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
       AND DEL_YN           = 'N'
</update>

<select id="selectSndbkList" parameterType="map" resultType="dataobject">/* 반송 목록 조회(sndngDtlMapper.selectSndbkList) */
    <include refid="utility.paging-prefix" />
    SELECT SD.SNDNG_DTL_ID  <!-- 발송 상세 ID -->
         , SD.SVBTC_ID      <!-- 공시송달 ID -->
         , SD.SNDNG_SE_CD   <!-- 발송 구분 코드 -->
         , (GET_CODE_NM('FIM047', SD.SNDNG_SE_CD)) AS SNDNG_SE_NM   <!-- 발송 구분 명 -->
         , SD.SNDNG_YMD     <!-- 발송 일자 -->
         , SD.SNDNG_END_YMD <!-- 발송 종료 일자 -->
         , SD.RCPN_NM       <!-- 수령인 명 -->
         , SD.RCPN_BRDT     <!-- 수령인 생년월일 -->
         , SD.RCPN_ADDR     <!-- 수령인 주소 -->
         , SD.RCPN_DTL_ADDR <!-- 수령인 상세 주소 -->
         , SD.RCPN_ZIP      <!-- 수령인 우편번호 -->
         , SD.CON_KEY       <!-- 외부연계식별키 -->
         , SD.RG_NO         <!-- 등기 번호 -->
         , SD.DLVR_YMD      <!-- 배달 일자 -->
         , SD.DLVR_TM       <!-- 배달 시각 -->
         , SD.UNDLVR_RSN_CD <!-- 미배달 사유 코드 -->
         , SD.UNDLVR_RSN_NM <!-- 미배달 사유 명 -->
         , SD.ACTL_RCPN_NM  <!-- 실제 수령인 명 -->
         , SD.RCPN_REL_NM   <!-- 수령인 관계 명 -->
         , SD.SNDNG_DTL_STTS_CD <!-- 발송 상세 상태 코드 -->
         , (GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD)) AS SNDNG_DTL_STTS_NM   <!-- 발송 상세 상태 명 -->
         , SD.SNDNG_RCVMT_CD <!-- 발송 수납 코드 -->
         , (GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD)) AS SNDNG_RCVMT_NM <!-- 발송 수납 명 -->
         , SD.ADDR_CHG_CD   <!-- 주소 변경 코드 -->
         , SD.LEVY_YMD      <!-- 부과 일자 -->
         , SD.DUDT_YMD      <!-- 납기 일자 -->
         , (GET_MASK_DATE(SD.DUDT_YMD, '.')) AS DUDT_YMD_MASK   <!-- 납기 일자 -->
         , (GET_MASK_DATE(SD.DUDT_YMD, 'K')) AS DUDT_YMD_MASK_KOR   <!-- 납기 일자(한글표기) -->
         , SD.FFNLG_AMT     <!-- 과태료 금액 -->
         , SD.PCPTAX        <!-- 본세 -->
         , SD.ADAMT         <!-- 가산금 -->
         , SD.LAST_AMT      <!-- 최종 금액 -->
         , SD.REG_DT        <!-- 등록 일시 -->
         , SD.RGTR          <!-- 등록자 -->
         , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.RGTR) AS RGTR_NM <!-- 등록자 명 -->
         , SD.MDFCN_DT      <!-- 수정 일시 -->
         , SD.MDFR          <!-- 수정자 -->
         , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.MDFR) AS MDFR_NM <!-- 수정자 명 -->
         , (CONCAT(SD.FYR, '-', SD.LEVY_NO)) AS GOJI_NO <!-- 고지 번호 -->
         , S.SNDNG_ID       <!-- 발송 ID -->
         , S.DEPT_CD        <!-- 부서 코드 -->
         , S.SNDNG_REG_SE_CD <!-- 발송 등록 구분 코드 -->
         , (GET_CODE_NM('FIM067', S.SNDNG_REG_SE_CD)) AS SNDNG_REG_SE_NM    <!-- 발송 등록 구분 명 -->
         , S.EPOST_NOTICE_ID <!-- 전자우편 안내문 ID -->
         , S.SNDNG_STTS_CD  <!-- 발송 상태 코드 -->
         , S.RSND_YN        <!-- 재발송 여부 -->
         , C.CRDN_ID        <!-- 단속 ID -->
         , C.SGG_CD         <!-- 시군구 코드 -->
         , C.TASK_SE_CD     <!-- 업무 구분 코드 -->
         , (GET_CODE_NM('FIM054', C.TASK_SE_CD)) AS TASK_SE_NM  <!-- 업무 구분 명 -->
         , C.CRDN_REG_SE_CD <!-- 단속 등록 구분 코드 -->
         , (GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD)) AS CRDN_REG_SE_NM  <!-- 단속 등록 구분 명 -->
         , C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
         , (GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD)) AS CRDN_INPT_SE_NM    <!-- 단속 입력 구분 명 -->
         , C.VHRNO          <!-- 차량번호 -->
         , C.CRDN_YMD       <!-- 단속 일자 -->
         , C.CRDN_TM        <!-- 단속 시각 -->
         , (CONCAT(C.CRDN_YMD, C.CRDN_TM))  AS CRDN_YMD_TM  <!-- 단속 일시 -->
         , C.CRDN_STDG_NM   <!-- 단속 법정동 명 -->
         , C.CRDN_ROAD_NM   <!-- 단속 도로 명 -->
         , C.CRDN_PLC       <!-- 단속 장소 -->
         , C.CRDN_STTS_CD   <!-- 단속 상태 코드 -->
         , (GET_CODE_NM('FIM010', C.CRDN_STTS_CD)) AS CRDN_STTS_NM  <!-- 단속 상태 명 -->
         , P.RTPYR_ID       <!-- 납부자 ID -->
         , P.RTPYR_SE_CD    <!-- 납부자 구분 코드 -->
         , (GET_CODE_NM('FIM011', P.RTPYR_SE_CD)) AS RTPYR_SE_NM    <!-- 납부자 구분 명 -->
         , P.RTPYR_NO       <!-- 납부자 번호 -->
         , P.RTPYR_NM       <!-- 납부자 명 -->
    <include refid="fromSndbk" />
    <include refid="utility.orderBy" />
    <include refid="utility.paging-suffix" />
</select>

<sql id="fromSndbk">
      FROM TB_SNDNG_DTL             SD
     INNER JOIN TB_SNDNG            S   ON (SD.SNDNG_ID = S.SNDNG_ID)
     INNER JOIN TB_CRDN             C   ON (SD.CRDN_ID  = C.CRDN_ID)
     INNER JOIN TB_PAYER            P   ON (C.RTPYR_ID  = P.RTPYR_ID)
LEFT OUTER JOIN TB_EPOST_DLVR_RSLT  EDR ON (SD.CON_KEY  = EDR.CON_KEY AND SD.RG_NO  = EDR.REGINO)
    <where>
        <if test="sndngDtlIds != null">
       AND SD.SNDNG_DTL_ID  IN (            <!-- 발송 상세 Ids -->
            <foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
         )
        </if>
        <choose>
            <when test='schChcRgIndct == "Y"'>
       AND (  (SD.SNDNG_DTL_STTS_CD = #{sndngDtlSttsCd})
           OR (EDR.RELRECPRSNCD BETWEEN '13' AND '16')
           OR (RCPN_REL_NM IN (#{rcpnRelNm1}, #{rcpnRelNm2}, #{rcpnRelNm3}, #{rcpnRelNm4})) )
            </when>
            <otherwise>
       AND SD.SNDNG_DTL_STTS_CD = #{sndngDtlSttsCd}
            </otherwise>
        </choose>
        <if test="schDlvrYmdFrom != null">
       AND SD.DLVR_YMD <![CDATA[>=]]> #{schDlvrYmdFrom}     <!-- 발송 일자 시작 -->
        </if>
        <if test="schDlvrYmdTo != null">
       AND SD.DLVR_YMD <![CDATA[<=]]> #{schDlvrYmdTo}       <!-- 발송 일자 종료 -->
        </if>
        <if test="schSndngYmdFrom != null">
       AND SD.SNDNG_YMD <![CDATA[>=]]> #{schSndngYmdFrom}   <!-- 발송 일자 시작 -->
        </if>
        <if test="schSndngYmdTo != null">
       AND SD.SNDNG_YMD <![CDATA[<=]]> #{schSndngYmdTo}     <!-- 발송 일자 종료 -->
        </if>
        <if test="schSndngSeCd != null">
       AND SD.SNDNG_SE_CD   =  #{schSndngSeCd}      <!-- 발송 구분 코드 -->
        </if>
        <if test="schUndlvrRsnCd != null">
       AND SD.UNDLVR_RSN_CD =  #{schUndlvrRsnCd}    <!-- 미배달 사유 코드 -->
        </if>
        <if test="sggCd != null">
       AND S.SGG_CD     =  #{sggCd}     <!-- 시군구 코드 -->
        </if>
        <if test="taskSeCd != null">
       AND S.TASK_SE_CD =  #{taskSeCd}  <!-- 업무 구분 코드 -->
        </if>
       AND (S.RSND_YN         IS NULL OR S.RSND_YN         = 'N')
       AND (SD.SVBTC_ID       IS NULL OR SD.SVBTC_ID       = '')
       AND (SD.SNDNG_RCVMT_CD IS NULL OR SD.SNDNG_RCVMT_CD = '')
        <if test="delYn != null">
       AND SD.DEL_YN        =  #{delYn}             <!-- 삭제 여부 -->
        </if>
        <if test="schCrdnYmdFrom != null">
       AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom}  <!-- 단속 일자 시작 -->
        </if>
        <if test="schCrdnYmdTo != null">
       AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo}    <!-- 단속 일자 종료 -->
        </if>
        <if test="schVhrno != null">
       AND C.VHRNO          =  #{schVhrno}  <!-- 차량번호 -->
        </if>
       AND C.DEL_YN         =  'N'
        <choose>
            <when test="schRegDateOpt == 'regDt'">
                <if test="schRegDateFrom != null">
       AND SD.REG_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000')  <!-- 등록 일자 시작 -->
                </if>
                <if test="schRegDateTo != null">
       AND SD.REG_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959')    <!-- 등록 일자 종료 -->
                </if>
            </when>
            <when test="schRegDateOpt == 'mdfcnDt'">
                <if test="schRegDateFrom != null">
       AND SD.MDFCN_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000')    <!-- 수정 일자 시작 -->
                </if>
                <if test="schRegDateTo != null">
       AND SD.MDFCN_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959')      <!-- 수정 일자 종료 -->
                </if>
            </when>
            <otherwise>
            </otherwise>
        </choose>
        <choose>
            <when test="schRgtrOpt == 'rgtr'">
                <if test="schRgtrCd != null">
       AND SD.RGTR          =  #{schRgtrCd} <!-- 등록자 코드 -->
                </if>
            </when>
            <when test="schRgtrOpt == 'mdfr'">
                <if test="schRgtrCd != null">
       AND SD.MDFR          =  #{schRgtrCd} <!-- 수정자 코드 -->
                </if>
            </when>
            <otherwise>
            </otherwise>
        </choose>
        <if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(by) and @org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(term)">
            <choose>
                <when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
                    <include refid="dynamicSearch.start" />
                    <choose>
                        <when test="by == 'rgNo'"> SD.RG_NO </when>
                        <when test="by == 'dlvrYmd'"> SD.DLVR_YMD </when>
                        <when test="by == 'dlvrTm'"> SD.DLVR_TM </when>
                        <when test="by == 'undlvrRsnNm'"> SD.UNDLVR_RSN_NM </when>
                        <when test="by == 'actlRcpnNm'"> SD.ACTL_RCPN_NM </when>
                        <when test="by == 'rcpnRelNm'"> SD.RCPN_REL_NM </when>
                        <when test="by == 'sndngSeCd'"> SD.SNDNG_SE_CD </when>
                        <when test="by == 'sndngYmd'"> SD.SNDNG_YMD </when>
                        <when test="by == 'ffnlgAmt'"> SD.FFNLG_AMT </when>
                        <when test="by == 'rcpnNm'"> SD.RCPN_NM </when>
                        <when test="by == 'rcpnZip'"> SD.RCPN_ZIP </when>
                        <when test="by == 'rcpnAddr'"> SD.RCPN_ADDR </when>
                        <when test="by == 'rcpnDtlAddr'"> SD.RCPN_DTL_ADDR </when>
                        <when test="by == 'crdnYmd'"> C.CRDN_YMD </when>
                        <when test="by == 'vhrno'"> C.VHRNO </when>
                        <when test="by == 'rtpyrSeCd'"> P.RTPYR_SE_CD </when>
                        <when test="by == 'rtpyrNo'"> P.RTPYR_NO </when>
                        <when test="by == 'rtpyrNm'"> P.RTPYR_NM </when>
                        <when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when>
                        <when test="by == 'crdnPlc'"> C.CRDN_PLC </when>
                        <when test="by == 'crdnSttsCd'"> C.CRDN_STTS_CD </when>
                    </choose>
                    <include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
                </when>
                <otherwise>
                </otherwise>
            </choose>
        </if>
    </where>
</sql>

<select id="selectSvbtcsTrgtSndngDtlIds" parameterType="map" resultType="dataobject">/* 공시송달 대상 발송 상세 ID 가져오기(sndngMapper.selectSvbtcsTrgtSndngDtlIds) */
    SELECT SD.SNDNG_DTL_ID          <!-- 발송 상세 ID -->
       <include refid="fromSndbk" />
       <include refid="utility.orderBy" />
   </select>

<sql id="selectSndbk">
       SELECT SD.SNDNG_DTL_ID          <!-- 발송 상세 ID -->
         , SD.CRDN_ID               <!-- 단속 ID -->
         , SD.SVBTC_ID              <!-- 공시송달 ID -->
         , SD.CON_KEY               <!-- 외부연계식별키 -->
         , SD.RG_NO                 <!-- 등기 번호 -->
         , SD.DLVR_YMD              <!-- 배달 일자 -->
         , SD.DLVR_TM               <!-- 배달 시각 -->
         , SD.UNDLVR_RSN_CD         <!-- 미배달 사유 코드 -->
         , SD.UNDLVR_RSN_NM         <!-- 미배달 사유 명 -->
         , SD.ACTL_RCPN_NM          <!-- 실제 수령인 명 -->
         , SD.RCPN_REL_NM           <!-- 수령인 관계 명 -->
         , SD.SNDNG_DTL_STTS_CD     <!-- 발송 상세 상태 코드 -->
         , SD.BFR_SNDNG_DTL_STTS_CD <!-- 전 발송 상세 상태 코드 -->
         , SD.BFR_DLVR_YMD          <!-- 전 배달 일자 -->
         , SD.BFR_DLVR_TM           <!-- 전 배달 시각 -->
         , S.SNDNG_ID               <!-- 발송 ID -->
         , S.SGG_CD                 <!-- 시군구 코드 -->
         , S.TASK_SE_CD             <!-- 업무 구분 코드 -->
         FROM TB_SNDNG_DTL     SD
        INNER JOIN TB_SNDNG    S   ON (SD.SNDNG_ID = S.SNDNG_ID)
</sql>

<select id="selectSndbks" parameterType="map" resultType="dataobject">/* 반송 정보 조회(sndngDtlMapper.selectSndbks) */
       <include refid="selectSndbk" />
       <where>
           <if test="sndngDtlIds != null">
          AND SD.SNDNG_DTL_ID  IN (            <!-- 발송 상세 Ids -->
            <foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
         )
        </if>
        <if test="sndngDtlId != null">
       AND SD.SNDNG_DTL_ID  = #{sndngDtlId} <!-- 발송 상세 ID -->
        </if>
        <if test="sndngId != null">
       AND SD.SNDNG_ID      =  #{sndngId}   <!-- 발송 ID -->
        </if>
        <if test="crdnIds != null">
       AND SD.CRDN_ID       IN (            <!-- 단속 Ids -->
            <foreach collection="crdnIds" item="crdnId" separator=","> #{crdnId} </foreach>
         )
        </if>
        <if test="crdnId != null">
       AND SD.CRDN_ID       =  #{crdnId}    <!-- 단속 ID -->
        </if>
        <if test="svbtcIds != null">
       AND SD.SVBTC_ID      IN (            <!-- 공시송달 Ids -->
            <foreach collection="svbtcIds" item="svbtcId" separator=","> #{svbtcId} </foreach>
         )
        </if>
        <if test="svbtcId != null">
       AND SD.SVBTC_ID      =  #{svbtcId}   <!-- 공시송달 ID -->
        </if>
    </where>
       AND SD.DEL_YN        = 'N'
    <include refid="utility.orderBy" />
</select>

<update id="createSndbk" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송상세의 반송 정보 등록(sndngDtlMapper.createSndbk) */
    UPDATE TB_SNDNG_DTL
       SET BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD <!-- 전 발송 상세 상태 코드 -->
         , DLVR_YMD         = #{dlvrYmd}    <!-- 배달 일자 -->
         , DLVR_TM          = #{dlvrTm}     <!-- 배달 시각 -->
         , UNDLVR_RSN_CD    = #{undlvrRsnCd} <!-- 미배달 사유 코드 -->
         , UNDLVR_RSN_NM    = #{undlvrRsnNm} <!-- 미배달 사유 명 -->
         , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
         , MDFCN_DT         = <include refid="utility.now" />   <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
    <choose>
        <when test="sndngDtlIds != null">
     WHERE SNDNG_DTL_ID     IN (            <!-- 발송 상세 Ids -->
            <foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
         )
        </when>
        <otherwise>
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
        </otherwise>
    </choose>
       AND DEL_YN           = 'N'
</update>

<update id="updateSndbk" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송상세의 반송 정보 수정(sndngDtlMapper.updateSndbk) */
    UPDATE TB_SNDNG_DTL
       SET BFR_DLVR_YMD     = DLVR_YMD      <!-- 전 배달 일자 -->
         , BFR_DLVR_TM      = DLVR_TM       <!-- 전 배달 시각 -->
         , DLVR_YMD         = #{dlvrYmd}    <!-- 배달 일자 -->
         , DLVR_TM          = #{dlvrTm}     <!-- 배달 시각 -->
         , UNDLVR_RSN_CD    = #{undlvrRsnCd} <!-- 미배달 사유 코드 -->
         , UNDLVR_RSN_NM    = #{undlvrRsnNm} <!-- 미배달 사유 명 -->
         , MDFCN_DT         = <include refid="utility.now" />   <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
    <choose>
        <when test="sndngDtlIds != null">
     WHERE SNDNG_DTL_ID     IN (            <!-- 발송 상세 Ids -->
            <foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
         )
        </when>
        <otherwise>
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
        </otherwise>
    </choose>
       AND DEL_YN           = 'N'
</update>

<update id="deleteSndbk" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송상세의 반송 정보 삭제(sndngDtlMapper.deleteSndbk) */
    UPDATE TB_SNDNG_DTL
       SET BFR_SNDNG_DTL_STTS_CD = NULL     <!-- 전 발송 상세 상태 코드 -->
         , BFR_DLVR_YMD     = NULL          <!-- 전 배달 일자 -->
         , BFR_DLVR_TM      = NULL          <!-- 전 배달 시간 -->
         , DLVR_YMD         = #{dlvrYmd}    <!-- 배달 일자 -->
         , DLVR_TM          = #{dlvrTm}     <!-- 배달 시각 -->
         , UNDLVR_RSN_CD    = NULL          <!-- 미배달 사유 코드 -->
         , UNDLVR_RSN_NM    = NULL          <!-- 미배달 사유 명 -->
         , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
         , MDFCN_DT         = <include refid="utility.now" />   <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
    <choose>
        <when test="sndngDtlIds != null">
     WHERE SNDNG_DTL_ID     IN (            <!-- 발송 상세 Ids -->
            <foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
         )
        </when>
        <otherwise>
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
        </otherwise>
    </choose>
       AND DEL_YN           = 'N'
</update>

<select id="selectTnocsSndngDtlSvbtc" parameterType="cokr.xit.fims.sndb.SndngDtl" resultType="int">/* 발송상세 대장에 공시송달ID에 해당하는 총건수 가져오기(sndngDtlMapper.selectTnocsSndngDtlSvbtc) */
    SELECT COUNT(*) TNOCS
      FROM TB_SNDNG_DTL
     WHERE SVBTC_ID         = #{svbtcId}    <!-- 공시송달 ID -->
       AND DEL_YN           = 'N'
</select>

<update id="updateSndngDtlSvbtc" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송상세의 공시송달 정보를 수정(sndngDtlMapper.updateSndngDtlSvbtc) */
    UPDATE TB_SNDNG_DTL
       SET BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD <!-- 이전 발송 상세 상태 코드 -->
         , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
         , SVBTC_ID         = #{svbtcId}    <!-- 공시송달 ID -->
         , MDFCN_DT         = <include refid="utility.now" />   <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
     WHERE SNDNG_DTL_ID     = #{sndngDtlId} <!-- 발송 상세 ID -->
       AND DEL_YN           = 'N'
</update>

<update id="deleteSndngDtlSvbtc" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송상세의 공시송달 정보를 삭제(sndngDtlMapper.deleteSndngDtlSvbtc) */
    UPDATE TB_SNDNG_DTL
       SET SVBTC_ID         = NULL          <!-- 공시송달 ID -->
         , BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD <!-- 이전 발송 상세 상태 코드 -->
         , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
         , MDFCN_DT         = <include refid="utility.now" />   <!-- 수정 일시 -->
         , MDFR             = #{modifiedBy} <!-- 수정자 -->
     WHERE SVBTC_ID         = #{svbtcId}    <!-- 공시송달 ID -->
        <if test="sndngDtlIds != null">
       AND SNDNG_DTL_ID     IN (            <!-- 발송 상세 Ids -->
            <foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
         )
        </if>
       AND DEL_YN           = 'N'
</update>

<select id="selectCrdnLevy" parameterType="string" resultType="dataobject">/* 단속 부과 정보 가져오기(sndngDtlMapper.selectCrdnLevy) */
    SELECT C.CRDN_ID        <!-- 단속 ID -->
         , C.SGG_CD         <!-- 시군구 코드 -->
         , C.TASK_SE_CD     <!-- 업무 구분 코드 -->
         , C.VHRNO          <!-- 차량번호 -->
         , C.CRDN_STTS_CD   <!-- 단속 상태 코드 -->
         , C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
         , P.RTPYR_ID       <!-- 납부자 ID -->
         , L.LEVY_ID        <!-- 부과 ID -->
      FROM TB_CRDN          C
LEFT OUTER JOIN TB_PAYER    P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY     L ON (C.CRDN_ID  = L.CRDN_ID AND L.DEL_YN = 'N')
     WHERE C.CRDN_ID        = #{crdnId}    <!-- 단속 ID -->
</select>

<update id="updateCrdnNxrpAcbKey" parameterType="cokr.xit.fims.crdn.Crdn">/* 단속 대장에 세외수입 대장키 수정(sndngDtlMapper.updateCrdnNxrpAcbKey) */
    UPDATE TB_CRDN
       SET NXRP_ACB_KEY = #{nxrpAcbKey} <!-- 세외수입 대장키 -->
     WHERE CRDN_ID      = #{crdnId}     <!-- 단속 ID -->
</update>

<select id="selectDetailList" parameterType="list" resultType="dataobject">/* 고지서용 발송 상세정보(sndngDtlMapper.selectDetailList) */
   SELECT C.CRDN_ID             <!--  단속 ID -->
         , C.SGG_CD             <!--   시군구 코드 -->
         , (SELECT SGG_NM FROM TB_SGG WHERE SGG_CD = C.SGG_CD) AS SGG_NM
         , C.TASK_SE_CD         <!--  업무 구분 코드 -->
         , (GET_CODE_NM('FIM054', C.TASK_SE_CD)) AS TASK_SE_NM
         , C.CRDN_INPT_SE_CD    <!--  단속 입력 구분 코드 -->
         , (GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD)) AS CRDN_INPT_SE_NM
         , C.CRDN_REG_SE_CD     <!--  단속 등록 구분 코드 -->
         , (GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD)) AS CRDN_REG_SE_NM
         , CA.CRDN_SE_CD        <!--  단속 구분 코드 -->
         , (GET_CODE_NM('FIM002', CA.CRDN_SE_CD)) AS CRDN_SE_NM
         , C.CVLCPT_LINK_YN     <!--  민원 연계 여부 -->
         , C.CVLCPT_LINK_TBL_NM <!--  민원 연계 테이블 명 -->
         , C.CVLCPT_LINK_ID     <!--  민원 연계 ID -->
         , C.CRDN_YMD           <!--  단속 일자 -->
         , C.CRDN_TM            <!--  단속 시각 -->
         , CONCAT(C.CRDN_YMD, C.CRDN_TM) AS CRDN_YMD_TM
         , C.VHRNO              <!--  차량번호 -->
         , L.RPM_SZR_VHRNO      <!--  대체차량번호 -->
         , (GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD)) AS FFNLG_CARMDL_NM
         , C.ATCH_FILE_CNT      <!--  첨부 파일 수 -->
         , CA.PRK_PSBLTY_RSLT_CD <!--  주차 가능 결과 코드 -->
         , (GET_CODE_NM('FIM034', CA.PRK_PSBLTY_RSLT_CD)) AS PRK_PSBLTY_RSLT_NM
         , P.RTPYR_ID           <!--  납부자 ID -->
         , P.RTPYR_INPT_SE_CD   <!--  납부자 입력 구분 코드 -->
         , P.RTPYR_SE_CD        <!--  납부자 구분 코드 -->
         , (GET_CODE_NM('FIM011', P.RTPYR_SE_CD)) AS RTPYR_SE_NM
         , P.RTPYR_NO           <!--  납부자 번호 -->
         , P.RTPYR_NM           <!--  납부자 명 -->
         , P.RTPYR_TELNO        <!--  납부자 전화번호 -->
         , P.RTPYR_MBL_TELNO    <!--  납부자 휴대 전화번호 -->
         , P.RTPYR_EML          <!--  납부자 이메일 -->
         , P.RTPYR_STTS_CD      <!--  납부자 상태 코드 -->
         , (GET_CODE_NM('FIM014', P.RTPYR_STTS_CD)) AS RTPYR_STTS_NM
         , PA.ADDR_SE_CD        <!--  주소 구분 코드 -->
         , (GET_CODE_NM('FIM013', PA.ADDR_SE_CD)) AS ADDR_SE_NM
         , PA.ZIP       AS RTPYR_ZIP        <!--  우편번호 -->
         , PA.ADDR      AS RTPYR_ADDR       <!--  주소 -->
         , PA.DTL_ADDR  AS RTPYR_DTL_ADDR   <!--  상세 주소 -->
         , CONCAT(PA.ADDR,' ',PA.DTL_ADDR)  AS RTPYR_FULL_ADDR
         , C.ETC_CN         <!--  기타 내용 -->
         , C.CRDN_STTS_CD   <!--  단속 상태 코드 -->
         , (GET_CODE_NM('FIM010', C.CRDN_STTS_CD)) AS CRDN_STTS_NM
         , C.CRDN_STDG_NM   <!--  단속 법정동 명 -->
         , C.CRDN_ROAD_NM   <!--  단속 도로 명 -->
         , C.CRDN_PLC       <!--  단속 장소 -->
         , CA.DTL_CRDN_PLC  <!--  상세 단속 장소 -->
         , C.VLTN_ID        <!--  위반 ID -->
         , V.VLTN_ARTCL     <!--  위반 항목 -->
         , V.VLTN_LAW_NM    <!--  위반 법 명 -->
         , IFNULL(CA.TOWNG_YN,'N') AS TOWNG_YN
         , (GET_CODE_NM('CMN006', IFNULL(CA.TOWNG_YN,'N'))) AS TOWNG_YN_NM
         , C.CRDN_STTS_CHG_DT   <!--  단속 상태 변경 일시 -->
         , SUBSTR(C.CRDN_STTS_CHG_DT,1,8)   AS CRDN_STTS_CHG_YMD
         , C.FFNLG_CRDN_AMT <!--  과태료 단속 금액 -->
         , C.FFNLG_RDCRT    <!--  과태료 감경율 -->
         , C.FFNLG_AMT      <!--  과태료 금액 -->
         , C.ADVNTCE_BGNG_YMD   <!--  사전통지 시작 일자 -->
         , C.ADVNTCE_DUDT_YMD   <!--  사전통지 납기 일자 -->
         , C.ADVNTCE_AMT    <!--  사전통지 금액 -->
         , IFNULL(C.OPNN_SBMSN_YN,'N') AS OPNN_SBMSN_YN
         , (GET_CODE_NM('CMN006', IFNULL(C.OPNN_SBMSN_YN,'N'))) AS OPNN_SBMSN_YN_NM
         , L.LEVY_ID        <!--  부과 ID -->
         , L.INST_CD        <!--  기관 코드 -->
         , L.DEPT_CD        <!--  부서 코드 -->
         , L.SPCL_BIZ_CD    <!--  특별회계 사업 코드 -->
         , L.FYR            <!--  회계 연도 -->
         , L.ACNTG_SE_CD    <!--  회계 구분 -->
         , L.TXITM_CD       <!--  세목 코드 -->
         , L.LEVY_NO        <!--  부과 번호 -->
         , L.NXRP_LEVY_KEY  <!--  세외수입 부과키 -->
         , L.ISPY_SN        <!--  분납 일련번호 -->
         , CONCAT(L.FYR, '-', L.LEVY_NO) AS GOJI_NO
         , L.LEVY_SE_CD     <!--  부과 구분 코드 -->
         , (GET_CODE_NM('FIM040', L.LEVY_SE_CD)) AS LEVY_SE_NM
         , L.RDCT_SE_CD     <!--  감경 구분 코드 -->
         , (GET_CODE_NM('FIM046', L.RDCT_SE_CD)) AS RDCT_SE_NM
         , L.LEVY_PCPTAX    <!--  부과 본세 -->
         , L.LEVY_ADAMT     <!--  부과 가산금 -->
         , L.RCVMT_PCPTAX   <!--  수납 본세 -->
         , L.RCVMT_ADAMT    <!--  수납 가산금 -->
         , L.RDAMT_PCPTAX   <!--  감액 본세 -->
         , L.RDAMT_ADAMT    <!--  감액 가산금 -->
         , L.LAST_AMT       <!--  최종 금액 -->
         , (L.LEVY_PCPTAX   + L.LEVY_ADAMT)  AS LEVY_AMT    <!--  부과 금액 -->
         , (L.RCVMT_PCPTAX  + L.RCVMT_ADAMT) AS RCVMT_AMT   <!--  수납 금액 -->
         , (L.RDAMT_PCPTAX  + L.RDAMT_ADAMT) AS REDUC_AMT   <!--  감액 금액 -->
         , GET_MINAP_AMT(C.CRDN_ID)          AS MINAP_AMT   <!--  미납 금액 -->
         , L.LEVY_YMD       <!--  부과 일자 -->
         , L.FRST_DUDT_YMD  <!--  최초 납기 일자 -->
         , L.DUDT_YMD       <!--  납기 일자 -->
         , L.DUDT_AFTR_YMD  <!--  납기후 일자 -->
         , L.DUDT_AFTR_AMT  <!--  납기후 금액 -->
         , L.RCVMT_YMD      <!--  수납 일자 -->
         , L.PAY_MTHD_SE_CD <!--  납부 방법 구분 코드 -->
         , (GET_CODE_NM('FIM045', L.PAY_MTHD_SE_CD)) AS PAY_MTHD_SE_NM
         , (GET_MASK_EPAYNO(L.EPAYNO)) AS EPAYNO  <!-- 전자납부번호 -->
         , L.BANK_NM        <!--  은행명 -->
         , L.VR_ACTNO       <!--  가상계좌번호 -->
         , L.SZR_YMD        <!--  압류 일자 -->
         , L.SZR_RMV_YMD    <!--  압류 해제 일자 -->
         , V.TXITM_NM       <!--  세목 명 -->
         , (CASE WHEN C.CRDN_STTS_CD IN ('71','72','73','74','75','76','77','80','81','82','83','84','85','86','87','88')
                 THEN 'Y'
                 ELSE 'N'
            END) AS RCVMT_ETC_YN    <!--  수납,기타 여부 -->
         , SD.TAX_NO
         , L.BANK_NM
         , L.VR_ACTNO
         , L.BANK_NM2
         , L.VR_ACTNO2
         , L.BANK_NM3
         , L.VR_ACTNO3
         , L.BANK_NM4
         , L.VR_ACTNO4
         , L.BANK_NM5
         , L.VR_ACTNO5
         , L.BANK_NM6
         , L.VR_ACTNO6
         , L.BANK_NM7
         , L.VR_ACTNO7
         , L.BANK_NM8
         , L.VR_ACTNO8
         , L.BANK_NM9
         , L.VR_ACTNO9
         , L.BANK_NM10
         , L.VR_ACTNO10
         , L.BANK_NM11
         , L.VR_ACTNO11
         , L.BANK_NM12
         , L.VR_ACTNO12
         , L.BANK_NM13
         , L.VR_ACTNO13
         , L.BANK_NM14
         , L.VR_ACTNO14
         , L.BANK_NM15
         , L.VR_ACTNO15
         , L.BANK_NM16
         , L.VR_ACTNO16
         , L.BANK_NM17
         , L.VR_ACTNO17
         , L.BANK_NM18
         , L.VR_ACTNO18
         , L.BANK_NM19
         , L.VR_ACTNO19
         , L.BANK_NM20
         , L.VR_ACTNO20
FROM TB_CRDN             C                                <!--  단속 대장 -->
     INNER JOIN TB_CRDN_ADI    CA  ON (C.CRDN_ID  = CA.CRDN_ID) <!--  단속 부가 정보 -->
     INNER JOIN TB_VLTN        V   ON (C.VLTN_ID  = V.VLTN_ID)  <!--  위반 정보 -->
     INNER JOIN TB_SNDNG_DTL   SD  ON (C.CRDN_ID = SD.CRDN_ID)
LEFT OUTER JOIN TB_PAYER       P   ON (C.RTPYR_ID = P.RTPYR_ID) <!--  납부자 대장 -->
LEFT OUTER JOIN TB_PAYER_ADDR  PA  ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN) <!--  납부자 주소 대장 -->
LEFT OUTER JOIN TB_LEVY        L   ON (C.CRDN_ID  = L.CRDN_ID AND L.DEL_YN = 'N')   <!--  부과 대장 -->
 WHERE SD.SNDNG_ID IN (<foreach collection="list" item="sndngId" separator=",">#{sndngId}</foreach>)
 ORDER BY SD.REG_DT</select>

</mapper>