From cf1e1edb0b0f785dfd8c666bdea6f4592bed592b Mon Sep 17 00:00:00 2001 From: Lemon Date: Tue, 13 Jan 2026 13:24:37 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E8=BF=90=E8=90=A5=E7=AB=AF=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E8=8E=B7=E5=8F=96=E7=AB=99=E7=82=B9=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3V2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessStationInfoController.java | 11 +++- .../pile/service/PileStationInfoService.java | 7 +++ .../impl/PileStationInfoServiceImpl.java | 54 +++++++++++++++++++ .../business/StationStatisticsInfosVO.java | 12 ++--- 4 files changed, 76 insertions(+), 8 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessStationInfoController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessStationInfoController.java index 8c622031d..69d15afc6 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessStationInfoController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessStationInfoController.java @@ -66,8 +66,15 @@ public class BusinessStationInfoController extends BaseController { public RestApiResponse getStationStatisticsInfos(@RequestBody StationStatisticsInfoDTO dto) { RestApiResponse response = null; try { - List stationStatisticsInfos = pileStationInfoService.getStationStatisticsInfos(dto); - response = new RestApiResponse<>(ImmutableMap.of("stationStatisticsInfos", stationStatisticsInfos)); + // List stationStatisticsInfos = pileStationInfoService.getStationStatisticsInfos(dto); + // 获取登录账号信息 + LoginUserDetailVO loginUserDetail = UserUtils.getLoginUserDetail(); + List merchantIdList = loginUserDetail.getFirstMerchantIdList(); + if (CollectionUtils.isEmpty(dto.getStationIds())) { + dto.setStationIds(pileStationInfoService.getStationIdsByMerchantIds(merchantIdList)); + } + StationStatisticsInfosVO info = pileStationInfoService.getStationStatisticsInfosV2(dto); + response = new RestApiResponse<>(ImmutableMap.of("stationStatisticsInfo", info)); } catch (Exception e) { logger.error("获取站点统计信息 error", e); response = new RestApiResponse<>(e); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java index fb0cff20a..b63419dfb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java @@ -181,6 +181,13 @@ public interface PileStationInfoService { */ List getStationStatisticsInfos(StationStatisticsInfoDTO dto); + /** + * 获取站点统计信息V2 + * @param dto + * @return + */ + public StationStatisticsInfosVO getStationStatisticsInfosV2(StationStatisticsInfoDTO dto); + /** * 获取站点运营分析信息(7天、30天) * @param dto diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java index ec15ca07c..59b2b5a35 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java @@ -1005,6 +1005,60 @@ public class PileStationInfoServiceImpl implements PileStationInfoService { return resultList; } + /** + * 获取站点统计信息V2 + * @param dto + * @return + */ + @Override + public StationStatisticsInfosVO getStationStatisticsInfosV2(StationStatisticsInfoDTO dto) { + List stationIds = dto.getStationIds(); + String startTime = dto.getStartTime(); + String endTime = dto.getEndTime(); + // 根据站点ids查询充电统计信息 + List settleOrderReports = settleOrderReportService.queryOrderReport(stationIds, startTime, endTime); + // 初始化统计值 + BigDecimal chargeDegree = BigDecimal.ZERO; + BigDecimal chargeAmount = BigDecimal.ZERO; + int orderQuantity = 0; + for (SettleOrderReport settleOrderReport : settleOrderReports) { + chargeDegree = chargeDegree.add(settleOrderReport.getUseElectricity()); + chargeAmount = chargeAmount.add(settleOrderReport.getTotalAmount()); + orderQuantity += Integer.parseInt(settleOrderReport.getChargeNum()); + } + // 批量查询站点中枪口的状态 + Map connectorStatusNum = pileConnectorInfoService.getConnectorStatusNum(stationIds, null); + // 获取总枪口数量和空闲枪口数量 + int totalConnectorNum = (int) connectorStatusNum.get("totalNum"); + int freeConnectorNum = (int) connectorStatusNum.get("freeNum"); + String connectorAvailability = String.format("%.2f", ((double) freeConnectorNum / totalConnectorNum) * 100) + "%"; + // 获取充电中的枪口数量 + int chargingConnectorNum = (int) connectorStatusNum.get("chargingNum"); + // 获取占用中的枪口数量 + int occupiedConnectorNum = (int) connectorStatusNum.get("occupiedNum"); + // 获取挂起中的枪口数量 + int hangingConnectorNum = (int) connectorStatusNum.get("hangingNum"); + // 获取离线中的枪口数量 + int offlineConnectorNum = (int) connectorStatusNum.get("offlineNum"); + // 获取故障中的枪口数量 + int faultConnectorNum = (int) connectorStatusNum.get("faultNum"); + + StationStatisticsInfosVO vo = StationStatisticsInfosVO.builder() + .stationId(stationIds.get(0)) + .chargeDegree(chargeDegree) + .chargeAmount(chargeAmount) + .orderQuantity(orderQuantity) + .connectorAvailability(connectorAvailability) + .chargingConnectorNum(chargingConnectorNum) + .freeConnectorNum(freeConnectorNum) + .occupiedConnectorNum(occupiedConnectorNum) + .hangingConnectorNum(hangingConnectorNum) + .offlineConnectorNum(offlineConnectorNum) + .faultConnectorNum(faultConnectorNum) + .build(); + return vo; + } + /** * 获取站点运营分析信息(7天、30天) * diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationStatisticsInfosVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationStatisticsInfosVO.java index 71bdfa25d..e9835d2c4 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationStatisticsInfosVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationStatisticsInfosVO.java @@ -50,32 +50,32 @@ public class StationStatisticsInfosVO { private String connectorAvailability; /** - * 充电中的设备数量 + * 充电中的枪口数量 */ private Integer chargingConnectorNum; /** - * 空闲中的设备数量 + * 空闲中的枪口数量 */ private Integer freeConnectorNum; /** - * 占用中的设备数量 + * 占用中的枪口数量 */ private Integer occupiedConnectorNum; /** - * 挂起中的设备数量 + * 挂起中的枪口数量 */ private Integer hangingConnectorNum; /** - * 离线设备数量 + * 离线枪口数量 */ private Integer offlineConnectorNum; /** - * 故障桩数量 + * 故障枪口数量 */ private Integer faultConnectorNum; }