设备监控-实时运行页面曲线按照每分钟展示

This commit is contained in:
zq
2026-01-23 19:11:13 +08:00
parent 5eccb35568
commit b3f7ca7a81
6 changed files with 153 additions and 74 deletions

View File

@ -331,18 +331,27 @@
</select>
<select id="getBatteryAveTempList" resultType="com.xzzn.ems.domain.vo.BatteryAveTempVo">
select t.site_id,
round(avg(t.avg_cell_temp)) as batteryTemp,
DATE_FORMAT(t.create_time, '%Y-%m-%d') AS dateDay,
DATE_FORMAT(t.create_time, '%H:00:00') AS createDate
from ems_battery_cluster t
WHERE t.site_id = #{siteId}
AND t.create_time &gt;= #{startDate}
AND t.create_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
GROUP BY t.site_id,
DATE_FORMAT(t.create_time, '%Y-%m-%d'),
DATE_FORMAT(t.create_time, '%H:00:00')
ORDER BY dateDay, createDate
WITH ranked AS (
SELECT
*,
date_format(create_time, '%Y-%m-%d %H:00:00') + INTERVAL FLOOR(MINUTE(create_time) / 5) * 5 MINUTE AS group_time,
ROW_NUMBER() OVER (PARTITION BY date_format(create_time, '%Y-%m-%d %H:00:00'), FLOOR(MINUTE(create_time) / 5) ORDER BY create_time) as rn
FROM
ems_battery_cluster
where site_id = #{siteId}
and create_time &gt;= #{startDate}
and create_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
and avg_cell_temp is not null
)
SELECT
site_id,
round(avg(avg_cell_temp)) as batteryTemp,
DATE_FORMAT(group_time, '%Y-%m-%d') as dateDay,
DATE_FORMAT(group_time, '%H:%i:00') as createDate,
group_time as groupTime
FROM
ranked
GROUP BY site_id,groupTime
</select>

View File

@ -351,18 +351,27 @@
</delete>
<select id="getBatteryAveTempList" resultType="com.xzzn.ems.domain.vo.BatteryAveTempVo">
select t.site_id,
round(avg(t.avg_temperature)) as batteryTemp,
DATE_FORMAT(t.create_time, '%Y-%m-%d') AS dateDay,
DATE_FORMAT(t.create_time, '%H:00:00') AS createDate
from ems_battery_stack t
WHERE t.site_id = #{siteId}
AND t.create_time &gt;= #{startDate}
AND t.create_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
GROUP BY t.site_id,
DATE_FORMAT(t.create_time, '%Y-%m-%d'),
DATE_FORMAT(t.create_time, '%H:00:00')
ORDER BY dateDay, createDate
WITH ranked AS (
SELECT
*,
date_format(create_time, '%Y-%m-%d %H:00:00') + INTERVAL FLOOR(MINUTE(create_time) / 5) * 5 MINUTE AS group_time,
ROW_NUMBER() OVER (PARTITION BY date_format(create_time, '%Y-%m-%d %H:00:00'), FLOOR(MINUTE(create_time) / 5) ORDER BY create_time) as rn
FROM
ems_battery_stack
where site_id = #{siteId}
and create_time &gt;= #{startDate}
and create_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
and avg_temperature is not null
)
SELECT
site_id,
round(avg(avg_temperature)) as batteryTemp,
DATE_FORMAT(group_time, '%Y-%m-%d') as dateDay,
DATE_FORMAT(group_time, '%H:%i:00') as createDate,
group_time as groupTime
FROM
ranked
GROUP BY site_id,groupTime
</select>
<sql id="statisCommonFilter">
@ -501,15 +510,25 @@
</select>
<select id="getAveSocList" resultType="com.xzzn.ems.domain.vo.BatteryAveSOCVo">
select t.site_id,
round(avg(t.stack_soc)) as batterySOC,
DATE_FORMAT(t.create_time, '%Y-%m-%d') AS dateDay,
DATE_FORMAT(t.create_time, '%H:00:00') AS createDate
from ems_battery_stack t
where t.site_id = #{siteId}
AND t.create_time &gt;= #{startDate}
AND t.create_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
GROUP BY t.site_id,dateDay,createDate
order by dateDay,createDate
WITH ranked AS (
SELECT
*,
date_format(create_time, '%Y-%m-%d %H:00:00') + INTERVAL FLOOR(MINUTE(create_time) / 5) * 5 MINUTE AS group_time,
ROW_NUMBER() OVER (PARTITION BY date_format(create_time, '%Y-%m-%d %H:00:00'), FLOOR(MINUTE(create_time) / 5) ORDER BY create_time) as rn
FROM
ems_battery_stack
where site_id = #{siteId}
and create_time &gt;= #{startDate}
and create_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
)
SELECT
site_id,
round(avg(stack_soc)) as batterySOC,
DATE_FORMAT(group_time, '%Y-%m-%d') as dateDay,
DATE_FORMAT(group_time, '%H:%i:00') as createDate,
group_time as groupTime
FROM
ranked
GROUP BY site_id,groupTime
</select>
</mapper>

