统计报表-pcs曲线

This commit is contained in:
2025-07-07 22:15:01 +08:00
parent 11a95c19fd
commit 7d1f1836d8
16 changed files with 282 additions and 103 deletions

View File

@ -52,10 +52,10 @@ public class EmsSiteMonitorController extends BaseController{
return success(iSingleSiteService.getRunningGraphStorage(siteId)); return success(iSingleSiteService.getRunningGraphStorage(siteId));
} }
@GetMapping("/runningGraph/pcsAveTemp") @GetMapping("/runningGraph/stackAveTemp")
public AjaxResult getRunningGraphPcsTemp(@RequestParam String siteId) public AjaxResult getRunningGraphStackTemp(@RequestParam String siteId)
{ {
return success(iSingleSiteService.getRunningGraphPcsTemp(siteId)); return success(iSingleSiteService.getRunningGraphStackTemp(siteId));
} }
@GetMapping("/runningGraph/batteryAveSoc") @GetMapping("/runningGraph/batteryAveSoc")

View File

@ -45,4 +45,19 @@ public class EmsStatisticalReportController extends BaseController
} }
} }
/**
* 概率统计-PCS曲线
*/
@GetMapping("/getPCSData")
public AjaxResult getPCSData(DateSearchRequest requestVo)
{
if (!StringUtils.isEmpty(requestVo.getSiteId()) &&
!StringUtils.isEmpty(requestVo.getDeviceId()) &&
requestVo.getDataType() != 0) {
return success(ieEmsStatsReportService.getPCSDataResult(requestVo));
} else {
return error("缺少必传项");
}
}
} }

View File

@ -21,6 +21,10 @@ public class DateSearchRequest {
private String siteId; private String siteId;
private String deviceId;
private int dataType;
public Date getStartDate() { public Date getStartDate() {
return startDate; return startDate;
} }
@ -44,4 +48,20 @@ public class DateSearchRequest {
public void setSiteId(String siteId) { public void setSiteId(String siteId) {
this.siteId = siteId; this.siteId = siteId;
} }
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public int getDataType() {
return dataType;
}
public void setDataType(int dataType) {
this.dataType = dataType;
}
} }

View File

