<?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="i2c.cmm.schedule.dao.ScheduleDAO">                
                
    <select id="listUser" parameterType="Map" resultType="i2c.cmm.vo.LoginVO">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml selectUser] 연계시스템 사용자 정보 목록*/
     SELECT
	      EMPNO 		AS USR_ID
	    , USER_NM 		AS USR_NM    
	    , EMAIL     	AS EMAIL   
	    , TELNO			AS TEL_NUM
	    , MBTLNUM   	AS PHN_NUM	  
	    , DEPT_CODE  	AS DEPT_ID	  
	    , POS_NM 	  	AS POS_NM
	    , EMPNO 	  	AS LOGIN_ID
	    , 'N'           AS USE_STOP_YN
	    , FN_PHONE_NUMBER_MASKING_YN(EMPNO) AS MASKING_YN /* 20171226 마스킹 여부 VALUE SET */ 
	 FROM CNTC_USER@ORAPROD   
	 WHERE TRIM(USER_STATS) = '재직'
	   AND USER_ID IS NOT NULL  	
    </select>       
                
    <delete id="deleteDept" parameterType="Map">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml deleteDept] 부서정보 삭제*/
     DELETE FROM EXT_DEPARTMENT 
     WHERE DEPT_ID IN(
						SELECT
						    DEPT_ID
						FROM
						EXT_DEPARTMENT
						START WITH UP_DEPT_CD = '-1'
						CONNECT BY PRIOR DEPT_ID = UP_DEPT_CD
					 )
    </delete>            
                
    <update id="insertDept" parameterType="Map">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml insertDept] 부서정보 저장 */
     INSERT INTO EXT_DEPARTMENT
	     ( 
	      DEPT_ID
	    , DEPT_CD
	    , DEPT_NM
	    , DEPT_DESCRIP
	    , UP_DEPT_CD
	    , SRT_ORD
	    , BASE_DEPT_CD
	    , USE_YN
	    , CRT_DTTM 
	     )
	 SELECT 
	      DEPT_CODE
	    , DEPT_CODE
	    , DEPT_NM
	    , ALL_DEPT_NM 
	    , DECODE(DEPT_CODE, 'E0000', '-1', UP_DEPT_CODE) 
	    , DEPT_ORDR 
	    , DEPTH
	    , 'Y'
	    , DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
	  FROM CNTC_DEPT@ORAPROD
	 WHERE DEPT_CODE IS NOT NULL              
    </update>    
    
    <update id="insertUser" parameterType="i2c.cmm.vo.LoginVO">
       /* [i2c.cmm.schedule.dao.ScheduleDAO.xml insertUser] 사용자정보 저장 */      
	      MERGE   INTO SNS_USER SU
	        USING DUAL       
	        ON (SU.USR_ID = #{usr_id})
	        WHEN MATCHED THEN
	            UPDATE SET
	            		SU.USR_NM       = #{usr_nm}    
	                  , SU.LOGIN_ID     = #{login_id} 
	                  , SU.EMAIL      	= #{email}
	            	  , SU.TEL_NUM      = #{tel_num}
	            	  , SU.PHN_NUM      = #{phn_num}               	  
	            	  , SU.DEPT_ID      = #{dept_id}
	            	  , SU.DEPT_NM      = FN_GET_DEPT_NM(#{dept_id})
	            	  , SU.POS_NM       = #{pos_nm}
	            	  , SU.USE_STOP_YN  = #{use_stop_yn}            
	                  , SU.AUTH_CODE    = DECODE(#{dept_id},'E2150','ROLE_EMPPR','ROLE_EMP')
	                  , SU.MOD_DTTM     = DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')   
	                  , SU.MASKING_YN   = #{masking_yn}               /* 20171226 마스킹 여부 VALUE SET */ 
	                  , SU.OUTS_USR_YN  = 'N'                         /* 연계사용자 : 외부사용자 'N' default */
	        WHEN NOT MATCHED THEN
	            INSERT (
	            		SU.USR_ID
	                  , SU.USR_NM                  
	                  , SU.LOGIN_ID
	                  , SU.LOGIN_PASSWD
	                  , SU.USE_STOP_YN
	                  , SU.EMAIL
	                  , SU.TEL_NUM
	                  , SU.PHN_NUM                  
	                  , SU.DEPT_ID
	                  , SU.DEPT_NM
	                  , SU.POS_NM	            	      
	            	  , SU.AUTH_CODE	  
	                  , SU.APPROVAL
	                  , SU.APPROVAL_DTTM
	                  , SU.CRT_DTTM 
	                  , SU.MASKING_YN
	                  , SU.APLCTN_ID
	                  , SU.OUTS_USR_YN                         /* 연계사용자 : 외부사용자 'N' default */
	                   )
	            VALUES(
	            		#{usr_id}
	                  , #{usr_nm}                    
	                  , #{login_id}  
	                  , #{login_passwd}  
	                  , #{use_stop_yn}
	                  , #{email}
	                  , #{tel_num}
	                  , #{phn_num}                   
	                  , #{dept_id}
	                  , FN_GET_DEPT_NM(#{dept_id})
	                  , #{pos_nm}            	    
	            	  , DECODE(#{dept_id},'E2150','ROLE_EMPPR','ROLE_EMP')  
	                  , 'Y'
	                  , DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
	                  , DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')       
	                  , #{masking_yn}                         /* 20171226 마스킹 여부 VALUE SET */ 
	                  , #{aplctn_id}                          /* 20180807 App Id insert만      */ 
	                  , 'N'                                   /* 연계사용자 : 외부사용자 'N' default */
	                   )  
    </update>    
        
    <delete id="deleteRetireUser" parameterType="Map">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml deleteRetireUser] 퇴직자 삭제*/
    DELETE FROM SNS_USER 
    	  WHERE LOGIN_ID IN(
							SELECT
							    EMPNO
							FROM CNTC_USER@ORAPROD
							WHERE USER_STATS = '퇴직'
						 )
    </delete>
    
    <update id="updateAdminAuth" parameterType="Map">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml updateAdminAuth] 사용자 권한정보 업데이트 */
     UPDATE SNS_USER SU 
		SET ( AUTH_CODE ) = ( SELECT AUTHOR_CODE 
		                        FROM COMTNEMPLYRSCRTYESTBS CS
		                       WHERE CS.SCRTY_DTRMN_TRGET_ID = SU.USR_ID
		                         AND SCRTY_DTRMN_TRGET_ID IS NOT NULL
                                       AND AUTHOR_CODE IS NOT NULL
		                    )
	 WHERE EXISTS (SELECT 'X' FROM COMTNEMPLYRSCRTYESTBS CS WHERE CS.SCRTY_DTRMN_TRGET_ID = SU.USR_ID)
    </update>
    
    <delete id="deleteAuth" parameterType="Map">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml deleteAuth] 사용자 권한정보 삭제*/
     DELETE FROM COMTNEMPLYRSCRTYESTBS
    </delete>
    
    <update id="insertAuth" parameterType="Map">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml insertAuth] 사용자 권한정보 저장 */
     INSERT INTO COMTNEMPLYRSCRTYESTBS
	     ( 
	      SCRTY_DTRMN_TRGET_ID
		, AUTHOR_CODE
	     )
	 SELECT 
	      USR_ID
	    , AUTH_CODE
	 FROM SNS_USER                         
    </update>  
    
    <select id="listNewUser" parameterType="Map" resultType="i2c.cmm.vo.LoginVO">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml listNewUser] 신규 가입자*/
     SELECT
	      USR_ID	    
	 FROM SNS_USER 
	 WHERE APPROVAL = 'Y'
	   AND SUBSTR(APPROVAL_DTTM,0,8) = TO_CHAR(SYSDATE,'YYYYMMDD')	
	   AND APPROVAL_DTTM IS NOT NULL
    </select>    
    
    <update id="dtlsHisSchedule" parameterType="Map">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml dtlsHisSchedule] i2sema 메시지 사용정보 */
     	INSERT INTO DTLS_HIS (
			 USE_MONTH
			,USR_ID
			,MBER_NO
			,ORG_ID
			,MSG_TY
			,ALL_CNT
			,SUCCESS_CNT
		)
		SELECT
		     #{dateStr} USE_MONTH
		    ,SU.USR_ID USR_ID
		    ,SU.MBER_NO MBER_NO
		    ,SU.ORG_SID ORG_ID
		    ,SCC.CD MSG_TY
				,IFNULL(case cd
									WHEN 'MSGTY01' THEN (select sum(ms.req_sms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY02' THEN (select sum(ms.req_lms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY03' THEN (select sum(ms.req_mms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY04' THEN (select sum(ms.req_ntt) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY05' THEN (select sum(ms.req_frt_t) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY06' THEN (select sum(ms.req_frt_i) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
					    	END,0) AS ALL_CNT
				,IFNULL(case cd
									WHEN 'MSGTY01' THEN (select sum(ms.sms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY02' THEN (select sum(ms.lms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY03' THEN (select sum(ms.mms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY04' THEN (select sum(ms.ntt) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY05' THEN (select sum(ms.frt_t) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
							    WHEN 'MSGTY06' THEN (select sum(ms.frt_i) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
						    END,0) AS SUCCESS_CNT
		FROM SNS_COMMON_CODE SCC
		  	,SNS_USER SU
		    ,SUB_MBER_INFO SMI
		WHERE SU.USR_ID = SMI.USR_ID
			AND SU.AUTH_CODE != 'ROLE_ADMIN'
			AND SU.MBER_NO != 0
			AND SU.MBER_NO IS NOT NULL
			AND SU.ORG_SID IS NOT NULL
			AND SU.ORG_SID != ''
			AND SCC.UP_CD = 'MSG_TY'
		ORDER BY SU.MBER_NO, SU.ORG_SID DESC, SCC.CD;
    </update>
    
    <update id="dtlsHisScheduleSub" parameterType="Map">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml dtlsHisSchedule] i2sema 메시지 사용정보 update */
     	UPDATE
     		DTLS_HIS DS
     		,(
     			SELECT ids.ORG_ID, ids.MSG_TY
					,CASE ids.MSG_TY WHEN 'MSGTY04' THEN iml.CHRGE ELSE 0 END CHRGE
					,ifNULL(CASE ids.MSG_TY
						WHEN 'MSGTY01' THEN (
							CASE
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 100000 THEN iml.SMS
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 100000 AND ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 500000 THEN iml.SMS01
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 500000 THEN iml.SMS02
							END)
						WHEN 'MSGTY02' THEN (
							CASE
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 100000 THEN iml.LMS
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 100000 AND ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 500000 THEN iml.LMS01
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 500000 THEN iml.LMS02
							END)
						WHEN 'MSGTY03' THEN (
							CASE
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 100000 THEN iml.MMS
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 100000 AND ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 500000 THEN iml.MMS01
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 500000 THEN iml.MMS02
							END)
						WHEN 'MSGTY04' THEN (
							CASE
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 100000 THEN iml.NTCN_TALK
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 100000 AND ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 500000 THEN iml.NTCN_TALK01
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 500000 THEN iml.NTCN_TALK02
							END)
						WHEN 'MSGTY05' THEN (
							CASE
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 100000 THEN iml.FRN_TALK
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 100000 AND ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 500000 THEN iml.FRN_TALK01
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 500000 THEN iml.FRN_TALK02
							END)
						WHEN 'MSGTY06' THEN (
							CASE
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 100000 THEN iml.FRN_TALK_IMAGE
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 100000 AND ids.ALL_SUCCESS_CNT <![CDATA[<=]]> 500000 THEN iml.FRN_TALK_IMAGE01
								WHEN ids.ALL_SUCCESS_CNT <![CDATA[>]]> 500000 THEN iml.FRN_TALK_IMAGE02
							END)
					 END,0) UNTPC
				FROM (
					SELECT #{dateStr} USE_MONTH
								,SU.USR_ID USR_ID
								,SU.MBER_NO MBER_NO
								,SU.ORG_SID ORG_ID
								,SCC.CD MSG_TY
								,IFNULL(CASE SCC.CD
									WHEN 'MSGTY01' THEN (select sum(ms.req_sms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY02' THEN (select sum(ms.req_lms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY03' THEN (select sum(ms.req_mms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY04' THEN (select sum(ms.req_ntt) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY05' THEN (select sum(ms.req_frt_t) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY06' THEN (select sum(ms.req_frt_i) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									END,0) AS ALL_CNT
								,IFNULL(CASE SCC.CD
									WHEN 'MSGTY01' THEN (select sum(ms.sms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY02' THEN (select sum(ms.lms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY03' THEN (select sum(ms.mms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY04' THEN (select sum(ms.ntt) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY05' THEN (select sum(ms.frt_t) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY06' THEN (select sum(ms.frt_i) from msg_statistics ms where ms.org_id = SU.org_sid and ms.dept = '' and ms.agent_version = '' and ms.req_date like CONCAT(#{dateStr}, '%'))
									END,0) AS SUCCESS_CNT
								,IFNULL(CASE SCC.CD
									WHEN 'MSGTY01' THEN (select sum(ms.sms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY02' THEN (select sum(ms.lms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY03' THEN (select sum(ms.mms) from msg_statistics ms where ms.org_id = SU.org_sid and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY04' THEN (select sum(ms.ntt) from msg_statistics ms where ms.org_id = SU.org_sid and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY05' THEN (select sum(ms.frt_t) from msg_statistics ms where ms.org_id = SU.org_sid and ms.req_date like CONCAT(#{dateStr}, '%'))
									WHEN 'MSGTY06' THEN (select sum(ms.frt_i) from msg_statistics ms where ms.org_id = SU.org_sid and ms.req_date like CONCAT(#{dateStr}, '%'))
									END,0) AS ALL_SUCCESS_CNT
					FROM SNS_COMMON_CODE SCC
							,SNS_USER SU
							,SUB_MBER_INFO SMI
					WHERE SU.USR_ID = SMI.USR_ID
						AND SU.AUTH_CODE != 'ROLE_ADMIN'
						AND SU.MBER_NO != 0
						AND SU.MBER_NO IS NOT NULL
						AND SU.ORG_SID IS NOT NULL
						AND SU.ORG_SID != ''
						AND SCC.UP_CD = 'MSG_TY'
					ORDER BY SU.MBER_NO, SU.ORG_SID DESC, SCC.CD
				) ids
     	    , sub_mber_info ismi
     	    , mber_level iml
				WHERE ids.USR_ID = ismi.USR_ID
				AND ismi.LEVEL_CD = iml.LEVEL_CD
     		) UPT
		SET
			 DS.AMOUNT = DS.SUCCESS_CNT * UPT.UNTPC
			,DS.CHRGE = UPT.CHRGE
			,DS.SUM_CHRGE = DS.SUCCESS_CNT * UPT.UNTPC
			,DS.UNTPC = UPT.UNTPC
			WHERE DS.USE_MONTH = #{dateStr}
			AND DS.ORG_ID = UPT.ORG_ID
			AND DS.MSG_TY = UPT.MSG_TY
    </update> 
    
    <select id="validationTable" parameterType="Map"   resultType="int">
	 /* [i2c.cmm.schedule.dao.ScheduleDAO.xml validationTable] 전송로그 테이블 존재유무 체크 */   
		SELECT COUNT(TABLE_NAME) 
		  FROM INFORMATION_SCHEMA.TABLES
		 WHERE TABLE_NAME = #{log_table}
	</select>	
    
    <sql id="dateScheduleQuery">
    	<if test="batch_type == 'TIME'">
			AND DATE_FORMAT(DATE_CLIENT_REQ,'%Y%m%d') BETWEEN DATE_FORMAT(NOW()-INTERVAL 3 DAY,'%Y%m%d') AND DATE_FORMAT(DATE_CLIENT_REQ,'%Y%m%d')
		</if>
    </sql>
    
    <update id="updateTdataCnt" parameterType="Map">
     /* [i2c.cmm.schedule.dao.ScheduleDAO.xml updateSmsTdataCnt] SMS, MMS, LMS T_DATA 전송량 업데이트 */
		<if test="send_type == 'EMMA'">
			UPDATE
				T_DATA TD
				,(
					SELECT 
						 LT.SEQ SEQ
						,LT.SERVICE_TYPE SERVICE_TYPE
						,CASE WHEN LTS.SUCCESS_CNT IS NULL THEN 0 ELSE LTS.SUCCESS_CNT END SUCCESS_CNT
						,CASE WHEN LTF.FAIL_CNT IS NULL THEN 0 ELSE LTF.FAIL_CNT END FAIL_CNT
					FROM 
						(
							SELECT SEQ, SERVICE_TYPE
							FROM ${log_table}
							WHERE 1=1
							<include refid="dateScheduleQuery"/>
							GROUP BY SEQ
						) LT LEFT JOIN
						(
							SELECT SEQ, COUNT(SEQ) SUCCESS_CNT
							FROM ${log_table}
							WHERE (MT_REPORT_CODE_IB = '1000' OR MT_REPORT_CODE_IB IS NULL OR MT_REPORT_CODE_IB = '')
							<include refid="dateScheduleQuery"/>		
							GROUP BY SEQ
						) LTS ON LT.SEQ = LTS.SEQ LEFT JOIN
						(
							SELECT SEQ, COUNT(SEQ) FAIL_CNT
							FROM ${log_table}
							WHERE (MT_REPORT_CODE_IB != '1000' AND MT_REPORT_CODE_IB IS NOT NULL AND MT_REPORT_CODE_IB != '')
							<include refid="dateScheduleQuery"/>		
							GROUP BY SEQ
						 ) LTF ON LT.SEQ = LTF.SEQ
				) CNT
			SET
				 TD.SUCCESS_CNT =		/* 정상발송일 때 CNT.SUCCESS_CNT, FAILBACK일 때 기존값 유지 */
					CASE 
						WHEN TD.MSG_TYPE IS NULL THEN CNT.SUCCESS_CNT
						ELSE TD.SUCCESS_CNT
					END
				,TD.FAIL_CNT = 			/* 정상발송일 때 CNT.FAIL_CNT, FAILBACK일 때 기존값 - CNT.SUCCESS_CNT */
					CASE 
						WHEN TD.MSG_TYPE IS NOT NULL THEN (TD.FAIL_CNT-CNT.SUCCESS_CNT)
						ELSE CNT.FAIL_CNT
					END
				,TD.FAILBACK_CNT =		/* 정상발송일 때 기존값 유지, FAILBACK일 때 CNT.SUCCESS_CNT */
					CASE 
						WHEN TD.MSG_TYPE IS NOT NULL THEN CNT.SUCCESS_CNT
						ELSE TD.FAILBACK_CNT
					END
		    	,TD.SERVICE_TYPE = 		/* 정상발송일 때 기존값 유지, FAILBACK일 때 CNT.SUCCESS_CNT가 0이면 NULL 0이 아니면 CNT.SERVICE_TYPE */
		    		CASE
		    			WHEN TD.MSG_TYPE IS NOT NULL AND CNT.SUCCESS_CNT = 0 THEN NULL
		    			WHEN TD.MSG_TYPE IS NOT NULL AND CNT.SUCCESS_CNT > 0 THEN CNT.SERVICE_TYPE
		    			ELSE TD.SERVICE_TYPE
		    		END
     	</if>
     	<if test="send_type == 'ITA'">
			UPDATE 
				T_DATA TD
				,(
					SELECT
						 LT.SEQ SEQ
						,CASE WHEN LTS.SUCCESS_CNT IS NULL THEN 0 ELSE LTS.SUCCESS_CNT END SUCCESS_CNT
						,CASE WHEN LTF.FAIL_CNT IS NULL THEN 0 ELSE LTF.FAIL_CNT END FAIL_CNT
					FROM
						(
							SELECT SEQ
							FROM ${log_table}
							WHERE 1=1
							<include refid="dateScheduleQuery"/>
							GROUP BY SEQ
						) LT LEFT JOIN
				    	(
					    	SELECT SEQ, COUNT(SEQ) SUCCESS_CNT
						    FROM ${log_table}
						    WHERE (REPORT_CODE = '1000' OR REPORT_CODE IS NULL OR REPORT_CODE = '')
						    <include refid="dateScheduleQuery"/>
						    GROUP BY SEQ
					  	) LTS ON LT.SEQ = LTS.SEQ LEFT JOIN
					   (
							SELECT SEQ, COUNT(SEQ) FAIL_CNT
							FROM ${log_table}
							WHERE (REPORT_CODE != '1000' AND REPORT_CODE IS NOT NULL AND REPORT_CODE != '')
							<include refid="dateScheduleQuery"/>
							GROUP BY SEQ
						) LTF ON LT.SEQ = LTF.SEQ
				) CNT
			SET
				 TD.SUCCESS_CNT 	= CNT.SUCCESS_CNT 
				,TD.FAIL_CNT 		= CNT.FAIL_CNT
				,TD.FAILBACK_CNT	= 0
     	</if>
		WHERE TD.SEQ = CNT.SEQ
		<if test="batch_type == 'TIME'">
			AND DATE_FORMAT(TD.DATE_CLIENT_REQ,'%Y%m%d') BETWEEN DATE_FORMAT(NOW()-INTERVAL 3 DAY,'%Y%m%d') AND DATE_FORMAT(TD.DATE_CLIENT_REQ,'%Y%m%d')
		</if>
    </update>

	<!-- <select id="chkMsgLimit" parameterType="i2c.cmm.schedule.vo.MessageUsageVO" resultType="i2c.cmm.schedule.vo.MessageUsageVO">
		SELECT
			 MSG_TYPE
			,MSG_LIMIT
			,MSG_ALERT
			,EXTRA_ALERT
		FROM MSG_LIMIT_SETTING
		WHERE
			LIMIT_TYPE = #{limit_type}
	</select> -->
	
	<!-- <select id="chkMsgCnt" parameterType="i2c.cmm.schedule.vo.MessageUsageVO" resultType="i2c.cmm.schedule.vo.MessageUsageVO">
		SELECT
			COUNT(0)
		FROM #{table_name}
		WHERE 1=1
		<if test='limit_type == "D"'>
			AND CLIENT_DATE_REQ <![CDATA[>=]]> CURDATE()
		</if>
	</select> -->

	<!-- <sql id="insertLimitVal">
		<if test='limit_type == "D"'>
			<if test='msg_type == "SMT"'>
				(DATE_FORMAT(SYSDATE(),'%Y%m%d'),0,'ROLE_SYSADMIN',0,0,0,0,0,0,${extra_alert},0,0)
			</if>
			<if test='msg_type == "MMT"'>
				(DATE_FORMAT(SYSDATE(),'%Y%m%d'),0,'ROLE_SYSADMIN',0,0,0,0,0,0,0,${extra_alert},0)
			</if>
			<if test='msg_type == "ITA"'>
				(DATE_FORMAT(SYSDATE(),'%Y%m%d'),0,'ROLE_SYSADMIN',0,0,0,0,0,0,0,0,${extra_alert})
			</if>
		</if>
		<if test='limit_type == "M"'>
			<if test='msg_type == "SMT"'>
				(DATE_FORMAT(SYSDATE(),'%Y%m'),0,'ROLE_SYSADMIN',0,0,0,0,0,0,${extra_alert},0,0)
			</if>
			<if test='msg_type == "MMT"'>
				(DATE_FORMAT(SYSDATE(),'%Y%m'),0,'ROLE_SYSADMIN',0,0,0,0,0,0,0,${extra_alert},0)
			</if>
			<if test='msg_type == "ITA"'>
				(DATE_FORMAT(SYSDATE(),'%Y%m'),0,'ROLE_SYSADMIN',0,0,0,0,0,0,0,0,${extra_alert})
			</if>
		</if>
	</sql>
	
	<sql id="updateLimitVal">
		<if test='msg_type == "SMT"'>
			SMS_LIMIT = SMS_LIMIT + ${extra_alert}
		</if>
		<if test='msg_type == "MMT"'>
			LMS_MMS_LIMIT = LMS_MMS_LIMIT + ${extra_alert}
		</if>
		<if test='msg_type == "ITA"'>
			ITA_LIMIT = ITA_LIMIT + ${extra_alert}
		</if>
	</sql>

	<insert id="updateLimit" parameterType="i2c.cmm.schedule.vo.MessageUsageVO">
		INSERT INTO
			MSG_SEND_LIMIT (SEND_DATE, MBER_NO, ORG_ID, SMS, LMS, MMS, FRT_T, FRT_I, NTT, SMS_LIMIT, LMS_MMS_LIMIT, ITA_LIMIT)
		VALUES
			<include refid="insertLimitVal"/>
		ON DUPLICATE KEY UPDATE
			<include refid="updateLimitVal"/>
	</insert> -->
	
</mapper>