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

@ -4,10 +4,7 @@ import com.xzzn.common.core.controller.BaseController;
import com.xzzn.common.core.domain.AjaxResult; import com.xzzn.common.core.domain.AjaxResult;
import com.xzzn.common.core.page.TableDataInfo; import com.xzzn.common.core.page.TableDataInfo;
import com.xzzn.common.utils.StringUtils; import com.xzzn.common.utils.StringUtils;
import com.xzzn.ems.domain.vo.ClusterStatisListVo; import com.xzzn.ems.domain.vo.*;
import com.xzzn.ems.domain.vo.DateSearchRequest;
import com.xzzn.ems.domain.vo.StatisAmmeterDateRequest;
import com.xzzn.ems.domain.vo.StatisClusterDateRequest;
import com.xzzn.ems.service.IEmsStatsReportService; import com.xzzn.ems.service.IEmsStatsReportService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -114,13 +111,11 @@ public class EmsStatisticalReportController extends BaseController
* 概率统计-电表报表 * 概率统计-电表报表
*/ */
@GetMapping("/getAmmeterData") @GetMapping("/getAmmeterData")
public AjaxResult getAmmeterData(StatisAmmeterDateRequest requestVo) public TableDataInfo getAmmeterData(StatisAmmeterDateRequest requestVo)
{ {
if (!StringUtils.isEmpty(requestVo.getDeviceId())) { startPage();
return success(ieEmsStatsReportService.getAmmeterDataResult(requestVo)); List<AmmeterStatisListVo> dataList = ieEmsStatsReportService.getAmmeterDataResult(requestVo);
} else { return getDataTable(dataList);
return error("缺少必传项");
}
} }
/** /**

View File

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

View File

@ -2,6 +2,7 @@ package com.xzzn.ems.mapper;
import java.util.List; import java.util.List;
import com.xzzn.ems.domain.EmsDailyEnergyData; import com.xzzn.ems.domain.EmsDailyEnergyData;
import com.xzzn.ems.domain.vo.AmmeterStatisListVo;
import org.apache.ibatis.annotations.Param; 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 EmsDailyEnergyData getDataByDate(@Param("siteId")String siteId,@Param("today") String today);
// 插入或更新每日尖峰平谷差值 // 插入或更新每日尖峰平谷差值
public void insertOrUpdateData(EmsDailyEnergyData energyData); 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; private EmsBatteryDataDayMapper emsBatteryDataDayMapper;
@Autowired @Autowired
private EmsDailyChargeDataMapper emsDailyChargeDataMapper; private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
@Autowired
private EmsDailyEnergyDataMapper emsDailyEnergyDataMapper;
// 电量指标 // 电量指标
@Override @Override
@ -252,35 +254,43 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
// 电表报表 // 电表报表
@Override @Override
public List<AmmeterStatisListVo> getAmmeterDataResult(StatisAmmeterDateRequest requestVo){ public List<AmmeterStatisListVo> getAmmeterDataResult(StatisAmmeterDateRequest requestVo){
List<AmmeterStatisListVo> dataList = new ArrayList(); List<AmmeterStatisListVo> dataList = emsDailyEnergyDataMapper.getDataBySiteId(requestVo.getSiteId(),requestVo.getStartTime(),requestVo.getEndTime());
// 时间不传默认当天 if (dataList == null || dataList.size()==0){
if (requestVo.getDateTime() == null) { return null;
String now = DateUtils.getDate();
requestVo.setDateTime(DateUtils.dateTime(DateUtils.YYYY_MM_DD, now));
} }
dataList = emsAmmeterDataMapper.getLoadDataByHour(requestVo);
if (dataList.size()>0){ BigDecimal activePower = new BigDecimal(0);
AmmeterStatisListVo totalVo = new AmmeterStatisListVo(); BigDecimal reactivePower = new BigDecimal(0);
totalVo.setDataTime("汇总"); /*AmmeterStatisListVo totalVo = new AmmeterStatisListVo();
totalVo.setDataTime("汇总");*/
for (AmmeterStatisListVo ammeterStatisListVo : dataList) { for (AmmeterStatisListVo ammeterStatisListVo : dataList) {
BigDecimal effect = new BigDecimal(0); BigDecimal effect = new BigDecimal(0);
BigDecimal activePower = ammeterStatisListVo.getActiveTotalKwh(); activePower = (ammeterStatisListVo.getActivePeakKwh() == null ? BigDecimal.ZERO : ammeterStatisListVo.getActivePeakKwh())
BigDecimal reactivePower = ammeterStatisListVo.getReActiveTotalKwh(); .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 if ( activePower != null && reactivePower !=null
&& activePower.compareTo(BigDecimal.ZERO) > 0 && activePower.compareTo(BigDecimal.ZERO) > 0
&& reactivePower.compareTo(BigDecimal.ZERO) > 0){ && reactivePower.compareTo(BigDecimal.ZERO) > 0){
effect = reactivePower.divide(activePower, 2, RoundingMode.HALF_UP) effect = reactivePower.divide(activePower, 2, RoundingMode.HALF_UP)
.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); .multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
} }
// 每小时的效率 // 每的效率
ammeterStatisListVo.setEffect(effect); ammeterStatisListVo.setEffect(effect);
// 处理汇总数据 // 处理汇总数据
dealWithAmmeterTotalDate(ammeterStatisListVo,totalVo); //dealWithAmmeterTotalDate(ammeterStatisListVo,totalVo);
} }
// 处理汇总的效率 // 处理汇总的效率
BigDecimal totalActive = totalVo.getActiveTotalKwh(); /*BigDecimal totalActive = totalVo.getActiveTotalKwh();
BigDecimal totalReactive = totalVo.getReActiveTotalKwh(); BigDecimal totalReactive = totalVo.getReActiveTotalKwh();
if ( totalActive != null && totalReactive !=null if ( totalActive != null && totalReactive !=null
&& totalActive.compareTo(BigDecimal.ZERO) > 0 && totalActive.compareTo(BigDecimal.ZERO) > 0
@ -290,8 +300,8 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); .multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
totalVo.setEffect(totalEffect); totalVo.setEffect(totalEffect);
} }
dataList.add(totalVo); dataList.add(totalVo);*/
}
return dataList; return dataList;
} }

View File

@ -178,4 +178,27 @@
calc_time = #{calcTime}, calc_time = #{calcTime},
update_time = NOW(); update_time = NOW();
</insert> </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> </mapper>