mppt模块
This commit is contained in:
@ -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;
|
||||
@ -23,6 +25,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;
|
||||
@ -59,9 +62,15 @@ public class EarningsCalculateController {
|
||||
@Autowired
|
||||
EarningsCalculateService earningsCalculateService;
|
||||
|
||||
@Autowired
|
||||
EarningsCalculateMpptService earningsCalculateMpptService;
|
||||
|
||||
@Autowired
|
||||
private StationService stationService;
|
||||
|
||||
@Autowired
|
||||
BigDecimalUtil bigDecimalUtil;
|
||||
|
||||
@PostMapping("/getTotal")
|
||||
@ApiOperation(value = "获取月发电量报表")
|
||||
@TokenIgnore
|
||||
@ -85,6 +94,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 = "查询所有电站接口")
|
||||
@ -111,6 +131,48 @@ public class EarningsCalculateController {
|
||||
stations = stations.stream().filter(i -> CommonConstant.ONE.equals(i.getStatus())).collect(Collectors.toList());
|
||||
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");
|
||||
@ -134,7 +196,43 @@ public class EarningsCalculateController {
|
||||
}
|
||||
return betweenList;
|
||||
}
|
||||
@TokenIgnore
|
||||
@PostMapping("/exportPv")
|
||||
@ApiOperation(value = "pv导出")
|
||||
public void exportPv(HttpServletRequest req, HttpServletResponse response, @RequestBody EarningsCalculateReq earningsCalculateReq){
|
||||
String lang = req.getHeader(CommonConstant.LANG);
|
||||
earningsCalculateReq.setLang(lang);
|
||||
EarningsCalculateResp total = earningsCalculateService.getTotal(earningsCalculateReq,PAGE_LIST_TYPE);
|
||||
ServletOutputStream out = null;
|
||||
try {
|
||||
out = response.getOutputStream();
|
||||
response.setContentType("multipart/form-data");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
//文件名字
|
||||
String fileName = "demo.xlsx";
|
||||
response.setHeader("Content-disposition", "attachment;filename=" +fileName);
|
||||
String path="template/earningsPvTemplate.xlsx";
|
||||
//文件模板输入流
|
||||
InputStream inputStream = new ClassPathResource(path).getInputStream();
|
||||
ExcelWriter writer = EasyExcel.write(out).withTemplate(inputStream).build();
|
||||
WriteSheet sheet = EasyExcel.writerSheet().build();
|
||||
FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
|
||||
|
||||
List<PowerGenerateRespVO> pvList = earningsCalculateService.getPvMonthData(earningsCalculateReq);
|
||||
for (PowerGenerateRespVO pcsElecData : pvList) {
|
||||
bigDecimalUtil.keepTwoDecimalPlaces(pcsElecData);
|
||||
bigDecimalUtil.ifIsNUll(pcsElecData);
|
||||
}
|
||||
writer.fill(new FillWrapper("vo", pvList), fillConfig, sheet);
|
||||
//填充数据
|
||||
writer.fill(total,fillConfig,sheet);
|
||||
//填充完成
|
||||
writer.finish();
|
||||
out.flush();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
@TokenIgnore
|
||||
@PostMapping("/export")
|
||||
@ApiOperation(value = "导出")
|
||||
|
||||
@ -7,10 +7,7 @@ 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 +416,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;
|
||||
@ -25,6 +26,7 @@ import com.ho.business.vo.resp.station.NewRealTimeCurveVo;
|
||||
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.constant.RedisKeyConstant;
|
||||
import com.ho.common.tools.exception.DataResult;
|
||||
import com.ho.common.tools.service.RedisService;
|
||||
import com.ho.common.tools.util.BigDecimalUtil;
|
||||
@ -40,6 +42,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
@ -269,19 +272,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);
|
||||
@ -289,6 +280,18 @@ 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出累计充放电量数据
|
||||
*
|
||||
@ -298,9 +301,10 @@ public class OpenStationController {
|
||||
@ApiOperation(value = "多电站导出累计充放电量数据")
|
||||
//@LogAnnotation(title = "累计充放电量", action = "导出累计充放电量数据")
|
||||
//@HzPermission(value = {PermissionConstant.REMOTECONTROL_COMMAND_EXPORT,PermissionConstant.DATA_SHOW_EXPORT,PermissionConstant.REMOTECONTROL_COMMAND_EXPORT})
|
||||
public void exportExcel(@RequestBody @Valid PcsStationReq req, HttpServletResponse response) {
|
||||
public void exportExcel(@RequestBody @Valid PcsStationReq req, HttpServletResponse response, HttpServletRequest request) {
|
||||
String lang = request.getHeader(RedisKeyConstant.User.LANG);
|
||||
//功能描述:把同一个表格多个sheet测试结果重新输出,
|
||||
openStationService.exportEleData(req, response);
|
||||
openStationService.exportEleData(req, response,lang);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -420,8 +420,10 @@ public class OuterApiController {
|
||||
public DataResult jobIntegratedCabinet(@RequestBody MonitorQuery monitorQuery) {
|
||||
log.info("jobIntegratedCabinet, {}", monitorQuery);
|
||||
outApiService.dayChargeDeal(monitorQuery);
|
||||
outApiService.currentMonthYearDeal(monitorQuery);
|
||||
// outApiService.currentMonthYearDeal(monitorQuery);
|
||||
// outApiService.dayPVCharge(monitorQuery);
|
||||
outApiService.dayPVMpptCharge(monitorQuery);
|
||||
|
||||
return DataResult.success();
|
||||
}
|
||||
|
||||
|
||||
@ -77,6 +77,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 = "光储逆变器曲线")
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user