ustcyc
2025-04-18 12ea7330bac0a43818b8ec3a8601119dd609dfb9
zhitan-system/src/main/resources/mapper/dataitem/DataItemMapper.xml
@@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhitan.dataitem.mapper.DataItemMapper">
    <resultMap type="StagseDataEntry" id="stagseDataEntryResult">
    <resultMap type="com.zhitan.dataitem.domain.StagseDataEntry" id="stagseDataEntryResult">
        <result property="code" column="code"/>
        <result property="name" column="name"/>
        <result property="indexId" column="index_id"/>
@@ -15,7 +15,7 @@
        <result property="dataTime" column="data_time"/>
    </resultMap>
    <select id="getSettingIndex" parameterType="StagseDataEntry" resultMap="stagseDataEntryResult">
    <select id="getSettingIndex" parameterType="com.zhitan.dataitem.domain.StagseDataEntry" resultMap="stagseDataEntryResult">
        SELECT
        ei.index_id,
@@ -33,7 +33,7 @@
        and si.time_type = #{timeType}
        AND si.calc_type = #{calcType}
   </select>
    <select id="getSettingEdit" parameterType="StagseDataEntry" resultMap="stagseDataEntryResult">
    <select id="getSettingEdit" parameterType="com.zhitan.dataitem.domain.StagseDataEntry" resultMap="stagseDataEntryResult">
        SELECT
            ei.index_id,
            code,
@@ -54,7 +54,7 @@
            AND data_time &gt;= #{beginTime}
            AND data_time &lt;= #{endTime}
    </select>
    <select id="stagseDataByCode" parameterType="StagseDataEntry" resultMap="stagseDataEntryResult">
    <select id="stagseDataByCode" parameterType="com.zhitan.dataitem.domain.StagseDataEntry" resultMap="stagseDataEntryResult">
        SELECT
            ei.index_id,
            code,
@@ -161,7 +161,7 @@
        WHEN di.time_type = 'DAY' THEN
        TO_CHAR( di.create_time, 'DD' )
        WHEN di.time_type = 'HOUR' THEN
        TO_CHAR( di.data_time, 'HH' )
        TO_CHAR( di.data_time, 'HH24' )
        ELSE TO_CHAR( di.data_time, 'YYMMDD' )
        END AS dataTimeStr,
            di.value,
@@ -215,4 +215,64 @@
        AND ( begin_time BETWEEN #{beginTime} AND #{endTime} )
        AND time_type = #{timeType}
    </select>
    <select id="getDataItemTimeRangeValueByNodeId" resultType="java.math.BigDecimal">
        SELECT
        COALESCE (SUM ( "value" ), 0)
        FROM
        "data_item" di
        JOIN energy_index ei  ON di.index_id = ei.index_id
        WHERE
        di.index_id IN ( SELECT index_id FROM node_index WHERE node_id = #{nodeId})
        <if test="energyType !='' and energyType !=null  and energyType =='allType'">
            AND ei.energy_id != ''
        </if>
        <if test="energyType !='' and energyType !=null  and energyType !='allType'">
            AND  ei.energy_id = #{energyType}
        </if>
        AND (di.data_time BETWEEN #{beginTime} AND #{endTime})
        AND di.time_type = #{timeType}
    </select>
    <select id="getHomePageConsumptionRanking"
            resultType="com.zhitan.consumptionanalysis.domain.vo.RankingEnergyData">
        SELECT
            A.node_Id,
            A."name" AS nodeName,
            A.energy_id AS energyTypeNo,
            A.index_type AS energyTypeName,
            A."value" AS energyConsumption
        FROM
        (
            SELECT
                mn.node_id,
                mn."name",
                ei.energy_id,
                ei.index_type,
                se.coefficient,
                (SUM ( di."value" ) * se.coefficient) AS "value"
            FROM
                model_node mn
            LEFT JOIN node_index ni ON ni.node_id = mn.node_id
            LEFT JOIN data_item di ON di.index_id = ni.index_id
            LEFT JOIN energy_index ei ON ei.index_id = ni.index_id
            LEFT JOIN sys_energy se ON se.enersno = ei.energy_id
            WHERE
                mn.node_id IN
                <foreach collection="nodeIds" item="nodeId" open="(" separator="," close=")">
                    #{nodeId}
                </foreach>
                AND di.time_type = #{timeType}
                AND di.begin_time between #{beginTime} AND #{endTime}
                AND ei.index_type = 'STATISTIC'
            GROUP BY
                mn.node_id,
                mn."name",
                ei.energy_id,
                ei.index_type,
                se.coefficient
        ) A
        ORDER BY
            A."value" DESC
        LIMIT 5
    </select>
</mapper>