<?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.TransformerIcgeMapper">

    <sql id="Base_Column_List">
            t.id as id,
            t.cac_id as cacId,
            t.data_node_num as dataNodeNum,
            t.sensor_id as sensorId,
            s.sensor_name as sensorName,
            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 as phase,
            t.total_core_current as totalCoreCurrent,
            t.type as type,
            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
    </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
        transformer_icge t,
        busi_transformer_sensor s
        <where>
            t.sensor_id = s.sensor_code and s.status = '1'
            <if test="cacMonitorTypeCode != null and cacMonitorTypeCode != ''">
                and t.cac_monitor_type_code = #{cacMonitorTypeCode}
            </if>
            <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.TransformerIcgeVo">
        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 transformer_icge t
        left join busi_transformer_sensor s ON t.sensor_id = s.sensor_code
        <where>
            <if test="cacMonitorTypeCode != null and cacMonitorTypeCode != ''">
                and t.cac_monitor_type_code = #{cacMonitorTypeCode}
            </if>
            <if test="mainTreeId != null and mainTreeId != ''">
                and 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 transformer_icge 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 transformer_icge 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 transformer_icge 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="selectByStatus" resultType="com.huatek.busi.vo.stability.IcgeStabilityVo">
        SELECT
        t.id,
        t.total_core_current AS totalCoreCurrent,
        t.run_state as runState,
        t.sensor_id as sensorCode,
        t.time_stamp AS collectionTime
        FROM
        `transformer_icge` t
        WHERE
        t.sensor_id = #{sensorCode}
        AND t.type = #{type}
        AND t.run_state = #{status}
        <if test="beginTime != null">
            AND t.time_stamp &gt;= #{beginTime}
        </if>
        <if test="endTime != null">
            AND t.time_stamp &lt;= #{endTime}
        </if>
        ORDER BY
        t.time_stamp DESC
    </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.type,
		  t.run_state AS runState,
		  t.site_id as siteId,
		  CAST(AVG(t.total_core_current) AS decimal(20, 4)) AS totalCoreCurrent
		FROM transformer_icge 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.type,
		         t.run_state,
		         t.site_id
	</select>

    <select id="getListEquInfo" resultType="com.huatek.busi.vo.TransformerIcgeCountVo">
        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,
        t.type AS type,
        CAST(AVG(t.total_core_current) AS decimal(20, 4)) AS avgTotalCoreCurrent,
        COUNT(*) AS dataCount
        FROM
        transformer_icge 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>
        <if test="type != null and type != ''">
            AND t.type = #{type}
        </if>
        GROUP BY t.site_id,
        t.main_tree_id,
        t.sub_tree_id,
        t.sensor_id,
        t.cac_monitor_type_code,
        t.type
    </select>

    <select id="queryHistory" resultType="java.util.Map">
        SELECT
        t.id as id,
        t.cac_id as cacId,
        t.data_node_num as dataNodeNum,
        t.sensor_id as sensorId,
        t.cac_monitor_type_code as cacMonitorTypeCode,
        t.equipment_id as equipmentId,
        DATE_FORMAT(t.time_stamp, '%Y-%m-%d %H:%i:%S') AS timeStamp,
        t.equipment_code as equipmentCode,
        t.ext_equipment_code as extEquipmentCode,
        t.site_id as siteId,
        t.phase as phase,
        t.total_core_current as totalCoreCurrent,
        t.type as type,
        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
        FROM transformer_icge t
        WHERE sensor_id=#{sensorCode}
        <if test="beginTime != null">
            AND t.time_stamp &gt;= #{beginTime}
        </if>
        <if test="endTime != null">
            AND t.time_stamp &lt;= #{endTime}
        </if>
        order by t.time_stamp desc
        <if test="beginTime == null and endTime == null">
            DESC LIMIT 1
        </if>
    </select>
</mapper>
