From a859c4b6499ca7019c34381fb5ada6afdbaedfae Mon Sep 17 00:00:00 2001 From: root Date: Tue, 3 Feb 2026 17:57:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=89=E4=BC=8F=E4=BB=8A=E6=97=A5=E6=94=BE?= =?UTF-8?q?=E7=94=B5=E7=BB=9F=E8=AE=A1=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/OpenStationServiceImpl.java | 33 +++++++++++++++++-- .../td/controller/Device001ApiController.java | 1 + 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/business-service-dao/src/main/java/com/ho/business/service/impl/OpenStationServiceImpl.java b/business-service-dao/src/main/java/com/ho/business/service/impl/OpenStationServiceImpl.java index aa827d2..27c8621 100644 --- a/business-service-dao/src/main/java/com/ho/business/service/impl/OpenStationServiceImpl.java +++ b/business-service-dao/src/main/java/com/ho/business/service/impl/OpenStationServiceImpl.java @@ -146,6 +146,7 @@ public class OpenStationServiceImpl implements OpenStationService { BigDecimal pvActivePower = new BigDecimal(CommonConstant.ZERO); BigDecimal totalRelease = new BigDecimal(CommonConstant.ZERO); BigDecimal dailyReleaseElec = new BigDecimal(CommonConstant.ZERO); + String nowDay = DateUtil.format(new Date(), CommonConstant.DATE_YMD); if (!pcsList.isEmpty()) { for (DeviceRespVO deviceRespVO : pcsList) { //在缓存里拿映射字段 @@ -155,11 +156,37 @@ public class OpenStationServiceImpl implements OpenStationService { if (mpptMap != null) { MpptVo vo = JSON.parseObject(JSON.toJSONString(mpptMap), MpptVo.class); if (vo != null) { - BigDecimal pvActivePowerMppt = vo.getPvActivePower() == null ? BigDecimal.ZERO : vo.getPvActivePower().getValue(); + // 今日功率 + BigDecimal pvActivePowerMppt = BigDecimal.ZERO; + if(vo.getPvActivePower() != null){ + if(nowDay.equals(DateUtil.format(vo.getPvActivePower().getUpdateTime(), CommonConstant.DATE_YMD))){ + pvActivePowerMppt = vo.getPvActivePower().getValue(); + } + } + // 累计发电量 BigDecimal totalReleaseMppt = vo.getTotalRelease() == null ? BigDecimal.ZERO : vo.getTotalRelease().getValue(); - BigDecimal pvDailyReleaseStart = vo.getPvDailyReleaseStart() == null ? BigDecimal.ZERO : vo.getPvDailyReleaseStart().getValue(); - BigDecimal dailyReleaseElecMppt = totalReleaseMppt.subtract(pvDailyReleaseStart); + // 今日发电起始值 + BigDecimal pvDailyReleaseStart = BigDecimal.ZERO; + if(vo.getPvDailyReleaseStart() != null){ + if(nowDay.equals(DateUtil.format(vo.getPvDailyReleaseStart().getUpdateTime(), CommonConstant.DATE_YMD))){ + pvDailyReleaseStart = vo.getPvDailyReleaseStart().getValue(); + } + } + // 今日更新的累计发电量 + BigDecimal totalReleaseMppt1 = BigDecimal.ZERO; + if(vo.getTotalRelease() != null){ + if(nowDay.equals(DateUtil.format(vo.getTotalRelease().getUpdateTime(), CommonConstant.DATE_YMD))){ + totalReleaseMppt1 = vo.getTotalRelease().getValue(); + } + } + // 计算今日发电量 = 今日更新的累计发电量 - 今日发电起始值 + BigDecimal dailyReleaseElecMppt = BigDecimal.ZERO; + if(totalReleaseMppt1.compareTo(BigDecimal.ZERO)>0&&pvDailyReleaseStart.compareTo(BigDecimal.ZERO)>0){ + dailyReleaseElecMppt = totalReleaseMppt1.subtract(pvDailyReleaseStart); + } + // 如果计算到的今日发电量小于0 则设置为0 dailyReleaseElecMppt = dailyReleaseElecMppt.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:dailyReleaseElecMppt; + // 最后组装值 pvActivePower = pvActivePower.add(pvActivePowerMppt); totalRelease = totalRelease.add(totalReleaseMppt); dailyReleaseElec = dailyReleaseElec.add(dailyReleaseElecMppt); diff --git a/td-service/src/main/java/com/ho/td/controller/Device001ApiController.java b/td-service/src/main/java/com/ho/td/controller/Device001ApiController.java index a44d320..cf13cf4 100644 --- a/td-service/src/main/java/com/ho/td/controller/Device001ApiController.java +++ b/td-service/src/main/java/com/ho/td/controller/Device001ApiController.java @@ -1475,6 +1475,7 @@ public class Device001ApiController { } if (stationHomeRespVos != null && stationHomeRespVos.size() > 0) { BigDecimal startEle = stationHomeRespVos.get(0).getDigital(); + query.setBegin(DateUtil.beginOfDay(new Date())); cacheObj(query, DeviceTypeConstant.PV_DAILY_CHARGE_START, startEle); } }