<?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.sprt.dao.CvlcptDscsnMapper">

<!-- 민원 상담 내용 정보 매퍼
 ========== 변경 이력 ==========
 2023-09-05	JoJH 최초 작성
 ============================ -->

	<resultMap id="cvlcptDscsnRow" type="cokr.xit.fims.sprt.CvlcptDscsn">
		<result property="cvlcptDscsnId"	column="CVLCPT_DSCSN_ID" />		<!-- 민원 상담 ID -->
		<result property="sggCd"			column="SGG_CD" />				<!-- 시군구 코드 -->
		<result property="taskSeCd"			column="TASK_SE_CD" />			<!-- 업무 구분 코드 -->
        <result property="crdnId"           column="CRDN_ID" />             <!-- 단속 ID -->
		<result property="cvlcptRcptSeCd"	column="CVLCPT_RCPT_SE_CD" />	<!-- 민원 접수 구분 코드 -->
		<result property="vhrno"			column="VHRNO" />				<!-- 차량번호 -->
		<result property="rtpyrNo"			column="RTPYR_NO" />			<!-- 납부자 번호 -->
		<result property="dscsnYmd"			column="DSCSN_YMD" />			<!-- 상담 일자 -->
		<result property="weekNm"			column="WEEK_NM" />				<!-- 요일 명 -->
		<result property="cvlprNm"			column="CVLPR_NM" />			<!-- 민원인 명 -->
		<result property="cvlprCttpc"		column="CVLPR_CTTPC" />			<!-- 민원인 연락처 -->
		<result property="dscsnCn"			column="DSCSN_CN" />			<!-- 상담 내용 -->
		<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>

    <sql id="select">
        SELECT CD.CVLCPT_DSCSN_ID   <!-- 민원 상담 ID -->
             , CD.SGG_CD            <!-- 시군구 코드 -->
             , CD.TASK_SE_CD        <!-- 업무 구분 코드 -->
             , CD.CRDN_ID           <!-- 단속 ID -->
             , CD.CVLCPT_RCPT_SE_CD <!-- 민원 접수 구분 코드 -->
             , (GET_CODE_NM('FIM065', CD.CVLCPT_RCPT_SE_CD))    AS CVLCPT_RCPT_SE_NM    <!-- 민원 접수 구분 명 -->
             , CD.VHRNO             <!-- 차량번호 -->
             , CD.RTPYR_NO          <!-- 납부자 번호 -->
             , CD.DSCSN_YMD         <!-- 상담 일자 -->
             , CD.WEEK_NM           <!-- 요일 명 -->
             , CD.CVLPR_NM          <!-- 민원인 명 -->
             , CD.CVLPR_CTTPC       <!-- 민원인 연락처 -->
             , CD.DSCSN_CN          <!-- 상담 내용 -->
             , CD.DEL_YN            <!-- 삭제 여부 -->
             , CD.REG_DT            <!-- 등록 일시 -->
             , CD.RGTR              <!-- 등록자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CD.RGTR) AS RGTR_NM <!-- 등록자 명 -->
             , CD.MDFCN_DT          <!-- 수정 일시 -->
             , CD.MDFR              <!-- 수정자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CD.MDFR) AS MDFR_NM <!-- 수정자 명 -->
             , CD.DEL_DT            <!-- 삭제 일시 -->
             , CD.DLTR              <!-- 삭제자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CD.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
             , CD.DEL_RSN           <!-- 삭제 사유 -->
          FROM TB_CVLCPT_DSCSN      CD
    </sql>

    <select id="selectCvlcptDscsnList" parameterType="map" resultType="dataobject">/* 민원 상담 내용 목록 조회(cvlcptDscsnCnMapper.selectCvlcptDscsnList) */
        <include refid="utility.paging-prefix" />
        <include refid="select" />
        <where>
            <if test="schDscsnYmdFrom != null">
           AND CD.DSCSN_YMD <![CDATA[>=]]> #{schDscsnYmdFrom}   <!-- 상담 일자 시작 -->
            </if>
            <if test="schDscsnYmdTo != null">
           AND CD.DSCSN_YMD <![CDATA[<=]]> #{schDscsnYmdTo}     <!-- 상담 일자 종료 -->
            </if>
            <if test="schVhrno != null">
           AND CD.VHRNO     =  #{schVhrno}  <!-- 차량번호 -->
            </if>
            <if test="schRtpyrNo != null">
           AND CD.RTPYR_NO  =  #{schRtpyrNo}    <!-- 납부자 번호 -->
            </if>
            <if test="schCvlprNm != null">
           AND CD.CVLPR_NM  =  #{schCvlprNm}    <!-- 민원인 명 -->
            </if>
            <if test="sggCd != null">
           AND CD.SGG_CD    =  #{sggCd}     <!-- 시군구 코드 -->
            </if>
            <if test="taskSeCd != null">
           AND CD.TASK_SE_CD=  #{taskSeCd}  <!-- 업무 구분 코드 -->
            </if>
           AND CD.DEL_YN    =  'N'
            <choose>
                <when test="schRegDateOpt == 'regDt'">
                    <if test="schRegDateFrom != null">
           AND CD.REG_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000')  <!-- 등록 일자 시작 -->
                    </if>
                    <if test="schRegDateTo != null">
           AND CD.REG_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959')    <!-- 등록 일자 종료 -->
                    </if>
                </when>
                <when test="schRegDateOpt == 'mdfcnDt'">
                    <if test="schRegDateFrom != null">
           AND CD.MDFCN_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') <!-- 수정 일자 시작 -->
                    </if>
                    <if test="schRegDateTo != null">
           AND CD.MDFCN_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959')  <!-- 수정 일자 종료 -->
                    </if>
                </when>
                <otherwise>
                </otherwise>
            </choose>
            <choose>
                <when test="schRgtrOpt == 'rgtr'">
                    <if test="schRgtrCd != null">
           AND CD.RGTR      =  #{schRgtrCd}     <!-- 등록자 코드 -->
                    </if>
                </when>
                <when test="schRgtrOpt == 'mdfr'">
                    <if test="schRgtrCd != null">
           AND CD.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 == 'cvlcptRcptSeCd'"> CD.CVLCPT_RCPT_SE_CD </when>
                            <when test="by == 'vhrno'"> CD.VHRNO </when>
                            <when test="by == 'rtpyrNo'"> CD.RTPYR_NO </when>
                            <when test="by == 'dscsnYmd'"> CD.DSCSN_YMD </when>
                            <when test="by == 'weekNm'"> CD.WEEK_NM </when>
                            <when test="by == 'cvlprNm'"> CD.CVLPR_NM </when>
                            <when test="by == 'cvlprCttpc'"> CD.CVLPR_CTTPC </when>
                            <when test="by == 'dscsnCn'"> CD.DSCSN_CN </when>
                        </choose>
                        <include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
                    </when>
                    <otherwise>
                    </otherwise>
                </choose>
            </if>
        </where>
        <include refid="utility.orderBy" />
        <include refid="utility.paging-suffix" />
    </select>

    <select id="selectCvlcptDscsns" parameterType="map" resultType="dataobject">/* 민원 상담 내용 객체 가져오기(cvlcptDscsnCnMapper.selectCvlcptDscsns) */
        <include refid="select" />
        <where>
            <if test="cvlcptDscsnId != null">
           AND CD.CVLCPT_DSCSN_ID = #{cvlcptDscsnId}    <!-- 민원 상담  ID -->
            </if>
            <choose>
                <when test="inquiryCondition == 'crdnId_vhrno_rtpyrNo'">
           AND (CD.CRDN_ID  = #{crdnId} OR CD.VHRNO = #{vhrno} OR CD.RTPYR_NO = #{rtpyrNo})
                </when>
                <when test="inquiryCondition == 'crdnId_vhrno'">
           AND (CD.CRDN_ID  = #{crdnId} OR CD.VHRNO = #{vhrno})
                </when>
                <otherwise>
                    <if test="crdnId != null">
           AND CD.CRDN_ID   = #{crdnId}     <!-- 단속 ID -->
                    </if>
                    <if test="vhrno != null">
           AND CD.VHRNO     = #{vhrno}      <!-- 차량번호 -->
                    </if>
                    <if test="rtpyrNo != null">
           AND CD.RTPYR_NO  = #{rtpyrNo}    <!-- 납부자 번호 -->
                    </if>
                </otherwise>
            </choose>
           AND CD.DEL_YN    = 'N'           <!-- 삭제 여부 -->
        </where>
        <include refid="utility.orderBy" />
    </select>

    <select id="selectCvlcptDscsnNocs" parameterType="map" resultType="dataobject">/* 민원 상담 내용 객체 가져오기(cvlcptDscsnCnMapper.selectCvlcptDscsns) */
        SELECT COUNT(*)     AS NOCS         <!-- 건수 -->
          FROM TB_CVLCPT_DSCSN
         WHERE SGG_CD       = #{sggCd}      <!-- 시군구 코드 -->
           AND TASK_SE_CD   = #{taskSeCd}   <!-- 업무 구분 코드 -->
        <if test="crdnId != null">
           AND CRDN_ID      = #{crdnId}     <!-- 단속 ID -->
        </if>
        <if test="vhrno != null">
           AND VHRNO        = #{vhrno}      <!-- 차량번호 -->
        </if>
        <if test="rtpyrNo != null">
           AND RTPYR_NO     = #{rtpyrNo}    <!-- 납부자 번호 -->
        </if>
           AND DEL_YN       =  'N'
    </select>

    <insert id="insertCvlcptDscsn" parameterType="cokr.xit.fims.sprt.CvlcptDscsn">/* 민원 상담 내용 등록(cvlcptDscsnMapper.insertCvlcptDscsn) */
        <selectKey resultType="string" keyProperty="cvlcptDscsnId" keyColumn="NEW_ID" order="BEFORE">
            <include refid="numbering.keyByYear">
                <property name="TABLE_NAME" value="TB_CVLCPT_DSCSN" />
                <property name="TABLE_KEY" value="CVLCPT_DSCSN_ID" />
                <property name="pad" value="20" />
            </include>
        </selectKey>
        INSERT
          INTO TB_CVLCPT_DSCSN (
               CVLCPT_DSCSN_ID  <!-- 민원 상담 ID -->
             , SGG_CD           <!-- 시군구 코드 -->
             , TASK_SE_CD       <!-- 업무 구분 코드 -->
             , CVLCPT_RCPT_SE_CD <!-- 민원 접수 구분 코드 -->
             , CRDN_ID          <!-- 단속 ID -->
             , VHRNO            <!-- 차량번호 -->
             , RTPYR_NO         <!-- 납부자 번호 -->
             , DSCSN_YMD        <!-- 상담 일자 -->
             , WEEK_NM          <!-- 요일 명 -->
             , CVLPR_NM         <!-- 민원인 명 -->
             , CVLPR_CTTPC      <!-- 민원인 연락처 -->
             , DSCSN_CN         <!-- 상담 내용 -->
             , DEL_YN           <!-- 삭제 여부 -->
             , REG_DT           <!-- 등록 일시 -->
             , RGTR             <!-- 등록자 -->
             , MDFCN_DT         <!-- 수정 일시 -->
             , MDFR             <!-- 수정자 -->
        )
        VALUES (
               #{cvlcptDscsnId} <!-- 민원 상담 ID -->
             , #{sggCd}         <!-- 시군구 코드 -->
             , #{taskSeCd}      <!-- 업무 구분 코드 -->
             , #{cvlcptRcptSeCd} <!-- 민원 접수 구분 코드 -->
             , #{crdnId}        <!-- 단속 ID -->
            <choose>
                <when test="cvlcptRcptSeCd == '02'">
             , #{vhrno}         <!-- 차량번호 -->
             , NULL             <!-- 납부자 번호 -->
                </when>
                <when test="cvlcptRcptSeCd == '03'">
             , NULL             <!-- 차량번호 -->
             , #{rtpyrNo}       <!-- 납부자 번호 -->
                </when>
                <otherwise>
             , NULL             <!-- 차량번호 -->
             , NULL             <!-- 납부자 번호 -->
                </otherwise>
            </choose>
             , <include refid="utility.today" /> <!-- 상담 일자 -->
             , ( CASE DAYOFWEEK(NOW())
                      WHEN '1' THEN '일'
                      WHEN '2' THEN '월'
                      WHEN '3' THEN '화'
                      WHEN '4' THEN '수'
                      WHEN '5' THEN '목'
                      WHEN '6' THEN '금'
                      WHEN '7' THEN '토'
                  END )         <!-- 요일 명 -->
             , #{cvlprNm}       <!-- 민원인 명 -->
             , #{cvlprCttpc}    <!-- 민원인 연락처 -->
             , #{dscsnCn}       <!-- 상담 내용 -->
             , 'N'              <!-- 삭제 여부 -->
             , <include refid="utility.now" />  <!-- 등록 일시 -->
             , #{createdBy}     <!-- 등록자 -->
             , <include refid="utility.now" />  <!-- 수정 일시 -->
             , #{modifiedBy}    <!-- 수정자 -->
        )
    </insert>

    <update id="updateCvlcptDscsn" parameterType="cokr.xit.fims.sprt.CvlcptDscsn">/* 민원 상담 내용 수정(cvlcptDscsnMapper.updateCvlcptDscsn) */
        UPDATE TB_CVLCPT_DSCSN
           SET CVLPR_NM         = #{cvlprNm}    <!-- 민원인 명 -->
             , CVLPR_CTTPC      = #{cvlprCttpc} <!-- 민원인 연락처 -->
             , DSCSN_CN         = #{dscsnCn}    <!-- 상담 내용 -->
             , MDFCN_DT         = <include refid="utility.now" /> <!-- 수정 일시 -->
             , MDFR             = #{modifiedBy} <!-- 수정자 -->
         WHERE CVLCPT_DSCSN_ID  = #{cvlcptDscsnId} <!-- 민원 상담 ID -->
           AND DEL_YN           = 'N'
    </update>

    <update id="deleteCvlcptDscsn" parameterType="cokr.xit.fims.sprt.CvlcptDscsn">/* 민원 상담 내용 삭제(cvlcptDscsnMapper.deleteCvlcptDscsn) */
        UPDATE TB_CVLCPT_DSCSN
           SET DEL_YN           = 'Y'               <!-- 삭제 여부 -->
             , DEL_DT           = <include refid="utility.now" />  <!-- 삭제 일시 -->
             , DLTR             = #{modifiedBy}     <!-- 삭제자 -->
             , DEL_RSN          = #{delRsn}         <!-- 삭제 사유 -->
        <choose>
            <when test="cvlcptDscsnIds != null">
         WHERE CVLCPT_DSCSN_ID  IN (                <!-- 민원 상담 Ids -->
                <foreach collection="cvlcptDscsnIds" item="cvlcptDscsnId" separator=","> #{cvlcptDscsnId} </foreach>
               )
            </when>
            <otherwise>
         WHERE CVLCPT_DSCSN_ID  = #{cvlcptDscsnId}  <!-- 민원 상담 ID -->
            </otherwise>
        </choose>
           AND DEL_YN           = 'N'
    </update>

    <select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(cvlcptDscsnCnMapper.selectCrdn) */
        SELECT C.CRDN_ID    <!-- 단속 ID -->
             , C.SGG_CD     <!-- 시군구 코드 -->
             , C.TASK_SE_CD <!-- 업무 구분 코드 -->
             , C.VHRNO      <!-- 차량번호 -->
             , P.RTPYR_ID   <!-- 납부자 ID -->
             , P.RTPYR_NO   <!-- 납부자 번호 -->
             , P.RTPYR_NM   <!-- 납부자 명 -->
          FROM TB_CRDN       C
    LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
         WHERE C.CRDN_ID     = #{crdnId}    <!-- 단속 ID -->
        <choose>
            <when test="delYn != null">
           AND C.DEL_YN      = #{delYn}
            </when>
            <otherwise>
           AND C.DEL_YN      = 'N'
            </otherwise>
        </choose>
	</select>

</mapper>
