新增光伏Mppt相关功能
This commit is contained in:
@ -15,6 +15,7 @@ import com.ho.business.vo.resp.DeviceRespVO;
|
||||
import com.ho.business.vo.resp.EnvironmentalControlVo;
|
||||
import com.ho.business.vo.resp.cabin.TemperatureVoltageNewResp;
|
||||
import com.ho.business.vo.resp.point.ElecDataResp;
|
||||
import com.ho.common.tools.annotation.TokenIgnore;
|
||||
import com.ho.common.tools.constant.CommonConstant;
|
||||
import com.ho.common.tools.constant.ContextConstant;
|
||||
import com.ho.common.tools.exception.BaseResponseCode;
|
||||
@ -192,6 +193,10 @@ public class CommonController {
|
||||
retInfo.putAll(dd);
|
||||
}
|
||||
}
|
||||
// mppt
|
||||
if (deviceType != null && deviceType.contains(DeviceTypeConstant.MPPT)) {
|
||||
retInfo = commonService.getRealInfo(device, cols);
|
||||
}
|
||||
}
|
||||
//虚拟设备
|
||||
else if (device.getVirtual() == 1) {
|
||||
|
||||
@ -8,11 +8,13 @@ import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
import com.alibaba.excel.write.metadata.fill.FillConfig;
|
||||
import com.alibaba.excel.write.metadata.fill.FillWrapper;
|
||||
import com.ho.business.entity.*;
|
||||
import com.ho.business.service.EarningsCalculateMpptService;
|
||||
import com.ho.business.service.EarningsCalculateService;
|
||||
import com.ho.business.service.StationService;
|
||||
import com.ho.business.util.QueuesUtil;
|
||||
import com.ho.business.vo.OneKeyComputationVo;
|
||||
import com.ho.business.vo.req.carbin.EarningsCalculateReq;
|
||||
import com.ho.business.vo.resp.InverterResp.PowerGenerateRespVO;
|
||||
import com.ho.business.vo.resp.cabin.EarningsCalculateResp;
|
||||
import com.ho.common.tools.annotation.HzPermission;
|
||||
import com.ho.common.tools.annotation.TokenIgnore;
|
||||
@ -24,6 +26,7 @@ import com.ho.common.tools.exception.BaseResponseCode;
|
||||
import com.ho.common.tools.exception.BusinessException;
|
||||
import com.ho.common.tools.exception.DataResult;
|
||||
import com.ho.common.tools.service.RedisService;
|
||||
import com.ho.common.tools.util.BigDecimalUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -60,9 +63,15 @@ public class EarningsCalculateController {
|
||||
@Autowired
|
||||
EarningsCalculateService earningsCalculateService;
|
||||
|
||||
@Autowired
|
||||
EarningsCalculateMpptService earningsCalculateMpptService;
|
||||
|
||||
@Autowired
|
||||
private StationService stationService;
|
||||
|
||||
@Autowired
|
||||
BigDecimalUtil bigDecimalUtil;
|
||||
|
||||
@PostMapping("/getTotal")
|
||||
@ApiOperation(value = "获取月发电量报表")
|
||||
@TokenIgnore
|
||||
@ -87,6 +96,17 @@ public class EarningsCalculateController {
|
||||
return DataResult.success(total);
|
||||
}
|
||||
|
||||
@PostMapping("/getPvMonthData")
|
||||
@ApiOperation(value = "mppt月发电、收益(使用mppt计算)")
|
||||
public DataResult<List<PowerGenerateRespVO>> getPvMonthData(@RequestBody EarningsCalculateReq req) {
|
||||
//获取光伏放电、收益
|
||||
List<PowerGenerateRespVO> pvList = earningsCalculateService.getPvMonthData(req);
|
||||
for (PowerGenerateRespVO pcsElecData : pvList) {
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(pcsElecData);
|
||||
bigDecimalUtil.ifIsNUll(pcsElecData);
|
||||
}
|
||||
return DataResult.success(pvList);
|
||||
}
|
||||
@TokenIgnore
|
||||
@PostMapping("/all")
|
||||
@ApiOperation(value = "查询所有电站接口")
|
||||
@ -114,6 +134,49 @@ public class EarningsCalculateController {
|
||||
earningsCalculateService.queryDeviceByStationId(stations,null,beginTime);
|
||||
}
|
||||
|
||||
@TokenIgnore
|
||||
@PostMapping("/allMpptIncome")
|
||||
@ApiOperation(value = "计算所有电站Mppt电价收益")
|
||||
public void allMpptIncome(@RequestBody(required = false) String beginTime) {
|
||||
try {
|
||||
/*
|
||||
* 定时任务 如果没有时间参数 就每天跑昨日数据
|
||||
* 如果有 beginTime 参数不为空,则先清除beginTime 时间的收益数据重新计算
|
||||
*/
|
||||
DateTime yesterday = DateUtil.yesterday();
|
||||
String yesterdayStr = DateUtil.formatDate(yesterday);
|
||||
if ( beginTime != null ) {
|
||||
int i = earningsCalculateMpptService.deleteByDay(beginTime, null);
|
||||
} else {
|
||||
beginTime = yesterdayStr;
|
||||
int i = earningsCalculateMpptService.deleteByDay(yesterdayStr, null);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("删除昨日数据失败:{}",e.getMessage());
|
||||
}
|
||||
List<Station> stations = stationService.selectAll();
|
||||
//批量算的时候只计算电站是在投的,且是接入光伏mppt的
|
||||
stations = stations.stream().filter(i -> CommonConstant.ONE.equals(i.getStatus())
|
||||
&&CommonConstant.ONE.equals(i.getInverterFlag())).collect(Collectors.toList());
|
||||
earningsCalculateMpptService.allMpptIncome(stations,beginTime);
|
||||
}
|
||||
@TokenIgnore
|
||||
@PostMapping("/allTodayMpptIncome")
|
||||
@ApiOperation(value = "计算所有电站Mppt-今日收益")
|
||||
public void allTodayMpptIncome(@RequestBody(required = false) String beginTime) {
|
||||
DateTime nowDay = DateUtil.date();
|
||||
String nowDayStr = DateUtil.formatDate(nowDay);
|
||||
if ( beginTime == null ) {
|
||||
beginTime = nowDayStr;
|
||||
}
|
||||
List<Station> stations = stationService.selectAll();
|
||||
//批量算的时候只计算电站是在投的,且是接入光伏mppt的
|
||||
stations = stations.stream().filter(i -> CommonConstant.ONE.equals(i.getStatus())
|
||||
&&CommonConstant.ONE.equals(i.getInverterFlag())).collect(Collectors.toList());
|
||||
earningsCalculateMpptService.todayMpptIncome(stations,beginTime);
|
||||
}
|
||||
|
||||
|
||||
private List<String> getBetweenDate(String begin,String end){
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||
List<String> betweenList = new ArrayList<String>();
|
||||
|
||||
@ -6,11 +6,7 @@ import com.ho.business.feignclient.UserFeignClient;
|
||||
import com.ho.business.service.IargeScreenShowService;
|
||||
import com.ho.business.service.StationService;
|
||||
import com.ho.business.vo.req.cockpit.CockpitReqVO;
|
||||
import com.ho.business.vo.resp.DeviceRespVO;
|
||||
import com.ho.business.vo.resp.iargeScreen.AnnualChartValue;
|
||||
import com.ho.business.vo.resp.iargeScreen.AnnualOverviewResp;
|
||||
import com.ho.business.vo.resp.iargeScreen.EnergySavingRespVo;
|
||||
import com.ho.business.vo.resp.iargeScreen.Subdata;
|
||||
import com.ho.business.vo.resp.iargeScreen.*;
|
||||
import com.ho.common.tools.annotation.CommonLargeScreenToken;
|
||||
import com.ho.common.tools.annotation.TokenIgnore;
|
||||
import com.ho.common.tools.constant.ContextConstant;
|
||||
@ -419,5 +415,88 @@ public class IargeScreenShowController {
|
||||
return DataResult.success(regionList);
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/*********************************以下为中自-光伏大屏接口***************************************/
|
||||
|
||||
@PostMapping("getZhongZiPvDistribution")
|
||||
@ApiOperation(value = "中自-光伏电站区域分布")
|
||||
@TokenIgnore
|
||||
public DataResult<List<Subdata>> getZhongZiPvDistribution(@RequestBody CockpitReqVO vo) {
|
||||
List<Subdata> regionList = iargeScreenShowService.getCommonPvRegionList((getByDeptId(vo.getDeptId())));
|
||||
regionList.sort(Comparator.comparing((Subdata::getRegionValue)).reversed());
|
||||
return DataResult.success(regionList);
|
||||
}
|
||||
|
||||
@PostMapping("getZhongZiPvOverviewData")
|
||||
@ApiOperation(value = "中自储能-光伏年度概览/年度收益概览接口返回")
|
||||
@TokenIgnore
|
||||
public DataResult<AnnualPvOverviewResp> getZhongZiPvOverviewData(@RequestBody CockpitReqVO vo) {
|
||||
AnnualPvOverviewResp annualOverviewResp = iargeScreenShowService.getPvOverviewData(getByDeptId(vo.getDeptId()));
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(annualOverviewResp);
|
||||
bigDecimalUtil.ifIsNUll(annualOverviewResp);
|
||||
return DataResult.success(annualOverviewResp);
|
||||
}
|
||||
|
||||
@PostMapping("getZhongZiPvEnergySaving")
|
||||
@ApiOperation(value = "中自-光伏节能减排")
|
||||
@TokenIgnore
|
||||
public DataResult<EnergySavingRespVo> getZhongZiPvEnergySaving(@RequestBody CockpitReqVO vo) {
|
||||
EnergySavingRespVo energySaving = iargeScreenShowService.getPvEnergySaving(getByDeptId(vo.getDeptId()));
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(energySaving);
|
||||
bigDecimalUtil.ifIsNUll(energySaving);
|
||||
return DataResult.success(energySaving);
|
||||
}
|
||||
|
||||
@PostMapping("getZhongZiPvIncomeCurve")
|
||||
@ApiOperation(value = "中自光伏收益曲线")
|
||||
@TokenIgnore
|
||||
public DataResult<List<AnnualChartValue>> getZhongZiPvIncomeCurve(@RequestBody CockpitReqVO vo) {
|
||||
List<AnnualChartValue> list = iargeScreenShowService.getPVCommonProfitCurve(vo, getByDeptId(vo.getDeptId()));
|
||||
for (AnnualChartValue annualChartValue : list) {
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(annualChartValue);
|
||||
bigDecimalUtil.ifIsNUll(annualChartValue);
|
||||
}
|
||||
return DataResult.success(list);
|
||||
}
|
||||
|
||||
@PostMapping("getZhongZiPvIncomeList")
|
||||
@ApiOperation(value = "中自-光伏电站收益排名")
|
||||
@TokenIgnore
|
||||
public DataResult<List<Subdata>> getZhongZiPvIncomeList(@RequestBody CockpitReqVO vo) {
|
||||
List<Subdata> regionList = iargeScreenShowService.getPvCommonProfit(null,null,getByDeptId(vo.getDeptId()));
|
||||
if (regionList.size() > maxSize) {
|
||||
regionList = regionList.subList(0, maxSize);
|
||||
}
|
||||
for (Subdata subdata : regionList) {
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(subdata);
|
||||
bigDecimalUtil.ifIsNUll(subdata);
|
||||
}
|
||||
return DataResult.success(regionList);
|
||||
}
|
||||
|
||||
@PostMapping("getZhongZiPvElecList")
|
||||
@ApiOperation(value = "中自-光伏电站发电量排名")
|
||||
@TokenIgnore
|
||||
public DataResult<List<Subdata>> getZhongZiPvElecList(@RequestBody CockpitReqVO vo) {
|
||||
List<Subdata> regionList = iargeScreenShowService.getPvCommonElec(null,null,getByDeptId(vo.getDeptId()));
|
||||
if (regionList.size() > maxSize) {
|
||||
regionList = regionList.subList(0, maxSize);
|
||||
}
|
||||
for (Subdata subdata : regionList) {
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(subdata);
|
||||
bigDecimalUtil.ifIsNUll(subdata);
|
||||
}
|
||||
return DataResult.success(regionList);
|
||||
}
|
||||
|
||||
@PostMapping("getZhongZiPvRelease")
|
||||
@ApiOperation(value = "中自pv日发电量")
|
||||
@TokenIgnore
|
||||
public DataResult<List<AnnualChartValue>> getZhongZiPvRelease(@RequestBody CockpitReqVO vo) {
|
||||
List<AnnualChartValue> list = iargeScreenShowService.getCommonPvRelease(getByDeptId(vo.getDeptId()));
|
||||
for (AnnualChartValue subdata : list) {
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(subdata);
|
||||
bigDecimalUtil.ifIsNUll(subdata);
|
||||
}
|
||||
return DataResult.success(list);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import com.ho.business.vo.req.StationReq;
|
||||
import com.ho.business.vo.req.dynamicConfig.DynamicConfigQuery;
|
||||
import com.ho.business.vo.req.pcsStation.PcsStationReq;
|
||||
import com.ho.business.vo.resp.DeviceRespVO;
|
||||
import com.ho.business.vo.resp.InverterResp.PowerGenerateRespVO;
|
||||
import com.ho.business.vo.resp.cabin.CircleCtrlResp;
|
||||
import com.ho.business.vo.resp.cabin.EarningsCalculateCountResp;
|
||||
import com.ho.business.vo.resp.openStationHome.OpenStationMiddle;
|
||||
@ -274,19 +275,7 @@ public class OpenStationController {
|
||||
req.setDeviceType(deviceType);
|
||||
}
|
||||
List<PcsElecData> list = stationHomeService.getPcsElecData(req);
|
||||
//获取光伏充电
|
||||
List<PcsElecData> pvList = stationHomeService.getPvChargeElec(req);
|
||||
Map<String, List<PcsElecData>> dataMap = pvList.stream().collect(Collectors.groupingBy(PcsElecData::getDate));
|
||||
|
||||
|
||||
for (PcsElecData pcsElecData : list) {
|
||||
if (dataMap.containsKey(pcsElecData.getDate())) {
|
||||
List<PcsElecData> pcsElecData1 = dataMap.get(pcsElecData.getDate());
|
||||
if (pcsElecData1.get(CommonConstant.ZERO).getPvChargeElec() != null) {
|
||||
pcsElecData.setPvChargeElec(pcsElecData1.get(CommonConstant.ZERO).getPvChargeElec());
|
||||
}
|
||||
}
|
||||
}
|
||||
for (PcsElecData pcsElecData : list) {
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(pcsElecData);
|
||||
bigDecimalUtil.ifIsNUll(pcsElecData);
|
||||
@ -294,6 +283,20 @@ public class OpenStationController {
|
||||
return DataResult.success(list);
|
||||
}
|
||||
|
||||
@PostMapping("/getPvData")
|
||||
@ApiOperation(value = "mppt放电、收益(使用mppt计算)")
|
||||
public DataResult<List<PowerGenerateRespVO>> getPvData(@RequestBody PcsStationReq req) throws ParseException {
|
||||
//获取光伏放电、收益
|
||||
List<PowerGenerateRespVO> pvList = stationHomeService.getPvData(req);
|
||||
for (PowerGenerateRespVO pcsElecData : pvList) {
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(pcsElecData);
|
||||
bigDecimalUtil.ifIsNUll(pcsElecData);
|
||||
}
|
||||
return DataResult.success(pvList);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 导出累计充放电量数据
|
||||
*
|
||||
|
||||
@ -420,11 +420,11 @@ public class OuterApiController {
|
||||
public DataResult jobIntegratedCabinet(@RequestBody MonitorQuery monitorQuery) {
|
||||
log.info("jobIntegratedCabinet, {}", monitorQuery);
|
||||
outApiService.dayChargeDeal(monitorQuery);
|
||||
outApiService.currentMonthYearDeal(monitorQuery);
|
||||
outApiService.dayPVCharge(monitorQuery);
|
||||
// outApiService.currentMonthYearDeal(monitorQuery);
|
||||
// outApiService.dayPVCharge(monitorQuery);
|
||||
outApiService.dayPVMpptCharge(monitorQuery);
|
||||
return DataResult.success();
|
||||
}
|
||||
|
||||
//暴露接口加工一体柜 充电量放电量,当月充电量,放电量
|
||||
@PostMapping("jobCabinet")
|
||||
@ApiOperation(value = "暴露接口加工一体柜 充电量放电量,当月充电量,放电量")
|
||||
|
||||
@ -8,6 +8,7 @@ import com.ho.business.vo.req.pcs.PcsUpdateReqVo;
|
||||
import com.ho.business.vo.resp.AppRealTimeCurveRespVo;
|
||||
import com.ho.business.vo.resp.pcs.PcsRunDataSetting;
|
||||
import com.ho.common.tools.annotation.LogAnnotation;
|
||||
import com.ho.common.tools.annotation.TokenIgnore;
|
||||
import com.ho.common.tools.constant.ContextConstant;
|
||||
import com.ho.common.tools.constant.RedisKeyConstant;
|
||||
import com.ho.common.tools.entity.SimpleUser;
|
||||
@ -77,6 +78,18 @@ public class PcsController {
|
||||
return DataResult.success(resList);
|
||||
}
|
||||
|
||||
@PostMapping("/pvCurve")
|
||||
@ApiOperation(value = "mppt曲线")
|
||||
public DataResult<List<AppRealTimeCurveRespVo>> pvCurve(@RequestBody MonitorQuery monitorQuery) {
|
||||
List<AppRealTimeCurveRespVo> resList = stationHomeService.pvCurve(monitorQuery);
|
||||
|
||||
//返回值的BigDecimal类型保留两位小数
|
||||
for (AppRealTimeCurveRespVo realTimeCurveRespVo : resList) {
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(realTimeCurveRespVo);
|
||||
bigDecimalUtil.ifIsNUll(realTimeCurveRespVo);
|
||||
}
|
||||
return DataResult.success(resList);
|
||||
}
|
||||
|
||||
@PostMapping("/opticalStorageCurve")
|
||||
@ApiOperation(value = "光储逆变器曲线")
|
||||
|
||||
Reference in New Issue
Block a user