统计报表-功率曲线
This commit is contained in:
@ -60,7 +60,7 @@ public class EmsStatisticalReportController extends BaseController
|
|||||||
{
|
{
|
||||||
if (!StringUtils.isEmpty(requestVo.getSiteId()) &&
|
if (!StringUtils.isEmpty(requestVo.getSiteId()) &&
|
||||||
!StringUtils.isEmpty(requestVo.getDeviceId()) &&
|
!StringUtils.isEmpty(requestVo.getDeviceId()) &&
|
||||||
requestVo.getDataType() != 0) {
|
!StringUtils.isEmpty(requestVo.getDataType())) {
|
||||||
return success(ieEmsStatsReportService.getPCSDataResult(requestVo));
|
return success(ieEmsStatsReportService.getPCSDataResult(requestVo));
|
||||||
} else {
|
} else {
|
||||||
return error("缺少必传项");
|
return error("缺少必传项");
|
||||||
@ -75,7 +75,7 @@ public class EmsStatisticalReportController extends BaseController
|
|||||||
{
|
{
|
||||||
if (!StringUtils.isEmpty(requestVo.getSiteId()) &&
|
if (!StringUtils.isEmpty(requestVo.getSiteId()) &&
|
||||||
!StringUtils.isEmpty(requestVo.getDeviceId()) &&
|
!StringUtils.isEmpty(requestVo.getDeviceId()) &&
|
||||||
requestVo.getDataType() != 0) {
|
!StringUtils.isEmpty(requestVo.getDataType())) {
|
||||||
return success(ieEmsStatsReportService.getStackDataResult(requestVo));
|
return success(ieEmsStatsReportService.getStackDataResult(requestVo));
|
||||||
} else {
|
} else {
|
||||||
return error("缺少必传项");
|
return error("缺少必传项");
|
||||||
@ -125,4 +125,19 @@ public class EmsStatisticalReportController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 概率统计-功率曲线
|
||||||
|
*/
|
||||||
|
@GetMapping("/getPowerData")
|
||||||
|
public AjaxResult getPowerData(DateSearchRequest requestVo)
|
||||||
|
{
|
||||||
|
if (!StringUtils.isEmpty(requestVo.getSiteId())
|
||||||
|
&& !StringUtils.isEmpty(requestVo.getDeviceId())
|
||||||
|
&& !StringUtils.isEmpty(requestVo.getDataType())) {
|
||||||
|
return success(ieEmsStatsReportService.getPowerDataList(requestVo));
|
||||||
|
} else {
|
||||||
|
return error("缺少必传项");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,7 +23,7 @@ public class DateSearchRequest {
|
|||||||
|
|
||||||
private String deviceId;
|
private String deviceId;
|
||||||
|
|
||||||
private int dataType;
|
private String dataType;
|
||||||
|
|
||||||
public Date getStartDate() {
|
public Date getStartDate() {
|
||||||
return startDate;
|
return startDate;
|
||||||
@ -57,11 +57,11 @@ public class DateSearchRequest {
|
|||||||
this.deviceId = deviceId;
|
this.deviceId = deviceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDataType() {
|
public String getDataType() {
|
||||||
return dataType;
|
return dataType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDataType(int dataType) {
|
public void setDataType(String dataType) {
|
||||||
this.dataType = dataType;
|
this.dataType = dataType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,73 @@
|
|||||||
|
package com.xzzn.ems.domain.vo;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据统计-功率曲线
|
||||||
|
*/
|
||||||
|
public class PowerStatisListVo {
|
||||||
|
/**
|
||||||
|
* 数据日期
|
||||||
|
*/
|
||||||
|
private String statisDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电网功率-total_apparent_power总交流视在功率
|
||||||
|
*/
|
||||||
|
private BigDecimal gridPower;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负载功率-total_active_power总交流有功电率
|
||||||
|
*/
|
||||||
|
private BigDecimal loadPower;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 储能功率-max_discharge_power_capacity最大可放功率
|
||||||
|
*/
|
||||||
|
private BigDecimal storagePower;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 光伏功率-ac_capacitive_reactive_power交流侧容性无功功率
|
||||||
|
*/
|
||||||
|
private BigDecimal pvPower;
|
||||||
|
|
||||||
|
public String getStatisDate() {
|
||||||
|
return statisDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatisDate(String statisDate) {
|
||||||
|
this.statisDate = statisDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getGridPower() {
|
||||||
|
return gridPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGridPower(BigDecimal gridPower) {
|
||||||
|
this.gridPower = gridPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getLoadPower() {
|
||||||
|
return loadPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLoadPower(BigDecimal loadPower) {
|
||||||
|
this.loadPower = loadPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getStoragePower() {
|
||||||
|
return storagePower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStoragePower(BigDecimal storagePower) {
|
||||||
|
this.storagePower = storagePower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getPvPower() {
|
||||||
|
return pvPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPvPower(BigDecimal pvPower) {
|
||||||
|
this.pvPower = pvPower;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -142,4 +142,15 @@ public interface EmsPcsDataMapper
|
|||||||
public List<PcsStatisListVo> getPcsActivePowerByHour(DateSearchRequest requestVo);
|
public List<PcsStatisListVo> getPcsActivePowerByHour(DateSearchRequest requestVo);
|
||||||
|
|
||||||
public List<PcsStatisListVo> getPcsActivePowerByMonth(DateSearchRequest requestVo);
|
public List<PcsStatisListVo> getPcsActivePowerByMonth(DateSearchRequest requestVo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取pcs功率曲线数据
|
||||||
|
* @param requestVo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<PowerStatisListVo> getPowerDataByHour(DateSearchRequest requestVo);
|
||||||
|
|
||||||
|
public List<PowerStatisListVo> getPowerDataByDay(DateSearchRequest requestVo);
|
||||||
|
|
||||||
|
public List<PowerStatisListVo> getPowerDataByMonth(DateSearchRequest requestVo);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,4 +25,6 @@ public interface IEmsStatsReportService
|
|||||||
public List<Map<String,Object>> getLoadNameList(String siteId);
|
public List<Map<String,Object>> getLoadNameList(String siteId);
|
||||||
|
|
||||||
public List<AmmeterStatisListVo> getAmmeterDataResult(StatisAmmeterDateRequest requestVo);
|
public List<AmmeterStatisListVo> getAmmeterDataResult(StatisAmmeterDateRequest requestVo);
|
||||||
|
|
||||||
|
public List<PowerStatisListVo> getPowerDataList(DateSearchRequest requestVo);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -165,10 +165,12 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
|
|||||||
return dataList;
|
return dataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<Map<String, Object>> getLoadNameList(String siteId) {
|
public List<Map<String, Object>> getLoadNameList(String siteId) {
|
||||||
return emsDevicesSettingMapper.getLoadNameList(siteId);
|
return emsDevicesSettingMapper.getLoadNameList(siteId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<AmmeterStatisListVo> getAmmeterDataResult(StatisAmmeterDateRequest requestVo){
|
public List<AmmeterStatisListVo> getAmmeterDataResult(StatisAmmeterDateRequest requestVo){
|
||||||
List<AmmeterStatisListVo> dataList = new ArrayList();
|
List<AmmeterStatisListVo> dataList = new ArrayList();
|
||||||
// 时间不传默认当天
|
// 时间不传默认当天
|
||||||
@ -228,6 +230,36 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
|
|||||||
totalVo.setReActiveValleyKwh(totalVo.getReActiveValleyKwh().add(ammeterStatisListVo.getReActiveValleyKwh()));
|
totalVo.setReActiveValleyKwh(totalVo.getReActiveValleyKwh().add(ammeterStatisListVo.getReActiveValleyKwh()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PowerStatisListVo> getPowerDataList(DateSearchRequest requestVo) {
|
||||||
|
List<PowerStatisListVo> 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.getPowerDataByHour(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.getPowerDataByDay(requestVo);
|
||||||
|
} else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 30){
|
||||||
|
endDate = DateUtils.addDays(endDate, 1);
|
||||||
|
requestVo.setEndDate(endDate);
|
||||||
|
// 开始日期-结束日期大于 1 个月,按月展示数据
|
||||||
|
dataList = emsPcsDataMapper.getPowerDataByMonth(requestVo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dataList;
|
||||||
|
}
|
||||||
|
|
||||||
// 统计入参时间处理
|
// 统计入参时间处理
|
||||||
public void dealRequestTime(DateSearchRequest requestVo){
|
public void dealRequestTime(DateSearchRequest requestVo){
|
||||||
|
|
||||||
|
|||||||
@ -302,18 +302,21 @@
|
|||||||
|
|
||||||
<sql id="dataTypeChooseFilter">
|
<sql id="dataTypeChooseFilter">
|
||||||
<choose>
|
<choose>
|
||||||
<when test="dataType == 1">
|
<when test='dataType == "1"'>
|
||||||
t.operating_temp AS temp
|
t.operating_temp AS temp
|
||||||
</when>
|
</when>
|
||||||
<when test="dataType == 2">
|
<when test='dataType == "2"'>
|
||||||
t.stack_voltage as voltage
|
t.stack_voltage as voltage
|
||||||
</when>
|
</when>
|
||||||
<when test="dataType == 3">
|
<when test='dataType == "3"'>
|
||||||
t.stack_current as current
|
t.stack_current as current
|
||||||
</when>
|
</when>
|
||||||
<when test="dataType == 4">
|
<when test='dataType == "4"'>
|
||||||
t.stack_soc as soc
|
t.stack_soc as soc
|
||||||
</when>
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
0 AS temp
|
||||||
|
</otherwise>
|
||||||
</choose>
|
</choose>
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
|||||||
@ -187,6 +187,6 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getLoadNameList" parameterType="String" resultType="java.util.Map">
|
<select id="getLoadNameList" parameterType="String" resultType="java.util.Map">
|
||||||
select distinct device_id,device_name from ems_devices_setting where site_id = #{siteId} and device_id like '%LOAD%'
|
select distinct device_id as id,device_name as deviceName from ems_devices_setting where site_id = #{siteId} and device_id like '%LOAD%'
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
@ -475,23 +475,26 @@
|
|||||||
|
|
||||||
<sql id="dataTypeChooseFilter">
|
<sql id="dataTypeChooseFilter">
|
||||||
<choose>
|
<choose>
|
||||||
<when test="dataType == 1">
|
<when test='dataType == "1"'>
|
||||||
t.total_active_power as activePower
|
t.total_active_power as activePower
|
||||||
</when>
|
</when>
|
||||||
<when test="dataType == 2">
|
<when test='dataType == "2"'>
|
||||||
t.total_reactive_power as reactivePower
|
t.total_reactive_power as reactivePower
|
||||||
</when>
|
</when>
|
||||||
<when test="dataType == 3">
|
<when test='dataType == "3"'>
|
||||||
t.sys_u_current as uCurrent,
|
t.sys_u_current as uCurrent,
|
||||||
t.sys_v_current as vCurrent,
|
t.sys_v_current as vCurrent,
|
||||||
t.sys_w_current as wCurrent
|
t.sys_w_current as wCurrent
|
||||||
</when>
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
0 as activePower
|
||||||
|
</otherwise>
|
||||||
</choose>
|
</choose>
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
|
||||||
<select id="getPcsActivePowerByDay" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.PcsStatisListVo">
|
<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,
|
select DATE(latest.max_update_time) as statisDate,
|
||||||
<include refid="dataTypeChooseFilter"/>
|
<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 ( 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
|
||||||
@ -531,4 +534,64 @@
|
|||||||
AND latest.max_update_time = t.data_update_time
|
AND latest.max_update_time = t.data_update_time
|
||||||
order by statisDate desc
|
order by statisDate desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<sql id="powerTypeChooseFilter">
|
||||||
|
<choose>
|
||||||
|
<when test='dataType == "1"'>
|
||||||
|
t.total_apparent_power as gridPower
|
||||||
|
</when>
|
||||||
|
<when test='dataType == "2"'>
|
||||||
|
t.total_active_power as loadPower
|
||||||
|
</when>
|
||||||
|
<when test='dataType == "3"'>
|
||||||
|
t.max_discharge_power_capacity as storagePower
|
||||||
|
</when>
|
||||||
|
<when test='dataType == "4"'>
|
||||||
|
t.ac_capacitive_reactive_power as pvPower
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
0 as gridPower
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="getPowerDataByHour" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.PowerStatisListVo">
|
||||||
|
select latest.dateHour as statisDate,
|
||||||
|
<include refid="powerTypeChooseFilter"/>
|
||||||
|
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
|
||||||
|
order by statisDate desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getPowerDataByDay" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.PowerStatisListVo">
|
||||||
|
select latest.dateDay as statisDate,
|
||||||
|
<include refid="powerTypeChooseFilter"/>
|
||||||
|
from ( SELECT p.site_id, p.device_id, DATE(p.data_update_time ) AS dateDay,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,dateDay
|
||||||
|
) 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
|
||||||
|
order by statisDate desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getPowerDataByMonth" parameterType="com.xzzn.ems.domain.vo.DateSearchRequest" resultType="com.xzzn.ems.domain.vo.PowerStatisListVo">
|
||||||
|
select DATE_FORMAT(latest.max_update_time, '%Y-%m') as statisDate,
|
||||||
|
<include refid="powerTypeChooseFilter"/>
|
||||||
|
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
|
||||||
|
order by statisDate desc
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user