@ -3,7 +3,7 @@ package com.xzzn.ems.domain.vo;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* 首页看板数据概览-电量指标 * 数据统计-电量指标
*/ */
public class ElectricIndexList { public class ElectricIndexList {
/** /**

View File

@ -15,7 +15,7 @@ public class SiteMonitorRuningInfoVo {
/** /**
* pcs平均温度list * pcs平均温度list
*/ */
private List<PCSAveTempVo> pcsAveTempList; private List<StackAveTempVo> stackAveTempList;
/** /**
* 电池平均soclist * 电池平均soclist
@ -35,12 +35,12 @@ public class SiteMonitorRuningInfoVo {
this.energyStoragePowList = energyStoragePowList; this.energyStoragePowList = energyStoragePowList;
} }
public List<PCSAveTempVo> getPcsAveTempList() { public List<StackAveTempVo> getStackAveTempList() {
return pcsAveTempList; return stackAveTempList;
} }
public void setPcsAveTempList(List<PCSAveTempVo> pcsAveTempList) { public void setStackAveTempList(List<StackAveTempVo> stackAveTempList) {
this.pcsAveTempList = pcsAveTempList; this.stackAveTempList = stackAveTempList;
} }
public List<BatteryAveSOCVo> getBatteryAveSOCList() { public List<BatteryAveSOCVo> getBatteryAveSOCList() {

View File

@ -4,10 +4,10 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
* 实时运行-pcs平均温度数据 * 实时运行-平均温度数据
* *
*/ */
public class PCSAveTempVo { public class StackAveTempVo {
/** /**
* 数据时间 * 数据时间
*/ */
@ -16,7 +16,7 @@ public class PCSAveTempVo {
/** /**
* 实时温度 * 实时温度
*/ */
private BigDecimal pcsTemp; private BigDecimal temp;
public Date getCreateDate() { public Date getCreateDate() {
@ -27,11 +27,11 @@ public class PCSAveTempVo {
this.createDate = createDate; this.createDate = createDate;
} }
public BigDecimal getPcsTemp() { public BigDecimal getTemp() {
return pcsTemp; return temp;
} }
public void setPcsTemp(BigDecimal pcsTemp) { public void setTemp(BigDecimal temp) {
this.pcsTemp = pcsTemp; this.temp = temp;
} }
} }

View File

@ -1,8 +1,11 @@
package com.xzzn.ems.mapper; package com.xzzn.ems.mapper;
import java.util.Date;
import java.util.List; import java.util.List;
import com.xzzn.ems.domain.EmsBatteryCluster; import com.xzzn.ems.domain.EmsBatteryCluster;
import com.xzzn.ems.domain.vo.BMSBatteryDataList; import com.xzzn.ems.domain.vo.BMSBatteryDataList;
import com.xzzn.ems.domain.vo.BatteryAveSOCVo;
import com.xzzn.ems.domain.vo.BatteryAveTempVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
/** /**
@ -68,4 +71,16 @@ public interface EmsBatteryClusterMapper
* @return * @return
*/ */
public List<BMSBatteryDataList> getBmsBatteryData(@Param("siteId")String siteId, @Param("stackDeviceId")String stackDeviceId); public List<BMSBatteryDataList> getBmsBatteryData(@Param("siteId")String siteId, @Param("stackDeviceId")String stackDeviceId);
/**
* 实时运行-平均soc+平均温度
* @param siteId
* @param startDate
* @param endDate
* @return
*/
public List<BatteryAveSOCVo> getAveSocList(@Param("siteId")String siteId, @Param("startDate") Date startDate, @Param("endDate")Date endDate);
public List<BatteryAveTempVo> getBatteryAveTempList(@Param("siteId")String siteId, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
} }

View File

@ -1,8 +1,10 @@
package com.xzzn.ems.mapper; package com.xzzn.ems.mapper;
import java.util.Date;
import java.util.List; import java.util.List;
import com.xzzn.ems.domain.EmsBatteryStack; import com.xzzn.ems.domain.EmsBatteryStack;
import com.xzzn.ems.domain.vo.BMSOverViewVo; import com.xzzn.ems.domain.vo.StackAveTempVo;
import org.apache.ibatis.annotations.Param;
/** /**
* 电池堆数据Mapper接口 * 电池堆数据Mapper接口
@ -61,9 +63,11 @@ public interface EmsBatteryStackMapper
public int deleteEmsBatteryStackByIds(Long[] ids); public int deleteEmsBatteryStackByIds(Long[] ids);
/** /**
* 获取电池堆信息 * 获取实时运行-堆平均温度
* @param siteId * @param siteId
* @param startDate
* @param endDate
* @return * @return
*/ */
public List<BMSOverViewVo> selectEmsBatteryStackBySiteId(String siteId); public List<StackAveTempVo> getStackAveTempList(@Param("siteId")String siteId, @Param("startDate") Date startDate, @Param("endDate")Date endDate);
} }

View File

@ -133,15 +133,13 @@ public interface EmsPcsDataMapper
public List<EnergyStoragePowVo> getStoragePowerList(@Param("siteId")String siteId, @Param("startDate")Date startDate, @Param("endDate")Date endDate); public List<EnergyStoragePowVo> getStoragePowerList(@Param("siteId")String siteId, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
/** /**
* 获取实时运行-pcs平均温度 * pcs曲线运行数据
* @param siteId * @param requestVo
* @param startDate
* @param endDate
* @return * @return
*/ */
public List<PCSAveTempVo> getPcsAveTempList(@Param("siteId")String siteId, @Param("startDate")Date startDate, @Param("endDate")Date endDate); public List<PcsStatisListVo> getPcsActivePowerByDay(DateSearchRequest requestVo);
public List<BatteryAveSOCVo> getAveSocList(@Param("siteId")String siteId, @Param("startDate")Date startDate, @Param("endDate")Date endDate); public List<PcsStatisListVo> getPcsActivePowerByHour(DateSearchRequest requestVo);
public List<BatteryAveTempVo> getBatteryAveTempList(@Param("siteId")String siteId, @Param("startDate")Date startDate, @Param("endDate")Date endDate); public List<PcsStatisListVo> getPcsActivePowerByMonth(DateSearchRequest requestVo);
} }

