<?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.epst.dao.EpostRcptRsltMapper">

	<!-- 전자우편 접수 결과 정보 매퍼
	 ========== 변경 이력 ==========
	 2023-12-12	JoJH 최초 작성
	 ============================ -->

	<resultMap id="epostRcptRsltRow" type="cokr.xit.fims.epst.EpostRcptRslt"> <!-- 전자우편 접수 결과 -->
		<result property="rcptRsltId"	column="RCPT_RSLT_ID" />	<!-- 접수 결과 ID -->
		<result property="conOrg"		column="CON_ORG" />			<!-- 외부기관구분코드 -->
		<result property="relorsectCd"	column="RELORSECT_CD" />	<!-- 결제부서코드 -->
		<result property="reletcdata"	column="RELETCDATA" />		<!-- 발송인별추가데이터 -->
		<result property="extriRegymd"	column="EXTRI_REGYMD" />	<!-- 기관발송일자 -->
		<result property="rceptYmd"		column="RCEPT_YMD" />		<!-- 접수일자 -->
		<result property="rceptId"		column="RCEPT_ID" />		<!-- 접수우체국국기호 -->
		<result property="divKb"		column="DIV_KB" />			<!-- 취급구분 -->
		<result property="rceptCnt"		column="RCEPT_CNT" />		<!-- 발송수량 -->
		<result property="rceptAmt"		column="RCEPT_AMT" />		<!-- 결제금액 -->
		<result property="usefeeAmt"	column="USEFEE_AMT" />		<!-- 제작수수료 -->
		<result property="totpostPrc"	column="TOTPOST_PRC" />		<!-- 우편요금 -->
		<result property="jobCd"		column="JOB_CD" />			<!-- 작업 코드 -->
		<result property="createdAt"	column="REG_DT" />			<!-- 등록 일시 -->
		<result property="createdBy"	column="RGTR" />			<!-- 등록자 -->
		<result property="lastModified"	column="MDFCN_DT" />		<!-- 수정 일시 -->
		<result property="modifiedBy"	column="MDFR" />			<!-- 수정자 -->
	</resultMap>

    <sql id="select">
        SELECT ERR.RCPT_RSLT_ID         /* 접수 결과 ID */
             , ERR.CON_ORG              /* 외부기관구분코드 */
             , ERR.RELORSECT_CD         /* 결제부서코드 */
             , ERR.RELETCDATA           /* 발송인별추가데이터 */
             , ERR.EXTRI_REGYMD         /* 기관발송일자 */
             , ERR.RCEPT_YMD            /* 접수일자 */
             , ERR.RCEPT_ID             /* 접수우체국국기호 */
             , ERR.DIV_KB               /* 취급구분 */
             , ERR.RCEPT_CNT            /* 발송수량 */
             , ERR.RCEPT_AMT            /* 결제금액 */
             , ERR.USEFEE_AMT           /* 제작수수료 */
             , ERR.TOTPOST_PRC          /* 우편요금 */
             , ERR.JOB_CD               /* 작업 코드 */
             , ERR.REG_DT               /* 등록 일시 */
             , ERR.RGTR                 /* 등록자 */
             , (SELECT GET_CODE_NM('EGP002', ERR.DIV_KB) FROM DUAL)             AS DIV_KB_NM    /* 취급 구분 명 */
             , (SELECT GET_CODE_NM('FIM082', SUBSTR(ERR.JOB_CD,3,1)) FROM DUAL) AS JOB_CD3_NM   /* 작업 코드3 명 */
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = ERR.RGTR)       AS RGTR_NM      /* 등록자 명 */
          FROM TB_EPOST_RCPT_RSLT       ERR
    </sql>

    <select id="selectEpostRcptRsltList" parameterType="map" resultType="dataobject">/* 전자우편 접수 결과 목록 조회(epostRcptRsltMapper.selectEpostRcptRsltList) */
        <include refid="utility.paging-prefix" />
        <include refid="select" />
         WHERE ERR.CON_ORG      = #{conOrg}             /* 외부기관구분코드 */
           AND ERR.RELORSECT_CD = #{relorsectCd}        /* 결제부서코드 */
        <if test="schExtriRegymdFrom != null">
           AND ERR.EXTRI_REGYMD <![CDATA[>=]]> #{schExtriRegymdFrom}    /* 기관발송일자 시작 */
        </if>
        <if test="schExtriRegymdTo != null">
           AND ERR.EXTRI_REGYMD <![CDATA[<=]]> #{schExtriRegymdTo}      /* 기관발송일자 종료 */
        </if>
        <if test="schRceptYmdFrom != null">
           AND ERR.RCEPT_YMD <![CDATA[>=]]> #{schRceptYmdFrom}          /* 접수 일자 시작 */
        </if>
        <if test="schRceptYmdTo != null">
           AND ERR.RCEPT_YMD <![CDATA[<=]]> #{schRceptYmdTo}            /* 접수 일자 종료 */
        </if>
        <choose>
            <when test="schRegDateOpt == 'regDt'">
                <if test="schRegDateFrom != null">
           AND ERR.REG_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000')     /* 등록 일자 시작 */
                </if>
                <if test="schRegDateTo != null">
           AND ERR.REG_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959')       /* 등록 일자 종료 */
                </if>
            </when>
            <when test="schRegDateOpt == 'mdfcnDt'">
                <if test="schRegDateFrom != null">
           AND ERR.MDFCN_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000')   /* 수정 일자 시작 */
                </if>
                <if test="schRegDateTo != null">
           AND ERR.MDFCN_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959')     /* 수정 일자 종료 */
                </if>
            </when>
            <otherwise>
            </otherwise>
        </choose>
        <choose>
            <when test="schRgtrOpt == 'rgtr'">
                <if test="schRgtrCd != null">
           AND ERR.RGTR         =  #{schRgtrCd}         /* 등록자 코드 */
                </if>
            </when>
            <when test="schRgtrOpt == 'mdfr'">
                <if test="schRgtrCd != null">
           AND ERR.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 == 'reletcdata'"> ERR.RELETCDATA </when>
                        <when test="by == 'extriRegymd'"> ERR.EXTRI_REGYMD </when>
                        <when test="by == 'rceptYmd'"> ERR.RCEPT_YMD </when>
                        <when test="by == 'rceptId'"> ERR.RCEPT_ID </when>
                        <when test="by == 'divKb'"> ERR.DIV_KB </when>
                        <when test="by == 'rceptCnt'"> ERR.RCEPT_CNT </when>
                        <when test="by == 'rceptAmt'"> ERR.RCEPT_AMT </when>
                        <when test="by == 'usefeeAmt'"> ERR.USEFEE_AMT </when>
                        <when test="by == 'totpostPrc'"> ERR.TOTPOST_PRC </when>
                        <when test="by == 'jobCd'"> ERR.JOB_CD </when>
                    </choose>
                    <include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
                </when>
                <otherwise>
                </otherwise>
            </choose>
        </if>
        <include refid="utility.orderBy" />
        <include refid="utility.paging-suffix" />
    </select>

    <select id="selectEpostRcptRslts" parameterType="map" resultType="dataobject">/* 전자우편 접수 결과 객체 가져오기(epostRcptRsltMapper.selectEpostRcptRslts) */
        <include refid="select" />
        <where>
            <if test="rcptRsltId != null">
           AND ERR.RCPT_RSLT_ID = #{rcptRsltId}         /* 접수 결과 ID */
            </if>
            <if test="conOrg != null">
           AND ERR.CON_ORG      = #{conOrg}             /* 외부기관구분코드 */
            </if>
            <if test="relorsectCd != null">
           AND ERR.RELORSECT_CD = #{relorsectCd}        /* 결제부서코드 */
            </if>
            <if test="reletcdata != null">
           AND ERR.RELETCDATA   = #{reletcdata}         /* 발송인별추가데이터 */
            </if>
        </where>
        <include refid="utility.orderBy" />
    </select>

    <select id="selectEpostRcptRsltSum" parameterType="map" resultType="dataobject">/* 전자우편 접수 결과 합계 조회(epostRcptRsltMapper.selectEpostRcptRsltSum) */
        SELECT DIV_KB                               /* 취급 구분 */
             , SUM(RCEPT_CNT)   AS RCEPT_CNT        /* 발송수량 */
             , SUM(RCEPT_AMT)   AS RCEPT_AMT        /* 결제금액 */
             , SUM(USEFEE_AMT)  AS USEFEE_AMT       /* 제작수수료 */
             , SUM(TOTPOST_PRC) AS TOTPOST_PRC      /* 우편요금 */
             , (SELECT GET_CODE_NM('EGP002', DIV_KB) FROM DUAL) AS DIV_KB_NM    /* 취급 구분 명 */
          FROM TB_EPOST_RCPT_RSLT
         WHERE CON_ORG          = #{conOrg}         /* 외부기관구분코드 */
           AND RELORSECT_CD     = #{relorsectCd}    /* 결제부서코드 */
        <if test="schExtriRegymdFrom != null">
           AND EXTRI_REGYMD <![CDATA[>=]]> #{schExtriRegymdFrom}        /* 기관발송일자 시작 */
        </if>
        <if test="schExtriRegymdTo != null">
           AND EXTRI_REGYMD <![CDATA[<=]]> #{schExtriRegymdTo}          /* 기관발송일자 종료 */
        </if>
        <if test="schRceptYmdFrom != null">
           AND RCEPT_YMD <![CDATA[>=]]> #{schRceptYmdFrom}              /* 접수 일자 시작 */
        </if>
        <if test="schRceptYmdTo != null">
           AND RCEPT_YMD <![CDATA[<=]]> #{schRceptYmdTo}                /* 접수 일자 종료 */
        </if>
        <choose>
            <when test="schRegDateOpt == 'regDt'">
                <if test="schRegDateFrom != null">
           AND SUBSTR(REG_DT,1,8) <![CDATA[>=]]> #{schRegDateFrom}      /* 등록 일자 시작 */
                </if>
                <if test="schRegDateTo != null">
           AND SUBSTR(REG_DT,1,8) <![CDATA[<=]]> #{schRegDateTo}        /* 등록 일자 종료 */
                </if>
            </when>
            <when test="schRegDateOpt == 'mdfcnDt'">
                <if test="schRegDateFrom != null">
           AND SUBSTR(MDFCN_DT,1,8) <![CDATA[>=]]> #{schRegDateFrom}    /* 수정 일자 시작 */
                </if>
                <if test="schRegDateTo != null">
           AND SUBSTR(MDFCN_DT,1,8) <![CDATA[<=]]> #{schRegDateTo}      /* 수정 일자 종료 */
                </if>
            </when>
            <otherwise>
            </otherwise>
        </choose>
        <choose>
            <when test="schRgtrOpt == 'rgtr'">
                <if test="schRgtrCd != null">
           AND RGTR             =  #{schRgtrCd} /* 등록자 코드 */
                </if>
            </when>
            <when test="schRgtrOpt == 'mdfr'">
                <if test="schRgtrCd != null">
           AND 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 == 'reletcdata'"> RELETCDATA </when>
                        <when test="by == 'extriRegymd'"> EXTRI_REGYMD </when>
                        <when test="by == 'rceptYmd'"> RCEPT_YMD </when>
                        <when test="by == 'rceptId'"> RCEPT_ID </when>
                        <when test="by == 'divKb'"> DIV_KB </when>
                        <when test="by == 'rceptCnt'"> RCEPT_CNT </when>
                        <when test="by == 'rceptAmt'"> RCEPT_AMT </when>
                        <when test="by == 'usefeeAmt'"> USEFEE_AMT </when>
                        <when test="by == 'totpostPrc'"> TOTPOST_PRC </when>
                        <when test="by == 'jobCd'"> JOB_CD </when>
                    </choose>
                    <include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
                </when>
                <otherwise>
                </otherwise>
            </choose>
        </if>
         GROUP BY DIV_KB
    </select>

    <insert id="insertEpostRcptRslt" parameterType="map">/* 전자우편 접수 결과 등록(epostRcptRsltMapper.insertEpostRcptRslt) */
        INSERT
          INTO TB_EPOST_RCPT_RSLT (
               RCPT_RSLT_ID             /* 접수 결과 ID */
             , CON_ORG                  /* 외부기관구분코드 */
             , RELORSECT_CD             /* 결제부서코드 */
             , RELETCDATA               /* 발송인별추가데이터 */
             , EXTRI_REGYMD             /* 기관발송일자 */
             , RCEPT_YMD                /* 접수일자 */
             , RCEPT_ID                 /* 접수우체국국기호 */
             , DIV_KB                   /* 취급구분 */
             , RCEPT_CNT                /* 발송수량 */
             , RCEPT_AMT                /* 결제금액 */
             , USEFEE_AMT               /* 제작수수료 */
             , TOTPOST_PRC              /* 우편요금 */
             , JOB_CD                   /* 작업 코드 */
             , REG_DT                   /* 등록 일시 */
             , RGTR                     /* 등록자 */
             , MDFCN_DT                 /* 수정 일시 */
             , MDFR                     /* 수정자 */
      ) VALUES (
               #{epostRcptRslt.rcptRsltId}      /* 접수 결과 ID */
             , #{epostRcptRslt.conOrg}          /* 외부기관구분코드 */
             , #{epostRcptRslt.relorsectCd}     /* 결제부서코드 */
             , #{epostRcptRslt.reletcdata}      /* 발송인별추가데이터 */
             , #{epostRcptRslt.extriRegymd}     /* 기관발송일자 */
             , #{epostRcptRslt.rceptYmd}        /* 접수일자 */
             , #{epostRcptRslt.rceptId}         /* 접수우체국국기호 */
             , #{epostRcptRslt.divKb}           /* 취급구분 */
             , #{epostRcptRslt.rceptCnt}        /* 발송수량 */
             , #{epostRcptRslt.rceptAmt}        /* 결제금액 */
             , #{epostRcptRslt.usefeeAmt}       /* 제작수수료 */
             , #{epostRcptRslt.totpostPrc}      /* 우편요금 */
             , #{epostRcptRslt.jobCd}           /* 작업 코드 */
             , <include refid="utility.now" />  /* 등록 일시 */
             , #{epostRcptRslt.createdBy}       /* 등록자 */
             , <include refid="utility.now" />  /* 수정 일시 */
             , #{epostRcptRslt.modifiedBy}      /* 수정자 */
        )
    </insert>

    <update id="updateEpostRcptRslt" parameterType="map">/* 전자우편 접수 결과 수정(epostRcptRsltMapper.updateEpostRcptRslt) */
        UPDATE TB_EPOST_RCPT_RSLT
           SET CON_ORG          = #{epostRcptRslt.conOrg}               /* 외부기관구분코드 */
             , RELORSECT_CD     = #{epostRcptRslt.relorsectCd}          /* 결제부서코드 */
             , RELETCDATA       = #{epostRcptRslt.reletcdata}           /* 발송인별추가데이터 */
             , EXTRI_REGYMD     = #{epostRcptRslt.extriRegymd}          /* 기관발송일자 */
             , RCEPT_YMD        = #{epostRcptRslt.rceptYmd}             /* 접수일자 */
             , RCEPT_ID         = #{epostRcptRslt.rceptId}              /* 접수우체국국기호 */
             , DIV_KB           = #{epostRcptRslt.divKb}                /* 취급구분 */
             , RCEPT_CNT        = #{epostRcptRslt.rceptCnt}             /* 발송수량 */
             , RCEPT_AMT        = #{epostRcptRslt.rceptAmt}             /* 결제금액 */
             , USEFEE_AMT       = #{epostRcptRslt.usefeeAmt}            /* 제작수수료 */
             , TOTPOST_PRC      = #{epostRcptRslt.totpostPrc}           /* 우편요금 */
             , JOB_CD           = #{epostRcptRslt.jobCd}                /* 작업 코드 */
             , MDFCN_DT         = <include refid="utility.now" />
             , MDFR             = #{epostRcptRslt.modifiedBy}
         WHERE RCPT_RSLT_ID     = #{epostRcptRslt.rcptRsltId}
    </update>

    <update id="deleteEpostRcptRslt" parameterType="map">/* 전자우편 접수 결과 삭제(epostRcptRsltMapper.deleteEpostRcptRslt) */
        UPDATE TB_EPOST_RCPT_RSLT
           SET USE_YN           = 'N'
             , MDFCN_DT         = <include refid="utility.now" />
             , MDFR             = #{epostRcptRslt.modifiedBy}
         WHERE RCPT_RSLT_ID     = #{epostRcptRslt.rcptRsltId}
    </update>

</mapper>
