<?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="cbdoro.mods.facilityInfo.underSideWalk.mapper.UnderSideWalkMapper">

    <resultMap id="UnderSideWalkFeaVoMap" type="UnderSideWalkFeaVO">
        <result column="UID"                property="uid"             /> <!-- 시점 -->
        <result column="ROAD_NO"            property="roadNo"          /> <!-- 노선번호 -->
        <result column="SECT"               property="sect"            /> <!-- 구간번호 -->
        <result column="DOCODE"             property="docode"          /> <!-- 구조물코드 -->
        <result column="US_NAME"            property="usName"          /> <!-- 지하보도명 -->
        <result column="FA_TYPE"            property="faType"          /> <!-- 시설물종별 -->
        <result column="DOSTA1"             property="dosta1"          /> <!-- 시점의_구간내_이정 -->
        <result column="DOSTA2"             property="dosta2"          /> <!-- 종점의_구간내_이정 -->
        <result column="STR_LEVEL"          property="strLevel"        /> <!-- 상태등급 -->
        <result column="RE_DIA"             property="reDia"           /> <!-- 진단결과 -->
        <result column="LEN"                property="len"             /> <!-- 연장 -->
        <result column="TYPE"               property="type"            /> <!-- 규격 -->
        <result column="WID"                property="wid"             /> <!-- 폭원 -->
        <result column="EN_EA"              property="enEa"            /> <!-- 출입구수 -->
        <result column="MA_CE"              property="maCe"            /> <!-- 마감재_천정 -->
        <result column="MA_BL"              property="maBl"            /> <!-- 마감재_벽체 -->
        <result column="MA_FL"              property="maFl"            /> <!-- 마감재_바닥 -->
        <result column="MA_EN"              property="maEn"            /> <!-- 마감재_출입구 -->
        <result column="LGT_TYPE"           property="lgtType"         /> <!-- 조명시설_종류 -->
        <result column="LGT_EA"             property="lgtEa"           /> <!-- 조명시설_수량 -->
        <result column="ET_TYPE"            property="etType"          /> <!-- 소화시설_종류 -->
        <result column="ET_EA"              property="etEa"            /> <!-- 소화시설_수량 -->
        <result column="DRAINAGE"           property="drainage"        /> <!-- 배수시설 -->
        <result column="BR_FA"              property="brFa"            /> <!-- 방송설비 -->
        <result column="AW_FA"              property="awFa"            /> <!-- 환기방식 -->
        <result column="RI_CODE"            property="riCode"          /> <!-- 법정코드 -->
        <result column="REM"                property="rem"             /> <!-- 비고 -->
        <!--추가-->
        <result column="LOC_NAM"            property="locNam"          /> <!-- 로케이션 명 -->
    </resultMap>

    <resultMap id="UnderSideWalkGeoVoAddMap" type="UnderSideWalkGeoVo" extends="UnderSideWalkFeaVoMap">
        <result column="UID"                property="uid"             /> <!-- 시점 -->
        <result column="XMIN"               property="xmin"            /> <!-- X축 최소 -->
        <result column="XMAX"               property="xmax"            /> <!-- X축 최대 -->
        <result column="YMIN"               property="ymin"            /> <!-- Y축 최소 -->
        <result column="YMAX"               property="ymax"            /> <!-- Y축 최대 -->
        <result column="SHAPETYPE"          property="shapetype"       /> <!-- 도형타입 -->
        <result column="GEOMETRY"           property="geometry"        /> <!-- 기하학 -->
    </resultMap>

    <sql id="selectColumns">
        ${alias}UID
        , ${alias}ROAD_NO
        , ${alias}SECT
        , ${alias}DOCODE
        , ${alias}US_NAME
        , ${alias}FA_TYPE
        , ${alias}DOSTA1
        , ${alias}DOSTA2
        , ${alias}STR_LEVEL
        , ${alias}RE_DIA
        , ${alias}LEN
        , ${alias}TYPE
        , ${alias}WID
        , ${alias}EN_EA
        , ${alias}MA_CE
        , ${alias}MA_BL
        , ${alias}MA_FL
        , ${alias}MA_EN
        , ${alias}LGT_TYPE
        , ${alias}LGT_EA
        , ${alias}ET_TYPE
        , ${alias}ET_EA
        , ${alias}DRAINAGE
        , ${alias}BR_FA
        , ${alias}AW_FA
        , ${alias}RI_CODE
        , ${alias}REM
    </sql>

    <!-- 컬럼 -->
    <sql id="columns">
        UID
        , ROAD_NO
        , SECT
        , DOCODE
        , US_NAME
        , FA_TYPE
        , DOSTA1
        , DOSTA2
        , STR_LEVEL
        , RE_DIA
        , LEN
        , TYPE
        , WID
        , EN_EA
        , MA_CE
        , MA_BL
        , MA_FL
        , MA_EN
        , LGT_TYPE
        , LGT_EA
        , ET_TYPE
        , ET_EA
        , DRAINAGE
        , BR_FA
        , AW_FA
        , RI_CODE
        , REM
    </sql>

    <!-- 값 -->
    <sql id="values">
        #{uid}
        , #{roadNo}
        , #{sect}
        , #{docode}
        , #{usName}
        , #{faType}
        , #{dosta1}
        , #{dosta2}
        , #{strLevel}
        , #{reDia}
        , #{len}
        , #{type}
        , #{wid}
        , #{enEa}
        , #{maCe}
        , #{maBl}
        , #{maFl}
        , #{maEn}
        , #{lgtType}
        , #{lgtEa}
        , #{etType}
        , #{etEa}
        , #{drainage}
        , #{brFa}
        , #{awFa}
        , #{riCode}
        , #{rem}
    </sql>

    <!-- 업데이트 값 -->
    <sql id="updateField">
        <trim prefixOverrides=",">
            <if test="uid != null">
                , UID            = #{uid}
            </if>
            <if test="roadNo != null">
                , ROAD_NO       = #{roadNo}
            </if>
            <if test="sect != null">
                , SECT          = #{sect}
            </if>
            <if test="docode != null">
                , DOCODE        = #{docode}
            </if>
            <if test="usName != null">
                , US_NAME       = #{usName}
            </if>
            <if test="faType != null">
                , FA_TYPE       = #{faType}
            </if>
            <if test="dosta1 != null">
                , DOSTA1        = #{dosta1}
            </if>
            <if test="dosta2 != null">
                , DOSTA2        = #{dosta2}
            </if>
            <if test="strLevel != null">
                , STR_LEVEL     = #{strLevel}
            </if>
            <if test="reDia != null">
                , RE_DIA        = #{reDia}
            </if>
            <if test="len != null">
                , LEN           = #{len}
            </if>
            <if test="type != null">
                , TYPE          = #{type}
            </if>
            <if test="wid != null">
                , WID           = #{wid}
            </if>
            <if test="enEa != null">
                , EN_EA         = #{enEa}
            </if>
            <if test="maCe != null">
                , MA_CE         = #{maCe}
            </if>
            <if test="maBl != null">
                , MA_BL         = #{maBl}
            </if>
            <if test="maFl != null">
                , MA_FL         = #{maFl}
            </if>
            <if test="maEn != null">
                , MA_EN         = #{maEn}
            </if>
            <if test="lgtType != null">
                , LGT_TYPE      = #{lgtType}
            </if>
            <if test="lgtEa != null">
                , LGT_EA        = #{lgtEa}
            </if>
            <if test="etType != null">
                , ET_TYPE       = #{etType}
            </if>
            <if test="etEa != null">
                , ET_EA         = #{etEa}
            </if>
            <if test="drainage != null">
                , DRAINAGE      = #{drainage}
            </if>
            <if test="brFa != null">
                , BR_FA         = #{brFa}
            </if>
            <if test="awFa != null">
                , AW_FA         = #{awFa}
            </if>
            <if test="riCode != null">
                , RI_CODE       = #{riCode}
            </if>
            <if test="rem != null">
                , REM           = #{rem}
            </if>
        </trim>
    </sql>

    <sql id="defaultWhere">
        <trim prefix="AND" prefixOverrides="AND">
            <if  test="'' != roadNo and null != roadNo">
                AND USF.ROAD_NO  LIKE CONCAT('%', #{roadNo}, '%')
            </if>
            <if test="'' != sect and null != sect">
                AND USF.SECT     LIKE CONCAT('%', #{sect}, '%')
            </if>
        </trim>
    </sql>

    <!-- 시설 : 지하보도 정보 조회 -->
    <select id="selectGetList" resultMap="UnderSideWalkGeoVoAddMap">
        SELECT  <include refid="selectColumns">
        <property name="alias" value="USF." />
    </include>
        ,       (SELECT LOC_NAM FROM BML_DNRI_AS_FEA WHERE RI_CD = USF.RI_CODE) AS LOC_NAM
        ,       USG.XMIN
        ,       USG.XMAX
        ,       USG.YMIN
        ,       USG.YMAX
        ,       USG.SHAPETYPE
        FROM    UNDER_SIDEWALK_FEA AS USF
        ,       UNDER_SIDEWALK_GEO AS USG
        WHERE   USF.UID = USG.UID
        <include refid="defaultWhere" />
        ORDER BY USF.DOSTA1 ASC
    </select>

    <!-- 지하보도 정보 조회 -->
    <select id="selectGetInfo" parameterType="underSideWalkFeaVO" resultType="underSideWalkFeaVO">
        SELECT  <include refid="columns"/>
        FROM    UNDER_SIDEWALK_FEA
        WHERE   DOCODE   = #{docode}
    </select>

    <!-- 지하보도 수정 -->
    <update id="updateFacilityInfo">
        UPDATE UNDER_SIDEWALK_FEA
        SET    <include refid="updateField" />
        WHERE   UID   = #{uid}
    </update>
</mapper>
