<?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.mngt.dao.VltnMapper">

<!-- 위반 정보 정보 매퍼
 ========== 변경 이력 ==========
 2023-10-16	JoJH 최초 작성
 ============================ -->

<resultMap id="vltnRow" type="cokr.xit.fims.mngt.Vltn">
	<result property="vltnId"		column="VLTN_ID" />			<!-- 위반 ID -->
	<result property="sggCd"		column="SGG_CD" />			<!-- 시군구 코드 -->
	<result property="taskSeCd"		column="TASK_SE_CD" />		<!-- 업무 구분 코드 -->
	<result property="vltnCd"		column="VLTN_CD" />			<!-- 위반 코드 -->
	<result property="vltnArtcl"	column="VLTN_ARTCL" />		<!-- 위반 항목 -->
	<result property="vltnLawNm"	column="VLTN_LAW_NM" />		<!-- 위반 법 명 -->
	<result property="vltnLaw1"		column="VLTN_LAW1" />		<!-- 위반 법1 -->
	<result property="vltnLaw2"		column="VLTN_LAW2" />		<!-- 위반 법2 -->
	<result property="vltnLawEtc"	column="VLTN_LAW_ETC" />	<!-- 위반 법 기타 -->
	<result property="acntgSeCd"	column="ACNTG_SE_CD" />		<!-- 회계 구분 코드 -->
	<result property="acntgSeNm"	column="ACNTG_SE_NM" />		<!-- 회계 구분 명 -->
	<result property="txitmCd"		column="TXITM_CD" />		<!-- 세목 코드 -->
	<result property="txitmNm"		column="TXITM_NM" />		<!-- 세목 명 -->
	<result property="operItemCd"	column="OPER_ITEM_CD" />	<!-- 운영 항목 코드 -->
	<result property="operItemNm"	column="OPER_ITEM_NM" />	<!-- 운영 항목 명 -->
	<result property="spclBizCd"	column="SPCL_BIZ_CD" />		<!-- 특별회계 사업 코드 -->
	<result property="useYn"		column="USE_YN" />			<!-- 사용 여부 -->
	<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 V.VLTN_ID        <!-- 위반 ID -->
     , V.SGG_CD         <!-- 시군구 코드 -->
     , V.TASK_SE_CD     <!-- 업무 구분 코드 -->
     , V.VLTN_CD        <!-- 위반 코드 -->
     , V.VLTN_ARTCL     <!-- 위반 항목 -->
     , V.VLTN_ARTCL AS VLTN_NM
     , V.VLTN_LAW_NM    <!-- 위반 법 명 -->
     , V.VLTN_LAW1      <!-- 위반 법1 -->
     , V.VLTN_LAW2      <!-- 위반 법2 -->
     , V.VLTN_LAW_ETC   <!-- 위반 법 기타 -->
     , V.ACNTG_SE_CD    <!-- 회계 구분 코드 -->
     , V.ACNTG_SE_NM    <!-- 회계 구분 명 -->
     , V.TXITM_CD       <!-- 세목 코드 -->
     , V.TXITM_NM       <!-- 세목 명 -->
     , V.OPER_ITEM_CD   <!-- 운영 항목 코드 -->
     , V.OPER_ITEM_NM   <!-- 운영 항목 명 -->
     , V.SPCL_BIZ_CD    <!-- 특별회계 사업 코드 -->
     , V.SPCL_BIZ_NM    <!-- 특별회계 사업 명 -->
     , V.USE_YN         <!-- 사용 여부 -->
     , V.REG_DT         <!-- 등록 일시 -->
     , V.RGTR           <!-- 등록자 -->
     , V.MDFCN_DT       <!-- 수정 일시 -->
     , V.MDFR           <!-- 수정자 -->
     , <include refid="utility.today" />    AS TODAY    <!-- 오늘 일자 -->
     , (SELECT GET_CODE_NM('FIM054', V.TASK_SE_CD) FROM DUAL)   AS TASK_SE_NM   <!-- 업무 구분 명 -->
  FROM TB_VLTN V</sql>

