add 运营端小程序获取站点统计信息接口V2

This commit is contained in:
Lemon
2026-01-13 13:24:37 +08:00
parent 039fe84594
commit cf1e1edb0b
4 changed files with 76 additions and 8 deletions

View File

@@ -66,8 +66,15 @@ public class BusinessStationInfoController extends BaseController {
public RestApiResponse<?> getStationStatisticsInfos(@RequestBody StationStatisticsInfoDTO dto) { public RestApiResponse<?> getStationStatisticsInfos(@RequestBody StationStatisticsInfoDTO dto) {
RestApiResponse<?> response = null; RestApiResponse<?> response = null;
try { try {
List<StationStatisticsInfosVO> stationStatisticsInfos = pileStationInfoService.getStationStatisticsInfos(dto); // List<StationStatisticsInfosVO> stationStatisticsInfos = pileStationInfoService.getStationStatisticsInfos(dto);
response = new RestApiResponse<>(ImmutableMap.of("stationStatisticsInfos", stationStatisticsInfos)); // 获取登录账号信息
LoginUserDetailVO loginUserDetail = UserUtils.getLoginUserDetail();
List<String> 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) { } catch (Exception e) {
logger.error("获取站点统计信息 error", e); logger.error("获取站点统计信息 error", e);
response = new RestApiResponse<>(e); response = new RestApiResponse<>(e);

View File

@@ -181,6 +181,13 @@ public interface PileStationInfoService {
*/ */
List<StationStatisticsInfosVO> getStationStatisticsInfos(StationStatisticsInfoDTO dto); List<StationStatisticsInfosVO> getStationStatisticsInfos(StationStatisticsInfoDTO dto);
/**
* 获取站点统计信息V2
* @param dto
* @return
*/
public StationStatisticsInfosVO getStationStatisticsInfosV2(StationStatisticsInfoDTO dto);
/** /**
* 获取站点运营分析信息(7天、30天) * 获取站点运营分析信息(7天、30天)
* @param dto * @param dto

View File

@@ -1005,6 +1005,60 @@ public class PileStationInfoServiceImpl implements PileStationInfoService {
return resultList; return resultList;
} }
/**
* 获取站点统计信息V2
* @param dto
* @return
*/
@Override
public StationStatisticsInfosVO getStationStatisticsInfosV2(StationStatisticsInfoDTO dto) {
List<String> stationIds = dto.getStationIds();
String startTime = dto.getStartTime();
String endTime = dto.getEndTime();
// 根据站点ids查询充电统计信息
List<SettleOrderReport> 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<String, Object> 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天 * 获取站点运营分析信息7天、30天
* *

View File

@@ -50,32 +50,32 @@ public class StationStatisticsInfosVO {
private String connectorAvailability; private String connectorAvailability;
/** /**
* 充电中的设备数量 * 充电中的枪口数量
*/ */
private Integer chargingConnectorNum; private Integer chargingConnectorNum;
/** /**
* 空闲中的设备数量 * 空闲中的枪口数量
*/ */
private Integer freeConnectorNum; private Integer freeConnectorNum;
/** /**
* 占用中的设备数量 * 占用中的枪口数量
*/ */
private Integer occupiedConnectorNum; private Integer occupiedConnectorNum;
/** /**
* 挂起中的设备数量 * 挂起中的枪口数量
*/ */
private Integer hangingConnectorNum; private Integer hangingConnectorNum;
/** /**
* 离线设备数量 * 离线枪口数量
*/ */
private Integer offlineConnectorNum; private Integer offlineConnectorNum;
/** /**
* 故障数量 * 故障枪口数量
*/ */
private Integer faultConnectorNum; private Integer faultConnectorNum;
} }