0918优化-电表报表-尖峰平谷日差值显示

This commit is contained in:
2025-10-10 17:32:15 +08:00
parent b861ad7593
commit 158bc1a51d
5 changed files with 82 additions and 61 deletions

View File

@ -1,32 +1,30 @@
package com.xzzn.ems.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
* 报表统计-电表报表入参
*
*/
public class StatisAmmeterDateRequest {
/**
* 筛选时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date dateTime;
private String startTime;
private String endTime;
private String siteId;
private String deviceId;
public Date getDateTime() {
return dateTime;
public String getStartTime() {
return startTime;
}
public void setDateTime(Date dateTime) {
this.dateTime = dateTime;
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getSiteId() {
@ -36,12 +34,4 @@ public class StatisAmmeterDateRequest {
public void setSiteId(String siteId) {
this.siteId = siteId;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
}

View File

@ -2,6 +2,7 @@ package com.xzzn.ems.mapper;
import java.util.List;
import com.xzzn.ems.domain.EmsDailyEnergyData;
import com.xzzn.ems.domain.vo.AmmeterStatisListVo;
import org.apache.ibatis.annotations.Param;
/**
@ -64,4 +65,6 @@ public interface EmsDailyEnergyDataMapper
public EmsDailyEnergyData getDataByDate(@Param("siteId")String siteId,@Param("today") String today);
// 插入或更新每日尖峰平谷差值
public void insertOrUpdateData(EmsDailyEnergyData energyData);
// 电表报表
public List<AmmeterStatisListVo> getDataBySiteId(@Param("siteId")String siteId, @Param("startTime")String startTime, @Param("endTime")String endTime);
}

View File

@ -41,6 +41,8 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
private EmsBatteryDataDayMapper emsBatteryDataDayMapper;
@Autowired
private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
@Autowired
private EmsDailyEnergyDataMapper emsDailyEnergyDataMapper;
// 电量指标
@Override
@ -252,35 +254,43 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
// 电表报表
@Override
public List<AmmeterStatisListVo> getAmmeterDataResult(StatisAmmeterDateRequest requestVo){
List<AmmeterStatisListVo> dataList = new ArrayList();
// 时间不传默认当天
if (requestVo.getDateTime() == null) {
String now = DateUtils.getDate();
requestVo.setDateTime(DateUtils.dateTime(DateUtils.YYYY_MM_DD, now));
List<AmmeterStatisListVo> dataList = emsDailyEnergyDataMapper.getDataBySiteId(requestVo.getSiteId(),requestVo.getStartTime(),requestVo.getEndTime());
if (dataList == null || dataList.size()==0){
return null;
}
dataList = emsAmmeterDataMapper.getLoadDataByHour(requestVo);
if (dataList.size()>0){
AmmeterStatisListVo totalVo = new AmmeterStatisListVo();
totalVo.setDataTime("汇总");
for (AmmeterStatisListVo ammeterStatisListVo : dataList) {
BigDecimal effect = new BigDecimal(0);
BigDecimal activePower = ammeterStatisListVo.getActiveTotalKwh();
BigDecimal reactivePower = ammeterStatisListVo.getReActiveTotalKwh();
if ( activePower != null && reactivePower !=null
&& activePower.compareTo(BigDecimal.ZERO) > 0
&& reactivePower.compareTo(BigDecimal.ZERO) > 0){
effect = reactivePower.divide(activePower, 2, RoundingMode.HALF_UP)
.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
}
// 每小时的效率
ammeterStatisListVo.setEffect(effect);
// 处理汇总数据
dealWithAmmeterTotalDate(ammeterStatisListVo,totalVo);
BigDecimal activePower = new BigDecimal(0);
BigDecimal reactivePower = new BigDecimal(0);
/*AmmeterStatisListVo totalVo = new AmmeterStatisListVo();
totalVo.setDataTime("汇总");*/
for (AmmeterStatisListVo ammeterStatisListVo : dataList) {
BigDecimal effect = new BigDecimal(0);
activePower = (ammeterStatisListVo.getActivePeakKwh() == null ? BigDecimal.ZERO : ammeterStatisListVo.getActivePeakKwh())
.add((ammeterStatisListVo.getActiveHighKwh() == null ? BigDecimal.ZERO : ammeterStatisListVo.getActiveHighKwh()))
.add((ammeterStatisListVo.getActiveFlatKwh() == null ? BigDecimal.ZERO : ammeterStatisListVo.getActiveFlatKwh()))
.add((ammeterStatisListVo.getActiveValleyKwh() == null ? BigDecimal.ZERO : ammeterStatisListVo.getActiveValleyKwh()));
reactivePower = (ammeterStatisListVo.getReActivePeakKwh() == null ? BigDecimal.ZERO : ammeterStatisListVo.getReActivePeakKwh())
.add((ammeterStatisListVo.getReActiveHighKwh() == null ? BigDecimal.ZERO : ammeterStatisListVo.getReActiveHighKwh()))
.add((ammeterStatisListVo.getReActiveFlatKwh() == null ? BigDecimal.ZERO : ammeterStatisListVo.getReActiveFlatKwh()))
.add((ammeterStatisListVo.getReActiveValleyKwh() == null ? BigDecimal.ZERO : ammeterStatisListVo.getReActiveValleyKwh()));
ammeterStatisListVo.setActiveTotalKwh(activePower);
ammeterStatisListVo.setReActiveTotalKwh(reactivePower);
if ( activePower != null && reactivePower !=null
&& activePower.compareTo(BigDecimal.ZERO) > 0
&& reactivePower.compareTo(BigDecimal.ZERO) > 0){
effect = reactivePower.divide(activePower, 2, RoundingMode.HALF_UP)
.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
}
// 每天的效率
ammeterStatisListVo.setEffect(effect);
// 处理汇总的效率
BigDecimal totalActive = totalVo.getActiveTotalKwh();
// 处理汇总数据
//dealWithAmmeterTotalDate(ammeterStatisListVo,totalVo);
}
// 处理汇总的效率
/*BigDecimal totalActive = totalVo.getActiveTotalKwh();
BigDecimal totalReactive = totalVo.getReActiveTotalKwh();
if ( totalActive != null && totalReactive !=null
&& totalActive.compareTo(BigDecimal.ZERO) > 0
@ -290,8 +300,8 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
totalVo.setEffect(totalEffect);
}
dataList.add(totalVo);
}
dataList.add(totalVo);*/
return dataList;
}

View File

@ -178,4 +178,27 @@
calc_time = #{calcTime},
update_time = NOW();
</insert>
<select id="getDataBySiteId" resultType="com.xzzn.ems.domain.vo.AmmeterStatisListVo">
select t.data_date as dataTime,
t.peak_charge_diff as activePeakKwh,
t.peak_discharge_diff as reActivePeakKwh,
t.high_charge_diff as activeHighKwh,
t.high_discharge_diff as reActiveHighKwh,
t.flat_charge_diff as activeFlatKwh,
t.flat_discharge_diff as reActiveFlatKwh,
t.valley_charge_diff as activeValleyKwh,
t.valley_discharge_diff as reActiveValleyKwh
from ems_daily_energy_data t
where 1=1
<if test="siteId != null">
and t.site_id = #{siteId}
</if>
<if test="startTime != null">
and t.data_date &gt;= #{startTime}
</if>
<if test="endTime != null">
and t.data_date &gt;= #{endTime}
</if>
</select>
</mapper>