<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="SysLog">

	<typeAlias alias="egovMap"
		type="egovframework.rte.psl.dataaccess.util.EgovMap" />
	<!-- 시스템로그 VO -->
	<typeAlias alias="sysLog"
		type="egovframework.com.sym.log.lgm.service.SysLog" />

	<!-- 시스템로그 맵 -->
	<resultMap id="SysLogVO" class="egovframework.com.sym.log.lgm.service.SysLog">
		<result property="requstId" column="REQUST_ID" />
		<result property="occrrncDe" column="OCCRRNC_DE" />
		<result property="srvcNm" column="SVC_NM" />
		<result property="methodNm" column="METHOD_NM" />
		<result property="processSeCode" column="PROCESS_SE_CODE" />
		<result property="processSeCodeNm" column="PROCESS_SE_CODE_NM" />
		<result property="processTime" column="PROCESS_TIME" />
		<result property="rqesterIp" column="RQESTER_IP" />
		<result property="rqesterId" column="RQESTER_ID" />
		<result property="rqsterNm" column="RQESTER_NM" />
	</resultMap>

	<!-- 시스템 로그 등록 -->
	<insert id="SysLogDAO.logInsertSysLog" parameterClass="sysLog">
		<![CDATA[
			INSERT INTO COMTNSYSLOG 
				( REQUST_ID
				  , SVC_NM
				  , METHOD_NM
				  , PROCESS_SE_CODE
				  , PROCESS_TIME
				  , RQESTER_ID
				  , RQESTER_IP
				  , OCCRRNC_DE )
			VALUES ( #requstId#
				  , #srvcNm#
				  , #methodNm#
				  , #processSeCode#
				  , #processTime#
				  , #rqesterId#
				  , #rqesterIp#
				  , CONVERT(VARCHAR(8), GETDATE(), 112)
				  )
		]]>
	</insert>

	<!-- 시스템 로그 상세 조회 : 미사용 (COMVNUSERMASTER NOT EXISTS) -->
	<select id="SysLogDAO.selectSysLog" parameterClass="sysLog"
		resultMap="SysLogVO">
		<![CDATA[	
			SELECT 
				  a.REQUST_ID
				, a.OCCRRNC_DE
				, a.SVC_NM
				, a.METHOD_NM
				, a.PROCESS_SE_CODE
				, c.CODE_NM AS PROCESS_SE_CODE_NM
				, a.PROCESS_TIME
				, a.RQESTER_IP
				, a.RQESTER_ID
				, b.USER_NM AS RQESTER_NM
			FROM
				COMTNSYSLOG a
			LEFT OUTER JOIN COMVNUSERMASTER b
				ON a.RQESTER_ID = b.ESNTL_ID
			LEFT OUTER JOIN COMTCCMMNDETAILCODE c
				ON a.PROCESS_SE_CODE = c.CODE
			WHERE 
				c.CODE_ID = 'COM033'
			AND a.REQUST_ID = #requstId#
			]]>
	</select>

	<!-- 시스템 로그 목록 조회 : 미사용 (COMVNUSERMASTER NOT EXISTS) -->
	<select id="SysLogDAO.selectSysLogInf" parameterClass="sysLog"
		resultMap="SysLogVO">
		<![CDATA[	
			SELECT TOP #recordCountPerPage#
				  a.REQUST_ID
				, a.OCCRRNC_DE
				, a.SVC_NM
				, a.METHOD_NM
				, a.PROCESS_SE_CODE
				, c.CODE_NM AS PROCESS_SE_CODE_NM
				, a.PROCESS_TIME
				, a.RQESTER_IP
				, a.RQESTER_ID
				, b.USER_NM AS RQESTER_NM
			FROM
				COMTNSYSLOG a
			LEFT OUTER JOIN COMVNUSERMASTER b
				ON a.RQESTER_ID = b.ESNTL_ID
			LEFT OUTER JOIN COMTCCMMNDETAILCODE c
				ON a.PROCESS_SE_CODE = c.CODE
			WHERE 
				c.CODE_ID = 'COM033'
			]]>
		<isNotEmpty prepend="AND" property="searchWrd">
				<![CDATA[	c.CODE_NM LIKE '%' + #searchWrd# + '%' ]]>
		</isNotEmpty>
		<isNotEmpty prepend="AND" property="searchBgnDe">
				<![CDATA[	a.OCCRRNC_DE BETWEEN #searchBgnDe# AND #searchEndDe# ]]>
		</isNotEmpty>
		     AND A.REQUST_ID NOT IN (
		         SELECT TOP #firstIndex#
		        		  a.REQUST_ID
		        	FROM
		        		COMTNSYSLOG a
		        	LEFT OUTER JOIN COMVNUSERMASTER b
		        		ON a.RQESTER_ID = b.ESNTL_ID
		        	LEFT OUTER JOIN COMTCCMMNDETAILCODE c
		        		ON a.PROCESS_SE_CODE = c.CODE
		        	WHERE 
		        		c.CODE_ID = 'COM033'
		        <isNotEmpty prepend="AND" property="searchWrd">
		        		<![CDATA[	c.CODE_NM LIKE '%' + #searchWrd# + '%' ]]>
		        </isNotEmpty>
		        <isNotEmpty prepend="AND" property="searchBgnDe">
		        		<![CDATA[	a.OCCRRNC_DE BETWEEN #searchBgnDe# AND #searchEndDe# ]]>
		        </isNotEmpty>
				<![CDATA[ ORDER BY a.OCCRRNC_DE DESC ]]>
		     )		
				<![CDATA[ ORDER BY a.OCCRRNC_DE DESC ]]>
	</select>

	<!-- 시스템 로그 총건수 : 미사용 (COMVNUSERMASTER NOT EXISTS) -->
	<select id="SysLogDAO.selectSysLogInfCnt" parameterClass="sysLog"
		resultClass="java.lang.Integer">
		<![CDATA[ 
			SELECT COUNT(a.REQUST_ID) as cnt
			FROM
				COMTNSYSLOG a
			LEFT OUTER JOIN COMVNUSERMASTER b
				ON a.RQESTER_ID = b.ESNTL_ID
			LEFT OUTER JOIN COMTCCMMNDETAILCODE c
				ON a.PROCESS_SE_CODE = c.CODE
			WHERE 
				c.CODE_ID = 'COM033'
			]]>
		<isNotEmpty prepend="AND" property="searchWrd">
				<![CDATA[ 	c.CODE_NM LIKE '%' + #searchWrd# + '%'  ]]>
		</isNotEmpty>
		<isNotEmpty prepend="AND" property="searchBgnDe">
				<![CDATA[ 	a.OCCRRNC_DE BETWEEN #searchBgnDe# AND #searchEndDe#  ]]>
		</isNotEmpty>
	</select>

	<!-- 시스템 로그 전날 로그 요약  등록 : 미사용 (COMTSSYSLOGSUMMARY NOT EXISTS) -->
	<insert id="SysLogDAO.logInsertSysLogSummary">
		<![CDATA[
			INSERT INTO COMTSSYSLOGSUMMARY 
			SELECT b.OCCRRNC_DE 
			     , b.SVC_NM
			     , b.METHOD_NM
			     , SUM(CASE WHEN b.PROCESS_SE_CODE = 'C' THEN 1 ELSE 0 END) AS CREAT_CO
			     , SUM(CASE WHEN b.PROCESS_SE_CODE = 'U' THEN 1 ELSE 0 END) AS UPDT_CO
			     , SUM(CASE WHEN b.PROCESS_SE_CODE = 'R' THEN 1 ELSE 0 END) AS RDCNT
			     , SUM(CASE WHEN b.PROCESS_SE_CODE = 'D' THEN 1 ELSE 0 END) AS DELETE_CO
			     , 0 AS OUTPT_CO
			     , 0 AS ERROR_CO
			  FROM COMTNSYSLOG b
			 WHERE NOT EXISTS (SELECT c.OCCRRNC_DE 
			                     FROM COMTSSYSLOGSUMMARY c
			                    WHERE c.OCCRRNC_DE = CONVERT(VARCHAR(8), DATEADD(D, -1, GETDATE()), 112)
			                  )
			   AND b.OCCRRNC_DE = CONVERT(VARCHAR(8), DATEADD(D, -1, GETDATE()), 112)
			 GROUP BY b.OCCRRNC_DE
				    , b.SVC_NM
				    , b.METHOD_NM
				  
		]]>
	</insert>

	<!-- 시스템 로그 6개월전 로그 삭제 -->
	<delete id="SysLogDAO.logDeleteSysLogSummary">
		<![CDATA[
			DELETE FROM COMTNSYSLOG
			 WHERE OCCRRNC_DE < CONVERT(VARCHAR(8), DATEADD(D, -210, GETDATE()), 112)
				  
		]]>
	</delete>

</sqlMap>

