<?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="com.huatek.busi.mapper.Sf6EnvMapper">

	<resultMap id="BaseResultMap" type="com.huatek.busi.entity.GisSf6Env">
		<id column="id" property="id" />
		<result column="cac_id" property="cacId" />
		<result column="sensor_id" property="sensorId" />
		<result column="cac_monitor_type_code" property="cacMonitorTypeCode" />
		<result column="equipment_id" property="equipmentId" />
		<result column="time_stamp" property="timeStamp" />
		<result column="equipment_code" property="equipmentCode" />
		<result column="ext_equipment_code" property="extEquipmentCode" />
		<result column="site_id" property="siteId" />
		<result column="phase" property="phase" />
		<result column="conc" property="conc" />
		<result column="o_content" property="oContent" />
		<result column="tmp" property="tmp" />
		<result column="dew" property="dew" />
		<result column="main_equipment_id" property="mainEquipmentId" />
		<result column="sub_equipment_id" property="subEquipmentId" />
		<result column="main_tree_id" property="mainTreeId" />
		<result column="sub_tree_id" property="subTreeId" />
		<result column="run_state" property="runState" />
		<result column="hbase_rowkey" property="hbaseRowkey" />
	</resultMap>


	<sql id="Base_Column_List">
		t.id, cac_id AS cacId,
		t.sensor_id AS sensorId,
		t.cac_monitor_type_code AS cacMonitorTypeCode,
		t.equipment_id AS equipmentId,
		t.time_stamp AS timeStamp,
		t.equipment_code AS equipmentCode,
		t.ext_equipment_code AS extEquipmentCode,
		t.site_id AS siteId,
		t.phase, conc,
		t.o_content AS oContent,
		t.tmp, t.dew,
		t.main_equipment_id AS mainEquipmentId,
		t.sub_equipment_id AS subEquipmentId,
		t.main_tree_id AS mainTreeId,

		t.sub_tree_id AS subTreeId,
		t.run_state AS runState,
		t.hbase_rowkey AS hbaseRowkey,

		s.sensor_name as sensorName
    </sql>


	<!-- 数据输入数据查询 -->
    <select id="findCACPageData" resultType="java.util.Map">
        SELECT
	        <include refid="Base_Column_List"/>,
		(select tree.system_code from busi_site_tree tree where tree.id = t.main_tree_id) as systemCode,
		(select tree.name from busi_site_tree tree where tree.id = t.main_tree_id) as equipmentName
        FROM
		gis_sf6_env t,
		busi_gis_sensor s
       <where>
		   t.sensor_id = s.sensor_code and s.status = '1'
	        <if test="mainTreeId != null and mainTreeId != ''">
	            and t.main_tree_id = #{mainTreeId}
	        </if>
	        <if test="subTreeId != null and subTreeId != ''">
	             and t.sub_tree_id = #{subTreeId}
	        </if>
	        <if test="timeStamp != null and timeStamp != ''">
             	and DATE_FORMAT(t.time_stamp,'%Y-%m-%d') &gt;= #{timeStamp}
	        </if>
	        <if test="timeStampEnd != null and timeStampEnd != ''">
	             and DATE_FORMAT(t.time_stamp,'%Y-%m-%d') &lt;= #{timeStampEnd}
	        </if>
		   <if test="sensorCode != null and sensorCode != ''">
			   AND t.sensor_id = #{sensorCode}
		   </if>
       </where>
        ORDER BY t.time_stamp DESC
    </select>
    <!-- 数据输入测温原始数据导出 -->
    <select id="exportCacMonitorData" resultType="com.huatek.busi.vo.Sf6EnvVo">
        SELECT
        <include refid="Base_Column_List"/>,
		(select tree.system_code from busi_site_tree tree where tree.id = t.main_tree_id) as systemCode,
		(select tree.name from busi_site_tree tree where tree.id = t.main_tree_id) as equipmentName
        FROM
		gis_sf6_env t
		left join busi_gis_sensor s  ON t.sensor_id = s.sensor_code
       <where>
	        <if test="mainTreeId != null and mainTreeId != ''">
	             t.main_tree_id = #{mainTreeId}
	        </if>
	        <if test="timeStamp != null and timeStamp != ''">
             	and DATE_FORMAT(t.time_stamp,'%Y-%m-%d') &gt;= #{timeStamp}
	        </if>
	        <if test="timeStampEnd != null and timeStampEnd != ''">
	             and DATE_FORMAT(t.time_stamp,'%Y-%m-%d') &lt;= #{timeStampEnd}
	        </if>
		   <if test="sensorId !=null and sensorId !=''">
			   AND t.sensor_id = #{sensorId}
		   </if>
       </where>
        ORDER BY t.time_stamp DESC
    </select>

	<select id="findSensorCodeList" resultType="com.huatek.busi.dto.curve.BaseCurveQueryDto">
		SELECT DISTINCT
			t.sensor_id as sensorCode,
			t.main_tree_id as mainTreeId,
			count(*) as count
		FROM gis_sf6_env t
		WHERE t.time_stamp &gt;= #{startTime} and t.time_stamp &lt;= #{endTime}
		GROUP BY t.sensor_id, t.main_tree_id
	</select>

	<select id="findDaylyPointList" resultType="com.huatek.busi.vo.curve.PointItemVo">
		SELECT
			t.sensor_id as sensorCode,
			t.time_stamp as timeStamp,
			CAST(t.${subType} AS decimal(20, 4)) as val
		FROM gis_sf6_env t
		WHERE t.main_tree_id = #{dto.mainTreeId}
		<if test="dto.sensorCode != null and dto.sensorCode != ''">
			AND t.sensor_id = #{dto.sensorCode}
		</if>
			AND t.time_stamp &gt;= #{startTime}
			AND t.time_stamp &lt;= #{endTime}
		ORDER BY t.time_stamp ASC
	</select>

	<select id="getDaylyPointStatistics" resultType="com.huatek.busi.dto.curve.PointItemDto">
		SELECT
			t.main_tree_id AS mainTreeId,
			t.sensor_id AS sensorCode,
			COUNT(*) AS count,
			CAST(SUM(t.${subType}) AS decimal(20, 4)) AS total,
			MAX(CAST(t.${subType} AS decimal(20, 4))) AS max,
			MIN(CAST(t.${subType} AS decimal(20, 4))) AS min
		FROM gis_sf6_env t
		WHERE t.main_tree_id = #{mainTreeId}
		<if test="sensorCode != null and sensorCode != ''">
			AND t.sensor_id = #{sensorCode}
		</if>
			AND t.time_stamp &gt;= #{startTime} 
			AND t.time_stamp &lt;= #{endTime}
	</select>

	<select id="queryMonitorDataList" resultType="java.util.Map">
		SELECT
		  t.sensor_id AS sensorCode,
		  t.main_tree_id AS mainTreeId,
		  t.main_equipment_id AS mainEquipmentId,
		  t.sub_tree_id AS subTreeId,
		  t.sub_equipment_id AS subEquipmentId,
		  t.run_state AS runState,
		  t.site_id AS siteId,
		  t.cac_monitor_type_code AS cacMonitorTypeCode,
		  CAST(AVG(t.tmp) AS decimal(20, 4)) AS tmp,
		CAST(AVG(t.conc) AS decimal(20, 4)) AS conc,
		CAST(AVG(t.o_content) AS decimal(20, 4)) AS ocontent,
		CAST(AVG(t.dew) AS decimal(20, 4)) AS dew
		FROM gis_sf6_env t
		WHERE t.time_stamp &gt;= #{startTime}
			AND t.time_stamp &lt;= #{endTime}
		GROUP BY t.sensor_id,
		         t.main_tree_id,
		         t.main_equipment_id,
		         t.sub_tree_id,
		         t.sub_equipment_id,
		         t.run_state,
		         t.site_id,
		         t.cac_monitor_type_code
	</select>

	<select id="getListEquInfo" resultType="com.huatek.busi.vo.Sf6EnvStatisticsVo">
		SELECT
			t.site_id AS siteId,
			t.main_tree_id AS mainTreeId,
			t.sub_tree_id AS subTreeId,
			t.main_equipment_id AS mainEquipmentId,
			t.sub_equipment_id AS subEquipmentId,
			t.sensor_id AS sensorCode,
			t.cac_monitor_type_code AS cacMonitorTypeCode,
		CAST(AVG(t.tmp) AS decimal(20, 4)) AS tmp,
		CAST(AVG(t.conc) AS decimal(20, 4)) AS conc,
		CAST(AVG(t.o_content) AS decimal(20, 4)) AS ocontent,
		CAST(AVG(t.dew) AS decimal(20, 4)) AS dew,
			COUNT(*) AS dataCount
		FROM
		gis_sf6_env t
		WHERE 
			t.cac_monitor_type_code = #{cacMonitorTypeCode}
				AND t.time_stamp &gt;= #{startTime}
				AND t.time_stamp &lt; #{endTime}
			<if test="sensorCode != null and sensorCode != ''">
				AND t.sensor_id = #{sensorCode}
			</if>
		GROUP BY t.site_id,
		         t.main_tree_id,
		         t.sub_tree_id,
		         t.sensor_id,
		         t.cac_monitor_type_code
	</select>
	
</mapper>