<?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.roadCons.mapper.RoadConsMapper">

    <resultMap id="roadConsVO" type="roadConsVO">
        <result column="CNS_NO"         property="cnsNo"        /> <!-- 공사번호 -->
        <result column="CNS_CTS"        property="cnsCts"       /> <!-- 상태정보 -->
        <result column="UP_DTE"         property="upDte"        /> <!-- 업데이트 일시 -->
        <result column="CNS_COM"        property="cnsCom"       /> <!-- 시공사 -->
        <result column="CNS_DTE"        property="cnsDte"       /> <!-- 준공일 -->
        <result column="CRT_NAM"        property="crtNam"       /> <!-- 생성자 이름 -->
        <result column="CRT_DTE"        property="crtDte"       /> <!-- 생성 일자 -->
        <result column="CNS_MNG"        property="cnsMng"       /> <!-- 공사 감독관 -->
        <result column="CNS_NAM"        property="cnsNam"       /> <!-- 공사명칭 -->
        <result column="CNS_ST"         property="cnsSt"        /> <!-- 시점위치 -->
        <result column="CNS_ET"         property="cnsEt"        /> <!-- 종점위치 -->
        <result column="CNS_DES"        property="cnsDes"       /> <!-- 상태정보 -->
        <result column="CNS_LEN"        property="cnsLen"       /> <!-- 공사연장 -->
        <result column="IDX"            property="idx"          /> <!-- 일련번호 -->
        <result column="ROAD_NO"        property="roadNo"       /> <!-- 노선번호 -->
        <result column="SECT"           property="sect"         /> <!-- 구간번호 -->
        <result column="SECT_ST"        property="sectSt"       /> <!-- 구간연장의 시점여부 -->
        <result column="SECT_ET"        property="sectEt"       /> <!-- 구간연장의 종점여부 -->
        <result column="ST_NO"          property="stNo"         /> <!-- 시점측점 -->
        <result column="ET_NO"          property="etNo"         /> <!-- 종점측점 -->
        <result column="ROAD_LEN"       property="roadLen"      /> <!-- 총연장 -->
    </resultMap>
	 <resultMap id="RoadDocFloderMap" type="cbdoro.mods.roadCons.vo.RoadDocFloder">
    <id     column="dir_id"    property="dirId"/>
    <result column="project_id" property="projectId"/>
    <result column="parent_id" property="parentId"/>
    <result column="parent_id1" property="parentId1"/>
    <result column="parent_id2" property="parentId2"/>
    <result column="parent_id3" property="parentId3"/>
    <result column="parent_id4" property="parentId4"/>
    <result column="parent_id5" property="parentId5"/>
    <result column="parent_id6" property="parentId6"/>
    <result column="parent_id7" property="parentId7"/>
    <result column="parent_id8" property="parentId8"/>
    <result column="parent_id9" property="parentId9"/>
    <result column="parent_id10" property="parentId10"/>
    <result column="dir_name"  property="dirName"/>
    <result column="dir_path"  property="dirPath"/>
    <result column="depth_level" property="depthLevel"/>
    <result column="reg_date"  property="regDate"/>
  </resultMap>
<!-- 파일 목록 resultMap -->
<resultMap id="FileInfoMap" type="cbdoro.mods.roadCons.vo.FileInfoVO">
  <id     column="file_id"    property="fileId"/>
  <result column="project_id" property="projectId"/>
  <result column="dir_id"     property="dirId"/>
  <result column="file_name"  property="fileName"/>
  <result column="file_ext"   property="fileExt"/>
  <result column="file_size"  property="fileSize"/>
  <result column="file_mtime" property="fileMtime"/>
  <result column="file_path"  property="filePath"/>
  <result column="svr_path"   property="svrPath"/>
</resultMap>

<!-- dir별 총 파일 수 -->
<select id="countFilesByDir" parameterType="string" resultType="int">
  SELECT COUNT(*) 
  FROM file_info
  WHERE dir_id = #{dirId}
</select>

<!-- dir별 파일 페이징 -->
<select id="selectFilesByDir" parameterType="map" resultMap="FileInfoMap">
  SELECT 
      file_id,
      project_id,
      dir_id,
      file_name,
      file_ext,
      file_size,
      DATE_FORMAT(file_mtime, '%Y-%m-%d %H:%i:%s') AS file_mtime,
      file_path,
      svr_path
  FROM file_info
  WHERE dir_id = #{dirId}
  ORDER BY file_mtime DESC, file_id DESC
  LIMIT #{limit} OFFSET #{offset}
</select>
<!-- file_info 예시 -->
<select id="selectFilesByIds" parameterType="list" resultType="map">
  SELECT file_id AS fileId, file_name AS fileName, file_ext AS fileExt,
         file_size AS fileSize, file_mtime AS fileMtime,
         file_path AS filePath, svr_path AS svrPath
  FROM file_info
  WHERE file_id IN
  <foreach collection="list" item="id" open="(" separator="," close=")">
    #{id}
  </foreach>
