<?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.CvlcptDscsnCnMapper">

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

	<resultMap id="cvlcptDscsnCnRow" type="cokr.xit.fims.sprt.CvlcptDscsnCn">
		<result property="cvlcptDscsnId"		column="CVLCPT_DSCSN_ID" />				<!-- 민원 상담 ID -->
		<result property="sggCd"				column="SGG_CD" />						<!-- 시군구 코드 -->
		<result property="taskSeCd"				column="TASK_SE_CD" />					<!-- 업무 구분 코드 -->
		<result property="cvlcptRcptSeCd"		column="CVLCPT_RCPT_SE_CD" />			<!-- 민원 접수 구분 코드 -->
		<result property="crdnId"				column="CRDN_ID" />						<!-- 단속 ID -->
		<result property="vhrno"				column="VHRNO" />						<!-- 차량번호 -->
		<result property="rtpyrNo"				column="RTPYR_NO" />					<!-- 납부자 번호 -->
		<result property="dscsnCn"				column="DSCSN_CN" />					<!-- 상담 내용 -->
		<result property="weekNm"				column="WEEK_NM" />						<!-- 요일 명 -->
		<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 CDC.CVLCPT_DSCSN_ID                                                                              /* 민원 상담 ID */
             , CDC.SGG_CD                                                                                       /* 시군구 코드 */
             , CDC.TASK_SE_CD                                                                                   /* 업무 구분 코드 */
             , CDC.CVLCPT_RCPT_SE_CD                                                                            /* 민원 접수 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM065', CDC.CVLCPT_RCPT_SE_CD) FROM DUAL)       AS CVLCPT_RCPT_SE_NM    /* 민원 접수 구분 명 */
             , CDC.CRDN_ID                                                                                      /* 단속 ID */
             , CDC.VHRNO                                                                                        /* 차량번호 */
             , CDC.RTPYR_NO                                                                                     /* 납부자 번호 */
             , CDC.DSCSN_CN                                                                                     /* 상담 내용 */
             , CDC.WEEK_NM                                                                                      /* 요일 명 */
             , CDC.DEL_YN                                                                                       /* 삭제 여부 */
             , CDC.REG_DT                                                                                       /* 등록 일시 */
             , CDC.RGTR                                                                                         /* 등록자 */
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CDC.RGTR)               AS RGTR_NM              /* 등록자 명 */
             , CDC.MDFCN_DT                                                                                     /* 수정 일시 */
             , CDC.MDFR                                                                                         /* 수정자 */
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CDC.MDFR)               AS MDFR_NM              /* 수정자 명 */
             , CDC.DEL_DT                                                                                       /* 삭제 일시 */
             , CDC.DLTR                                                                                         /* 삭제자 */
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CDC.DLTR)               AS DLTR_NM              /* 삭제자 명 */
             , CDC.DEL_RSN                                                                                      /* 삭제 사유 */
          FROM TB_CVLCPT_DSCSN_CN   CDC
    </sql>

    <select id="selectCvlcptDscsnCnList" parameterType="map" resultType="dataobject">/* 민원 상담 내용 목록 조회(cvlcptDscsnCnMapper.selectCvlcptDscsnCnList) */
        <include refid="utility.paging-prefix" />
        <include refid="select" />
        <where>
        </where>
        <include refid="utility.orderBy" />
        <include refid="utility.paging-suffix" />
    </select>

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

    <insert id="insertCvlcptDscsnCn" parameterType="map">/* 민원 상담 내용 등록(cvlcptDscsnCnMapper.insertCvlcptDscsnCn) */
        <selectKey resultType="string" keyProperty="cvlcptDscsnCn.cvlcptDscsnId" keyColumn="NEW_ID" order="BEFORE">
            SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(CVLCPT_DSCSN_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
              FROM TB_CVLCPT_DSCSN_CN
             WHERE CVLCPT_DSCSN_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
        </selectKey>
        INSERT
          INTO TB_CVLCPT_DSCSN_CN (
               CVLCPT_DSCSN_ID                                                                                  /* 민원 상담 ID */
             , SGG_CD                                                                                           /* 시군구 코드 */
             , TASK_SE_CD                                                                                       /* 업무 구분 코드 */
             , CVLCPT_RCPT_SE_CD                                                                                /* 민원 접수 구분 코드 */
             , CRDN_ID                                                                                          /* 단속 ID */
             , VHRNO                                                                                            /* 차량번호 */
             , RTPYR_NO                                                                                         /* 납부자 번호 */
             , DSCSN_CN                                                                                         /* 상담 내용 */
             , WEEK_NM                                                                                          /* 요일 명 */
             , DEL_YN                                                                                           /* 삭제 여부 */
             , REG_DT                                                                                           /* 등록 일시 */
             , RGTR                                                                                             /* 등록자 */
             , MDFCN_DT                                                                                         /* 수정 일시 */
             , MDFR                                                                                             /* 수정자 */
        )
        VALUES (
               #{cvlcptDscsnCn.cvlcptDscsnId}                                                                   /* 민원 상담 ID */
             , #{cvlcptDscsnCn.sggCd}                                                                           /* 시군구 코드 */
             , #{cvlcptDscsnCn.taskSeCd}                                                                        /* 업무 구분 코드 */
             , #{cvlcptDscsnCn.cvlcptRcptSeCd}                                                                  /* 민원 접수 구분 코드 */
             , #{cvlcptDscsnCn.crdnId}                                                                          /* 단속 ID */
            <choose>
                <when test="cvlcptDscsnCn.cvlcptRcptSeCd == '02'">
             , #{cvlcptDscsnCn.vhrno}                                                                           /* 차량번호 */
             , NULL                                                                                             /* 납부자 번호 */
                </when>
                <when test="cvlcptDscsnCn.cvlcptRcptSeCd == '03'">
             , NULL                                                                                             /* 차량번호 */
             , #{cvlcptDscsnCn.rtpyrNo}                                                                         /* 납부자 번호 */
                </when>
                <otherwise>
             , NULL                                                                                             /* 차량번호 */
             , NULL                                                                                             /* 납부자 번호 */
                </otherwise>
            </choose>
             , #{cvlcptDscsnCn.dscsnCn}                                                                         /* 상담 내용 */
             , ( 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 )                                                                                         /* 요일 명 */
             , 'N'                                                                                              /* 삭제 여부 */
             , <include refid="utility.now" />                                                                  /* 등록 일시 */
             , #{cvlcptDscsnCn.createdBy}                                                                       /* 등록자 */
             , <include refid="utility.now" />                                                                  /* 수정 일시 */
             , #{cvlcptDscsnCn.modifiedBy}                                                                      /* 수정자 */
        )
    </insert>

    <update id="updateCvlcptDscsnCn" parameterType="map">/* 민원 상담 내용 수정(cvlcptDscsnCnMapper.updateCvlcptDscsnCn) */
        UPDATE TB_CVLCPT_DSCSN_CN
           SET DSCSN_CN                 =  #{cvlcptDscsnCn.dscsnCn}                                             /* 상담 내용 */
             , MDFCN_DT                 =  <include refid="utility.now" />                                      /* 수정 일시 */
             , MDFR                     =  #{cvlcptDscsnCn.modifiedBy}                                          /* 수정자 */
         WHERE CVLCPT_DSCSN_ID          =  #{cvlcptDscsnCn.cvlcptDscsnId}                                       /* 민원 상담 ID */
           AND DEL_YN                   =  'N'                                                                  /* 삭제 여부 */
    </update>

    <update id="deleteCvlcptDscsnCn" parameterType="map">/* 민원 상담 내용 삭제(cvlcptDscsnCnMapper.deleteCvlcptDscsnCn) */
        UPDATE TB_CVLCPT_DSCSN_CN
           SET DEL_YN                   =  'Y'                                                                  /* 삭제 여부 */
             , DEL_DT                   =  <include refid="utility.now" />                                      /* 삭제 일시 */
             , DLTR                     =  #{cvlcptDscsnCn.modifiedBy}                                          /* 삭제자 */
             , DEL_RSN                  =  #{cvlcptDscsnCn.delRsn}                                              /* 삭제 사유 */
         WHERE CVLCPT_DSCSN_ID          =  #{cvlcptDscsnCn.cvlcptDscsnId}                                       /* 민원 상담 ID */
           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                                                                                       /* 납부자 번호 */
          FROM TB_CRDN              C
    LEFT OUTER JOIN TB_PAYER        P   ON (C.RTPYR_ID = P.RTPYR_ID)
         WHERE C.CRDN_ID                =  #{crdnId}                                                            /* 단속 ID */
        <if test="delYn != null">
           AND C.DEL_YN                 =  #{delYn}                                                             /* 삭제 여부 */
        </if>
	</select>

</mapper>
