<?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.ae352.mapper.Ae352Mapper">

    <resultMap id="Ae352FeaVoMap" type="Ae352FeaVO">
        <result column="UID"                property="uid"                />    <!-- 시점 -->
        <result column="ROAD_NO"            property="roadNo"             />    <!-- 노선번호 -->
        <result column="SECT"               property="sect"               />    <!-- 구간번호 -->
        <result column="DOCODE"             property="docode"             />    <!-- 구조물_코드 -->
        <result column="NAM"                property="nam"                />    <!-- 공동구명칭 -->
        <result column="DOSTA1"             property="dosta1"             />    <!-- 시점_측점 -->
        <result column="DOSTA2"             property="dosta2"             />    <!-- 종점_측점 -->
        <result column="DOHEIGHT"           property="doheight"           />    <!-- 높이 -->
        <result column="DOWIDTH"            property="dowidth"            />    <!-- 폭 -->
        <result column="ALLLEN"             property="alllen"             />    <!-- 총연장 -->
        <result column="DOGI"               property="dogi"               />    <!-- 매설깊이 -->
        <result column="BOXSIZE"            property="boxsize"            />    <!-- BOX규격 -->
        <result column="UWATERYN"           property="uwateryn"           />    <!-- 상수도시설유무 -->
        <result column="ELECYN"             property="elecyn"             />    <!-- 전기시설유무 -->
        <result column="TELEYN"             property="teleyn"             />    <!-- 통신시설유무 -->
        <result column="HEATYN"             property="heatyn"             />    <!-- 난방시설유무 -->
        <result column="ACEVOL"             property="acevol"             />    <!-- 수전전압 -->
        <result column="ACEMETH"            property="acemeth"            />    <!-- 수전방식 -->
        <result column="ACELOCA"            property="aceloca"            />    <!-- 수전지점 -->
        <result column="ACEW"               property="acew"               />    <!-- 수배전반수 -->
        <result column="CONVOL"             property="convol"             />    <!-- 한전계약용량 -->
        <result column="NLIGHT"             property="nlight"             />    <!-- 조명시설 -->
        <result column="VOLFAC"             property="volfac"             />    <!-- 배수설비수 -->
        <result column="CONCW"              property="concw"              />    <!-- 집수정 -->
        <result column="GENVOL"             property="genvol"             />    <!-- 발전기용량 -->
        <result column="OFFFIRE"            property="offfire"            />    <!-- 소화기 -->
        <result column="WIND"               property="wind"               />    <!-- 환기구 -->
        <result column="WITYPE"             property="witype"             />    <!-- 환기방식 -->
        <result column="RI_CODE"            property="riCode"             />    <!-- 법정코드 -->
        <result column="REM"                property="rem"                />    <!-- 비고 -->

        <!--추가-->
        <result column="LOC_NAM"            property="locNam"               />  <!-- 로케이션 명 -->
    </resultMap>

    <resultMap id="Ae352GeoVoAddMap" type="Ae352GeoVo" extends="Ae352FeaVoMap">
        <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}NAM
        , ${alias}DOSTA1
        , ${alias}DOSTA2
        , ${alias}DOHEIGHT
        , ${alias}DOWIDTH
        , ${alias}ALLLEN
        , ${alias}DOGI
        , ${alias}BOXSIZE
        , ${alias}UWATERYN
        , ${alias}ELECYN
        , ${alias}TELEYN
        , ${alias}HEATYN
        , ${alias}ACEVOL
        , ${alias}ACEMETH
        , ${alias}ACELOCA
        , ${alias}ACEW
        , ${alias}CONVOL
        , ${alias}NLIGHT
        , ${alias}VOLFAC
        , ${alias}CONCW
        , ${alias}GENVOL
        , ${alias}OFFFIRE
        , ${alias}WIND
        , ${alias}WITYPE
        , ${alias}RI_CODE
        , ${alias}REM
    </sql>

    <!-- 컬럼 -->
    <sql id="columns">
        UID
        , ROAD_NO
        , SECT
        , DOCODE
        , NAM
        , DOSTA1
        , DOSTA2
        , DOHEIGHT
        , DOWIDTH
        , ALLLEN
        , DOGI
        , BOXSIZE
        , UWATERYN
        , ELECYN
        , TELEYN
        , HEATYN
        , ACEVOL
        , ACEMETH
        , ACELOCA
        , ACEW
        , CONVOL
        , NLIGHT
        , VOLFAC
        , CONCW
        , GENVOL
        , OFFFIRE
        , WIND
        , WITYPE
        , RI_CODE
        , REM
    </sql>

    <!-- 값 -->
    <sql id="values">
        #{uid}
        , #{roadNo}
        , #{sect}
        , #{docode}
        , #{nam}
        , #{dosta1}
        , #{dosta2}
        , #{doheight}
        , #{dowidth}
        , #{alllen}
        , #{dogi}
        , #{boxsize}
        , #{uwateryn}
        , #{elecyn}
        , #{teleyn}
        , #{heatyn}
        , #{acevol}
        , #{acemeth}
        , #{aceloca}
        , #{acew}
        , #{convol}
        , #{nlight}
        , #{volfac}
        , #{concw}
        , #{genvol}
        , #{offfire}
        , #{wind}
        , #{witype}
        , #{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="nam != null">
                , NAM               = #{nam}
            </if>
            <if test="dosta1 != null">
                , DOSTA1            = #{dosta1}
            </if>
            <if test="dosta2 != null">
                , DOSTA2            = #{dosta2}
            </if>
            <if test="doheight != null">
                , DOHEIGHT          = #{doheight}
            </if>
            <if test="dowidth != null">
                , DOWIDTH           = #{dowidth}
            </if>
            <if test="alllen != null">
                , ALLLEN            = #{alllen}
            </if>
            <if test="dogi != null">
                , DOGI              = #{dogi}
            </if>
            <if test="boxsize != null">
                , BOXSIZE           = #{boxsize}
            </if>
            <if test="uwateryn != null">
                , UWATERYN          = #{uwateryn}
            </if>
            <if test="elecyn != null">
                , ELECYN            = #{elecyn}
            </if>
            <if test="teleyn != null">
                , TELEYN            = #{teleyn}
            </if>
            <if test="heatyn != null">
                , HEATYN            = #{heatyn}
            </if>
            <if test="acevol != null">
                , ACEVOL            = #{acevol}
            </if>
            <if test="acemeth != null">
                , ACEMETH           = #{acemeth}
            </if>
            <if test="aceloca != null">
                , ACELOCA           = #{aceloca}
            </if>
            <if test="acew != null">
                , ACEW              = #{acew}
            </if>
            <if test="convol != null">
                , CONVOL            = #{convol}
            </if>
            <if test="nlight != null">
                , NLIGHT            = #{nlight}
            </if>
            <if test="volfac != null">
                , VOLFAC            = #{volfac}
            </if>
            <if test="concw != null">
                , CONCW             = #{concw}
            </if>
            <if test="genvol != null">
                , GENVOL            = #{genvol}
            </if>
            <if test="offfire != null">
                , OFFFIRE           = #{offfire}
            </if>
            <if test="wind != null">
                , WIND              = #{wind}
            </if>
            <if test="witype != null">
                , WITYPE            = #{witype}
            </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 AF.ROAD_NO  LIKE CONCAT('%', #{roadNo}, '%')
            </if>
            <if test="'' != sect and null != sect">
                AND AF.SECT     LIKE CONCAT('%', #{sect}, '%')
            </if>
        </trim>
    </sql>

    <!-- 시설 : 공동구 정보 조회 -->
    <select id="selectGetList" resultMap="Ae352GeoVoAddMap">
        SELECT  <include refid="selectColumns">
        <property name="alias" value="AF." />
    </include>
        ,       (SELECT LOC_NAM FROM BML_DNRI_AS_FEA WHERE RI_CD = AF.RI_CODE) AS LOC_NAM
        ,       AG.XMIN
        ,       AG.XMAX
        ,       AG.YMIN
        ,       AG.YMAX
        ,       AG.SHAPETYPE
        FROM    AE352_FEA AS AF
        ,       AE352_GEO AS AG
        WHERE   AF.UID = AG.UID
        <include refid="defaultWhere" />
        ORDER BY AF.DOSTA1 ASC
    </select>

    <!-- 공동구 정보 조회 -->
    <select id="selectGetInfo" parameterType="ae352FeaVO" resultType="ae352FeaVO">
        SELECT  <include refid="columns"/>
        FROM    AE352_FEA
         WHERE   DOCODE   = #{docode}
    </select>

    <!-- 공동구 수정 -->
    <update id="updateFacilityInfo">
        UPDATE AE352_FEA
        SET    <include refid="updateField" />
        WHERE   UID   = #{uid}
    </update>
</mapper>