View File

@ -1,7 +1,10 @@
package com.xzzn.ems.service; package com.xzzn.ems.service;
import com.xzzn.ems.domain.vo.DateSearchRequest; import com.xzzn.ems.domain.vo.DateSearchRequest;
import com.xzzn.ems.domain.vo.ElectricDataInfoVo;;import java.util.Date; import com.xzzn.ems.domain.vo.ElectricDataInfoVo;
import com.xzzn.ems.domain.vo.PcsStatisListVo;
import java.util.List;
/** /**
* 统计报表数据Service接口 * 统计报表数据Service接口
@ -13,4 +16,6 @@ public interface IEmsStatsReportService
{ {
public ElectricDataInfoVo getElectricDataResult(DateSearchRequest requestVo); public ElectricDataInfoVo getElectricDataResult(DateSearchRequest requestVo);
public List<PcsStatisListVo> getPCSDataResult(DateSearchRequest requestVo);
} }

View File

@ -31,7 +31,7 @@ public interface ISingleSiteService
public AmmeterDataResponse getAmmeterDataList(String siteId); public AmmeterDataResponse getAmmeterDataList(String siteId);
public SiteMonitorRuningInfoVo getRunningGraphPcsTemp(String siteId); public SiteMonitorRuningInfoVo getRunningGraphStackTemp(String siteId);
public SiteMonitorRuningInfoVo getRunningGraphBatterySoc(String siteId); public SiteMonitorRuningInfoVo getRunningGraphBatterySoc(String siteId);

View File

@ -3,6 +3,7 @@ package com.xzzn.ems.service.impl;
import com.xzzn.common.utils.DateUtils; import com.xzzn.common.utils.DateUtils;
import com.xzzn.ems.domain.vo.DateSearchRequest; import com.xzzn.ems.domain.vo.DateSearchRequest;
import com.xzzn.ems.domain.vo.ElectricDataInfoVo; import com.xzzn.ems.domain.vo.ElectricDataInfoVo;
import com.xzzn.ems.domain.vo.PcsStatisListVo;
import com.xzzn.ems.domain.vo.SiteMonitorDataVo; import com.xzzn.ems.domain.vo.SiteMonitorDataVo;
import com.xzzn.ems.mapper.EmsPcsDataMapper; import com.xzzn.ems.mapper.EmsPcsDataMapper;
import com.xzzn.ems.service.IEmsStatsReportService; import com.xzzn.ems.service.IEmsStatsReportService;
@ -38,14 +39,10 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
public ElectricDataInfoVo getElectricDataResult(DateSearchRequest requestVo) { public ElectricDataInfoVo getElectricDataResult(DateSearchRequest requestVo) {
ElectricDataInfoVo electricDataInfoVo = new ElectricDataInfoVo(); ElectricDataInfoVo electricDataInfoVo = new ElectricDataInfoVo();
// 默认时间处理
dealRequestTime(requestVo);
Date startDate = requestVo.getStartDate(); Date startDate = requestVo.getStartDate();
Date endDate = requestVo.getEndDate(); Date endDate = requestVo.getEndDate();
if (startDate == null && endDate == null) {
// 如果没有传时间默认从今天往前7天
LocalDate sevenDaysAgo = LocalDate.now().minusDays(6);
startDate = DateUtils.toDate(sevenDaysAgo);
endDate = new Date();
}
List<SiteMonitorDataVo> dataList = new ArrayList(); List<SiteMonitorDataVo> dataList = new ArrayList();
// 开始日期和结束日期同一天,展示 0-24 小时数据 // 开始日期和结束日期同一天,展示 0-24 小时数据
@ -93,4 +90,48 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
} }
return electricDataInfoVo; return electricDataInfoVo;
} }
@Override
public List<PcsStatisListVo> getPCSDataResult(DateSearchRequest requestVo) {
List<PcsStatisListVo> dataList = new ArrayList();
// 默认时间-7天
dealRequestTime(requestVo);
Date startDate = requestVo.getStartDate();
Date endDate = requestVo.getEndDate();
// 开始日期和结束日期同一天,展示 0-24 小时数据
if (DateUtils.isSameDay(startDate, endDate)){
endDate = DateUtils.addDays(endDate, 1);
requestVo.setEndDate(endDate);
dataList = emsPcsDataMapper.getPcsActivePowerByHour(requestVo);
} else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 1
&& DateUtils.differentDaysByMillisecond(endDate, startDate) < 30){
endDate = DateUtils.addDays(endDate, 1);
requestVo.setEndDate(endDate);
// 开始日期-结束日期大于 1 天小于30 天,按天展示数据
dataList = emsPcsDataMapper.getPcsActivePowerByDay(requestVo);
} else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 30){
endDate = DateUtils.addDays(endDate, 1);
requestVo.setEndDate(endDate);
// 开始日期-结束日期大于 1 个月,按月展示数据
dataList = emsPcsDataMapper.getPcsActivePowerByMonth(requestVo);
}
return dataList;
}
// 统计入参时间处理
public void dealRequestTime(DateSearchRequest requestVo){
Date startDate = requestVo.getStartDate();
Date endDate = requestVo.getEndDate();
if (startDate == null && endDate == null) {
// 如果没有传时间默认从今天往前7天
LocalDate sevenDaysAgo = LocalDate.now().minusDays(6);
startDate = DateUtils.toDate(sevenDaysAgo);
endDate = new Date();
requestVo.setStartDate(startDate);
requestVo.setEndDate(endDate);
}
}
} }

View File

@ -142,17 +142,17 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
} }
return siteMonitorRuningInfoVo; return siteMonitorRuningInfoVo;
} }
// 获取单站监控实时运行-poc平均温度 // 获取单站监控实时运行-stack平均温度
@Override @Override
public SiteMonitorRuningInfoVo getRunningGraphPcsTemp(String siteId) { public SiteMonitorRuningInfoVo getRunningGraphStackTemp(String siteId) {
SiteMonitorRuningInfoVo siteMonitorRuningInfoVo = new SiteMonitorRuningInfoVo(); SiteMonitorRuningInfoVo siteMonitorRuningInfoVo = new SiteMonitorRuningInfoVo();
if (!StringUtils.isEmpty(siteId)) { if (!StringUtils.isEmpty(siteId)) {
// 时间暂定今日+昨日 // 时间暂定今日+昨日
Date today = new Date(); Date today = new Date();
Date yesterday = DateUtils.addDays(today, -1); Date yesterday = DateUtils.addDays(today, -1);
//pcs平均温度list //pcs平均温度list
List<PCSAveTempVo> pcsAveTempVos = emsPcsDataMapper.getPcsAveTempList(siteId, yesterday, today); List<StackAveTempVo> stackAveTempVos = emsBatteryStackMapper.getStackAveTempList(siteId, yesterday, today);
siteMonitorRuningInfoVo.setPcsAveTempList(pcsAveTempVos); siteMonitorRuningInfoVo.setStackAveTempList(stackAveTempVos);
} }
return siteMonitorRuningInfoVo; return siteMonitorRuningInfoVo;
} }
@ -165,7 +165,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
Date today = new Date(); Date today = new Date();
Date yesterday = DateUtils.addDays(today, -1); Date yesterday = DateUtils.addDays(today, -1);
//电池平均soclist //电池平均soclist
List<BatteryAveSOCVo> batteryAveSOCList = emsPcsDataMapper.getAveSocList(siteId, yesterday, today); List<BatteryAveSOCVo> batteryAveSOCList = emsBatteryClusterMapper.getAveSocList(siteId, yesterday, today);
siteMonitorRuningInfoVo.setBatteryAveSOCList(batteryAveSOCList); siteMonitorRuningInfoVo.setBatteryAveSOCList(batteryAveSOCList);
} }
return siteMonitorRuningInfoVo; return siteMonitorRuningInfoVo;
@ -179,7 +179,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
Date today = new Date(); Date today = new Date();
Date yesterday = DateUtils.addDays(today, -1); Date yesterday = DateUtils.addDays(today, -1);
//电池平均温度list //电池平均温度list
List<BatteryAveTempVo> batteryAveTempList = emsPcsDataMapper.getBatteryAveTempList(siteId, yesterday, today); List<BatteryAveTempVo> batteryAveTempList = emsBatteryClusterMapper.getBatteryAveTempList(siteId, yesterday, today);
siteMonitorRuningInfoVo.setBatteryAveTempList(batteryAveTempList); siteMonitorRuningInfoVo.setBatteryAveTempList(batteryAveTempList);
} }
return siteMonitorRuningInfoVo; return siteMonitorRuningInfoVo;

View File

@ -325,4 +325,33 @@
group by t.cluster_voltage,t.cluster_current,t.current_soc,t.site_id,t.device_id,t.max_cell_voltage,t.min_cell_voltage, group by t.cluster_voltage,t.cluster_current,t.current_soc,t.site_id,t.device_id,t.max_cell_voltage,t.min_cell_voltage,
t.max_cell_temp,t.min_cell_temp t.max_cell_temp,t.min_cell_temp
</select> </select>
<select id="getAveSocList" resultType="com.xzzn.ems.domain.vo.BatteryAveSOCVo">
select t.site_id,
t.battery_pack_soc as batterySOC,
t.create_time as createDate
from ems_battery_cluster t
inner join (select site_id,create_time,MIN(device_id) as device_id
from ems_battery_cluster
where site_id = #{siteId}
AND create_time &gt;= Date(#{startDate})
AND create_time &lt;= #{endDate}
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>
<select id="getBatteryAveTempList" resultType="com.xzzn.ems.domain.vo.BatteryAveTempVo">
select t.site_id,
t.avg_cell_temp as batteryTemp,
t.create_time as createDate
from ems_battery_cluster t
inner join (select site_id,create_time,MIN(device_id) as device_id
from ems_battery_cluster
where site_id = #{siteId}
AND create_time &gt;= Date(#{startDate})
AND create_time &lt;= #{endDate}
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>
</mapper> </mapper>

View File

@ -274,4 +274,18 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<select id="getStackAveTempList" resultType="com.xzzn.ems.domain.vo.StackAveTempVo">
select t.site_id,
t.operating_temp as temp,
t.create_time as createDate
from ems_battery_stack t
inner join (select site_id,create_time,MIN(device_id) as device_id
from ems_battery_stack
where site_id = #{siteId}
AND create_time &gt;= Date(#{startDate})
AND create_time &lt;= #{endDate}
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>
</mapper> </mapper>

View File

@ -387,19 +387,23 @@
order by tmp.device_id order by tmp.device_id
</select> </select>
<sql id="commonFilter">
WHERE p.site_id = #{siteId}
<if test="startDate != null">
AND p.data_update_time &gt;= #{startDate}
</if>
<if test="endDate != null">
AND p.data_update_time &lt; #{endDate}
</if>
</sql>
<select id="getPcsDataByDay" resultType="com.xzzn.ems.domain.vo.SiteMonitorDataVo"> <select id="getPcsDataByDay" resultType="com.xzzn.ems.domain.vo.SiteMonitorDataVo">
select DATE(latest.max_update_time) as ammeterDate, select DATE(latest.max_update_time) as ammeterDate,
sum(t.total_ac_charge_energy) as chargedCap, sum(t.total_ac_charge_energy) as chargedCap,
sum(t.total_ac_discharge_energy) as disChargedCap sum(t.total_ac_discharge_energy) as disChargedCap
from ( SELECT p.site_id, p.device_id,p.date_month,p.date_day, MAX(p.data_update_time) AS max_update_time from ( SELECT p.site_id, p.device_id,p.date_month,p.date_day, MAX(p.data_update_time) AS max_update_time
FROM ems_pcs_data p FROM ems_pcs_data p
where p.site_id = #{siteId} <include refid="commonFilter"/>
<if test="startDate != null">
and p.data_update_time &gt;= #{startDate}
</if>
<if test="endDate != null">
and p.data_update_time &lt; #{endDate}
</if>
GROUP BY p.site_id,p.device_id,p.date_month,p.date_day GROUP BY p.site_id,p.device_id,p.date_month,p.date_day
) latest inner join ems_pcs_data t ON latest.site_id = t.site_id ) latest inner join ems_pcs_data t ON latest.site_id = t.site_id
AND latest.device_id = t.device_id AND latest.device_id = t.device_id
@ -425,61 +429,13 @@
) temp on t.site_id = temp.site_id and t.create_time = temp.create_time and t.device_id = temp.device_id ) temp on t.site_id = temp.site_id and t.create_time = temp.create_time and t.device_id = temp.device_id
</select> </select>
<select id="getPcsAveTempList" resultType="com.xzzn.ems.domain.vo.PCSAveTempVo">
select t.site_id,
t.pcs_module_temperature as pcsTemp,
t.create_time as createDate
from ems_pcs_data t
inner join (select site_id,create_time,MIN(device_id) as device_id
from ems_pcs_data
where site_id = #{siteId}
AND create_time &gt;= Date(#{startDate})
AND create_time &lt;= #{endDate}
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>
<select id="getAveSocList" resultType="com.xzzn.ems.domain.vo.BatteryAveSOCVo">
select t.site_id,
t.battery_pack_soc as batterySOC,
t.create_time as createDate
from ems_battery_cluster t
inner join (select site_id,create_time,MIN(device_id) as device_id
from ems_battery_cluster
where site_id = #{siteId}
AND create_time &gt;= Date(#{startDate})
AND create_time &lt;= #{endDate}
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>
<select id="getBatteryAveTempList" resultType="com.xzzn.ems.domain.vo.BatteryAveTempVo">
select t.site_id,
t.avg_cell_temp as batteryTemp,
t.create_time as createDate
from ems_battery_cluster t
inner join (select site_id,create_time,MIN(device_id) as device_id
from ems_battery_cluster
where site_id = #{siteId}
AND create_time &gt;= Date(#{startDate})
AND create_time &lt;= #{endDate}
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>
<select id="getPcsDataByMonth" resultType="com.xzzn.ems.domain.vo.SiteMonitorDataVo"> <select id="getPcsDataByMonth" resultType="com.xzzn.ems.domain.vo.SiteMonitorDataVo">
select DATE_FORMAT(latest.max_update_time, '%Y-%m') as ammeterDate, select DATE_FORMAT(latest.max_update_time, '%Y-%m') as ammeterDate,
sum(t.total_ac_charge_energy) as chargedCap, sum(t.total_ac_charge_energy) as chargedCap,
sum(t.total_ac_discharge_energy) as disChargedCap sum(t.total_ac_discharge_energy) as disChargedCap
from ( SELECT p.site_id, p.device_id,p.date_month,MAX(p.data_update_time) AS max_update_time from ( SELECT p.site_id, p.device_id,p.date_month,MAX(p.data_update_time) AS max_update_time
FROM ems_pcs_data p FROM ems_pcs_data p
where p.site_id = #{siteId} <include refid="commonFilter"/>
<if test="startDate != null">
and p.data_update_time &gt;= #{startDate}
</if>
<if test="endDate != null">
and p.data_update_time &lt; #{endDate}
</if>
GROUP BY p.site_id,p.device_id,p.date_month GROUP BY p.site_id,p.device_id,p.date_month
) latest inner join ems_pcs_data t ON latest.site_id = t.site_id ) latest inner join ems_pcs_data t ON latest.site_id = t.site_id
AND latest.device_id = t.device_id AND latest.device_id = t.device_id
@ -495,13 +451,7 @@
sum(t.total_ac_discharge_energy) as disChargedCap sum(t.total_ac_discharge_energy) as disChargedCap
from ( SELECT p.site_id, p.device_id,DATE_FORMAT(p.data_update_time, '%H')+1 AS dateHour,MAX(p.data_update_time) as max_update_time from ( SELECT p.site_id, p.device_id,DATE_FORMAT(p.data_update_time, '%H')+1 AS dateHour,MAX(p.data_update_time) as max_update_time
FROM ems_pcs_data p FROM ems_pcs_data p
where p.site_id = #{siteId} <include refid="commonFilter"/>
<if test="startDate != null">
and p.data_update_time &gt;= #{startDate}
</if>
<if test="endDate != null">
and p.data_update_time &lt; #{endDate}
</if>
GROUP BY p.site_id,p.device_id,dateHour GROUP BY p.site_id,p.device_id,dateHour
) latest inner join ems_pcs_data t ON latest.site_id = t.site_id ) latest inner join ems_pcs_data t ON latest.site_id = t.site_id
AND latest.device_id = t.device_id AND latest.device_id = t.device_id
@ -509,4 +459,92 @@
group by ammeterDate group by ammeterDate
order by ammeterDate desc order by ammeterDate desc
</select> </select>
<sql id="statisCommonFilter">
WHERE p.site_id = #{siteId}
and p.device_id = #{deviceId}
<if test="startDate != null">
AND p.data_update_time &gt;= DATE(#{startDate})
</if>
<if test="endDate != null">
AND p.data_update_time &lt; DATE(#{endDate})
</if>
</sql>
<sql id="dataTypeChooseFilter">
<choose>
<when test="dataType == 1">
t.total_active_power as activePower
</when>
<when test="dataType == 2">
t.total_reactive_power as reactivePower
</when>
<when test="dataType == 3">
t.sys_u_current as uCurrent,
t.sys_v_current as vCurrent,
t.sys_w_current as wCurrent
</when>
</choose>
</sql>
<sql id="groupChooseFilter">
<choose>
<when test="dataType == 1">
,activePower
</when>
<when test="dataType == 2">
,reactivePower
</when>
<when test="dataType == 3">
,uCurrent,vCurrent,wCurrent
</when>
</choose>
</sql>
<select id="getPcsActivePowerByDay" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.PcsStatisListVo">
select CONCAT(t.date_month,'/',t.date_day) as statisDate,
<include refid="dataTypeChooseFilter"/>
from ( SELECT p.site_id, p.device_id,p.date_month, p.date_day,MAX(p.data_update_time) as max_update_time
FROM ems_pcs_data p
<include refid="statisCommonFilter"/>
GROUP BY p.site_id,p.device_id,p.date_month,p.date_day
) latest inner join ems_pcs_data t ON latest.site_id = t.site_id
AND latest.device_id = t.device_id
AND latest.max_update_time = t.data_update_time
and latest.date_month = t.date_month
and latest.date_day = t.date_day
group by statisDate
<include refid="groupChooseFilter"/>
order by statisDate desc
</select>
<select id="getPcsActivePowerByMonth" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.PcsStatisListVo">
select DATE_FORMAT(latest.max_update_time, '%Y-%m') as statisDate,
<include refid="dataTypeChooseFilter"/>
from ( SELECT p.site_id, p.device_id,p.date_month,MAX(p.data_update_time) as max_update_time
FROM ems_pcs_data p
<include refid="statisCommonFilter"/>
GROUP BY p.site_id,p.device_id,p.date_month
) latest inner join ems_pcs_data t ON latest.site_id = t.site_id
AND latest.device_id = t.device_id
AND latest.max_update_time = t.data_update_time
and latest.date_month = t.date_month
group by statisDate
<include refid="groupChooseFilter"/>
order by statisDate desc
</select>
<select id="getPcsActivePowerByHour" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.PcsStatisListVo">
select latest.dateHour as statisDate,
<include refid="dataTypeChooseFilter"/>
from ( SELECT p.site_id, p.device_id,DATE_FORMAT(p.data_update_time, '%H')+1 AS dateHour,MAX(p.data_update_time) as max_update_time
FROM ems_pcs_data p
<include refid="statisCommonFilter"/>
GROUP BY p.site_id,p.device_id,dateHour
) latest inner join ems_pcs_data t ON latest.site_id = t.site_id
AND latest.device_id = t.device_id
AND latest.max_update_time = t.data_update_time
group by statisDate
<include refid="groupChooseFilter"/>
order by statisDate desc
</select>
</mapper> </mapper>