<?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="kr.xit.biz.ens.mapper.IEnsBatchMapper">

	<!-- =================================================================================== -->
	<!-- ================================ accept =========================================== -->
	<!-- =================================================================================== -->
	<select id="selectAcceptTgts" resultType="kr.xit.biz.ens.model.cmm.SndngMssageParam">
		/** ens-oracle-mapper|selectAcceptTgts-통합 발송 접수 대상 조회|julim  */
		SELECT tcsm.elctrn_ntic_sndng_id AS unitySndngMastrId
			 , tcsm.nht_tmplat_id AS tmplatId
			 , tcsm.sndng_co
			 , tcsm.sndng_process_sttus
			 , tcsm.sndng_dt
			 , tetm.try1
			 , tetm.try2
			 , tetm.try3
			 , tetm.try2_minute
			 , tetm.try3_minute
		FROM tb_elctrn_ntic_sndng tcsm
		JOIN tb_ens_tmplat_manage tetm
		  ON tcsm.nht_tmplat_id = tetm.tmplat_id
		WHERE tcsm.sndng_process_sttus = #{sndngProcessSttus}
		  AND tcsm.signgu_code = #{signguCode}
		  AND tcsm.ffnlg_code = #{ffnlgCode}
	</select>

	<insert id="insertUnitySndngMst">
		/** ens-oracle-mapper|insertUnitySndngMst-통합발송마스터 생성|julim  */
		INSERT
		INTO tb_ens_unity_sndng_mastr (
			unity_sndng_mastr_id,		/* 통합발송마스터 ID */
			signgu_code,				/* 시군구 코드 */
			ffnlg_code,				/* 과태료 코드 */
			tmplat_id,				/* 템플릿 Id */
			sndng_ty_code,			/* 발송유형 코드 */
			sndng_co,					/* 발송건수 */
			sndng_process_sttus,		/* 발송처리 상태 */
			sndng_dt_1,				/* 발송 일시 */
			sndng_dt_2,				/* 발송 일시2 */
			sndng_dt_3,				/* 발송 일시3 */
			try1,
			try2,
			try3,
			try_cnt,
			clos_dt,					/* 마감일시 */
			regist_dt,
			register
		)
		SELECT tcsm.elctrn_ntic_sndng_id	/* 통합발송마스터 ID */
			 , tcsm.signgu_code				/* 시군구 코드 */
			 , tcsm.ffnlg_code				/* 과태료 코드 */
			 , tcsm.nht_tmplat_id			/* 템플릿 Id */
			 , tetm.sndng_ty_code			/* 발송유형 코드 */
			 , tcsm.sndng_co				/* 발송건수 */
			 , 'accept-ok'					/* 발송처리 상태 */
			 , tcsm.sndng_dt
			 , #{sndngDt2}
			 , #{sndngDt3}
			 , tetm.try1
			 , tetm.try2
			 , tetm.try3
			 , CASE WHEN tetm.try3 IS NOT NULL THEN 3
					WHEN tetm.try2 IS NOT NULL THEN 2
					ELSE 1
			 END							/* try3 값이 있으면 3, try2 값이 있으면 2, try1 */
			 , clos_dt						/* 마감일시 */
			 , sysdate
			 , 'batch'
		 FROM tb_elctrn_ntic_sndng tcsm
		 JOIN tb_ens_tmplat_manage tetm
		   ON tcsm.nht_tmplat_id = tetm.tmplat_id
		WHERE tcsm.elctrn_ntic_sndng_id = #{unitySndngMastrId}
		  AND tcsm.sndng_process_sttus = #{sndngProcessSttus}
	</insert>

	<insert id="insertUnitySndngDtls">
		/** ens-oracle-mapper|insertUnitySndngDtls-통합발송상세 생성|julim  */
		INSERT INTO tb_ens_unity_sndng_detail (
			unity_sndng_detail_id,  /* 통합발송상세 ID*/
			unity_sndng_mastr_id,	/* 통합발송마스터 ID */
			signgu_code,			/* 시군구 코드 */
			ffnlg_code,				/* 과태료 코드 */
			main_code,
			ihidnum,				/* 주민번호 */
			tmplt_msg_data,			/* 템플릿메세지 데이타 */
			mobile_page_cn,			/* 모바일페이지내용 */
			use_instt_idntfc_id,    /* 이용기관식별Id*/
			regist_dt,
			register
		)
		SELECT tcsd.elctrn_ntic_sndng_detail_id	/* 통합발송상세 ID*/
			 , tcsd.elctrn_ntic_sndng_id	/* 통합발송마스터 ID */
			 , tetm.signgu_code				/* 시군구 코드 */
			 , tetm.ffnlg_code				/* 과태료 코드 */
			 , tcsd.main_code
			 , tcsd.ihidnum					/* 주민번호 */
			 , tcsd.tmplt_msg_data			/* 템플릿메세지 데이타 */
			 , tcsd.mobile_page_cn			/* 모바일페이지내용 */
			 , tcsd.use_instt_idntfc_id		/* 이용기관식별Id*/
			 , sysdate
			 , 'batch'
		  FROM tb_elctrn_ntic_sndng tcsm
		  JOIN tb_ens_tmplat_manage tetm
		    ON tcsm.nht_tmplat_id = tetm.tmplat_id
		  JOIN tb_elctrn_ntic_sndng_detail tcsd
		    ON tcsm.elctrn_ntic_sndng_id = tcsd.elctrn_ntic_sndng_id
		 WHERE tcsm.elctrn_ntic_sndng_id = #{unitySndngMastrId}
		   AND tcsm.sndng_process_sttus = #{sndngProcessSttus}
	</insert>

	<update id="updateProcessSttusCntcSndngMst">
		/** ens-oracle-mapper|updateProcessSttusCntcSndngMst-연계발송마스터 상태 변경|julim  */
		UPDATE tb_elctrn_ntic_sndng
		   SET sndng_process_sttus = #{newSndngProcessSttus}
			 , error_cn = #{errorCode}
			 , error_dtls = #{errorMssage}
		     , updt_dt = sysdate
		     , updusr = 'batch'
		 WHERE elctrn_ntic_sndng_id = #{unitySndngMastrId}
	</update>

	<select id="selectCiByIhidnum" resultType="map">
		/** ens-oracle-mapper|selectCiByIhidnum-주민번호로 ci 조회|julim  */
		SELECT teim.ihidnum_manage_id AS "ihidnumManageId"
			 , tecm.ci AS "ci"
		FROM tb_ens_ihidnum_manage teim
		LEFT JOIN tb_ens_ci_manage tecm
		  ON teim.ihidnum_manage_id = tecm.ihidnum_manage_id
		WHERE teim.ihidnum = #{ihidnum}
	</select>

	<insert id="insertIhidnumManage" parameterType="map">
		/** ens-oracle-mapper|insertIhidnumManage-주민번호로 관리 데이타 생성|julim  */
		<selectKey keyProperty="ihidnumManageId" resultType="string" order="BEFORE">
			SELECT tb_ens_ihidnum_manage_seq.nextval FROM dual
		</selectKey>
		INSERT INTO tb_ens_ihidnum_manage (
		    ihidnum_manage_id,
		    ihidnum,
		    regist_dt,
		    register
		) VALUES (
		    #{ihidnumManageId},
		    #{ihidnum},
		    SYSDATE,
		    'batch'
		)
	</insert>

	<insert id="insertCiManage" parameterType="map">
		/** ens-oracle-mapper|insertCiManage-CI 관리 데이타 생성|julim  */
		INSERT INTO tb_ens_ci_manage (
			ihidnum_manage_id,
			ci,
			regist_dt,
			register
		) VALUES (
			#{ihidnumManageId},
			#{ci},
			SYSDATE,
			'batch'
		)
	</insert>
	<!-- =================================================================================== -->
	<!-- ================================ accept =========================================== -->
	<!-- =================================================================================== -->

	<!-- =================================================================================== -->
	<!-- ================================ make ============================================= -->
	<!-- =================================================================================== -->
	<select id="selectMakeTgts" resultType="kr.xit.biz.ens.model.cmm.SndngMssageParam">
		/** ens-oracle-mapper|selectMakeTgts-통합발송 생성 대상 조회|julim  */
		SELECT unity_sndng_mastr_id
		     , tmplat_id
		     , sndng_co
		     , try1
		     , try2
		     , try3
		     , try_cnt
		     , sndng_process_sttus
		     , signgu_code
		     , ffnlg_code
		  FROM tb_ens_unity_sndng_mastr
		 WHERE sndng_process_sttus = #{sndngProcessSttus}
		   AND signgu_code = #{signguCode}
		   AND ffnlg_code = #{ffnlgCode}
		<if test="sndngProcessSttus == 'sending1'">
		   AND sndng_dt_2 &lt; to_char(sysdate, 'yyyymmddhh24miss')
		</if>
	</select>

	<select id="selectKkopaySendOkTgts" resultType="int">
		/** ens-oracle-mapper|selectKkopaySendOkTgts-카카오페이 2차 발송 대상 건수 조회|seojh  */
		SELECT count(1)
	      FROM tb_ens_sndng_mastr tesm
	      JOIN tb_ens_kakao_my_doc tekmd
	        ON tesm.sndng_mastr_id = tekmd.sndng_mastr_id
	     WHERE tesm.unity_sndng_mastr_id = #{unitySndngMastrId}
	       AND tesm.signgu_code = #{signguCode}
	       AND tesm.ffnlg_code = #{ffnlgCode}
	       AND (NOT (tekmd.doc_box_status = 'READ' AND tekmd.error_code IS NULL) OR (tekmd.doc_box_status IS NULL and tekmd.error_code IS NULL))
	</select>

	<select id="selectKkotalkSendOkTgts" resultType="int">
		/** ens-mysql-mapper|selectKkotalkSendOkTgts-카카오톡 2차 발송 대상 건수 조회|seojh  */
		SELECT count(1)
		  FROM tb_ens_sndng_mastr tesm
		  JOIN tb_ens_kakao_d10 tekd
		    ON tesm.sndng_mastr_id = tekd.sndng_mastr_id
		 WHERE tesm.unity_sndng_mastr_id = #{unitySndngMastrId}
		   AND tesm.signgu_code = #{signguCode}
		   AND tesm.ffnlg_code = #{ffnlgCode}
		   AND (NOT (tekd.status = 'READ' AND tekd.error_code IS NULL) OR (tekd.status IS NULL and tekd.error_code IS NULL))
	</select>

	<insert id="insertSndngMst">
		/** ens-oracle-mapper|insertSndngMst-발송마스터 생성|julim  */
		<selectKey keyProperty="sndngMastrId" resultType="string" order="BEFORE">
			SELECT to_char(sysdate, 'yyyymmdd') || LPAD(tb_ens_sndng_mastr_seq.nextval, 12, '0') FROM dual
		</selectKey>
		INSERT INTO tb_ens_sndng_mastr (
			sndng_mastr_id,             /* 발송마스터 ID*/
			unity_sndng_mastr_id,		/* 통합발송마스터 ID */
			signgu_code,				/* 시군구 코드 */
			ffnlg_code,					/* 과태료 코드 */
			tmplat_id,					/* 템플릿 Id */
			sndng_ty_code,				/* 발송유형 코드 */
			sndng_se_code,				/* 발송구분 코드 */
			sndng_co,					/* 발송건수 */
			try_seq,
			try_cnt,
			sndng_process_sttus,		/* 발송처리 상태 */
			sndng_dt,					/* 발송일시 */
			clos_dt,					/* 마감일시 */
			regist_dt,
		    register
		)
		SELECT #{sndngMastrId}
		     , teusm.unity_sndng_mastr_id	/* 통합발송마스터 ID */
		     , teusm.signgu_code			/* 시군구 코드 */
		     , teusm.ffnlg_code				/* 과태료 코드 */
		     , teusm.tmplat_id				/* 템플릿 Id */
		     , teusm.sndng_ty_code			/* 발송유형 코드 */
		     , #{sndngSeCode}				/* 발송구분 코드 */
		     , #{sndngCo}					/* 발송건수 */
		     , #{trySeq}
		     , teusm.try_cnt
		     , 'make-ok'					/* 발송처리 상태 */
		     , CASE WHEN #{trySeq}=3 THEN teusm.sndng_dt_3
		            WHEN #{trySeq}=2 THEN teusm.sndng_dt_2
		            ELSE teusm.sndng_dt_1
		     END							/* 1차, 2차, 3차에 따른 발송일시 */
		     , teusm.clos_dt				/* 마감일시 */
		     , sysdate
		     , 'batch'
		FROM tb_ens_unity_sndng_mastr teusm
		WHERE teusm.unity_sndng_mastr_id = #{unitySndngMastrId}
		  AND teusm.sndng_process_sttus = #{sndngProcessSttus}
	</insert>

	<insert id="insertKakaopay">
		/** ens-oracle-mapper|insertKakaopay-카카오내문서함 생성|julim  */
		INSERT INTO tb_ens_kakao_my_doc (
			sndng_detail_id,				/* 발송상세ID */
			unity_sndng_detail_id,			/* 통합발송상세ID */
			sndng_mastr_id,					/* 발송마스터ID */
			signgu_code,					/* 시군구코드 */
			ffnlg_code,						/* 과태료코드 */
			title,							/* 제목 */
			hash,
			common_categories,
			read_expired_at,				/* 처리마감시간 */
			recv_phone_number,				/* 받는이 전화번호 */
			recv_name,						/* 받는이 이름 */
			recv_birthday,					/* 받는이 생년월일 */
			recv_is_required_verify_name,	/* 성명검증옵션 */
			prop_link,						/* 모바일페이지 URL */
			prop_payload,
			prop_message,
			prop_cs_number,					/* 고객센터 전화번호 */
			prop_cs_name,					/* 고객센터 명 */
			external_document_uuid,			/* 외부문서 식별번호 */
			regist_dt,
			register
		)
		SELECT LPAD(sndng_detail_id_seq.nextval, 20, '0')
			 , teusd.unity_sndng_detail_id
			 , #{sndngMastrId}
			 , teusm.signgu_code
			 , teusm.ffnlg_code
			 , tetm.tmplat_sj
			 , sha256.encrypt(teusd.unity_sndng_detail_id)
			 , '[NOTICE]'
			 , FN_GET_DATETOUNIXTIME(teusm.clos_dt)
			 , teusd.moblphon_no
			 , teusd.nm
			 , ''  -- teusd.ihidnum
			 , 'false'
			 , tetm.redirect_url
			 , tetm.tmplat_sj
			 , tetm.tmplat_cn
			 , tetm.cstmr_cnter_tlphon_no
			 , '문의처'
		     , teusd.unity_sndng_detail_id
			 , sysdate
			 , 'batch'
		FROM tb_ens_unity_sndng_mastr teusm
		LEFT JOIN tb_ens_tmplat_manage tetm
		  ON teusm.tmplat_id = tetm.tmplat_id
		LEFT JOIN tb_ens_unity_sndng_detail teusd
		  ON teusm.unity_sndng_mastr_id = teusd.unity_sndng_mastr_id
		WHERE teusm.unity_sndng_mastr_id = #{unitySndngMastrId}
		  AND teusm.sndng_process_sttus = #{sndngProcessSttus}
	</insert>

	<insert id="insertKakaotalk">
		/** ens-oracle-mapper|insertKakaotalk-카카오톡 D10_2 생성|jhseo  */
		INSERT
		INTO tb_ens_kakao_d10 (
			sndng_detail_id,						/* 발송상세ID */
			unity_sndng_detail_id,					/* 통합발송상세ID */
			sndng_mastr_id,							/* 발송마스터ID */
			signgu_code,							/* 시군구코드 */
			ffnlg_code,								/* 과태료코드 */
			title,									/* 제목 */
			link,									/* 모바일페이지 url */
			hash,
			guide,									/* 메시지 */
			payload,
			read_expires_at,						/* 최초 열람 만료 일시 */
			review_expires_at,						/* 재열람 만료 일시 */
			ci,										/* 받는이 ci */
			phone_number,							/* 받는이 전화번호 */
			name,									/* 받는이 이름 */
			birthday,								/* 받는이 생년월일 */
			external_id,                            /* 문서 매핑 식별 ID */
			regist_dt,
			register
		)
		SELECT  LPAD(sndng_detail_id_seq.nextval, 20, '0')
			 , teusd.unity_sndng_detail_id
			 , #{sndngMastrId}
			 , teusm.signgu_code
			 , teusm.ffnlg_code
			 , tetm.tmplat_sj
			 , tetm.redirect_url
			 , sha256.encrypt(teusd.unity_sndng_detail_id)
			 , tetm.tmplat_cn
			 , ''
			 , FN_GET_MASK_DATE(SUBSTR(teusm.clos_dt,1,8),'-')||'T'||FN_GET_MASK_TIME(SUBSTR(teusm.clos_dt,9,14),':')
			 , FN_GET_MASK_DATE(TO_CHAR(TO_DATE(SUBSTR(teusm.clos_dt,1,8), 'yyyymmdd') + 1, 'yyyymmdd'),'-')||'T'||FN_GET_MASK_TIME(SUBSTR(teusm.clos_dt,9,14),':')
			 , ''
			 , teusd.moblphon_no
			 , teusd.nm
			 , ''  -- teusd.ihidnum
			 , teusd.unity_sndng_detail_id
			 , SYSDATE
			 , 'batch'
		FROM tb_ens_unity_sndng_mastr teusm
		LEFT JOIN tb_ens_tmplat_manage tetm
		  ON teusm.tmplat_id = tetm.tmplat_id
		LEFT JOIN tb_ens_unity_sndng_detail teusd
		  ON teusm.unity_sndng_mastr_id = teusd.unity_sndng_mastr_id
		WHERE teusm.unity_sndng_mastr_id = #{unitySndngMastrId}
		  AND teusm.sndng_process_sttus = #{sndngProcessSttus}
	</insert>

	<insert id="insertKtBcMastr">
		/** ens-oracle-mapper|insertKtBcMastr 공인 알림문자 마스타 데이터 생성|julim  */
		INSERT INTO tb_ens_kt_bc_mastr (
			sndng_mastr_id,				/* 발송 마스터 id */
			signgu_code,				/* 시군구 코드 */
			ffnlg_code,					/* 과태료 코드 */
			service_cd,					/* 서비스 코드 */
			service_key,				/* 서비스 코드 인증키 */
			agency_id,                  /* RCS 대행사 코드 */
			msg_cd,						/* 문서코드 */
			msg_type,					/* 발송 메시지 타입 */
			make_dt,					/* 발송 시작 일시 */
			sndn_ex_time,				/* 발송 마감 시간 */
			ex_time,					/* 열람 마감 시간 */
			m_type,						/* 문서 종류 */
			brand_id,                   /* RCS 브랜드홈 값 */
			opt_type,					/* 메시지 발송 구분 */
			mms_binary,					/* MMS 바이너리 */
			file_fmat,					/* MMS 바이너리 파일 포맷 */
			sndn_tot_cnt,				/* 발송 요청 총 건 */
			mktn_rcve_csyn,				/* 마케팅 수신 동의 */
			multi_mbl_prc_type,			/* 다회선 사용자 처리 구분 */
			test_sndn_yn,				/* 테스트 발송여부 */
			rcv_rfrl_yn,				/* 수신 거부 해제 여부 */
			regist_dt,					/* 등록 일시 */
			register					/* 등록자 */
		)
		SELECT #{sndngMastrId}
			 , teusm.signgu_code            /* TODO :: 운영 시 kt_service_code, kt_dev_service_cerf_key, 다회선 사용자 처리 구분, 테스트 발송여부 변경 필요 */
			 , teusm.ffnlg_code
			 , term.kt_service_code
			 , term.kt_prod_service_cerf_key
			 , 'lguplus'
			 , teusm.tmplat_id
			 , '1'							/* RCS/xMS (RCS :1, xMS: 2) */
			 , teusm.sndng_dt_1
			 , teusm.clos_dt
			 , teusm.clos_dt
			 , '6'							/* 3: LMS 4: MMS 6: RCS*/
			 , term.kt_brand_id
			 , '1' 							/* 1: default 3: 하이브리드 */
			 , tetm.mms_binary
			 , tetm.file_fmat
			 , teusm.sndng_co
			 , 'N'
			 , '3'							/* 2 : 다회선 발송 제외(default) (NULL 일경우 동일취급) 3 : 다회선 중 임의 1회선 발송 */
			 , 'Y'
			 , 'N'
			 , sysdate
			 , 'batch'
		FROM tb_ens_unity_sndng_mastr teusm
		LEFT JOIN tb_ens_tmplat_manage tetm
		  ON teusm.tmplat_id = tetm.tmplat_id
		LEFT JOIN tb_ens_rlaybsnm_manage term
		  ON teusm.signgu_code = term.signgu_code AND teusm.ffnlg_code = term.ffnlg_code
		WHERE teusm.unity_sndng_mastr_id = #{unitySndngMastrId}
		  AND teusm.sndng_process_sttus = #{sndngProcessSttus}
	</insert>

	<insert id="insertKtBcDetail">
		/** ens-oracle-mapper|insertKtBcDetail 공인 알림문자 디테일 데이터 생성|julim  */
		INSERT INTO tb_ens_kt_bc_detail (
			sndng_mastr_id,				/* 발송 마스터 id */
			sndng_detail_id,			/* 발송 상세 id */
			unity_sndng_detail_id,		/* 통합 발송 상세 id */
			src_key,					/* 관리키 */
			src_seq,			        /* 리스트 순번 */
			ci,							/* ci */
			mms_dtl_cnts,				/* MMS 상세 내용 */
			mms_title,					/* MMS 제목 */
			rcs_dtl_cnts,               /* RCS 메시지 생세내용 */
			url,						/* 연결 URL */
			doc_hash,				    /* 문서 해시 */
			mdn,						/* 개인 휴대 전화 번호 */
			dist_info_crt_yn,			/* 유통 정보 미생성 여부 */
			info_cfrm_str,				/* 안내문 확인하기 치환 문구 */
			rcve_rf_str,				/* 수신 거부 치환 문구 */
			regist_dt,					/* 등록 일시 */
			register					/* 등록자 */
		)
		SELECT #{sndngMastrId}
			 , LPAD(sndng_detail_id_seq.nextval, 20, '0')
			 , teusd.unity_sndng_detail_id
			 , teusd.unity_sndng_detail_id
			 , row_number() over (order by teusd.unity_sndng_detail_id)
			 , tec.ci
			 , tetm.tmplat_cn || CHR(13) || CHR(10) || '- 열람기간 : ' || substr(teusm.clos_dt, 1, 4) || '년 ' || substr(teusm.clos_dt, 5, 2) || '월 ' || substr(teusm.clos_dt, 7, 2) || '일까지'|| CHR(13) || CHR(10) || '- 문의처 : ' || tetm.cstmr_cnter_tlphon_no || CHR(13) || CHR(10) || CHR(13) || CHR(10) ||'{#INFO_CFRM_STR}'|| CHR(13) || CHR(10) ||'{#RCVE_RF_STR}'
			 , tetm.tmplat_sj
			 , tetm.tmplat_cn || CHR(13) || CHR(10) || '- 열람기간 : ' || substr(teusm.clos_dt, 1, 4) || '년 ' || substr(teusm.clos_dt, 5, 2) || '월 ' || substr(teusm.clos_dt, 7, 2) || '일까지'|| CHR(13) || CHR(10) || '- 문의처 : ' || tetm.cstmr_cnter_tlphon_no || CHR(13) || CHR(10)
			 , tetm.redirect_url
			 , sha256.encrypt(teusd.unity_sndng_detail_id)
			 , ''
			 , 'N'
			 , '안내문 확인하기'
			 , '수신거부 및 수신 휴대폰 지정하기'
			 , sysdate
			 , 'batch'
		FROM tb_ens_unity_sndng_mastr teusm
		JOIN tb_ens_tmplat_manage tetm
		  ON teusm.tmplat_id = tetm.tmplat_id
		JOIN tb_ens_unity_sndng_detail teusd
		  ON teusm.unity_sndng_mastr_id = teusd.unity_sndng_mastr_id
		JOIN tb_ens_rlaybsnm_manage term
		  ON teusm.signgu_code = term.signgu_code AND teusm.ffnlg_code = term.ffnlg_code
		LEFT JOIN tb_ens_ci tec
		  ON teusd.unity_sndng_detail_id = tec.unity_sndng_detail_id
	   WHERE teusm.unity_sndng_mastr_id = #{unitySndngMastrId}
		 AND teusm.sndng_process_sttus = #{sndngProcessSttus}
	</insert>

	<insert id="insertKtGbsDetail">
		/** ens-oracle-mapper|insertKtGbsDetail KT GIBIS 디테일 데이터 생성|julim  */
		INSERT INTO tb_ens_kt_gbs (
			sndng_mastr_id,				/* 발송 마스터 id */
			sndng_detail_id,			/* 발송 상세 id */
			unity_sndng_detail_id,		/* 통합 발송 상세 id */
			signgu_code,				/* 시군구 코드 */
			ffnlg_code,					/* 과태료 코드 */
			service_cd,					/* 서비스 코드 */
			msg_cd,						/* 문서코드 */
			msg_type,					/* 발송 메시지 타입 */
			make_dt,					/* 발송 시작 일시 */
			data_cnt,                   /* 회차전체데이터건수 */
			sndn_ex_time,				/* 발송 마감 시간 */
			ex_time,					/* 열람 마감 시간 */
			snd_tel_no,                 /* 발송전화번호 */
			m_type,						/* 문서 종류 */
			opt_type,					/* 메시지 발송 구분 */
			src_key,					/* 관리키 */
			src_seq,			        /* 리스트 순번 */
			sci,						/* ci */
			mms_dtl_cnts,				/* MMS 상세 내용 */
			mms_title,					/* MMS 제목 */
			rcs_dtl_cnts,               /* RCS 메시지 생세내용 */
			url,						/* 연결 URL */
			doc_hash,				    /* 문서 해시 */
			mdn,						/* 개인 휴대 전화 번호 */
			regist_dt,
		    register
		)
		SELECT #{sndngMastrId}
			 , LPAD(sndng_detail_id_seq.nextval, 20, '0')
			 , teusd.unity_sndng_detail_id
		     , teusm.signgu_code
		     , teusm.ffnlg_code
		     , term.kt_service_code
			 , '01001'
			 , '2'							/* RCS/xMS (RCS :1, xMS: 2) */
			 , teusm.sndng_dt_1
		     , teusm.sndng_co
			 , teusm.clos_dt
			 , teusm.clos_dt
		     , tetm.sndng_tlphon_no
			 , '4'							/* 3: LMS 4: MMS 6: RCS*/
			 , '1'
			 , teusd.unity_sndng_detail_id
			 , '0000'
			 , tec.ci
			 , CASE WHEN teusm.signgu_code='44131'
		            	 THEN tetm.tmplat_cn || CHR(13) || CHR(10) || CHR(13) || CHR(10) ||'  - 열람가능기간 : ' || substr(teusm.clos_dt, 1, 4) || '년 ' || substr(teusm.clos_dt, 5, 2) || '월 ' || substr(teusm.clos_dt, 7, 2) || '일까지'|| CHR(13) || CHR(10) || '  - 문의처 : 천안시 동남구 산업교통과 교통지도팀' || CHR(13) || CHR(10) ||'            (☎'||tetm.cstmr_cnter_tlphon_no ||')'|| CHR(13) || CHR(10) || CHR(13) || CHR(10) ||'※ 링크를 통해 모바일 전자고지를 확인 시 종이고지서를 발송하지 않으며 미확인 시 4일 후 종이고지서를 등기우편으로 발송합니다.' || CHR(13) || CHR(10) || CHR(13) || CHR(10) ||'※ 천안시 불법주정차민원홈페이지(https://parking.cheonan.go.kr/)에서도 단속내역(단속사진 및 위반장소, 과태료 금액 등)을 확인 할 수 있습니다.'
				    WHEN teusm.signgu_code='44133'
				    	 THEN tetm.tmplat_cn || CHR(13) || CHR(10) || CHR(13) || CHR(10) ||'  - 열람가능기간 : ' || substr(teusm.clos_dt, 1, 4) || '년 ' || substr(teusm.clos_dt, 5, 2) || '월 ' || substr(teusm.clos_dt, 7, 2) || '일까지'|| CHR(13) || CHR(10) || '  - 문의처 : 천안시 서북구 산업교통과 교통지도팀' || CHR(13) || CHR(10) ||'            (☎'||tetm.cstmr_cnter_tlphon_no ||')'|| CHR(13) || CHR(10) || CHR(13) || CHR(10) ||'※ 링크를 통해 모바일 전자고지를 확인 시 종이고지서를 발송하지 않으며 미확인 시 4일 후 종이고지서를 등기우편으로 발송합니다.' || CHR(13) || CHR(10) || CHR(13) || CHR(10) ||'※ 천안시 불법주정차민원홈페이지(https://parking.cheonan.go.kr/)에서도 단속내역(단속사진 및 위반장소, 과태료 금액 등)을 확인 할 수 있습니다.'
				    ELSE tetm.tmplat_cn END
			 , tetm.tmplat_sj
			 , ''
			 , tetm.redirect_url
			 , sha256.encrypt(teusd.unity_sndng_detail_id)
			 , ''
		     , sysdate
		     , 'batch'
		FROM tb_ens_unity_sndng_mastr teusm
		JOIN tb_ens_tmplat_manage tetm
		  ON teusm.tmplat_id = tetm.tmplat_id
		JOIN tb_ens_unity_sndng_detail teusd
		  ON teusm.unity_sndng_mastr_id = teusd.unity_sndng_mastr_id
		JOIN tb_ens_rlaybsnm_manage term
		  ON teusm.signgu_code = term.signgu_code AND teusm.ffnlg_code = term.ffnlg_code
		JOIN tb_elctrn_ntic_sndng_detail tensd
		  ON teusd.unity_sndng_detail_id = tensd.elctrn_ntic_sndng_detail_id
		LEFT JOIN tb_ens_ci tec
		  ON teusd.unity_sndng_detail_id = tec.unity_sndng_detail_id
	   WHERE teusm.unity_sndng_mastr_id = #{unitySndngMastrId}
		 AND teusm.sndng_process_sttus = #{sndngProcessSttus}
	</insert>

	<update id="updateProcessSttusUnitySndngMst">
		/** ens-oracle-mapper|updateProcessSttusUntySndngMst-통합발송마스터 상태 변경|julim  */
		UPDATE tb_ens_unity_sndng_mastr
		   SET sndng_process_sttus = #{newSndngProcessSttus}
		     , error_code = #{errorCode}
		     , error_mssage = #{errorMssage}
		     , updt_dt = sysdate
		     , updusr = 'batch'
		WHERE unity_sndng_mastr_id = #{unitySndngMastrId}
	</update>
	<!-- =================================================================================== -->
	<!-- ================================ make ============================================= -->
	<!-- =================================================================================== -->



	<!-- =================================================================================== -->
	<!-- ================================ close  =========================================== -->
	<!-- =================================================================================== -->
	<select id="selectCloseTgts" resultType="string">
		/** ens-oracle-mapper|selectCloseTgts-종료 대상 조회|julim  */
		SELECT unity_sndng_mastr_id
		  FROM tb_ens_sndng_mastr
		 WHERE sndng_process_sttus IN ('send-ok', 'sending1', 'sending2')
		   AND signgu_code = #{signguCode}
		   AND ffnlg_code = #{ffnlgCode}
		   AND clos_dt &lt; to_char(sysdate -1, 'yyyymmddhh24miss')
	</select>
	<!-- =================================================================================== -->
	<!-- ================================ close  =========================================== -->
	<!-- =================================================================================== -->

	<!-- =================================================================================== -->
	<!-- ================================ send ============================================= -->
	<!-- =================================================================================== -->
	<select id="selectSendBulkTgts" resultType="kr.xit.biz.ens.model.cmm.SndngMssageParam">
		/** ens-oracle-mapper|selectSendBulkTgts-발송 대상 조회|julim  */
		SELECT tesm.sndng_mastr_id
		     , tesm.unity_sndng_mastr_id
		     , tesm.tmplat_id
		     , tesm.sndng_co
		     , tesm.try_seq
		     , tesm.sndng_process_sttus
		     , tesm.signgu_code
		     , tesm.ffnlg_code
		     , teusm.try1
		     , teusm.try2
		     , teusm.try3
		     , teusm.try_cnt
		FROM tb_ens_sndng_mastr tesm
		JOIN tb_ens_unity_sndng_mastr teusm
		  ON tesm.unity_sndng_mastr_id = teusm.unity_sndng_mastr_id
		WHERE tesm.sndng_process_sttus = #{sndngProcessSttus}
		  AND tesm.signgu_code = #{signguCode}
		  AND tesm.ffnlg_code = #{ffnlgCode}
		<if test="batchPeriod != null and batchPeriod != ''">
			AND tesm.sndng_dt &lt;= to_char(sysdate, 'yyyymmddhh24miss')
		</if>
	</select>

	<select id="selectKakaopaySendTgts" resultType="kr.xit.biz.ens.model.EnsDTO$SendKakaoTgt">
		/** ens-oracle-mapper|selectKakaopaySendTgts-카카오페이 문서요청 대상 목록 조회|julim  */
		SELECT tesm.sndng_mastr_id							/* 발송마스터 ID */
			 , tesm.unity_sndng_mastr_id					/* 통합발송마스터 ID */
			 , tesm.signgu_code								/* 시군구 코드 */
			 , tesm.ffnlg_code								/* 과태료 코드 */
			 , tesm.tmplat_id								/* 템플릿 Id */
			 , tesm.sndng_ty_code							/* 발송유형 코드 */
			 , tesm.sndng_co								/* 발송건수 */
			 , FN_GET_DATETOUNIXTIME(tesm.clos_dt) AS closDt   /* 마감일시 */
			 , tekmd.sndng_detail_id						/* 발송상세 ID */
			 , tekmd.unity_sndng_detail_id					/* 통합발송상세 ID */
			 , tekmd.title                      			/* 제목 */
			 , tekmd.hash
			 , tekmd.common_categories
			 , tekmd.recv_phone_number          			/* 받는이 전화번호 */
			 , tekmd.recv_name     	 						/* 받는이 이름 */
			 , tekmd.recv_birthday   						/* 받는이 생년월일 */
			 , tekmd.prop_link 								/* redirect url */
			 , tekmd.prop_payload
			 , tekmd.prop_message
			 , tekmd.prop_cs_name 							/* 콜센터 명 */
			 , tekmd.prop_cs_number         				/* 콜센터 전화번호 */
			 , tec.ci                           			/* ci */
		FROM tb_ens_sndng_mastr tesm
		JOIN tb_ens_kakao_my_doc tekmd
		  ON tesm.sndng_mastr_id = tekmd.sndng_mastr_id
		LEFT JOIN tb_ens_ci tec
		  ON tekmd.unity_sndng_detail_id = tec.unity_sndng_detail_id
	   WHERE tesm.sndng_mastr_id = #{sndngMastrId}
		 AND tesm.signgu_code = #{signguCode}
		 AND tesm.ffnlg_code = #{ffnlgCode}
	   ORDER BY tesm.unity_sndng_mastr_id
			  , tekmd.unity_sndng_detail_id
	</select>

	<select id="selectKakaotalkSendTgts" resultType="kr.xit.biz.ens.model.EnsDTO$SendKakaotalkTgt">
		/** ens-oracle-mapper|selectKakaotalkSendTgts-카카오톡 문서요청 대상 목록 조회|jhseo  */
		SELECT tesm.sndng_mastr_id							/* 발송마스터 ID */
			 , tesm.unity_sndng_mastr_id					/* 통합발송마스터 ID */
			 , tesm.signgu_code								/* 시군구 코드 */
			 , tesm.ffnlg_code								/* 과태료 코드 */
			 , tesm.tmplat_id								/* 템플릿 Id */
			 , tesm.sndng_ty_code							/* 발송유형 코드 */
			 , tesm.sndng_co								/* 발송건수 */
			 , tekmd.sndng_detail_id						/* 발송상세 ID */
			 , tekmd.unity_sndng_detail_id					/* 통합발송상세 ID */
			 , tekmd.title                      			/* 제목 */
			 , tekmd.hash
			 , tekmd.phone_number          					/* 받는이 전화번호 */
			 , tekmd.name     	 							/* 받는이 이름 */
			 , tekmd.birthday   							/* 받는이 생년월일 */
			 , tekmd.link as contentlink					/* redirect url */
			 , tekmd.payload
			 , tekmd.guide
			 , tekmd.read_expires_at						/* 최초 열람 만료 일시 */
			 , tekmd.review_expires_at						/* 재열람 만료 일시 */
			 , tec.ci
		  FROM tb_ens_sndng_mastr tesm
		  JOIN tb_ens_kakao_d10 tekmd
		    ON tesm.sndng_mastr_id = tekmd.sndng_mastr_id
		  LEFT JOIN tb_ens_ci tec
		    ON tekmd.unity_sndng_detail_id = tec.unity_sndng_detail_id
		 WHERE tesm.sndng_mastr_id = #{sndngMastrId}
		   AND tesm.signgu_code = #{signguCode}
		   AND tesm.ffnlg_code = #{ffnlgCode}
		 ORDER BY tesm.unity_sndng_mastr_id
			    , tekmd.unity_sndng_detail_id
	</select>

	<select id="selectKtBcMstTgtInfo" resultType="kr.xit.biz.ens.model.EnsKtBcDTO">
		/** ens-oracle-mapper|selectKtBcMstTgtInfo-Kt 본문자 수신 대상 정보 조회|julim  */
		SELECT tesm.sndng_mastr_id								/* 발송마스터 ID */
			 , tesm.unity_sndng_mastr_id						/* 통합발송마스터 ID */
			 , tesm.signgu_code									/* 시군구 코드 */
			 , tesm.ffnlg_code									/* 과태료 코드 */
			 , tesm.tmplat_id									/* 템플릿 Id */
			 , tesm.sndng_ty_code								/* 발송유형 코드 */
			 , tesm.sndng_co									/* 발송건수 */
			 , FN_GET_DATETOUNIXTIME(tesm.clos_dt) AS closDt   	/* 마감일시 */
			 , tekbm.sndng_mastr_id								/* 발송마스터 ID */
			 , tekbm.service_cd
			 , tekbm.service_key
			 , tekbm.agency_id
			 , tekbm.dept_cd
			 , tekbm.msg_cd
			 , tekbm.msg_type
			 , tekbm.make_dt
			 , tekbm.sndn_ex_time
			 , tekbm.ex_time
			 , tekbm.snd_tel_no
			 , tekbm.m_type
			 , tekbm.brand_id
			 , tekbm.opt_type
			 , tekbm.tkn_rpmt_yn
			 , tekbm.rdng_rpmt_yn
			 , base64encode(tekbm.mms_binary) AS mmsBinary
			 , tekbm.file_fmat
			 , tekbm.sndn_tot_cnt
			 , tekbm.mktn_rcve_csyn
			 , tekbm.snd_plfm_id
			 , tekbm.snd_npost
			 , tekbm.snd_date
			 , tekbm.multi_mbl_prc_type
			 , tekbm.test_sndn_yn
			 , tekbm.rcv_rfrl_yn
			 , tekbm.reopen_day                           /* ci */
		 FROM tb_ens_sndng_mastr tesm
		 JOIN tb_ens_kt_bc_mastr tekbm
		   ON tesm.sndng_mastr_id = tekbm.sndng_mastr_id
		WHERE tesm.sndng_mastr_id = #{sndngMastrId}
		  AND tesm.signgu_code = #{signguCode}
		  AND tesm.ffnlg_code = #{ffnlgCode}
		ORDER BY tesm.unity_sndng_mastr_id
	</select>

	<select id="selectKtBcSendTgts" resultType="kr.xit.biz.ens.model.kt.KtMmsSendDTO$KtMainSendReqData">
		/** ens-oracle-mapper|selectKtBcSendTgts-Kt 본문자 수신 대상 목록 조회|julim  */
		SELECT tekbm.sndng_mastr_id							/* 발송마스터 ID */
			 , tekbm.signgu_code							/* 시군구 코드 */
			 , tekbm.ffnlg_code								/* 과태료 코드 */
			 , tekbd.src_key
			 , tekbd.src_seq
			 , tekbd.ci
			 , tekbd.mms_dtl_cnts
			 , tekbd.mms_title
			 , tekbd.rcs_dtl_cnts
			 , tekbd.url
			 , tekbd.doc_hash
			 , tekbd.reqs_mms_binary
			 , tekbd.reqs_file_fmat
			 , tekbd.mdn
			 , tekbd.dist_info_crt_yn
			 , tekbd.info_cfrm_str
			 , tekbd.rcve_rf_str
			 , tekbd.result_cd
			 , tekbd.result_dt
			 , tekbd.error_msg
			 , tekbd.mms_sndg_rslt_sqno
			 , tekbd.prcs_dt
			 , tekbd.mbl_bzowr_dvcd
			 , tekbd.rl_mms_sndg_telno
			 , tekbd.mms_sndg_rslt_dvcd
			 , tekbd.mms_sndg_tmst
			 , tekbd.mms_rdg_tmst
		 FROM tb_ens_kt_bc_mastr tekbm
		 JOIN tb_ens_kt_bc_detail tekbd
		   ON tekbm.sndng_mastr_id = tekbd.sndng_mastr_id
		WHERE tekbm.sndng_mastr_id = #{sndngMastrId}
		  AND tekbm.signgu_code = #{signguCode}
		  AND tekbm.ffnlg_code = #{ffnlgCode}
		ORDER BY tekbd.sndng_detail_id
	</select>

	<select id="selectKtGbsMstTgtInfo" resultType="kr.xit.biz.ens.model.EnsKtGbsDTO">
		/** ens-oracle-mapper|selectKtGbsMstTgtInfo-Kt GIBIS 본문자 수신 대상 정보 조회|julim  */
		SELECT tesm.sndng_mastr_id							/* 발송마스터 ID */
			 , tesm.unity_sndng_mastr_id					/* 통합발송마스터 ID */
			 , tesm.signgu_code								/* 시군구 코드 */
			 , tesm.ffnlg_code								/* 과태료 코드 */
			 , tesm.tmplat_id								/* 템플릿 Id */
			 , tesm.sndng_ty_code							/* 발송유형 코드 */
			 , tekg.service_cd								/* 기관코드 */
			 , tekg.msg_cd	 								/* 문서코드 */
			 , tekg.make_dt									/* 생성일시 */
		     , tekg.data_cnt								/* 데이터건수 */
			 , tekg.sndn_ex_time   							/* 발송마감시간 */
			 , tekg.ex_time									/* 열람마감시간 */
			 , tekg.snd_tel_no	 							/* 발송전화번호 */
			 , tekg.m_type									/* 문서종류 sms,lms,mms */
			 , tekg.msg_type								/* 발송메시지타입 RCS:1 xMS:2 */
			 , tekg.opt_type								/* 메시지 발송 구분 */
		 FROM tb_ens_sndng_mastr tesm
		 JOIN tb_ens_kt_gbs tekg
		   ON tesm.sndng_mastr_id = tekg.sndng_mastr_id
	    WHERE tesm.sndng_mastr_id = #{sndngMastrId}
		  AND tesm.signgu_code = #{signguCode}
		  AND tesm.ffnlg_code = #{ffnlgCode}
		  AND ROWNUM = 1
	</select>

	<select id="selectKtGbsSendTgts" resultType="kr.xit.biz.ens.model.ktgbs.KtGbsDTO$MsgSendReqsData">
		/** ens-oracle-mapper|selectKtGbsSendTgts-Kt GIBIS 수신 대상 목록 조회|julim  */
		SELECT tesm.sndng_mastr_id							/* 발송마스터 ID */
			 , tesm.signgu_code								/* 시군구 코드 */
			 , tesm.ffnlg_code								/* 과태료 코드 */
			 , tekg.src_key							 		/* 관리키 */
			 , tekg.src_seq									/* seq 0000 */
			 , tekg.sci										/* ci */
			 , tekg.mms_dtl_cnts					 		/* MMS 상세 내용 */
			 , tekg.mms_title								/* MMS 제목 */
			 , tekg.rcs_dtl_cnts							/* RCS 상세 내용 */
		     /* @#@ 문자열 java단에서 치환 */
			 , tekg.url||'@#@src_key='||nvl(tekg.src_key,'')||'&amp;service_cd='||nvl(term.KT_SERVICE_CODE, '') AS url	/* URL */
			 , tekg.doc_hash								/* HASH */
			 , tekg.mdn										/* 개인휴대폰번호 */
		FROM tb_ens_sndng_mastr tesm
		JOIN tb_ens_kt_gbs tekg
		  ON tesm.sndng_mastr_id = tekg.sndng_mastr_id
		JOIN tb_ens_rlaybsnm_manage term
		  ON (tesm.signgu_code = term.SIGNGU_CODE
			  AND tesm.FFNLG_CODE = term.FFNLG_CODE)
	   WHERE tesm.sndng_mastr_id = #{sndngMastrId}
		 AND tesm.signgu_code = #{signguCode}
		 AND tesm.ffnlg_code = #{ffnlgCode}
	   ORDER BY tekg.sndng_detail_id
	</select>
	
	<select id="selectSndProcessStatus" resultType="kr.xit.biz.ens.model.cmm.SndngMssageParam">
		/** ens-oracle-mapper|selectSndProcessStatus-발송상태정보조회|julim  */
		SELECT tesm.sndng_mastr_id
			 , tesm.unity_sndng_mastr_id
			 , teusm.try_cnt
			 , tesm.try_seq
			 , CASE WHEN tesm.try_cnt = 3 THEN DECODE(tesm.try_seq, 3, 'send-ok', 'sending' || tesm.try_seq)
					WHEN tesm.try_cnt = 2 THEN DECODE(tesm.try_seq, 2, 'send-ok', 'sending' || tesm.try_seq)
					ELSE 'send-ok'
			END AS newSndngProcessSttus
		 FROM tb_ens_sndng_mastr tesm
		 JOIN tb_ens_unity_sndng_mastr teusm
		   ON tesm.unity_sndng_mastr_id = teusm.unity_sndng_mastr_id
		WHERE tesm.sndng_mastr_id = #{sndngMastrId}
	</select>

	<update id="updateKakaopaySendBulksResult">
		/** ens-oracle-mapper|updateKakaopaySendBulksResult-카카오페이 문서요청 결과 반영|julim  */
		UPDATE tb_ens_kakao_my_doc
		   SET external_document_uuid = #{external_document_uuid}
		     , document_binder_uuid = #{document_binder_uuid}
		     , error_code = #{error_code}
		     , error_message = #{error_message}
		     , updt_dt = sysdate
		     , updusr = 'batch'
		WHERE external_document_uuid = #{external_document_uuid}
	</update>

	<update id="updateKakaotalkSendBulksResult">
		/** ens-oracle-mapper|updateKakaotalkSendBulksResult-카카오톡 문서요청 결과 반영|jhseo  */
		UPDATE tb_ens_kakao_d10
		   SET external_id = #{externalId}
		     , envelope_id = #{envelopeId}
		     , error_code = #{errorCode}
		     , error_message = #{errorMessage}
		     , updt_dt = sysdate
		     , updusr = 'batch'
		WHERE unity_sndng_detail_id = #{externalId}
	</update>

	<insert id="insertKkopayMobilePageManage">
		/** ens-oracle-mapper|insertKkopayMobilePageManage-카카오페이 모바일페이지관리 데이타 생성|julim  */
		INSERT
		INTO tb_ens_mobile_page_manage (
			sndng_detail_id, /* 발송상세 ID*/
			sndng_se_code, /* 발송 구분 코드 */
			mobile_page_cn, /* 모바일 페이지 내용 */
			regist_dt,
			register
		)
		SELECT tekmd.sndng_detail_id
			 , 'KKO-MY-DOC'
			 , teusd.mobile_page_cn
			 , to_char(sysdate, 'yyyymmddhh24miss')
			 , 'batch'
		FROM tb_ens_kakao_my_doc tekmd
		JOIN tb_ens_unity_sndng_detail teusd
		  ON tekmd.unity_sndng_detail_id = teusd.unity_sndng_detail_id
		WHERE teusd.unity_sndng_detail_id = #{unitySndngDetailId}
	</insert>

	<insert id="insertKkotalkMobilePageManage">
		/** ens-oracle-mapper|insertKkotalkMobilePageManage-카카오톡 모바일페이지관리 데이타 생성|jhseo  */
		INSERT
		INTO tb_ens_mobile_page_manage (
			sndng_detail_id, /* 발송상세 ID*/
			sndng_se_code, /* 발송 구분 코드 */
			mobile_page_cn, /* 모바일 페이지 내용 */
			regist_dt,
			register
		)
		SELECT tekmd.sndng_detail_id
			 , 'KKO-NEW'
			 , teusd.mobile_page_cn
			 , to_char(sysdate, 'yyyymmddhh24miss')
			 , 'batch'
		FROM tb_ens_kakao_d10 tekmd
		JOIN tb_ens_unity_sndng_detail teusd
		  ON tekmd.unity_sndng_detail_id = teusd.unity_sndng_detail_id
		WHERE teusd.unity_sndng_detail_id = #{unitySndngDetailId}
	</insert>

	<update id="updateProcessSttusSndngMst">
		/** ens-oracle-mapper|updateProcessSttusSndngMst-발송마스터 상태 변경|julim  */
		UPDATE tb_ens_sndng_mastr
		SET sndng_process_sttus = #{newSndngProcessSttus}
		  , error_code = #{errorCode}
		  , error_mssage = SUBSTR(#{errorMssage}, 1, 999)
		  , updt_dt = sysdate
		  , updusr = 'batch'
		WHERE sndng_mastr_id = #{sndngMastrId}
	</update>

	<update id="updateProcessSttusBulkSndngMst">
		/** ens-oracle-mapper|updateProcessSttusBulkSndngMst-발송마스터 상태 다건 변경|julim  */
		UPDATE tb_ens_sndng_mastr
		   SET sndng_process_sttus = #{newSndngProcessSttus}
		     , updt_dt = sysdate
		     , updusr = 'batch'
		WHERE unity_sndng_mastr_id = #{unitySndngMastrId}
	</update>

	<update id="updateKtBcMst" parameterType="kr.xit.biz.ens.model.cmm.SndngMssageParam">
		/** ens-kt-mysql-mapper|updateKtBcMst-kt 메세지 수신결과 마스터 반영|julim  */
		UPDATE tb_ens_kt_bc_mastr
		   SET result_cd = #{resultCd}
		     , result_dt = #{resultDt}
		     , error_msg = #{errorMssage}
		     , updt_dt = sysdate
		     , updusr = 'batch'
		WHERE sndng_mastr_id = #{sndngMastrId}
		  AND signgu_code = #{signguCode}
		  AND ffnlg_code = #{ffnlgCode}
	</update>

	<insert id="insertKtMobilePageManage">
		/** ens-oracle-mapper|insertKtMobilePageManage-모바일페이지관리 데이타 생성|julim  */
		INSERT INTO tb_ens_mobile_page_manage (
			sndng_detail_id, /* 발송상세 ID*/
			sndng_se_code, /* 발송 구분 코드 */
			mobile_page_cn, /* 모바일 페이지 내용 */
			regist_dt,
			register
		)
		SELECT tekbd.sndng_detail_id
			 , 'KT-BC'
			 , teusd.mobile_page_cn
			 , to_char(sysdate, 'yyyymmddhh24miss')
			 , 'batch'
		FROM tb_ens_kt_bc_detail tekbd
		JOIN tb_ens_unity_sndng_detail teusd
		  ON tekbd.unity_sndng_detail_id = teusd.unity_sndng_detail_id
		WHERE teusd.unity_sndng_detail_id = #{unitySndngDetailId}
	</insert>

	<update id="updateKtGbs" parameterType="kr.xit.biz.ens.model.cmm.SndngMssageParam">
		/** ens-kt-mysql-mapper|updateKtBcMst-kt 메세지 수신결과 마스터 반영|julim  */
		UPDATE tb_ens_kt_gbs
		   SET result_cd = #{resultCd}
		    , result_dt = #{resultDt}
		    , error_msg = #{errorMssage}
		    , updt_dt = sysdate
		    , updusr = 'batch'
		WHERE sndng_mastr_id = #{sndngMastrId}
		  AND signgu_code = #{signguCode}
		  AND ffnlg_code = #{ffnlgCode}
	</update>

	<insert id="insertKtGbsMobilePageManage">
		/** ens-oracle-mapper|insertKtGbsMobilePageManage-모바일페이지관리 데이타 생성|julim  */
		INSERT INTO tb_ens_mobile_page_manage (
			sndng_detail_id, 	/* 발송상세 ID*/
			sndng_se_code, 		/* 발송 구분 코드 */
			mobile_page_cn, 	/* 모바일 페이지 내용 */
			regist_dt,
			register
		)
		SELECT tekg.sndng_detail_id
			 , 'KT-GIBIS'
			 , teusd.mobile_page_cn
			 , to_char(sysdate, 'yyyymmddhh24miss')
			 , 'batch'
		 FROM tb_ens_kt_gbs tekg
	     JOIN tb_ens_unity_sndng_detail teusd
		   ON tekg.unity_sndng_detail_id = teusd.unity_sndng_detail_id
		WHERE teusd.unity_sndng_detail_id = #{unitySndngDetailId}
	</insert>
	<!-- =================================================================================== -->
	<!-- ================================ send ============================================= -->
	<!-- =================================================================================== -->

	<!-- =================================================================================== -->
	<!-- ================================ status ============================================= -->
	<!-- =================================================================================== -->
	<select id="selectStatusBulkTgts" resultType="kr.xit.biz.ens.model.cmm.SndngMssageParam">
		/** ens-oracle-mapper|selectStatusBulkTgts-상태 요청 대상 조회|julim  */
		SELECT tesm.sndng_mastr_id
			 , tesm.unity_sndng_mastr_id
			 , tesm.tmplat_id
			 , tesm.sndng_co
			 , tesm.try_seq
			 , tesm.sndng_process_sttus
			 , teusm.try1
			 , teusm.try2
			 , teusm.try3
			 , teusm.try_cnt
		FROM tb_ens_sndng_mastr tesm
		JOIN tb_ens_unity_sndng_mastr teusm
		  ON tesm.unity_sndng_mastr_id = teusm.unity_sndng_mastr_id
		WHERE tesm.sndng_process_sttus IN ('send-ok', 'sending1', 'sending2')
		  AND tesm.signgu_code = #{signguCode}
		  AND tesm.ffnlg_code = #{ffnlgCode}
		<if test="sndngMastrId != null and sndngMastrId != ''">
		  AND tesm.sndng_mastr_id = #{sndngMastrId}	
		</if>
	</select>

	<select id="selectKakaopayStatusTgts" resultType="string">
		/** ens-oracle-mapper|selectKakaopayStatusTgts-카카오페이 문서 상태 조회 대상 목록 조회|julim  */
		SELECT document_binder_uuid
		 FROM tb_ens_sndng_mastr tesm
		 JOIN tb_ens_kakao_my_doc tekmd
		   ON tesm.sndng_mastr_id = tekmd.sndng_mastr_id
		WHERE tesm.sndng_process_sttus IN ('send-ok', 'sending1', 'sending2')
		  AND tesm.unity_sndng_mastr_id = #{unitySndngMastrId}
		  AND tekmd.document_binder_uuid IS NOT NULL
		  AND tesm.signgu_code = #{signguCode}
		  AND tesm.ffnlg_code = #{ffnlgCode}
	</select>

	<select id="selectKakaotalkStatusTgts" resultType="string">
		/** ens-oracle-mapper|selectKakaotalkStatusTgts-카카오톡 전자고지 상태 조회 대상 목록 조회|julim  */
		SELECT envelope_id
		 FROM tb_ens_sndng_mastr tesm
		 JOIN tb_ens_kakao_d10 tekd10
		   ON tesm.sndng_mastr_id = tekd10.sndng_mastr_id
		WHERE tesm.sndng_process_sttus IN ('send-ok', 'sending1', 'sending2')
		  AND tesm.unity_sndng_mastr_id = #{unitySndngMastrId}
		  AND tekd10.envelope_id IS NOT NULL
		  AND (tekd10.status != 'READ' OR tekd10.status IS NULL OR tekd10.status= '')
		  AND tesm.signgu_code = #{signguCode}
		  AND tesm.ffnlg_code = #{ffnlgCode}
	</select>

	<update id="updateKakaopayStatusInfo">
		/** ens-oracle-mapper|updateKakaopayStatusInfo-카카오페이 문서 상태 조회 결과 반영|julim  */
		UPDATE tb_ens_kakao_my_doc
		   SET doc_box_status = #{status_data.doc_box_status}			/* 진행상태 */
		     , doc_box_sent_at = #{status_data.doc_box_sent_at}			/* 송신시간 */
		     , doc_box_received_at = #{status_data.doc_box_received_at}	/* 수신시간 */
		     , doc_box_read_at = #{status_data.doc_box_read_at}			/* 최초열람시간 */
		     , authenticated_at = #{status_data.authenticated_at}		/* 최초열람인증시간 */
		     , token_used_at = #{status_data.token_used_at}				/* 최초OTT 검증시간 */
		     , user_notified_at = #{status_data.user_notified_at}		/* 알림톡 수신시간 */
		     , error_code = #{error_code}								/* 에러 코드 */
		     , error_message = #{error_message}							/* 에러 메시지 */
		     , updt_dt = sysdate
		     , updusr = 'batch'
		WHERE unity_sndng_detail_id = (SELECT tekmd.unity_sndng_detail_id
									   FROM tb_ens_kakao_my_doc tekmd
									   WHERE tekmd.document_binder_uuid = #{document_binder_uuid})
	</update>

	<update id="updateKakaotalkStatusInfo">
		/** ens-oracle-mapper|updateKakaotalkStatusInfo-카카오톡 문서 상태 조회 결과 반영|jhseo  */
		UPDATE tb_ens_kakao_d10
		SET status = #{status}								/* 진행상태 */
		  , sent_at = #{sentAt}								/* 문서 송신 일시 */
		  , received_at = #{receivedAt}						/* 문서 수신 일시 */
		  , read_at = #{readAt}								/* 문서 열람 일시 */
		  , read_expires_at = #{readExpiredAt}				/* 문서 열람 만료 일시 */
		  , authenticated_at = #{authenticatedAt}			/* 문서 열람 인증 일시 */
		  , ott_verified_at = #{ottVerifiedAt}				/* 토큰 검증 일시 */
		  , is_notification_unavailable = #{isNotificationUnavailable}	/* 사용자의 알림톡 수신 가능 여부 */
		  , user_notified_at = #{userNotifiedAt}			/* 사용자의 알림톡 수신 일시 */
		  , distribution_received_at = #{distributionReceivedAt}	/* 유통정보의 수신 시각 */
		  , error_code = #{errorCode}						/* 에러 코드 */
		  , error_message = #{errorMessage}					/* 에러 메시지 */
		  , updt_dt = sysdate
		  , updusr = 'batch'
		WHERE unity_sndng_detail_id = (SELECT tekmd.unity_sndng_detail_id
									   FROM tb_ens_kakao_d10 tekmd
									   WHERE tekmd.ENVELOPE_ID = #{envelopeId})
	</update>
	<!-- =================================================================================== -->
	<!-- ================================ status ============================================= -->
	<!-- =================================================================================== -->


	<!-- =================================================================================== -->
	<!-- ================================ result ============================================= -->
	<!-- =================================================================================== -->
	<insert id="insertCntcSndngResult">
		/** ens-oracle-mapper|insertCntcSndngResult-연계발송결과반영|julim  */
		INSERT INTO tb_elctrn_ntic_sndng_result (
			elctrn_ntic_sndng_detail_id,				/* 통합 발송 상세 ID*/
			sndng_se,									/* 발송구분코드 */
			sndng_result_sttus,
			requst_dt,									/* 송신(요청) 일시 */
			inqire_dt,									/* 수신(조회) 일시 */
			readng_dt,									/* 최초열람일시 */
			error_cn,									/* 에러내용 */
			regist_dt
			) SELECT unity_sndng_detail_id				/* 통합 발송 상세 ID*/
			       , #{sndngSeCode}						/* 발송구분코드 - KKO-NEW */
			       , #{sndngResultSttus}
			       , FN_GET_UNIXTIMETODATE(#{requstDt})	/* 송신(요청) 일시 */
			       , FN_GET_UNIXTIMETODATE(#{inqireDt})	/* 수신(조회) 일시 */
			       , FN_GET_UNIXTIMETODATE(#{readngDt})	/* 최초열람일시 */
			       , SUBSTR(#{errorCn}, 1, 999)			/* 에러내용 */
			       , sysdate
		        FROM tb_ens_unity_sndng_detail
		       WHERE unity_sndng_detail_id = #{unitySndngDetailId}
	</insert>

	<update id="updateCntcSndngResultByKkopay">
		/** ens-oracle-mapper|updateCntcSndngResultByKkopay-카카오페이 연계발송결과반영|julim  */
		UPDATE tb_elctrn_ntic_sndng_result
		   SET sndng_result_sttus = #{sndngResultSttus}
		     , requst_dt = FN_GET_UNIXTIMETODATE(#{requstDt})		/* 송신(요청) 일시 */
		     , inqire_dt = FN_GET_UNIXTIMETODATE(#{inqireDt})		/* 수신(조회) 일시 */
		     , readng_dt = FN_GET_UNIXTIMETODATE(#{readngDt})		/* 최초열람일시 */
		     , error_cn = #{errorCn}
		     , last_updt_dt = sysdate
		WHERE elctrn_ntic_sndng_detail_id = (SELECT tekmd.unity_sndng_detail_id
									           FROM tb_ens_kakao_my_doc tekmd
									          WHERE tekmd.document_binder_uuid = #{docKeyId})
	</update>

	<update id="updateCntcSndngResultByKkotalk">
		/** ens-oracle-mapper|updateCntcSndngResultByKkotalk-카카오톡 연계발송결과반영|jhseo  */
		UPDATE tb_elctrn_ntic_sndng_result
		   SET sndng_result_sttus = #{sndngResultSttus}
		     , requst_dt = TO_CHAR(TO_DATE(#{requstDt}, 'YYYY-MM-DD"T"HH24:MI:SS'), 'YYYYMMDDHH24MISS')		/* 송신(요청) 일시 */
		     , inqire_dt = TO_CHAR(TO_DATE(#{inqireDt}, 'YYYY-MM-DD"T"HH24:MI:SS'), 'YYYYMMDDHH24MISS')		/* 수신(조회) 일시 */
		     , readng_dt = TO_CHAR(TO_DATE(#{readngDt}, 'YYYY-MM-DD"T"HH24:MI:SS'), 'YYYYMMDDHH24MISS')		/* 최초열람일시 */
		     , error_cn = #{errorCn}
		     , last_updt_dt = sysdate
		WHERE elctrn_ntic_sndng_detail_id = (SELECT tekmd.unity_sndng_detail_id
									           FROM tb_ens_kakao_d10 tekmd
									          WHERE tekmd.envelope_id = #{docKeyId})
	</update>

	<select id="selectPplusResultTgtsByUnitySndngMstId" parameterType="string" resultType="string">
		/** ens-oracle-mapper|selectPplusResultTgtsByUnitySndngMstId-post plus 연계발송결과반영 대상 조회|julim  */
		SELECT tepp.unity_sndng_detail_id
		 FROM tb_ens_sndng_mastr tesm
		 JOIN tb_ens_post_plus tepp
		   ON tesm.sndng_mastr_id = tepp.sndng_mastr_id
		WHERE tesm.unity_sndng_mastr_id = #{unitySndngMstId}
	</select>
	<!-- =================================================================================== -->
	<!-- ================================ result ============================================= -->
	<!-- =================================================================================== -->
	<select id="selectTmplat" resultType="kr.xit.biz.ens.model.cmm.TmplatManage">
		/** ens-oracle-mapper|selectTmplat-템플릿정보조회|julim  */
		SELECT tmplat_id				/* 템플릿 아이디 */
			 , signgu_code				/* 시군구 코드 */
			 , ffnlg_code				/* 과태료 코드 */
			 , sndng_ty_code			/* 발송유형 코드 */
			 , tmplat_nm				/* 템플릿 명 */
			 , tmplat_sj				/* 템플릿 제목 */
			 , tmplat_cn				/* 템플릿 내용 */
			 , cstmr_cnter_tlphon_no	/* 고객센터 전화번호 */
			 , redirect_url
			 , try1
			 , try2
			 , try3
			 , try2_minute
			 , try3_minute
			 , use_at
		FROM tb_ens_tmplat_manage
		WHERE tmplat_id = #{tmplatId}
	</select>

	<select id="selectAcceptValidation" resultType="kr.xit.biz.ens.model.EnsDTO$SndngValidation">
		/** ens-oracle-mapper|selectAcceptValidation-Validate용|seojh  */
		SELECT term.ffnlg_code
			 , term.signgu_code
			 , tetm.tmplat_id
			 , tcsm.sndng_ty_code
			 , tcsm.sndng_co
			 , tcsm.sndng_dt
			 , tcsm.clos_dt
			 , tcsd.elctrn_ntic_sndng_detail_id AS unitySndngDetailId
			 , tcsd.main_code
			 , tcsd.ffnlg_code AS ffnlg_code_de
			 , tcsd.signgu_code AS signgu_code_de
			 , ECL_DECRYPT(tcsd.ihidnum) AS ihidnum
			 , tcsd.ihidnum AS encIhidnum
			 , tcsd.mobile_page_cn
			 , tetm.try1
			 , tetm.try2
			 , tetm.try3
			 , 1 AS try_seq
			 , tec.ci
		 FROM tb_elctrn_ntic_sndng tcsm
		 JOIN tb_elctrn_ntic_sndng_detail tcsd
		   ON tcsm.elctrn_ntic_sndng_id = tcsd.elctrn_ntic_sndng_id
		 LEFT JOIN tb_ens_ci tec
		   ON tcsd.elctrn_ntic_sndng_detail_id = tec.unity_sndng_detail_id
		 JOIN tb_ens_tmplat_manage tetm
		   ON tcsm.nht_tmplat_id = tetm.tmplat_id
		 JOIN tb_ens_rlaybsnm_manage term
		   ON (tcsm.signgu_code = term.signgu_code
		       AND tcsm.ffnlg_code = term.ffnlg_code)
		WHERE tcsm.elctrn_ntic_sndng_id = #{unitySndngMastrId}
		  AND tcsm.sndng_process_sttus = #{sndngProcessSttus}
	</select>

	<insert id="insertCi">
		/** ens-oracle-mapper|insertCi-CI자료 생성|seojh  */
		INSERT INTO tb_ens_ci (
			unity_sndng_detail_id,
			ci,
			result_cd,
			message,
			regist_dt,
			register
		) VALUES (
			  #{unitySndngDetailId}
			, NVL(#{ci1}, #{ci2})
			, #{resultCd}
			, #{message}
			, sysdate
			, #{register}
		)
	</insert>
</mapper>