View File

@ -469,30 +469,30 @@
order by ammeterDate desc
</select>
<select id="getStoragePowerList" resultType="com.xzzn.ems.domain.vo.EnergyStoragePowVo">
<select id="getStoragePowerList" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.EnergyStoragePowVo">
WITH ranked AS (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY device_id , DATE_FORMAT(data_update_time, '%Y-%m-%d %H:%i') ORDER BY data_update_time DESC) as rn
FROM
ems_pcs_data
where site_id = #{siteId}
and data_update_time &gt;= #{startDate}
AND data_update_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
SELECT
*,
date_format(data_update_time, '%Y-%m-%d %H:00:00') + INTERVAL FLOOR(MINUTE(data_update_time) / 5) * 5 MINUTE AS group_time,
ROW_NUMBER() OVER (PARTITION BY device_id, date_format(data_update_time, '%Y-%m-%d %H:00:00'), FLOOR(MINUTE(data_update_time) / 5) ORDER BY data_update_time) as rn
FROM
ems_pcs_data
where site_id = #{siteId}
and data_update_time &gt;= #{startDate}
and data_update_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
)
select
site_id,
device_id as deviceId,
total_active_power as pcsTotalActPower,
total_reactive_power as pcsTotalReactivePower,
DATE_FORMAT(create_time, '%Y-%m-%d') as dateDay,
DATE_FORMAT(data_update_time, '%H:%i:00') as createDate
from
SELECT
site_id,
device_id as deviceId,
total_active_power as pcsTotalActPower,
total_reactive_power as pcsTotalReactivePower,
DATE_FORMAT(group_time, '%Y-%m-%d') as dateDay,
DATE_FORMAT(group_time, '%H:%i:00') as createDate,
group_time as groupTime
FROM
ranked
where
WHERE
rn = 1
GROUP BY site_id, deviceId,pcsTotalActPower,pcsTotalReactivePower,dateDay,createDate
ORDER BY dateDay,createDate
</select>
<select id="getPcsDataByMonth" resultType="com.xzzn.ems.domain.vo.SiteMonitorDataVo">
@ -645,4 +645,37 @@
group by deviceId,dateDay,createDate,temp
order by dateDay,createDate
</select>
<select id="getPcsMaxTemp" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.PcsMaxTempVo">
WITH ranked AS (
SELECT
*,
date_format(data_update_time, '%Y-%m-%d %H:00:00') + INTERVAL FLOOR(MINUTE(data_update_time) / 5) * 5 MINUTE AS group_time,
ROW_NUMBER() OVER (PARTITION BY device_id, date_format(data_update_time, '%Y-%m-%d %H:00:00'), FLOOR(MINUTE(data_update_time) / 5) ORDER BY data_update_time) as rn
FROM
ems_pcs_data
where site_id = #{siteId}
and data_update_time &gt;= #{startDate}
and data_update_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
)
SELECT
site_id,
device_id as deviceId,
GREATEST(
COALESCE(u_temperature, -999),
COALESCE(v_temperature, -999),
COALESCE(w_temperature, -999),
COALESCE(module1_temp, -999),
COALESCE(module2_temp, -999),
COALESCE(module3_temp, -999),
COALESCE(module4_temp, -999)
) AS temp,
DATE_FORMAT(group_time, '%Y-%m-%d') as dateDay,
DATE_FORMAT(group_time, '%H:%i:00') as createDate,
group_time as groupTime
FROM
ranked
WHERE
rn = 1
</select>
</mapper>