</select>
<select id="selectFileById" parameterType="long" resultType="map">
  SELECT file_id AS fileId,
         file_name AS fileName,
         file_ext  AS fileExt,
         file_size AS fileSize,
         file_mtime AS fileMtime,
         file_path AS filePath,
         svr_path  AS svrPath
  FROM file_info
  WHERE file_id = #{fileId}
</select>
<!-- 프로젝트 검색 -->
<select id="searchProjects" resultType="map">
  SELECT
    project_id   AS projectId,
    project_name AS projectName
  FROM project_info
  <where>
    <if test="keyword != null and keyword != ''">
      (project_id LIKE CONCAT('%', #{keyword}, '%')
       OR project_name LIKE CONCAT('%', #{keyword}, '%'))
    </if>
  </where>
  ORDER BY project_name ASC
  LIMIT #{limit}
</select>

<!-- 루트 폴더 조회 -->
<select id="selectRootDirs" resultType="cbdoro.mods.roadCons.vo.RoadDocFloder">
  SELECT
    a.dir_id       AS dirId,
    a.dir_name     AS dirName,
    a.project_id   AS projectId,
    a.depth_level  AS depthLevel,
    a.reg_date     AS regDate,
    (
      SELECT COUNT(*) 
      FROM dir_info b 
      WHERE b.parent_id = a.dir_id
    ) AS hasChild
  FROM dir_info a
  WHERE a.project_id = #{projectId}
    AND (a.parent_id IS NULL OR a.parent_id = '')
    AND a.depth_level = 0
  ORDER BY a.dir_name ASC
</select>


<select id="selectFilesByDirId" parameterType="string" resultType="map">
  SELECT file_id AS fileId, file_name AS fileName, file_ext AS fileExt,
         file_size AS fileSize, file_mtime AS fileMtime,
         file_path AS filePath, svr_path AS svrPath
  FROM file_info
  WHERE dir_id = #{dirId}
</select>




  <!-- 단건 조회 -->
  <select id="selectOne" parameterType="string" resultMap="RoadDocFloderMap">
    SELECT * FROM dir_info WHERE dir_id = #{dirId}
  </select>
    <!-- 컬럼 -->
    <sql id="columns">
        CNS_NO
        , CNS_CTS
        , UP_DTE
        , CNS_COM
        , CNS_DTE
        , CRT_NAM
        , CRT_DTE
        , CNS_MNG
        , CNS_NAM
        , CNS_ST
        , CNS_ET
        , CNS_DES
        , CNS_LEN
        , IDX
        , ROAD_NO
        , SECT
        , SECT_ST
        , SECT_ET
        , ST_NO
        , ET_NO
        , ROAD_LEN
    </sql>

    <!-- 값 -->
    <sql id="values">
        #{cnsNo}
        , #{cnsCts}
        , #{upDte}
        , #{cnsCom}
        , #{cnsDte}
        , #{crtNam}
        , #{crtDte}
        , #{cnsMng}
        , #{cnsNam}
        , #{cnsSt}
        , #{cnsEt}
        , #{cnsDes}
        , #{cnsLen}
        , #{idx}
        , #{roadNo}
        , #{sect}
        , #{sectSt}
        , #{sectEt}
        , #{stNo}
        , #{etNo}
        , #{roadLen}
    </sql>

    <sql id="defaultWhere">
        <trim prefix="WHERE" prefixOverrides="AND">
            <if  test="'' != roadNo and null != roadNo">
                AND RCDL.ROAD_NO  LIKE CONCAT('%', #{roadNo}, '%')
            </if>
            <if test="'' != cnsNam and null != cnsNam">
                AND RCD.CNS_NAM   LIKE CONCAT('%', #{cnsNam}, '%')
            </if>
            <if test="'' != cnsCts and null != cnsCts">
                AND RCD.CNS_CTS   LIKE CONCAT('%', #{cnsCts}, '%')
            </if>
            <if test="'' != cnsNo and null != cnsNo">
                AND substr(RCD.CNS_NO, 1, 4)  LIKE CONCAT('%', #{cnsNo}, '%')
            </if>
            AND      RCDL.CNS_NO = RCD.CNS_NO
        </trim>
    </sql>
	
	<select id="selectRoadElevation" resultType="map">
  SELECT X_POS, Y_POS, Z_POS, DIST,ROAD_NO,SECT,SPLIT
  FROM ROAD_CONS_LINE
  WHERE CNS_NO = #{cnsNo}
  ORDER BY IDX ASC
</select>
	<select id="selectRoadElevation1" resultType="map"  parameterType="map">
  SELECT X_POS, Y_POS, Z_POS, DIST, ST_AsText(GEOM) AS WKT,SPLIT,DIST_SELF
  FROM BML_MNT_MONITER_CNELINE
  WHERE MNT_NO = #{mntNo} and FCT_DTE = #{fctDte}
  ORDER BY IDX ASC
</select>
	<select id="selectFacilities1" resultType="map"  parameterType="map">
SELECT 
  MNT_NO, FCT_DTE, IDX, FAC_NAM, FAC_TYP, FAC_CLS, FAC_LST,
  ST_AsText(GEOM) AS WKT,
  MNT_DIST, FCT_DIST, X_POS, Y_POS
FROM BML_MNT_FACT_LAYERS
WHERE MNT_NO = #{mntNo}
  AND FCT_DTE = #{fctDte}
ORDER BY FAC_CLS, FCT_DIST ASC;

</select>
	<select id="selectUploadlist1" resultType="map"  parameterType="map">
SELECT *
FROM BML_MNT_FACT_LAYWROK
WHERE MNT_NO = #{mntNo}


</select>
	<select id="roadconsdata" resultType="map"  parameterType="String">
CALL GET_ROAD_CONS_BY_POINT(#{arg0},#{arg1})


</select>
	<select id="insertcoordi" resultType="map"  parameterType="String">
CALL GET_LAND_AS_BY_SPLIT_POLY(#{arg0})


</select>
	<select id="insertcoordi1" resultType="map"  parameterType="String">
CALL GET_LAND_AS_BY_BUFFER_POLY(#{arg0},#{arg1})


</select>
	<select id="locbyloc" resultType="map"  parameterType="String">
CALL GET_LOC_BY_POINT(#{arg0},#{arg1})


</select>
	<select id="getSggList" resultType="map"  parameterType="String">
 		SELECT SGG_NM
        FROM WEB_LOCATE_POS
        WHERE BGO IS NOT NULL AND BGO != ''
          AND SGG_NM IS NOT NULL AND SGG_NM != ''
        GROUP BY SGG_NM
        ORDER BY SGG_NM
</select>
	<select id="getRoadNoList" resultType="map"  parameterType="String">
 		SELECT ROAD_NO
        FROM MROAD_FEA
        WHERE ROAD_NO IS NOT NULL AND ROAD_NO != ''
        GROUP BY ROAD_NO
        ORDER BY ROAD_NO
</select>
<select id="getSectList" parameterType="string" resultType="map">
   SELECT SECT
FROM MROAD_FEA
WHERE ROAD_NO = #{roadNo}
GROUP BY SECT
ORDER BY SECT
</select>
<select id="getEmdList" parameterType="string" resultType="map">
   SELECT UMD_NM
FROM WEB_LOCATE_POS
WHERE BGO IS NOT NULL
  AND SGG_NM = #{sggNm}
GROUP BY UMD_NM
ORDER BY UMD_NM
</select>
<select id="getBgoList" resultType="map">
  SELECT H_LAYER AS BGO
  FROM ROAD_MAP_SHAPE
  WHERE H_LAYER IS NOT NULL AND H_LAYER != '' AND USE_LAY = '1'
</select>

<select id="searchFacilities" parameterType="map" resultType="map">
  SELECT 
    FTR_IDE, FTR_IDN,REPLACE(FORMAT(SHP_STA1 / 1000, 3), '.', '+') AS SHP_STA1,
    SGG_NM, UMD_NM, BGO, SER_NAM,
    ROAD_NO, SECT, LAYER,DOCODE,
    ST_AsText(COORDI) AS COORDI,LOC_X,LOC_Y
  FROM WEB_LOCATE_POS
  WHERE BGO IS NOT NULL AND BGO != ''
  
  <if test="sggNm != null and sggNm != ''">
    AND SGG_NM = #{sggNm}
  </if>
  <if test="emdNm != null and emdNm != ''">
    AND UMD_NM = #{emdNm}
  </if>
  <if test="bgo != null and bgo != ''">
    AND BGO = #{bgo}
  </if>
     <!-- 🔹 노선번호 / 구간 조건 추가 -->
    <if test="roadNo != null and roadNo != ''">
        AND ROAD_NO = #{roadNo}
    </if>
    <if test="sect != null and sect != ''">
        AND SECT = #{sect}
    </if>

  ORDER BY SGG_NM, UMD_NM, BGO
  LIMIT #{limit} OFFSET #{offset}
</select>
<select id="naturalSearch" parameterType="map" resultType="map">
    SELECT 
         FTR_IDE, FTR_IDN,REPLACE(FORMAT(SHP_STA1 / 1000, 3), '.', '+') AS SHP_STA1,
    SGG_NM, UMD_NM, BGO, SER_NAM,
    ROAD_NO, SECT, LAYER,DOCODE,
    ST_AsText(COORDI) AS COORDI,LOC_X,LOC_Y
    FROM WEB_LOCATE_POS
    WHERE BGO IS NOT NULL
        <if test="sgg != null and sgg != ''">
    AND (SGG_NM LIKE CONCAT('%', #{sgg}, '%') OR ROAD_NO = #{sgg})
</if>
    <if test="umd != null and umd != ''">
        AND (UMD_NM LIKE CONCAT('%', #{umd}, '%') OR SECT = #{umd})
    </if>
    <if test="bgo != null and bgo != ''">
        AND BGO LIKE CONCAT('%', #{bgo}, '%')
    </if>
       <if test="roadNo != null and roadNo != ''">
        AND ROAD_NO = #{roadNo}
    </if>
    
    ORDER BY ROAD_NO,SECT, SGG_NM, UMD_NM, BGO
    LIMIT #{limit} OFFSET #{offset}
</select>

<select id="naturalSearchCount" parameterType="map" resultType="int">
    SELECT COUNT(*)
    FROM WEB_LOCATE_POS
    WHERE BGO IS NOT NULL
         <if test="sgg != null and sgg != ''">
    AND (SGG_NM LIKE CONCAT('%', #{sgg}, '%') OR ROAD_NO = #{sgg})
</if>
    <if test="umd != null and umd != ''">
        AND (UMD_NM LIKE CONCAT('%', #{umd}, '%') OR SECT = #{umd})
    </if>
    <if test="bgo != null and bgo != ''">
        AND BGO LIKE CONCAT('%', #{bgo}, '%')
    </if>
      <if test="roadNo != null and roadNo != ''">
        AND ROAD_NO = #{roadNo}
    </if>
    
</select>

<select id="selectFacilityStats" parameterType="map" resultType="map">
   SELECT 
    RMS.H_LAYER AS BGO,       -- 시설명
    WLP.SGG_NM,               -- 시군구
    WLP.ROAD_NO,              -- 노선번호
    COUNT(*) AS CNT
FROM ROAD_MAP_SHAPE RMS
LEFT JOIN WEB_LOCATE_POS WLP
    ON RMS.E_LAYER = WLP.LAYER
WHERE RMS.H_LAYER IS NOT NULL
  AND RMS.H_LAYER != ''
  AND RMS.USE_LAY = '1'
GROUP BY RMS.H_LAYER, WLP.SGG_NM, WLP.ROAD_NO
ORDER BY RMS.H_LAYER, WLP.SGG_NM, WLP.ROAD_NO;

</select>
<select id="getFacilityByRegion" parameterType="map" resultType="map">
  SELECT 
    w.SGG_NM,
    COUNT(*) AS CNT
  FROM WEB_LOCATE_POS w
  JOIN ROAD_MAP_SHAPE r 
      ON w.LAYER = r.E_LAYER   -- 레이어 코드 매핑
  WHERE r.H_LAYER = #{bgo}     -- 표준 시설명 기준
    AND w.SGG_NM != ''
    <if test="roadNo != null and roadNo != ''">
      AND w.ROAD_NO = #{roadNo}
    </if>
    <if test="sect != null and sect != ''">
      AND w.SECT = #{sect}
    </if>
  GROUP BY w.SGG_NM
  ORDER BY w.SGG_NM
</select>
<select id="getLocatePos" parameterType="map" resultType="map">
      SELECT 
        SHP_STA1 AS shpSta1,
        CASE 
        WHEN LAYER = 'AD010' THEN LOC_X 
        ELSE MAXY 
    END AS locX,
    CASE 
        WHEN LAYER = 'AD010' THEN LOC_Y 
        ELSE MINY 
    END AS locY,
        SER_NAM AS serNam,
        LAYER AS layer
    FROM WEB_LOCATE_POS
    WHERE ROAD_NO = #{arg0}
      AND SECT = #{arg1}
      AND LAYER IN ('AD010', 'MROAD')
    ORDER BY SHP_STA1 ASC
</select>

<select id="getFacilityStats" parameterType="map" resultType="map">
SELECT 
    RMS.H_LAYER AS BGO,       -- 시설명
    COUNT(WLP.LAYER) AS CNT   -- WEB_LOCATE_POS 카운트
FROM ROAD_MAP_SHAPE RMS
LEFT JOIN WEB_LOCATE_POS WLP
    ON RMS.E_LAYER = WLP.LAYER
WHERE RMS.H_LAYER IS NOT NULL
  AND RMS.H_LAYER != ''
  AND RMS.USE_LAY = '1'
GROUP BY RMS.H_LAYER
ORDER BY CNT DESC;

</select>


<select id="searchFacilitiesCount" parameterType="map" resultType="int">
  SELECT COUNT(*) 
  FROM WEB_LOCATE_POS
  WHERE BGO IS NOT NULL AND BGO != ''
  
  <if test="sggNm != null and sggNm != ''">
    AND SGG_NM = #{sggNm}
  </if>
  <if test="emdNm != null and emdNm != ''">
    AND UMD_NM = #{emdNm}
  </if>
  <if test="bgo != null and bgo != ''">
    AND BGO = #{bgo}
  </if>
    <if test="roadNo != null and roadNo != ''">
        AND ROAD_NO = #{roadNo}
    </if>
    <if test="sect != null and sect != ''">
        AND SECT = #{sect}
    </if>
</select>


<select id="selectFacilitiesInRange" resultType="map" parameterType="map">
  SELECT 
    CNS_NO, IDX, LAY_NAM, LAY_DES, DOSTA1, DOSTA2,
    ST_AsText(SHP_GEO) AS WKT, SHP_TPE,DOCODE
  FROM ROAD_CONS_SHAPE
  WHERE CNS_NO = #{cnsNo}
    AND (
      (DOSTA1 BETWEEN #{startDist} AND #{endDist})
      OR (DOSTA2 BETWEEN #{startDist} AND #{endDist})
      OR (#{startDist} BETWEEN DOSTA1 AND DOSTA2)
      OR (#{endDist} BETWEEN DOSTA1 AND DOSTA2)
    )
</select>
<select id="selectFacilities" resultType="map" parameterType="map">
  SELECT 
    CNS_NO, IDX, LAY_NAM, LAY_DES, DOSTA1, DOSTA2,
    ST_AsText(SHP_GEO) AS WKT, SHP_TPE,DOCODE,SHP_NAM
  FROM ROAD_CONS_SHAPE
  WHERE CNS_NO = #{cnsNo}
    AND LAY_NAM = #{layNam}
</select>
<select id="manageList" resultType="map" parameterType="map">
  SELECT *
  FROM AI_MANAGE_PT
  WHERE CNS_NO = #{cnsNo}
    
</select>
<select id="selectprojectdata" resultType="map" parameterType="map">
  SELECT *
  FROM ROAD_CONS_DT
  WHERE CNS_NO = #{cnsNo}
    
</select>
<select id="searchRiverData" resultType="cbdoro.mods.roadCons.vo.BmlMntFactVO" parameterType="cbdoro.mods.roadCons.vo.BmlMntFactVO">
  SELECT *
  FROM BML_MNT_FACT
  WHERE FCT_NAM LIKE CONCAT('%', #{fctNam}, '%')
    
</select>
<select id="getRiverRecordList" resultType="cbdoro.mods.roadCons.vo.BmlMntMoniterCneLineVO" parameterType="cbdoro.mods.roadCons.vo.BmlMntMoniterCneLineVO">
  SELECT * ,ST_AsGeoJSON(GEOM) AS wkt
  FROM BML_MNT_MONITER_CNELINE
  WHERE MNT_NO = #{mntNo}
  ORDER BY IDX;
    
</select>
<select id="sessionList" resultType="map" parameterType="map">
  SELECT FTR_IDE, FTR_IDN, FIL_NAM, FIL_TIME,
  DATE_FORMAT(CRT_DTE, '%Y-%m-%d %H:%i:%s') AS CRT_DTE,
  ROAD_360
  FROM AI_TRAFIC_ANY
  WHERE FTR_IDN = #{ftrIdn}
    
</select>
<select id="getRoadSectDistRange" resultType="map" parameterType="String">
 call GET_RoadSectDistRange(#{cnsNo})
</select>
<select id="getfileDt" resultType="map" parameterType="String">
 SELECT * ,replace(FLE_NAM,'.pdf','') as fld_nam   FROM BAS_FILE_DT where DOCODE = #{cnsNo} order by FTR_IDE
</select>
<select id="gettotalsisul" resultType="map" parameterType="String">
 SELECT 
    COUNT(*) AS sisultotal,  
    (
        SELECT COUNT(*) 
        FROM DRN_FACIL_LST dfl
        WHERE dfl.CNS_NO = #{cnsNo}
          AND dfl.WRK_GBN = '3D'
    ) AS total3d,
    (
        SELECT COUNT(t.FTR_IDN)  
        FROM AI_MANAGE_PT p
        JOIN AI_TRAFIC_ANY t ON p.FTR_IDN = t.FTR_IDN
        WHERE p.CNS_NO = #{cnsNo}
    ) AS aitotal
FROM ROAD_CONS_SHAPE a
WHERE a.CNS_NO = #{cnsNo};
</select>
<select id="gettotalsisulcnt" resultType="map" parameterType="String">
 SELECT 
    COUNT(*) AS total,
	lay_des
FROM ROAD_CONS_SHAPE
WHERE CNS_NO = #{cnsNo}
group by lay_des;

</select>
	<select id="selectfacilityList" resultType="cbdoro.mods.roadCons.vo.RoadConsLayers" parameterType="cbdoro.mods.roadCons.vo.RoadConsLayers">
  
SELECT l.*,
       (SELECT COUNT(*)
          FROM ROAD_CONS_SHAPE s
         WHERE s.CNS_NO = l.CNS_NO
           AND s.LAY_NAM = l.LAY_NAM) AS cnt
FROM ROAD_CONS_LAYERS l
WHERE l.CNS_NO = #{cnsNo}
ORDER BY l.IDX;
</select>
<select id="facilityList1" resultType="map">
  SELECT 
    IDX,
    FAC_NAM,
    FAC_TYP,
    FAC_CLS,
    FAC_LST,
    MNT_DIST,
    FCT_DIST,
    X_POS,
    Y_POS,
    ST_AsText(GEOM) AS WKT
  FROM BML_MNT_FACT_LAYERS
  WHERE MNT_NO = #{mntNo}
    AND FCT_DTE = #{fctDte}
    AND FAC_CLS = #{facCls}
  ORDER BY FCT_DIST ASC
</select>
	<select id="selectMediaTypeList" parameterType="cbdoro.mods.roadCons.vo.DrnFacilDt" resultType="map">
  SELECT *
  FROM DRN_FACIL_LST
  WHERE CNS_NO = #{cnsNo}
    AND DOCODE = #{doCode}
    AND ANY_TIME = #{anyTime}
</select>
	<select id="selectUploadlist" resultType="map">
  SELECT CNS_NO,DOCODE,ANY_TIME,IDX,ROAD_NO,SECT,WRK_3D,WRK_PABORAMA,WRK_360,WRK_PICTURE,LOC_X,LOC_Y,SHP_WRK,SIL_TBL
  FROM DRN_FACIL_DT
  WHERE CNS_NO = #{cnsNo}
  ORDER BY IDX ASC
</select>
<delete id="deleteCameraBookmark" parameterType="cbdoro.mods.roadCons.vo.CameraBookmarkVO">
DELETE FROM CESIUM_CAMERA_BOOKMARK WHERE id = #{id};

</delete>
<insert id="insertBookmark" parameterType="cbdoro.mods.roadCons.vo.CameraBookmarkVO">
    INSERT INTO CESIUM_CAMERA_BOOKMARK (
        docode, fld_nam, anytime, name,
        lon, lat, height, heading, pitch, roll, cns_no
    ) VALUES (
        #{docode}, #{fld_nam}, #{anytime}, #{name},
        #{lon}, #{lat}, #{height}, #{heading}, #{pitch}, #{roll} , #{cnsNo}
    )
</insert>
<update id="updateCameraBookmark" parameterType="cbdoro.mods.roadCons.vo.CameraBookmarkVO">
 UPDATE CESIUM_CAMERA_BOOKMARK
  SET
    name = #{name},
    lon = #{lon},
    lat = #{lat},
    height = #{height},
    heading = #{heading},
    pitch = #{pitch},
    roll = 0
  WHERE id=#{id} and cns_no = #{cnsNo} and docode = #{docode} and fld_nam = #{fld_nam} and anytime = #{anytime}



</update>
<update id="updateBookmarkCapture" parameterType="cbdoro.mods.roadCons.vo.CameraBookmarkVO">
 UPDATE CESIUM_CAMERA_BOOKMARK
  SET filepath = #{filepath}, reg_dt = NOW()
  WHERE id = #{id}
</update>
<select id="selectFacilityMediaList" parameterType="cbdoro.mods.roadCons.vo.DrnFacilDt" resultType="map">
  SELECT *
  FROM DRN_FACIL_LST
  WHERE CNS_NO = #{cnsNo}
    AND DOCODE = #{doCode}
    AND ANY_TIME = #{anyTime}
    AND WRK_GBN = #{wrkGbn}
  ORDER BY IDX
</select>
<select id="getCameraBookmark" parameterType="cbdoro.mods.roadCons.vo.CameraBookmarkVO" resultType="map">
  SELECT *
    FROM CESIUM_CAMERA_BOOKMARK
    WHERE docode = #{docode}
      AND fld_nam = #{fld_nam}
      AND anytime = #{anytime}
      AND cns_NO = #{cnsNo}
    ORDER BY reg_dt ASC
</select>
<select id="selectBookmarkById"  resultType="cbdoro.mods.roadCons.vo.CameraBookmarkVO">
  SELECT *
    FROM CESIUM_CAMERA_BOOKMARK
    WHERE id = #{id}
    ORDER BY reg_dt ASC
</select>
<select id="selectAnyTimeList" resultType="String">
  SELECT DISTINCT ANY_TIME
  FROM DRN_FACIL_LST
  WHERE CNS_NO = #{cnsNo}
    AND DOCODE = #{doCode}
  ORDER BY ANY_TIME DESC
</select>
	
	<select id="searchTrafficData" resultType="cbdoro.mods.roadCons.vo.AiManagePtVO" parameterType="cbdoro.mods.roadCons.vo.AiManagePtVO">
     SELECT FTR_IDN, FIL_NAM, FIL_DES, FIL_LOC, ROAD_NO, SECT, 
        DATE_FORMAT(CRT_DTE, '%Y-%m-%d') AS CRT_DTE FROM AI_MANAGE_PT
    WHERE 1=1  
    <if test="roadNo != null and roadNo != ''">
        AND ROAD_NO LIKE CONCAT('%', #{roadNo}, '%') 
    </if>
    <if test="sect != null and sect != ''">
        AND SECT = #{sect}
    </if>
    <if test="filNam != null and filNam != ''">
        AND SER_DAT LIKE CONCAT('%', #{filNam}, '%')
    </if>
    <if test="crtDte != null and crtDte != ''">
        AND DATE(CRT_DTE) = #{crtDte}
    </if>
    ORDER BY CRT_DTE DESC
</select>
	
	<select id="getTrafficRecordList" resultType="cbdoro.mods.roadCons.vo.AiTrafficAnyDto">
    SELECT 
        A.FTR_IDN, 
        A.FTR_IDE, 
        A.FIL_NAM, 
        A.FIL_TIME, 
        A.CRT_DTE,
        A.ROAD_360,
        B.FIL_LOC
    FROM AI_TRAFIC_ANY A , AI_MANAGE_PT B
    WHERE A.FTR_IDN = #{ftrIdn} AND A.FTR_IDN = B.FTR_IDN
    ORDER BY CRT_DTE DESC
</select>

<select id="getTrafficAnalysisData" resultType="cbdoro.mods.roadCons.vo.AiTrafficAnyDataDto">
    SELECT 
        FTR_IDN, FTR_IDE, ANY_TIME, MAX_SPD, MIN_SPD, AVG_SPD, CNT_BUS, CNT_TRUCK,
        CNT_VAN, CNT_BYCLE, CNT_MOTOR, CNT_CAR, CNT_PEOPLE, CNT_BOARD, CNT_ETC,CNT_INDUSTRIAL,CNT_SUV
    FROM AI_TRAFIC_ANYDATA
    WHERE FTR_IDE = #{ftrIde} 
    ORDER BY ANY_TIME ASC
</select>
	
	
	
	
    <!--공사구간 노선번호 목록 조회 -->
    <select id="itemListRoadNo" resultMap="roadConsVO">
        SELECT  RCDL.ROAD_NO
                ,ROUND((RCDL.ROAD_LEN/1000),2) AS ROAD_LEN
                ,RCD.CNS_ST
        FROM    ROAD_CONS_DT_LST AS RCDL
                , ROAD_CONS_DT AS RCD
        WHERE   RCDL.CNS_NO = RCD.CNS_NO
    </select>

    <!--공사구간 작업년도 목록 조회 -->
    <select id="itemListRoadConsYear" resultMap="roadConsVO">
        SELECT   substr(CNS_NO, 1, 4) AS CNS_NO
        FROM     ROAD_CONS_DT
        GROUP BY substr(CNS_NO, 1, 4)
    </select>

    <!-- 공사구간 검색 목록 갯수 조회 -->
    <select id="itemListTCount" resultType="int">
        SELECT  COUNT(RCDL.ROAD_NO)
        FROM    ROAD_CONS_DT_LST AS RCDL
                ,ROAD_CONS_DT AS RCD
        <include refid="defaultWhere" />
    </select>

    <!-- 공사구간 목록 조회 -->
    <select id="itemListResultList" resultMap="roadConsVO">
        SELECT   RCDL.ROAD_NO
                 ,RCDL.SECT
                 ,ROUND((RCDL.ROAD_LEN/1000),2) AS ROAD_LEN
                 ,RCD.*
        FROM     ROAD_CONS_DT_LST AS RCDL
                 ,ROAD_CONS_DT AS RCD
        <include refid="defaultWhere" />
        ORDER BY RCDL.SECT ASC
        LIMIT    #{firstIndex}, #{maxList}
    </select>
<select id="selectFilelist" parameterType="BasFileDt" resultType="BasFileDt">
      <![CDATA[
        select a.FTR_IDE, a.FTR_GBN, a.FTR_FMT, a.FTR_DST, a.DOCODE, a.FTR_IDX, a.FTR_DEC, a.FLE_NAM, a.FLE_PTH, a.FLE_SZE, b.CNS_NO as cnsNo, b.CNS_CTS, b.UP_DTE, b.CNS_COM, b.CNS_DTE, b.CRT_NAM, b.CRT_DTE, b.CNS_MNG, b.CNS_NAM, b.CNS_ST, b.CNS_ET, b.CNS_DES, b.CNS_LEN from BAS_FILE_DT a ,ROAD_CONS_DT b where a.FTR_DST = #{ftrDst} and a.FTR_FMT = 'PDF' and DOCODE=#{doCode} and a.DOCODE = b.CNS_NO and a.FTR_DEC !='조서' order by FTR_DEC
        ]]>
</select>
<select id="selectLandDt" parameterType="BmlLandDt" resultType="BmlLandDt">
        
        select LAND_CD, ADDR, DJ_GBN, BON, BU, JIMOK_CD, JIMOK, AREA, MV_CD, MV_RSN, MV_DATE, OWN_ADDR, OWN_NAM, OWN_GBN, OWN_PER, OWN_CHG_DATE, OWN_CHG_REA, OWN_CHG_CD, LAND_PRICE, LAND_PRICE_NS, LAND_PRICE_1, LAND_PRICE_1_NS, LAND_PRICE_2, LAND_PRICE_2_NS, LAND_PRICE_3, LAND_PRICE_3_NS, LAND_PRICE_4, LAND_PRICE_4_NS, SGG from BML_LAND_DT where LAND_CD=#{landCd}
        
	</select>
	<select id="selectLandDtLst" parameterType="BmlLandDt" resultType="BmlLandDt">
        
        select * from BML_LAND_DT_LST where LAND_CD=#{landCd}
        
	</select>
	<select id="selectgetroadManager"  resultType="RoadDocManager">
        
        SELECT * FROM project_info
        
	</select>
	<select id="selectgetroadFolder" parameterType="RoadDocFloder" resultType="RoadDocFloder">
  SELECT 
      d.dir_id      AS dirId,
      d.project_id  AS projectId,
      d.parent_id   AS parentId,
      d.dir_name    AS dirName,
      d.dir_path    AS dirPath,
      d.depth_level AS depthLevel,
      d.reg_date    AS regDate,
      (SELECT COUNT(*) FROM dir_info c WHERE c.parent_id = d.dir_id) AS hasChild
  FROM dir_info d
  WHERE d.project_id = #{projectId}
    ORDER BY d.dir_name ASC
</select>

	 <select id="selectChildren" parameterType="RoadDocFloder"  resultType="RoadDocFloder">
     SELECT 
      d.dir_id      AS dirId,
      d.project_id  AS projectId,
      d.parent_id   AS parentId,
      d.dir_name    AS dirName,
      d.dir_path    AS dirPath,
      d.depth_level AS depthLevel,
      d.reg_date    AS regDate,
      (SELECT COUNT(*) FROM dir_info c WHERE c.parent_id = d.dir_id) AS hasChild
  FROM dir_info d
  WHERE d.parent_id = #{dirId}
  ORDER BY d.dir_name ASC
  </select>
	<select id="selectgetFolder"  parameterType="RoadDocFloder" resultType="RoadDocFloder">
        
        SELECT * FROM ROAD_DOC_FLODER WHERE DOC_IDN = #{docIdn} and WRK_NO = #{wrkNo}
        
	</select>
	<select id="selectgetFile"  parameterType="RoadDocFile" resultType="RoadDocFile">
        
        SELECT * FROM ROAD_DOC_FILE WHERE DOC_IDN = #{docIdn} and WRK_CDE = #{wrkCde} and SVR_NAM =#{svrNam} 
        
	</select>
	<select id="getpolycoordi"  resultType="String">
        
        CALL GMR_SELECT_FIGUER('INTERSECT','BML_LAND_AS','*','GEOSHAPE','POINT','#{codx} #{cody}')
        
	</select>
	<select id="selectFilesByIdxList" parameterType="list" resultType="cbdoro.mods.roadCons.vo.RoadDocFile">
    SELECT FLE_PATH AS flePath, FLE_SNAME AS fleSname, FLE_NAM AS fleNam, FLE_EXT AS fleExt
    FROM ROAD_DOC_FILE
    WHERE FTR_IDN IN 
    <foreach collection="fileIdxList" item="idx" open="(" separator="," close=")">
        #{idx}
    </foreach>
</select>

<select id="selectFilesByDocIdn" parameterType="RoadDocFile" resultType="cbdoro.mods.roadCons.vo.RoadDocFile">
    SELECT FLE_PATH AS flePath, FLE_SNAME AS fleSname, FLE_NAM AS fleNam, FLE_EXT AS fleExt
    FROM ROAD_DOC_FILE
    WHERE DOC_IDN = #{docIdn} AND WRK_CDE = #{wrkCde}
</select>

<select id="selectFileByIdx" parameterType="String" resultType="cbdoro.mods.roadCons.vo.RoadDocFile">
    SELECT FLE_PATH AS flePath, FLE_SNAME AS fleSname, FLE_NAM AS fleNam, FLE_EXT AS fleExt
    FROM ROAD_DOC_FILE
    WHERE FTR_IDN = #{fileIdx}
</select>
	
</mapper>