<select id="selectVltnList" parameterType="map" resultType="dataobject">/* 위반 정보 목록 조회(vltnMapper.selectVltnList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
 WHERE V.SGG_CD     = #{sggCd}      <!-- 시군구 코드 -->
   AND V.TASK_SE_CD = #{taskSeCd}   <!-- 업무 구분 코드 -->
  <if test="useYn != null">AND V.USE_YN     = #{useYn}      <!-- 사용 여부 --></if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /></select>

<select id="selectVltns" parameterType="map" resultType="dataobject">/* 위반 정보 객체 가져오기(vltnMapper.selectVltns) */
<include refid="select" />
<where>
  <if test="sggCd != null">AND V.SGG_CD = #{sggCd}             <!-- 시군구 코드 --></if>
  <if test="taskSeCd != null">AND V.TASK_SE_CD = #{taskSeCd}   <!-- 업무 구분 코드 --></if>
  <if test="vltnId != null">AND V.VLTN_ID = #{vltnId}          <!-- 위반 ID --></if>
  <if test="vltnCd != null">AND V.VLTN_CD = #{vltnCd}          <!-- 위반 코드 --></if>
  <if test="vltnArtcl != null">AND V.VLTN_ARTCL = #{vltnArtcl} <!-- 위반 항목 --></if>
  <if test="acntgSeCd != null">AND V.ACNTG_SE_CD= #{acntgSeCd} <!-- 회계 구분 코드 --></if>
  <if test="txitmCd != null">AND V.TXITM_CD = #{txitmCd}       <!-- 세목 코드 --></if>
  <if test="useYn != null">AND V.USE_YN = #{useYn}             <!-- 사용 여부 --></if>
</where>
<include refid="utility.orderBy" />
</select>

<insert id="insertVltn" parameterType="map">/* 위반 정보 등록(vltnMapper.insertVltn) */
<selectKey resultType="string" keyProperty="vltnId" keyColumn="NEW_ID" order="BEFORE">
	<include refid="numbering.key">
	<property name="TABLE_NAME" value="TB_VLTN" />
	<property name="TABLE_KEY" value="VLTN_ID" />
	<property name="pad" value="10" />
</include>
</selectKey>
INSERT INTO TB_VLTN (
      VLTN_ID          <!-- 위반 ID -->
    , SGG_CD           <!-- 시군구 코드 -->
    , TASK_SE_CD       <!-- 업무 구분 코드 -->
    , VLTN_CD          <!-- 위반 코드 -->
    , VLTN_ARTCL       <!-- 위반 항목 -->
    , VLTN_LAW_NM      <!-- 위반 법 명 -->
    , VLTN_LAW1        <!-- 위반 법1 -->
    , VLTN_LAW2        <!-- 위반 법2 -->
    , VLTN_LAW_ETC     <!-- 위반 법 기타 -->
    , ACNTG_SE_CD      <!-- 회계 구분 코드 -->
    , ACNTG_SE_NM      <!-- 회계 구분 명 -->
    , TXITM_CD         <!-- 세목 코드 -->
    , TXITM_NM         <!-- 세목 명 -->
    , OPER_ITEM_CD     <!-- 운영 항목 코드 -->
    , OPER_ITEM_NM     <!-- 운영 항목 명 -->
    , SPCL_BIZ_CD      <!-- 특별회계 사업 코드 -->
    , USE_YN           <!-- 사용 여부 -->
    , REG_DT           <!-- 등록 일시 -->
    , RGTR             <!-- 등록자 -->
    , MDFCN_DT         <!-- 수정 일시 -->
    , MDFR             <!-- 수정자 -->
) VALUES (
       #{vltnId}            <!-- 위반 ID -->
    , #{vltn.sggCd}        <!-- 시군구 코드 -->
    , #{vltn.taskSeCd}     <!-- 업무 구분 코드 -->
    , #{vltn.vltnCd}       <!-- 위반 코드 -->
    , #{vltn.vltnArtcl}    <!-- 위반 항목 -->
    , #{vltn.vltnLawNm}    <!-- 위반 법 명 -->
    , #{vltn.vltnLaw1}     <!-- 위반 법1 -->
    , #{vltn.vltnLaw2}     <!-- 위반 법2 -->
    , #{vltn.vltnLawEtc}   <!-- 위반 법 기타 -->
    , #{vltn.acntgSeCd}    <!-- 회계 구분 코드 -->
    , #{vltn.acntgSeNm}    <!-- 회계 구분 명 -->
    , #{vltn.txitmCd}      <!-- 세목 코드 -->
    , #{vltn.txitmNm}      <!-- 세목 명 -->
    , #{vltn.operItemCd}   <!-- 운영 항목 코드 -->
    , #{vltn.operItemNm}   <!-- 운영 항목 명 -->
    , #{vltn.spclBizCd}    <!-- 특별회계 사업 코드 -->
    , 'Y'                  <!-- 사용 여부 -->
    , <include refid="utility.now" />  <!-- 등록 일시 -->
    , #{vltn.createdBy}    <!-- 등록자 -->
    , <include refid="utility.now" />  <!-- 수정 일시 -->
    , #{vltn.modifiedBy}   <!-- 수정자 -->
)</insert>

