<?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.excl.dao.OpnnSbmsnMapper">

<!-- 의견제출 대장 정보 매퍼
 ========== 변경 이력 ==========
 2023-06-27	JoJH 최초 작성
 ============================ -->

	<resultMap id="opnnSbmsnRow" type="cokr.xit.fims.excl.OpnnSbmsn">
		<!-- TB_OPNN_SBMSN 의견제출 대장 -->
		<result property="opnnId"				column="OPNN_ID" />						<!-- 의견 ID -->
		<result property="crdnId"				column="CRDN_ID" />						<!-- 단속 ID -->
		<result property="rcptNo"				column="RCPT_NO" />						<!-- 접수 번호 -->
		<result property="rcptYmd"				column="RCPT_YMD" />					<!-- 접수 일자 -->
		<result property="rcptSeCd"				column="RCPT_SE_CD" />					<!-- 접수 구분 코드 -->
		<result property="rcptSeNm"				column="RCPT_SE_NM" />					<!-- 접수 구분 명 -->
		<result property="ownrRelCd"			column="OWNR_REL_CD" />					<!-- 소유주 관계 코드 -->
		<result property="ownrRelNm"			column="OWNR_REL_NM" />					<!-- 소유주 관계 명 -->
		<result property="sttrNm"				column="STTR_NM" />						<!-- 진술자 명 -->
		<result property="sttrBrdt"				column="STTR_BRDT" />					<!-- 진술자 생년월일 -->
		<result property="sttrBrdtFormat"		column="STTR_BRDT_FORMAT" />			<!-- 진술자 생년월일 -->
		<result property="sttrRrno"				column="STTR_RRNO" />					<!-- 진술자 주민등록번호 -->
		<result property="sttrAddr"				column="STTR_ADDR" />					<!-- 진술자 주소 -->
		<result property="sttrDaddr"			column="STTR_DADDR" />					<!-- 진술자 상세주소 -->
		<result property="sttrZip"				column="STTR_ZIP" />					<!-- 진술자 우편번호 -->
		<result property="sttrCttpc"			column="STTR_CTTPC" />					<!-- 진술자 연락처 -->
		<result property="sttrEml"				column="STTR_EML" />					<!-- 진술자 이메일 -->
		<result property="opnnSbmsnCn"			column="OPNN_SBMSN_CN" />				<!-- 의견 제출 내용 -->
		<result property="opnnSbmsnSeCd"		column="OPNN_SBMSN_SE_CD" />			<!-- 의견 제출 구분 코드 -->
		<result property="opnnSbmsnSeNm"		column="OPNN_SBMSN_SE_NM" />			<!-- 의견 제출 구분 명 -->
		<result property="opnnSbmsnGist"		column="OPNN_SBMSN_GIST" />				<!-- 의견 제출 요지 -->
		<result property="atchFileCnt"			column="ATCH_FILE_CNT" />				<!-- 첨부 파일 수 -->
		<result property="docNo"				column="DOC_NO" />						<!-- 문서 번호 -->
		<result property="ntfctnSeCd"			column="NTFCTN_SE_CD" />				<!-- 통보 구분 코드 -->
		<result property="ntfctnSeNm"			column="NTFCTN_SE_NM" />				<!-- 통보 구분 명 -->
		<result property="picRvwOpnn"			column="PIC_RVW_OPNN" />				<!-- 담당자 검토 의견 -->
		<result property="ansCn"				column="ANS_CN" />						<!-- 답변 내용 -->
		<result property="ansYmd"				column="ANS_YMD" />						<!-- 답변 일자 -->
		<result property="ansTm"				column="ANS_TM" />						<!-- 답변 시각 -->
		<result property="opnnSbmsnSttsCd"		column="OPNN_SBMSN_STTS_CD" />			<!-- 의견 제출 상태 코드 -->
		<result property="opnnSbmsnSttsNm"		column="OPNN_SBMSN_STTS_NM" />			<!-- 의견 제출 상태 명 -->
		<result property="delYn"				column="DEL_YN" />						<!-- 삭제 여부 -->
		<result property="regDt"				column="REG_DT" />						<!-- 등록 일시 -->
		<result property="rgtr"					column="RGTR" />						<!-- 등록자 -->
		<result property="mdfcnDt"				column="MDFCN_DT" />					<!-- 수정 일시 -->
		<result property="mdfr"					column="MDFR" />						<!-- 수정자 -->
		<result property="delDt"				column="DEL_DT" />						<!-- 삭제 일시 -->
		<result property="dltr"					column="DLTR" />						<!-- 삭제자 -->
		<result property="delRsn"				column="DEL_RSN" />						<!-- 삭제 사유 -->
	</resultMap>

	<sql id="select">
        SELECT OS.OPNN_ID                                                                                       /* 의견 ID */
             , OS.CRDN_ID                                                                                       /* 단속 ID */
             , OS.RCPT_NO                                                                                       /* 접수 번호 */
             , OS.RCPT_YMD                                                                                      /* 접수 일자 */
             , OS.RCPT_SE_CD                                                                                    /* 접수 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM029', OS.RCPT_SE_CD) FROM DUAL)               AS RCPT_SE_NM           /* 접수 구분 명 */
             , OS.OWNR_REL_CD                                                                                   /* 소유주 관계 코드 */
             , (SELECT FN_GET_CODE_NM('FIM032', OS.OWNR_REL_CD) FROM DUAL)              AS OWNR_REL_NM          /* 소유주 관계 명*/
             , OS.STTR_NM                                                                                       /* 진술자 명 */
             , OS.STTR_BRDT                                                                                     /* 진술자 생년월일 */
             , (SELECT FN_GET_BRDT_FORMAT(OS.STTR_BRDT, '-') FROM DUAL)                 AS STTR_BRDT_FORMAT     /* 납부자 생년월일 */
             , OS.STTR_RRNO                                                                                     /* 진술자 주민등록번호 */
             , OS.STTR_ADDR                                                                                     /* 진술자 주소 */
             , OS.STTR_DADDR                                                                                    /* 진술자 상세주소 */
             , OS.STTR_ZIP                                                                                      /* 진술자 우편번호 */
             , OS.STTR_CTTPC                                                                                    /* 진술자 연락처 */
             , OS.STTR_EML                                                                                      /* 진술자 이메일 */
             , OS.OPNN_SBMSN_CN                                                                                 /* 의견 제출 내용 */
             , OS.OPNN_SBMSN_SE_CD                                                                              /* 의견 제출 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM033', OS.OPNN_SBMSN_SE_CD) FROM DUAL)         AS OPNN_SBMSN_SE_NM     /* 의견 제출 구분 명 */
             , OS.OPNN_SBMSN_GIST                                                                               /* 의견 제출 요지 */
             , OS.ATCH_FILE_CNT                                                                                 /* 첨부 파일 수 */
             , OS.DOC_NO                                                                                        /* 문서 번호 */
             , OS.NTFCTN_SE_CD                                                                                  /* 통보 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM030', OS.NTFCTN_SE_CD) FROM DUAL)             AS NTFCTN_SE_NM         /* 통보 구분 명 */
             , OS.PIC_RVW_OPNN                                                                                  /* 담당자 검토 의견 */
             , OS.OPNN_SBMSN_STTS_CD                                                                            /* 의견 제출 상태 코드 */
             , (SELECT FN_GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD) FROM DUAL)       AS OPNN_SBMSN_STTS_NM   /* 의견 제출 상태 명 */
             , OS.ANS_YMD                                                                                       /* 답변 일자 */
             , OS.ANS_TM                                                                                        /* 답변 시각 */
             , (CONCAT(OS.ANS_YMD, OS.ANS_TM))                                          AS ANS_YMD_TM           /* 답변 일시 */
             , OS.ANS_CN                                                                                        /* 답변 내용 */
             , OS.DEL_YN                                                                                        /* 삭제 여부 */
             , OS.REG_DT                                                                                        /* 등록 일시 */
             , OS.RGTR                                                                                          /* 등록자 */
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = OS.RGTR)                AS RGTR_NM              /* 등록자 명 */
             , OS.MDFCN_DT                                                                                      /* 수정 일시 */
             , OS.MDFR                                                                                          /* 수정자 */
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = OS.MDFR)                AS MDFR_NM              /* 수정자 명 */
             , OS.DEL_DT                                                                                        /* 삭제 일시 */
             , OS.DLTR                                                                                          /* 삭제자 */
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = OS.DLTR)                AS DLTR_NM              /* 삭제자 명 */
             , OS.DEL_RSN                                                                                       /* 삭제 사유 */
             , C.SGG_CD                                                                                         /* 시군구 코드 */
             , C.TASK_SE_CD                                                                                     /* 업무 구분 코드 */
             , C.CRDN_INPT_SE_CD                                                                                /* 단속 입력 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL)           AS CRDN_INPT_SE_NM      /* 단속 입력 구분 명 */
             , C.CRDN_YMD                                                                                       /* 단속 일자 */
             , C.CRDN_TM                                                                                        /* 단속 시각 */
             , (CONCAT(C.CRDN_YMD, C.CRDN_TM))                                          AS CRDN_YMD_TM          /* 단속 일시 */
             , C.VHRNO                                                                                          /* 차량번호 */
             , C.CRDN_STDG_NM                                                                                   /* 단속 법정동 명 */
             , C.CRDN_ROAD_NM                                                                                   /* 단속 도로 명 */
             , C.CRDN_PLC                                                                                       /* 단속 장소 */
             , C.FFNLG_CRDN_AMT                                                                                 /* 과태료 단속 금액 */
             , C.FFNLG_AMT                                                                                      /* 과태료 금액 */
             , C.CRDN_STTS_CD                                                                                   /* 단속 상태 코드 */
             , (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL)              AS CRDN_STTS_NM         /* 단속 상태 명 */
             , P.RTPYR_ID                                                                                       /* 납부자 ID */
             , P.RTPYR_SE_CD                                                                                    /* 납부자 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL)               AS RTPYR_SE_NM          /* 납부자 구분 명 */
             , P.RTPYR_NO                                                                                       /* 납부자 번호 */
             , P.RTPYR_NM                                                                                       /* 납부자 명 */
             , (SELECT FN_GET_BRDT_FORMAT(P.RTPYR_BRDT, '-') FROM DUAL)                 AS RTPYR_BRDT_FORMAT   	/* 납부자 생년월일 */
             , P.ZIP                                                                                            /* 우편번호 */
             , P.ADDR                                                                                           /* 주소 */
             , P.DTL_ADDR                                                                                       /* 상세 주소 */
             , R.RDUCT_ID                                                                                       /* 감경 ID */
             , R.RDUCT_RSN_CD                                                                                   /* 감경 사유 코드 */
             , R.ETC_CN                                                                 AS RDUCT_ETC_CN         /* 기타 내용 */
             , (CASE WHEN R.RDUCT_AMT IS NOT NULL THEN R.RDUCT_AMT
                     ELSE (SELECT C.FFNLG_CRDN_AMT*TI.WKSN_RDUCT_RT/100 FROM TB_TASK_INFO TI WHERE C.SGG_CD=TI.SGG_CD AND C.TASK_SE_CD=TI.TASK_SE_CD AND TI.USE_YN='Y')
                 END )                                                                  AS RDUCT_AMT            /* 감경 금액 */
          FROM TB_OPNN_SBMSN        OS
         INNER JOIN TB_CRDN         C   ON (OS.CRDN_ID  = C.CRDN_ID)
    LEFT OUTER JOIN TB_PAYER        P   ON (C.RTPYR_ID  = P.RTPYR_ID)
    LEFT OUTER JOIN TB_RDUCT        R   ON (C.CRDN_ID   = R.CRDN_ID AND R.DEL_YN = 'N')
	</sql>

	<select id="selectOpnnSbmsnList" parameterType="map" resultType="dataobject">/* 의견제출 대장 목록 조회(opnnSbmsnMapper.selectOpnnSbmsnList) */
        <include refid="utility.paging-prefix" />
        <include refid="select" />
        <where>
            <if test="schRcptYmdFrom != null">
           AND OS.RCPT_YMD <![CDATA[ >= ]]> #{schRcptYmdFrom}                                                   /* 접수 일자 시작 */
            </if>
            <if test="schRcptYmdTo != null">
           AND OS.RCPT_YMD <![CDATA[ <= ]]> #{schRcptYmdTo}                                                     /* 접수 일자 종료 */
            </if>
            <if test="schAnsYmdFrom != null">
           AND OS.ANS_YMD <![CDATA[ >= ]]> #{schAnsYmdFrom}                                                     /* 답변 일자 시작 */
            </if>
            <if test="schAnsYmdTo != null">
           AND OS.ANS_YMD <![CDATA[ <= ]]> #{schAnsYmdTo}                                                       /* 답변 일자 종료 */
            </if>
            <if test="schSttrNm != null">
           AND OS.STTR_NM               =  #{schSttrNm}                                                         /* 진술자 명 */
            </if>
            <if test="schOpnnSbmsnSttsCd != null">
           AND OS.OPNN_SBMSN_STTS_CD    =  #{schOpnnSbmsnSttsCd}                                                /* 의견 제출 상태 코드 */
            </if>
            <if test="schVhrno != null">
           AND C.VHRNO                  =  #{schVhrno}                                                          /* 차량번호 */
            </if>
            <if test="schCrdnYmdFrom != null">
           AND C.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom}                                                    /* 단속 일자 시작 */
            </if>
            <if test="schCrdnYmdTo != null">
           AND C.CRDN_YMD <![CDATA[ <= ]]> #{schCrdnYmdTo}                                                      /* 단속 일자 종료 */
            </if>
            <choose>
                <when test="schRegDateOpt == 'regDt'">
                    <if test="schRegDateFrom != null">
           AND SUBSTR(OS.REG_DT,1,8) <![CDATA[ >= ]]> #{schRegDateFrom}                                         /* 등록 일자 시작 */
                    </if>
                    <if test="schRegDateTo != null">
           AND SUBSTR(OS.REG_DT,1,8) <![CDATA[ <= ]]> #{schRegDateTo}                                           /* 등록 일자 종료 */
                    </if>
                </when>
                <when test="schRegDateOpt == 'mdfcnDt'">
                    <if test="schRegDateFrom != null">
           AND SUBSTR(OS.MDFCN_DT,1,8) <![CDATA[ >= ]]> #{schRegDateFrom}                                       /* 수정 일자 시작 */
                    </if>
                    <if test="schRegDateTo != null">
           AND SUBSTR(OS.MDFCN_DT,1,8) <![CDATA[ <= ]]> #{schRegDateTo}                                         /* 수정 일자 종료 */
                    </if>
                </when>
                <otherwise>
                </otherwise>
            </choose>
            <choose>
                <when test="schDetailUserOpt == 'rgtr'">
                    <if test="schDetailUserCd != null">
           AND OS.RGTR                  =  #{schDetailUserCd}                                                   /* 등록자 코드 */
                    </if>
                </when>
                <when test="schDetailUserOpt == 'mdfr'">
                    <if test="schDetailUserCd != null">
           AND OS.MDFR                  =  #{schDetailUserCd}                                                   /* 수정자 코드 */
                    </if>
                </when>
                <otherwise>
                </otherwise>
            </choose>
            <choose>
                <when test="delYn != null">
           AND OS.DEL_YN                =  #{delYn}                                                             /* 삭제 여부 */
                </when>
                <otherwise>
           AND OS.DEL_YN                =  'N'                                                                  /* 삭제 여부 */
                </otherwise>
            </choose>
        </where>
           AND C.SGG_CD                 =  #{sggCd}                                                             /* 시군구 코드 */
        <if test="taskSeCd != null">
           AND C.TASK_SE_CD             =  #{taskSeCd}                                                          /* 업무 구분 코드 */
        </if>
        <if test="crdnDelYn != null">
           AND C.DEL_YN                 =  #{crdnDelYn}                                                         /* 삭제 여부 */
        </if>
        <if test="by != null and by != '' and term != null">
            <choose>
                <when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
                    <include refid="dynamicSearch.start" />
                    <choose>
                        <when test="by == 'rcptYmd'"> OS.RCPT_YMD </when>
                        <when test="by == 'rcptNo'"> OS.RCPT_NO </when>
                        <when test="by == 'rcptSeNm'"> OS.RCPT_SE_CD </when>
                        <when test="by == 'ntfctnSeNm'"> OS.NTFCTN_SE_CD </when>
                        <when test="by == 'sttrNm'"> OS.STTR_NM </when>
                        <when test="by == 'opnnSbmsnSttsNm'"> OS.OPNN_SBMSN_STTS_CD </when>
                        <when test="by == 'opnnSbmsnSeNm'"> OS.OPNN_SBMSN_SE_CD </when>
                        <when test="by == 'opnnSbmsnGist'"> OS.OPNN_SBMSN_GIST </when>
                        <when test="by == 'crdnYmd'"> C.CRDN_YMD </when>
                        <when test="by == 'vhrno'"> C.VHRNO </when>
                        <when test="by == 'crdnPlc'"> C.CRDN_PLC </when>
                        <when test="by == 'crdnSttsNm'"> C.CRDN_STTS_CD </when>
                        <when test="by == 'DOC_NO'"> OS.DOC_NO </when>
                        <when test="by == 'ANS_YMD'"> OS.ANS_YMD </when>
                        <when test="by == 'ANS_CN'"> OS.ANS_CN </when>
                        <when test="by == 'rtpyrNm'"> P.RTPYR_NM </when>
                        <when test="by == 'rtpyrNo'"> P.RTPYR_NO </when>
                        <when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </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="selectOpnnSbmsns" parameterType="map" resultType="dataobject">/* 의견제출 대장 객체 가져오기(opnnSbmsnMapper.selectOpnnSbmsns) */
        <include refid="select" />
        <where>
            <if test="opnnIDs != null">
           AND OS.OPNN_ID               IN (
            <foreach collection="opnnIDs" item="opnnId" separator=","> #{opnnId} </foreach>
               )
            </if>
            <if test="opnnId != null">
           AND OS.OPNN_ID               =  #{opnnId}                                                            /* 의견제출 ID */
            </if>
            <choose>
                <when test="delYn != null">
           AND OS.DEL_YN                =  #{delYn}                                                             /* 삭제 여부 */
                </when>
                <otherwise>
           AND OS.DEL_YN                =  'N'                                                                  /* 삭제 여부 */
                </otherwise>
            </choose>
            <if test="crdnId != null">
           AND C.CRDN_ID                =  #{crdnId}                                                            /* 단속 ID */
            </if>
        </where>
        <include refid="utility.orderBy" />
	</select>

	<insert id="insertOpnnSbmsn" parameterType="map">/* 의견제출 대장 등록(opnnSbmsnMapper.insertOpnnSbmsn) */
        <selectKey resultType="string" keyProperty="opnnSbmsn.opnnId" keyColumn="NEW_ID" order="BEFORE">
            SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(OPNN_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
              FROM TB_OPNN_SBMSN
             WHERE OPNN_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
        </selectKey>
        INSERT
          INTO TB_OPNN_SBMSN (
               OPNN_ID                                                                                          /* 의견 ID */
             , CRDN_ID                                                                                          /* 단속 ID */
             , RCPT_NO                                                                                          /* 접수 번호 */
             , RCPT_YMD                                                                                         /* 접수 일자 */
             , RCPT_SE_CD                                                                                       /* 접수 구분 코드 */
             , OWNR_REL_CD                                                                                      /* 소유주 관계 코드 */
             , STTR_NM                                                                                          /* 진술자 명 */
             , STTR_BRDT                                                                                        /* 진술자 생년월일 */
             , STTR_RRNO                                                                                        /* 진술자 주민등록번호 */
             , STTR_ADDR                                                                                        /* 진술자 주소 */
             , STTR_DADDR                                                                                       /* 진술자 상세주소 */
             , STTR_ZIP                                                                                         /* 진술자 우편번호 */
             , STTR_CTTPC                                                                                       /* 진술자 연락처 */
             , STTR_EML                                                                                         /* 진술자 이메일 */
             , OPNN_SBMSN_CN                                                                                    /* 의견 제출 내용 */
             , OPNN_SBMSN_SE_CD                                                                                 /* 의견 제출 구분 코드 */
             , OPNN_SBMSN_GIST                                                                                  /* 의견 제출 요지 */
             , ATCH_FILE_CNT                                                                                    /* 첨부 파일 수 */
             , DOC_NO                                                                                           /* 문서 번호 */
             , NTFCTN_SE_CD                                                                                     /* 통보 구분 코드 */
             , PIC_RVW_OPNN                                                                                     /* 담당자 검토 의견 */
             , ANS_CN                                                                                           /* 답변 내용 */
             , ANS_YMD                                                                                          /* 답변 일자 */
             , ANS_TM                                                                                           /* 답변 시각 */
             , OPNN_SBMSN_STTS_CD                                                                               /* 의견 제출 상태 코드 */
             , DEL_YN                                                                                           /* 삭제 여부 */
             , REG_DT                                                                                           /* 등록 일시 */
             , RGTR                                                                                             /* 등록자 */
             , MDFCN_DT                                                                                         /* 수정 일시 */
             , MDFR                                                                                             /* 수정자 */
        )
        VALUES (
               #{opnnSbmsn.opnnId}                                                                              /* 의견 ID */
             , #{opnnSbmsn.crdnId}                                                                              /* 단속 ID */
             , #{opnnSbmsn.rcptNo}                                                                              /* 접수 번호 */
             , #{opnnSbmsn.rcptYmd}                                                                             /* 접수 일자 */
             , #{opnnSbmsn.rcptSeCd}                                                                            /* 접수 구분 코드 */
             , #{opnnSbmsn.ownrRelCd}                                                                           /* 소유주 관계 코드 */
             , #{opnnSbmsn.sttrNm}                                                                              /* 진술자 명 */
             , #{opnnSbmsn.sttrBrdt}                                                                            /* 진술자 생년월일 */
             , #{opnnSbmsn.sttrRrno}                                                                            /* 진술자 주민등록번호 */
             , #{opnnSbmsn.sttrAddr}                                                                            /* 진술자 주소 */
             , #{opnnSbmsn.sttrDaddr}                                                                           /* 진술자 상세주소 */
             , #{opnnSbmsn.sttrZip}                                                                             /* 진술자 우편번호 */
             , #{opnnSbmsn.sttrCttpc}                                                                           /* 진술자 연락처 */
             , #{opnnSbmsn.sttrEml}                                                                             /* 진술자 이메일 */
             , #{opnnSbmsn.opnnSbmsnCn}                                                                         /* 의견 제출 내용 */
             , #{opnnSbmsn.opnnSbmsnSeCd}                                                                       /* 의견 제출 구분 코드 */
             , #{opnnSbmsn.opnnSbmsnGist}                                                                       /* 의견 제출 요지 */
             , #{opnnSbmsn.atchFileCnt}                                                                         /* 첨부 파일 수 */
             , #{opnnSbmsn.docNo}                                                                               /* 문서 번호 */
             , #{opnnSbmsn.ntfctnSeCd}                                                                          /* 통보 구분 코드 */
             , #{opnnSbmsn.picRvwOpnn}                                                                          /* 담당자 검토 의견 */
             , #{opnnSbmsn.ansCn}                                                                               /* 답변 내용 */
             , #{opnnSbmsn.ansYmd}                                                                              /* 답변 일시 */
             , #{opnnSbmsn.ansTm}                                                                               /* 답변 일시 */
             , #{opnnSbmsn.opnnSbmsnSttsCd}                                                                     /* 의견 제출 상태 코드 */
             , 'N'                                                                                              /* 삭제 여부 */
             , <include refid="utility.now" />                                                                  /* 등록 일시 */
             , #{opnnSbmsn.createdBy}                                                                           /* 등록자 */
             , <include refid="utility.now" />                                                                  /* 수정 일시 */
             , #{opnnSbmsn.modifiedBy}                                                                          /* 수정자 */
        )
	</insert>

	<update id="updateOpnnSbmsn" parameterType="map">/* 의견제출 대장 수정(opnnSbmsnMapper.updateOpnnSbmsn) */
        UPDATE TB_OPNN_SBMSN
           SET RCPT_NO                  = #{opnnSbmsn.rcptNo}                                                   /* 접수 번호 */
             , RCPT_YMD                 = #{opnnSbmsn.rcptYmd}                                                  /* 접수 일자 */
             , RCPT_SE_CD               = #{opnnSbmsn.rcptSeCd}                                                 /* 접수 구분 코드 */
             , OWNR_REL_CD              = #{opnnSbmsn.ownrRelCd}                                                /* 소유주 관계 코드 */
             , STTR_NM                  = #{opnnSbmsn.sttrNm}                                                   /* 진술자 명 */
             , STTR_BRDT                = #{opnnSbmsn.sttrBrdt}                                                 /* 진술자 생년월일 */
             , STTR_RRNO                = #{opnnSbmsn.sttrRrno}                                                 /* 진술자 주민등록번호 */
             , STTR_ADDR                = #{opnnSbmsn.sttrAddr}                                                 /* 진술자 주소 */
             , STTR_DADDR               = #{opnnSbmsn.sttrDaddr}                                                /* 진술자 상세주소 */
             , STTR_ZIP                 = #{opnnSbmsn.sttrZip}                                                  /* 진술자 우편번호 */
             , STTR_CTTPC               = #{opnnSbmsn.sttrCttpc}                                                /* 진술자 연락처 */
             , STTR_EML                 = #{opnnSbmsn.sttrEml}                                                  /* 진술자 이메일 */
             , OPNN_SBMSN_CN            = #{opnnSbmsn.opnnSbmsnCn}                                              /* 의견 제출 내용 */
             , OPNN_SBMSN_SE_CD         = #{opnnSbmsn.opnnSbmsnSeCd}                                            /* 의견 제출 구분 코드 */
             , OPNN_SBMSN_GIST          = #{opnnSbmsn.opnnSbmsnGist}                                            /* 의견 제출 요지 */
             , ATCH_FILE_CNT            = #{opnnSbmsn.atchFileCnt}                                              /* 첨부 파일 수 */
             , PIC_RVW_OPNN             = #{opnnSbmsn.picRvwOpnn}                                               /* 담당자 검토 의견 */
             , MDFCN_DT                 = <include refid="utility.now" />                                       /* 수정 일시 */
             , MDFR                     = #{opnnSbmsn.modifiedBy}                                               /* 수정자 */
         WHERE OPNN_ID                  = #{opnnSbmsn.opnnId}                                                   /* 의견 ID */
           AND DEL_YN                   = 'N'                                                                   /* 삭제 여부 */
	</update>

	<update id="updateAnsSttsCd" parameterType="map">/* 의견제출 대장 답변 수정(opnnSbmsnMapper.updateAnsSttsCd) */
        UPDATE TB_OPNN_SBMSN
           SET OPNN_SBMSN_GIST          = #{opnnSbmsn.opnnSbmsnGist}                                            /* 의견 제출 요지 */
             , DOC_NO                   = #{opnnSbmsn.docNo}                                                    /* 문서 번호 */
             , NTFCTN_SE_CD             = #{opnnSbmsn.ntfctnSeCd}                                               /* 통보 구분 코드 */
             , PIC_RVW_OPNN             = #{opnnSbmsn.picRvwOpnn}                                               /* 담당자 검토 의견 */
             , OPNN_SBMSN_STTS_CD       = #{opnnSbmsn.opnnSbmsnSttsCd}                                          /* 의견 제출 상태 코드 */
             , ANS_YMD                  = #{opnnSbmsn.ansYmd}                                                   /* 답변 일자 */
             , ANS_TM                   = #{opnnSbmsn.ansTm}                                                    /* 답변 시각 */
             , ANS_CN                   = #{opnnSbmsn.ansCn}                                                    /* 답변 내용 */
             , MDFCN_DT                 = <include refid="utility.now" />                                       /* 수정 일시 */
             , MDFR                     = #{opnnSbmsn.modifiedBy}                                               /* 수정자 */
         WHERE OPNN_ID                  = #{opnnSbmsn.opnnId}                                                   /* 의견 ID */
           AND DEL_YN                   = 'N'                                                                   /* 삭제 여부 */
	</update>

	<update id="deleteOpnnSbmsn" parameterType="map">/* 의견제출 대장 삭제(opnnSbmsnMapper.deleteOpnnSbmsn) */
        UPDATE TB_OPNN_SBMSN
           SET DEL_YN                   = 'Y'
             , DEL_DT                   = <include refid="utility.now" />                                       /* 삭제 일시 */
             , DLTR                     = #{opnnSbmsn.modifiedBy}                                               /* 삭제자 */
             , DEL_RSN                  = #{opnnSbmsn.delRsn}                                                   /* 삭제 사유 */
         WHERE OPNN_ID                  = #{opnnSbmsn.opnnId}                                                   /* 의견 ID */
           AND DEL_YN                   = 'N'                                                                   /* 삭제 여부 */
	</update>

	<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(opnnSbmsnMapper.selectCrdn) */
        SELECT C.CRDN_ID                                                                                        /* 단속 ID */
             , C.SGG_CD                                                                                         /* 시군구 코드 */
             , C.TASK_SE_CD                                                                                     /* 업무 구분 코드 */
             , C.CRDN_REG_SE_CD                                                                                 /* 단속 등록 구분 코드 */
             , C.CRDN_YMD                                                                                       /* 단속 일자 */
             , C.CRDN_TM                                                                                        /* 단속 시각 */
             , C.VHRNO                                                                                          /* 차량번호 */
             , C.CRDN_STTS_CD                                                                                   /* 단속 상태 코드 */
             , (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL)              AS CRDN_STTS_NM         /* 단속 상태 명 */
             , C.CRDN_STTS_CHG_DT                                                                               /* 단속 상태 변경 일시 */
             , P.RTPYR_ID                                                                                       /* 납부자 ID */
             , P.RTPYR_NM                                                                                       /* 납부자 명 */
             , P.RTPYR_TELNO                                                                                    /* 납부자 전화번호 */
             , P.RTPYR_MBL_TELNO                                                                                /* 납부자 휴대 전화번호 */
             , P.RTPYR_EML                                                                                      /* 납부자 이메일 */
             , P.RTPYR_BRDT                                                                                     /* 납부자 생년월일 */
             , P.ZIP                                                                                            /* 우편번호 */
             , P.ADDR                                                                                           /* 주소 */
             , P.DTL_ADDR                                                                                       /* 상세 주소 */
             , OS.OPNN_ID                                                                                       /* 의견 ID */
             , OS.RCPT_NO                                                                                       /* 접수 번호 */
             , OS.RCPT_YMD                                                                                      /* 접수 일자 */
             , OS.RCPT_SE_CD                                                                                    /* 접수 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM029', OS.RCPT_SE_CD) FROM DUAL)               AS RCPT_SE_NM           /* 접수 구분 코드 */
             , OS.OWNR_REL_CD                                                                                   /* 소유주 관계 코드 */
             , (SELECT FN_GET_CODE_NM('FIM032', OS.OWNR_REL_CD) FROM DUAL)              AS OWNR_REL_NM          /* 소유주 관계 코드 */
             , OS.STTR_NM                                                                                       /* 진술자 명 */
             , OS.STTR_BRDT                                                                                     /* 진술자 생년월일 */
             , (SELECT FN_GET_BRDT_FORMAT(OS.STTR_BRDT, '-') FROM DUAL)                 AS STTR_BRDT_FORMAT     /* 납부자 생년월일 */
             , OS.STTR_RRNO                                                                                     /* 진술자 주민등록번호 */
             , OS.STTR_ADDR                                                                                     /* 진술자 주소 */
             , OS.STTR_DADDR                                                                                    /* 진술자 상세주소 */
             , OS.STTR_ZIP                                                                                      /* 진술자 우편번호 */
             , OS.STTR_CTTPC                                                                                    /* 진술자 연락처 */
             , OS.STTR_EML                                                                                      /* 진술자 이메일 */
             , OS.OPNN_SBMSN_CN                                                                                 /* 의견 제출 내용 */
             , OS.OPNN_SBMSN_SE_CD                                                                              /* 의견 제출 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM033', OS.OPNN_SBMSN_SE_CD) FROM DUAL)         AS OPNN_SBMSN_SE_NM     /* 의견 제출 구분 명 */
             , OS.OPNN_SBMSN_GIST                                                                               /* 의견 제출 요지 */
             , OS.ATCH_FILE_CNT                                                                                 /* 첨부 파일 수 */
             , OS.DOC_NO                                                                                        /* 문서 번호 */
             , OS.NTFCTN_SE_CD                                                                                  /* 통보 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM030', OS.NTFCTN_SE_CD) FROM DUAL)             AS NTFCTN_SE_NM         /* 통보 구분 코드 */
             , OS.PIC_RVW_OPNN                                                                                  /* 담당자 검토 의견 */
             , OS.OPNN_SBMSN_STTS_CD                                                                            /* 의견 제출 상태 코드 */
             , (SELECT FN_GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD) FROM DUAL)       AS OPNN_SBMSN_STTS_NM   /* 의견 제출 상태 명 */
             , OS.ANS_YMD                                                                                       /* 답변 일자 */
             , OS.ANS_TM                                                                                        /* 답변 시각 */
             , (CONCAT(OS.ANS_YMD, OS.ANS_TM))                                          AS ANS_YMD_TM           /* 답변 일시 */
             , OS.ANS_CN                                                                                        /* 답변 내용 */
             , (SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(RCPT_NO, 5)) + 1, 1) AS INT), 6, '0'))
                  FROM TB_OPNN_SBMSN
                 WHERE RCPT_NO LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%') )      AS NEW_RCPT_NO          /* 신규 접수 번호 */
             , <include refid="utility.today" />                                        AS TODAY                /* 오늘 일자 */
          FROM TB_CRDN            C
    LEFT OUTER JOIN TB_PAYER      P     ON (C.RTPYR_ID  = P.RTPYR_ID)
    LEFT OUTER JOIN TB_OPNN_SBMSN OS    ON (C.CRDN_ID   = OS.CRDN_ID AND OS.DEL_YN = 'N')
        <where>
            <if test="levyExclId != null">
           AND OS.OPNN_ID               =  #{levyExclId}                                                        /* 의견 ID */
                <if test="delYn != null">
           AND OS.DEL_YN                =  #{delYn}                                                             /* 삭제 여부 */
                </if>
            </if>
            <if test="crdnId != null">
           AND C.CRDN_ID                =  #{crdnId}                                                            /* 단속 ID */
                <if test="delYn != null">
           AND C.DEL_YN                 =  #{delYn}                                                             /* 삭제 여부 */
                </if>
            </if>
        </where>
	</select>

	<update id="updateCrdnOpnnSbmsnYn" parameterType="map">/* 단속 대장 의견제출여부 수정(opnnSbmsnMapper.updateCrdnOpnnSbmsnYn) */
        UPDATE TB_CRDN
           SET OPNN_SBMSN_YN            = #{crdn.opnnSbmsnYn}                                                   /* 의견 제출 여부 */
             , MDFCN_DT                 = <include refid="utility.now" />                                       /* 수정 일시 */
             , MDFR                     = #{crdn.modifiedBy}                                                    /* 수정자 */
         WHERE CRDN_ID                  = #{crdn.crdnId}                                                        /* 단속 ID */
	</update>

</mapper>