统计报表-电池堆曲线

This commit is contained in:
2025-07-08 14:46:42 +08:00
parent 7d1f1836d8
commit 13266bdbd5
7 changed files with 314 additions and 4 deletions

View File

@ -288,4 +288,93 @@
GROUP BY site_id,create_time
) temp on t.site_id = temp.site_id and t.create_time = temp.create_time and t.device_id = temp.device_id
</select>
<sql id="statisCommonFilter">
WHERE p.site_id = #{siteId}
and p.device_id = #{deviceId}
<if test="startDate != null">
AND p.update_time &gt;= DATE(#{startDate})
</if>
<if test="endDate != null">
AND p.update_time &lt; DATE(#{endDate})
</if>
</sql>
<sql id="dataTypeChooseFilter">
<choose>
<when test="dataType == 1">
t.operating_temp AS temp
</when>
<when test="dataType == 2">
t.stack_voltage as voltage
</when>
<when test="dataType == 3">
t.stack_current as current
</when>
<when test="dataType == 4">
t.stack_soc as soc
</when>
</choose>
</sql>
<sql id="groupChooseFilter">
<choose>
<when test="dataType == 1">
,temp
</when>
<when test="dataType == 2">
,voltage
</when>
<when test="dataType == 3">
,current
</when>
<when test="dataType == 4">
,soc
</when>
</choose>
</sql>
<select id="getStackDataByHour" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.StackStatisListVo">
select latest.dateHour as statisDate,
<include refid="dataTypeChooseFilter"/>
from ( SELECT p.site_id, p.device_id,DATE_FORMAT(p.update_time, '%H')+1 AS dateHour,MAX(p.update_time) as max_update_time
FROM ems_battery_stack p
<include refid="statisCommonFilter"/>
GROUP BY p.site_id,p.device_id,dateHour
) latest inner join ems_battery_stack t ON latest.site_id = t.site_id
AND latest.device_id = t.device_id
AND latest.max_update_time = t.update_time
group by statisDate
<include refid="groupChooseFilter"/>
order by statisDate desc
</select>
<select id="getStackDataByDay" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.StackStatisListVo">
select latest.dateDay as statisDate,
<include refid="dataTypeChooseFilter"/>
from ( SELECT p.site_id, p.device_id,DATE_FORMAT(p.update_time, '%Y-%m-%d') AS dateDay,MAX(p.update_time) as max_update_time
FROM ems_battery_stack p
<include refid="statisCommonFilter"/>
GROUP BY p.site_id,p.device_id,dateDay
) latest inner join ems_battery_stack t ON latest.site_id = t.site_id
AND latest.device_id = t.device_id
AND latest.max_update_time = t.update_time
group by statisDate
<include refid="groupChooseFilter"/>
order by statisDate desc
</select>
<select id="getStackDataByMonth" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.StackStatisListVo">
select latest.dateMonth as statisDate,
<include refid="dataTypeChooseFilter"/>
from ( SELECT p.site_id, p.device_id,DATE_FORMAT(p.update_time, '%Y-%m') AS dateMonth,MAX(p.update_time) as max_update_time
FROM ems_battery_stack p
<include refid="statisCommonFilter"/>
GROUP BY p.site_id,p.device_id,dateMonth
) latest inner join ems_battery_stack t ON latest.site_id = t.site_id
AND latest.device_id = t.device_id
AND latest.max_update_time = t.update_time
group by statisDate
<include refid="groupChooseFilter"/>
order by statisDate desc
</select>
</mapper>