<update id="updateVltn" parameterType="map">/* 위반 정보 수정(vltnMapper.updateVltn) */
UPDATE TB_VLTN
   SET VLTN_ARTCL   = #{vltn.vltnArtcl}     <!-- 위반 항목 -->
     , VLTN_LAW_NM  = #{vltn.vltnLawNm}     <!-- 위반 법 명 -->
     , VLTN_LAW1    = #{vltn.vltnLaw1}      <!-- 위반 법1 -->
     , VLTN_LAW2    = #{vltn.vltnLaw2}      <!-- 위반 법2 -->
     , VLTN_LAW_ETC = #{vltn.vltnLawEtc}    <!-- 위반 법 기타 -->
     , ACNTG_SE_CD  = #{vltn.acntgSeCd}     <!-- 회계 구분 코드 -->
     , ACNTG_SE_NM  = #{vltn.acntgSeNm}     <!-- 회계 구분 명 -->
     , TXITM_CD     = #{vltn.txitmCd}       <!-- 세목 코드 -->
     , TXITM_NM     = #{vltn.txitmNm}       <!-- 세목 명 -->
     , OPER_ITEM_CD = #{vltn.operItemCd}    <!-- 운영 항목 코드 -->
     , OPER_ITEM_NM = #{vltn.operItemNm}    <!-- 운영 항목 명 -->
     , SPCL_BIZ_CD  = #{vltn.spclBizCd}     <!-- 특별회계 사업 코드 -->
     , MDFCN_DT     = <include refid="utility.now" />   <!-- 수정 일시 -->
     , MDFR         = #{vltn.modifiedBy}    <!-- 수정자 -->
 WHERE VLTN_ID      = #{vltn.vltnId}        <!-- 위반 ID -->
   AND USE_YN       = 'Y'</update>

<update id="deleteVltn" parameterType="map">/* 위반 정보 삭제(vltnMapper.deleteVltn) */
UPDATE TB_VLTN
   SET USE_YN   = 'N'                   <!-- 사용 여부 -->
     , MDFCN_DT = <include refid="utility.now" />   <!-- 수정 일시 -->
     , MDFR     = #{vltn.modifiedBy}    <!-- 수정자 -->
 WHERE VLTN_ID  = #{vltn.vltnId}        <!-- 위반 ID -->
   AND USE_YN   = 'Y'</update>

</mapper>