<?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.crdn.dao.ExmptnVhclMapper">

<select id="selectExemptedCrdns" parameterType="list" resultType="dataobject">/* 면제차량 추출(exmptnVhclMapper.selectExemptedCrdns) */
SELECT A.VHRNO, A.CRDN_YMD
 FROM (<foreach collection="crdns" item="crdn" separator="UNION">
       SELECT #{crdn.sggCd} SGG_CD, #{crdn.vhrno} VHRNO, #{crdn.crdnYmd} CRDN_YMD FROM DUAL</foreach>
       ) A
    , TB_EXMPTN_VHCL B
 WHERE A.SGG_CD = B.SGG_CD
   AND A.VHRNO = B.VHRNO
   AND A.CRDN_YMD BETWEEN B.EXMPTN_BGNG_YMD AND B.EXMPTN_END_YMD
   AND B.DEL_YN = 'N'</select>

<select id="selectExemptionVehicleList" parameterType="cokr.xit.fims.crdn.CrdnQuery" resultType="dataobject">
/* 면제차량 목록 조회(exmptnVhclMapper.selectExemptionVehicleList) */
<include refid="utility.paging-prefix"/>
SELECT A.EXMPTN_VHCL_ID
     , A.VHRNO
     , A.EXMPTN_RSN
     , A.DOC_NO
     , A.OWNR_NM
     , A.EXMPTN_BGNG_YMD
     , A.EXMPTN_END_YMD
     , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = A.RGTR) AS RGTR_NM
     , A.REG_DT
     , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = A.MDFR) AS MDFR_NM
     , A.MDFCN_DT
     , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = A.DLTR) AS DLTR_NM
     , A.DEL_RSN
     , A.DEL_DT
     , A.DEL_YN
  FROM TB_EXMPTN_VHCL A
 WHERE A.SGG_CD = #{sggCd}
   <if test="vhrno != null and vhrno != ''">AND A.VHRNO LIKE CONCAT('%', #{vhrno}, '%')</if>
   <if test='vhrnos != null'>AND A.VHRNO IN (<foreach collection="vhrnos" item="vhrno" separator=",">#{vhrno}</foreach>)</if>
   <if test="delYn != null and delYn != ''">
   AND A.DEL_YN = #{delYn}
   </if>
   <if test="crdnYmd != null and crdnYmd !=''">
   AND A.EXMPTN_BGNG_YMD <![CDATA[ <= ]]> #{crdnYmd}
   AND A.EXMPTN_END_YMD <![CDATA[ >= ]]> #{crdnYmd}
   </if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix"/>
</select>

<select id="selectExemptionVehicleInfo" parameterType="string" resultType="dataobject">
/* 면제차량 정보 조회(exmptnVhclMapper.selectExemptionVehicleInfo) */
SELECT A.EXMPTN_VHCL_ID
     , A.SGG_CD
     , A.VHRNO
     , A.EXMPTN_RSN
     , A.DOC_NO
     , A.OWNR_NM
     , A.EXMPTN_BGNG_YMD
     , A.EXMPTN_END_YMD
  FROM TB_EXMPTN_VHCL A
 WHERE A.EXMPTN_VHCL_ID = #{exmptnVhclId}
</select>

<insert id="insertExemptionVehicleInfo" parameterType="cokr.xit.fims.crdn.ExmptnVhcl">
/* 면제차량 정보 등록(exmptnVhclMapper.insertExemptionVehicleInfo) */
<selectKey resultType="string" keyProperty="exmptnVhclId" keyColumn="NEW_ID" order="BEFORE">
	<include refid="numbering.key">
		<property name="TABLE_NAME" value="TB_EXMPTN_VHCL" />
		<property name="TABLE_KEY" value="EXMPTN_VHCL_ID" />
		<property name="pad" value="10" />
	</include>
</selectKey>
INSERT INTO TB_EXMPTN_VHCL (
       EXMPTN_VHCL_ID        <!-- 면제 차량 ID -->
     , SGG_CD                <!-- 시군구 코드 -->
     , VHRNO                 <!-- 차량 번호 -->
     , EXMPTN_RSN            <!-- 면제 사유 -->
     , DOC_NO                <!-- 문서번호 -->
     , OWNR_NM               <!-- 소유자명 -->
     , EXMPTN_BGNG_YMD       <!-- 면제 시작 일자-->
     , EXMPTN_END_YMD        <!-- 면제 종료 일자 -->
     , DEL_YN                <!-- 삭제 여부 -->
     , REG_DT                <!-- 등록 일시 -->
     , RGTR                  <!-- 등록자 -->
     , MDFCN_DT              <!-- 수정 일시 -->
     , MDFR                  <!-- 수정자 -->
) VALUES (
       #{exmptnVhclId}       <!-- 면제 차량 ID -->
     , #{sggCd}              <!-- 시군구 코드 -->
     , #{vhrno}              <!-- 차량 번호 -->
     , #{exmptnRsn}          <!-- 면제 사유 -->
     , #{docNo}              <!-- 문서번호 -->
     , #{ownrNm}             <!-- 소유자명 -->
     , #{exmptnBgngYmd}      <!-- 면제 시작 일자-->
     , #{exmptnEndYmd}       <!-- 면제 종료 일자 -->
     , 'N'                   <!-- 삭제 여부 -->
     , <include refid="utility.now" />     <!-- 등록 일시 -->
     , #{createdBy}                        <!-- 등록자 -->
     , <include refid="utility.now" />     <!-- 수정 일시 -->
     , #{modifiedBy}                       <!-- 수정자 -->
)
</insert>

<update id="updateExemptionVehicleInfo" parameterType="cokr.xit.fims.crdn.ExmptnVhcl">
/* 면제차량 정보 수정(exmptnVhclMapper.updateExemptionVehicleInfo) */
UPDATE TB_EXMPTN_VHCL
   SET EXMPTN_RSN      = #{exmptnRsn}     <!-- 면제 사유 -->
     , DOC_NO          = #{docNo}         <!-- 문서번호 -->
     , OWNR_NM         = #{ownrNm}        <!-- 소유자명 -->
     , EXMPTN_BGNG_YMD = #{exmptnBgngYmd} <!-- 면제 시작 일자 -->
     , EXMPTN_END_YMD  = #{exmptnEndYmd}  <!-- 면제 종료 일자 -->
     , MDFCN_DT        = <include refid="utility.now" />  <!-- 수정 일시 -->
     , MDFR            = #{modifiedBy}                    <!-- 수정자 -->
 WHERE EXMPTN_VHCL_ID = #{exmptnVhclId}
</update>

<update id="deleteExemptionVehicleInfo" parameterType="cokr.xit.fims.crdn.ExmptnVhcl">
/* 면제차량 정보 삭제(exmptnVhclMapper.deleteExemptionVehicleInfo) */
UPDATE TB_EXMPTN_VHCL
   SET DEL_YN          = 'Y'
     , DEL_RSN         = #{delRsn}                        <!-- 삭제 사유 -->
     , DEL_DT          = <include refid="utility.now" />  <!-- 삭제 일시 -->
     , DLTR            = #{removedBy}                     <!-- 삭제자 -->
 WHERE EXMPTN_VHCL_ID = #{exmptnVhclId}
</update>

<insert id="insertExemptionVehicleHistory" parameterType="cokr.xit.fims.crdn.ExmptnVhcl">
/* 면제차량 정보 등록(exmptnVhclMapper.insertExemptionVehicleHistory) */
<selectKey resultType="string" keyProperty="hstrySn" keyColumn="NEW_ID" order="BEFORE">
SELECT
       LPAD(CAST(IFNULL(MAX(HSTRY_SN) + 1, 1) AS INT), 5, '0')
       AS NEW_ID 
FROM TB_EXMPTN_VHCL_HSTRY WHERE EXMPTN_VHCL_ID = #{exmptnVhclId}
</selectKey>
INSERT INTO TB_EXMPTN_VHCL_HSTRY (
       EXMPTN_VHCL_ID        <!-- 면제 차량 ID -->
     , HSTRY_SN              <!-- 이력 일련번호 -->
     , SGG_CD                <!-- 시군구 코드 -->
     , VHRNO                 <!-- 차량 번호 -->
     , EXMPTN_RSN            <!-- 면제 사유 -->
     , DOC_NO                <!-- 문서번호 -->
     , OWNR_NM               <!-- 소유자명 -->
     , EXMPTN_BGNG_YMD       <!-- 면제 시작 일자-->
     , EXMPTN_END_YMD        <!-- 면제 종료 일자 -->
     , DEL_YN                <!-- 삭제 여부 -->
     , REG_DT                <!-- 등록 일시 -->
     , RGTR                  <!-- 등록자 -->
     , MDFCN_DT              <!-- 수정 일시 -->
     , MDFR                  <!-- 수정자 -->
     , DEL_DT                <!-- 삭제 일시 -->
     , DLTR                  <!-- 삭제자 -->
     , DEL_RSN               <!-- 삭제 사유 -->
) SELECT
       EXMPTN_VHCL_ID        <!-- 면제 차량 ID -->
     , #{hstrySn}            <!-- 이력 일련번호 -->
     , SGG_CD                <!-- 시군구 코드 -->
     , VHRNO                 <!-- 차량 번호 -->
     , EXMPTN_RSN            <!-- 면제 사유 -->
     , DOC_NO                <!-- 문서번호 -->
     , OWNR_NM               <!-- 소유자명 -->
     , EXMPTN_BGNG_YMD       <!-- 면제 시작 일자-->
     , EXMPTN_END_YMD        <!-- 면제 종료 일자 -->
     , DEL_YN                <!-- 삭제 여부 -->
     , REG_DT                <!-- 등록 일시 -->
     , RGTR                  <!-- 등록자 -->
     , MDFCN_DT              <!-- 수정 일시 -->
     , MDFR                  <!-- 수정자 -->
     , DEL_DT                <!-- 삭제 일시 -->
     , DLTR                  <!-- 삭제자 -->
     , DEL_RSN               <!-- 삭제 사유 -->
  FROM TB_EXMPTN_VHCL
 WHERE EXMPTN_VHCL_ID = #{exmptnVhclId}
</insert>

<select id="selectExemptionVehicleHistoryList" parameterType="string" resultType="dataobject">
/* 면제차량 이력 정보 조회(exmptnVhclMapper.selectExemptionVehicleHistoryList) */
SELECT A.EXMPTN_VHCL_ID
     , A.HSTRY_SN
     , A.SGG_CD
     , A.VHRNO
     , A.EXMPTN_RSN
     , A.DOC_NO
     , A.OWNR_NM
     , A.EXMPTN_BGNG_YMD
     , A.EXMPTN_END_YMD
     , A.DEL_YN                <!-- 삭제 여부 -->
     , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = A.RGTR) AS RGTR_NM
     , A.REG_DT
     , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = A.MDFR) AS MDFR_NM
     , A.MDFCN_DT
     , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = A.DLTR) AS DLTR_NM
     , A.DEL_DT
     , A.DEL_RSN               <!-- 삭제 사유 -->
  FROM TB_EXMPTN_VHCL_HSTRY A
 WHERE A.EXMPTN_VHCL_ID = #{exmptnVhclId}
 ORDER BY A.HSTRY_SN
</select>

</mapper>