From 2e44b182b43fecaf6a2510c9226f18ffd2cee6c9 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 15 四月 2025 17:33:46 +0800 Subject: [PATCH] 监管平台调试完毕 --- ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java | 365 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 358 insertions(+), 7 deletions(-) diff --git a/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java b/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java index dfd7b64..e069794 100644 --- a/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java +++ b/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java @@ -1,16 +1,42 @@ package com.ruoyi.integration; import com.alibaba.fastjson2.JSON; +import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; +import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; +import com.ruoyi.chargingPile.api.model.Site; +import com.ruoyi.chargingPile.api.model.TChargingGun; +import com.ruoyi.chargingPile.api.model.TChargingPile; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.barrierGate.model.CloudParkingOrder; import com.ruoyi.integration.barrierGate.server.ParkingOrderService; +import com.ruoyi.integration.drainage.TCECSuperviseUtil; +import com.ruoyi.integration.drainage.model.*; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; +import com.ruoyi.order.api.dto.ChargingStatisticeDTO; +import com.ruoyi.order.api.feignClient.ChargingOrderClient; +import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.other.api.domain.Operator; +import com.ruoyi.other.api.feignClient.OperatorClient; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cglib.core.Local; +import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiIntegrationApplication.class) public class RuoYiIntegrationApplicationTests { @@ -21,14 +47,339 @@ private ParkingOrderService parkingOrderService; @Resource private SiteClient siteClient; -// @Test -// public void test(){ -// String json = "{\"appkey\":\"842ae0c027e64b3590af9eea6\",\"enterChannel\":\"001\",\"enterChannelName\":\"进口\",\"enterDateTime\":\"2024-11-01T11:25:15.677Z\",\"id\":\"17B51DA0983C11EFA99CA979A8A8386B\",\"kind\":\"临时卡\",\"name\":\"临时识别\",\"plate\":\"川JD34056\",\"plateColor\":\"绿色\",\"sign\":\"29A902820C2657C51FBE90235152534F\"}"; -// CloudParkingOrder order = JSON.parseObject(json, CloudParkingOrder.class); -// parkingOrderService.cloudParkingInOrder(order); -// } + @Resource + private ChargingGunClient chargingGunClient; + + @Resource + private ChargingOrderClient chargingOrderClient; + + @Resource + private OperatorClient operatorClient; + @Test + public void test(){ + /** + * 推送充电设备接口状态信息 + * @param chargingGun + * @return + */ + List<TChargingGun> data = chargingGunClient.getAllGun().getData(); + TChargingGun chargingGun = data.stream().filter(e -> e.getId() == 61).findFirst().orElse(new TChargingGun()); + ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); + connectorStatusInfo.setOperatorID("906171535"); + connectorStatusInfo.setEquipmentOwnerID("906171535"); + connectorStatusInfo.setStationID(String.valueOf(chargingGun.getSiteId())); + connectorStatusInfo.setEquipmentID(String.valueOf(chargingGun.getChargingPileId())); + connectorStatusInfo.setConnectorID(chargingGun.getFullNumber()); + connectorStatusInfo.setEquipmentClassification(1); + switch (chargingGun.getStatus()){ + case 1: + connectorStatusInfo.setStatus(0); + break; + case 2: + connectorStatusInfo.setStatus(1); + break; + case 3: + connectorStatusInfo.setStatus(2); + break; + case 4: + connectorStatusInfo.setStatus(3); + break; + case 5: + connectorStatusInfo.setStatus(3); + break; + case 6: + connectorStatusInfo.setStatus(4); + break; + case 7: + connectorStatusInfo.setStatus(255); + break; + } + connectorStatusInfo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); +// List<Operator> operators = operatorClient.getAllOperator().getData(); +// for (Operator operator : operators) { + tcecSuperviseUtil.notificationStationStatus(new Operator(), connectorStatusInfo); +// } + } + @Autowired + private TCECSuperviseUtil tcecSuperviseUtil; + private final static String operatorId = "906171535"; + @Test public void test1(){ - + TChargingOrder chargingOrder = chargingOrderClient.orderDetail(1884874763556048898L).getData(); + SupEquipChargeStatus supEquipChargeStatus = new SupEquipChargeStatus(); + supEquipChargeStatus.setOperatorID(operatorId); + supEquipChargeStatus.setEquipmentOwnerID(operatorId); + supEquipChargeStatus.setStationID(String.valueOf(chargingOrder.getSiteId())); + supEquipChargeStatus.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); + supEquipChargeStatus.setOrderNo(operatorId+chargingOrder.getCode()); + switch (chargingOrder.getStatus()){ + case 2: + supEquipChargeStatus.setConnectorStatus(1); + break; + case 3: + supEquipChargeStatus.setConnectorStatus(2); + break; + case 4: + supEquipChargeStatus.setConnectorStatus(3); + break; + case 5: + supEquipChargeStatus.setConnectorStatus(4); + break; + } + TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); + supEquipChargeStatus.setConnectorID(chargingGun.getFullNumber()); + supEquipChargeStatus.setEquipmentClassification(1); + supEquipChargeStatus.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + switch (chargingGun.getStatus()){ + case 1: + supEquipChargeStatus.setConnectorStatus(0); + break; + case 2: + supEquipChargeStatus.setConnectorStatus(1); + break; + case 3: + supEquipChargeStatus.setConnectorStatus(2); + break; + case 4: + supEquipChargeStatus.setConnectorStatus(3); + break; + case 5: + supEquipChargeStatus.setConnectorStatus(3); + break; + case 6: + supEquipChargeStatus.setConnectorStatus(4); + break; + case 7: + supEquipChargeStatus.setConnectorStatus(255); + break; + } + supEquipChargeStatus.setCurrentA(chargingOrder.getCurrent()); + supEquipChargeStatus.setSOC(StringUtils.hasLength(chargingOrder.getEndSoc())?new BigDecimal(chargingOrder.getEndSoc()):new BigDecimal("1")); + supEquipChargeStatus.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); + supEquipChargeStatus.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + supEquipChargeStatus.setTotalPower(chargingOrder.getElectrovalence()); + tcecSuperviseUtil.notificationSupEquipChargeStatus(new Operator(), supEquipChargeStatus); } + @Test + public void test2(){ + TChargingOrder chargingOrder = chargingOrderClient.orderDetail(1884874763556048898L).getData(); + SupChargeOrderInfo supChargeOrderInfo = new SupChargeOrderInfo(); + supChargeOrderInfo.setOperatorID(operatorId); + supChargeOrderInfo.setEquipmentOwnerID(operatorId); + supChargeOrderInfo.setStationID(String.valueOf(chargingOrder.getSiteId())); + supChargeOrderInfo.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); + supChargeOrderInfo.setOrderNo(operatorId+chargingOrder.getCode()); + TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); + supChargeOrderInfo.setConnectorID(chargingGun.getFullNumber()); + supChargeOrderInfo.setEquipmentClassification(1); + supChargeOrderInfo.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + supChargeOrderInfo.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); + supChargeOrderInfo.setEndTime(chargingOrder.getEndTime() != null ? chargingOrder.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); + supChargeOrderInfo.setTotalPower(chargingOrder.getElectrovalence()); + supChargeOrderInfo.setTotalElecMoney(chargingOrder.getElectrovalence()); + supChargeOrderInfo.setTotalServiceMoney(chargingOrder.getServiceCharge()); + supChargeOrderInfo.setTotalMoney(chargingOrder.getOrderAmount()); + supChargeOrderInfo.setOrderStatus(chargingOrder.getStatus()); + switch (chargingOrder.getEndMode()){ + case 0: + supChargeOrderInfo.setStopReason(5); + supChargeOrderInfo.setStopDesc("异常终止"); + break; + case 1: + supChargeOrderInfo.setStopReason(0); + supChargeOrderInfo.setStopDesc("用户手动停止充电"); + break; + case 2: + supChargeOrderInfo.setStopReason(1); + supChargeOrderInfo.setStopDesc("客户归属地运营商平台停止充电"); + break; + case 3: + supChargeOrderInfo.setStopReason(1); + supChargeOrderInfo.setStopDesc("费用不足中止"); + break; + } + tcecSuperviseUtil.notificationChargeOrderInfo(new Operator(), supChargeOrderInfo); + } + @Test + public void test3(){ + StationStatsInfoResult res = new StationStatsInfoResult(); + List<Site> data = siteClient.getSiteAll().getData(); + LocalDateTime now = LocalDateTime.now(); + LocalDateTime startLocalDateTime = now.minusDays(1); + LocalDateTime endLocalDateTime = now.minusDays(1); + LocalDateTime localDateTime1 = LocalDateTime.of(2025, 2, 3, 0, 0, 0); + LocalDateTime localDateTime2 = LocalDateTime.of(2025, 2, 3, 23, 59, 59); + + + // 获取今天凌晨 + startLocalDateTime.withHour(0); + startLocalDateTime.withMinute(0); + startLocalDateTime.withSecond(0); + startLocalDateTime.withMonth(1); + startLocalDateTime.withDayOfMonth(28); + String start = DateUtils.localDateTimeToString(startLocalDateTime); + endLocalDateTime.withHour(23); + endLocalDateTime.withMinute(59); + endLocalDateTime.withSecond(59); + startLocalDateTime.withMonth(1); + startLocalDateTime.withDayOfMonth(28); + String end = DateUtils.localDateTimeToString(endLocalDateTime); + ChargingStatisticeDTO chargingStatisticeDTO = new ChargingStatisticeDTO(); + chargingStatisticeDTO.setStartTime(localDateTime1); + chargingStatisticeDTO.setEndTime(localDateTime2); + List<TChargingOrder> data1 = chargingOrderClient.getChargingStatistics(chargingStatisticeDTO).getData(); + List<StationStatsInfo> stationStatsInfos = new ArrayList<>(); + String start1 = DateUtils.localDateTimeToString(localDateTime1); + String start2 = DateUtils.localDateTimeToString(localDateTime2); + + for (Site datum : data) { + StationStatsInfo stationStatsInfo = new StationStatsInfo(); + stationStatsInfo.setStationID(datum.getId().toString()); + stationStatsInfo.setEquipmentOwnerID("906171535"); + stationStatsInfo.setOperatorID("906171535"); + stationStatsInfo.setStationClassification(1); + stationStatsInfo.setStartTime(start1); + stationStatsInfo.setEndTime(start2); + List<TChargingOrder> chargingOrders = data1.stream().filter(e -> e.getSiteId().equals(datum.getId())).collect(Collectors.toList()); + // 充电电量 + BigDecimal electricity = new BigDecimal("0"); + int chargingCount = 0; + for (TChargingOrder chargingOrder : chargingOrders) { + if (chargingOrder.getElectricity()!=null){ + electricity = electricity.add(chargingOrder.getElectricity()); + chargingCount++; + } + } + stationStatsInfo.setStationElectricity(electricity.divide(new BigDecimal("24"),4, BigDecimal.ROUND_DOWN)); + stationStatsInfo.setStationTotalChargeEnergy(electricity.setScale(4, BigDecimal.ROUND_DOWN)); + stationStatsInfo.setStationTotalWarningNum(0); + stationStatsInfo.setStationTotalOtherEnergy(new BigDecimal("0")); + stationStatsInfo.setStationTotalChargeNum(chargingCount); + //构建设备统计数据 + List<EquipmentStatsInfo> EquipmentStatsInfos = new ArrayList<>(); + Map<Integer, List<TChargingOrder>> collect = chargingOrders.stream().collect(Collectors.groupingBy(TChargingOrder::getChargingPileId)); + for (Integer integer : collect.keySet()) { + List<TChargingOrder> tChargingOrders = collect.get(integer); + BigDecimal reduce1 = tChargingOrders.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); + EquipmentStatsInfo equipmentStatsInfo = new EquipmentStatsInfo(); + equipmentStatsInfo.setEquipmentClassification(1); + long chargingTime = 0L; + for (TChargingOrder tChargingOrder : tChargingOrders) { + // 累加充电时长 + LocalDateTime startTime = tChargingOrder.getStartTime(); + LocalDateTime endTime = tChargingOrder.getEndTime(); + // 计算时间差 单位分钟 + chargingTime += ChronoUnit.SECONDS.between(startTime, endTime)/60; + } + equipmentStatsInfo.setEquipmentTotalChargeTime(chargingTime); + equipmentStatsInfo.setEquipmentTotalChargeNum(tChargingOrders.size()); + equipmentStatsInfo.setEquipmentTotalWarningNum(0); + equipmentStatsInfo.setEquipmentID(integer.toString()); + equipmentStatsInfo.setEquipmentElectricity(reduce1); + //构建设备接口统计数据 + Map<Integer, List<TChargingOrder>> collect2 = tChargingOrders.stream().collect(Collectors.groupingBy(TChargingOrder::getChargingGunId)); + List<ConnectorStatsInfo> ConnectorStatsInfos = new ArrayList<>(); + for (Integer integer1 : collect2.keySet()) { + List<TChargingOrder> tChargingOrders1 = collect2.get(integer1); + BigDecimal reduce2 = tChargingOrders1.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); + long chargingTime1 = 0L; + for (TChargingOrder chargingOrder : tChargingOrders1) { + // 累加充电时长 + LocalDateTime startTime = chargingOrder.getStartTime(); + LocalDateTime endTime = chargingOrder.getEndTime(); + // 计算时间差 单位分钟 + chargingTime += ChronoUnit.SECONDS.between(startTime, endTime)/60; + } + TChargingGun chargingGun = chargingGunClient.getChargingGunById(integer1).getData(); + ConnectorStatsInfo connectorStatsInfo = new ConnectorStatsInfo(); + connectorStatsInfo.setConnectorID(chargingGun.getFullNumber()); + connectorStatsInfo.setConnectorElectricity(reduce2); + connectorStatsInfo.setConnectorTotalChargeTime(Integer.valueOf(chargingTime+"")); + connectorStatsInfo.setConnectorTotalChargeNum(tChargingOrders1.size()); + connectorStatsInfo.setConnectorTotalWarningNum(0); + ConnectorStatsInfos.add(connectorStatsInfo); + } + equipmentStatsInfo.setConnectorStatsInfos(ConnectorStatsInfos); + EquipmentStatsInfos.add(equipmentStatsInfo); + } + stationStatsInfo.setEquipmentStatsInfos(EquipmentStatsInfos); + stationStatsInfos.add(stationStatsInfo); + } + res.setStationStatsInfos(stationStatsInfos); + tcecSuperviseUtil.superviseNotificationOperationStatsInfo(res); + } + @Resource + private ChargingPileClient chargingPileClient; + @Test + public void test4(){ + List<Site> data = siteClient.getSiteAll().getData(); + List<Integer> siteIds = data.stream().map(Site::getId).collect(Collectors.toList()); + List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); + List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); + List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); + SupStationPowerInfoResult supStationPowerInfoResult = new SupStationPowerInfoResult(); + List<SupStationPowerInfo> stationStatsInfos = new ArrayList<>(); + LocalDateTime now = LocalDateTime.of(2025, 2, 3, 23, 30, 0); + LocalDateTime startLocalDateTime = LocalDateTime.of(2025, 2, 3, 20, 0, 0); + ChargingStatisticeDTO chargingStatisticeDTO = new ChargingStatisticeDTO(); + chargingStatisticeDTO.setStartTime(startLocalDateTime); + chargingStatisticeDTO.setEndTime(now); + List<TChargingOrder> data1 = chargingOrderClient.getChargingStatistics(chargingStatisticeDTO).getData(); + for (Site datum : data) { + List<TChargingOrder> collect = data1.stream().filter(e -> e.getSiteId().equals(datum.getId()) + &&e.getChargingPower()!=null).collect(Collectors.toList()); + SupStationPowerInfo supStationPowerInfo = new SupStationPowerInfo(); + supStationPowerInfo.setOperatorID("906171535"); + supStationPowerInfo.setEquipmentOwnerID("906171535"); + supStationPowerInfo.setStationID(datum.getId().toString()); + supStationPowerInfo.setStationClassification(1); + supStationPowerInfo.setDataTime(DateUtils.localDateTimeToString(LocalDateTime.now())); + if (collect.isEmpty()){ + supStationPowerInfo.setStationRealTimePower(new BigDecimal("0")); + }else{ + BigDecimal divide = collect.stream().map(TChargingOrder::getChargingPower).reduce(BigDecimal.ZERO,BigDecimal::add).divide(new BigDecimal(collect.size()),4,BigDecimal.ROUND_DOWN); + supStationPowerInfo.setStationRealTimePower(divide); + } + supStationPowerInfo.setEquipmentPowerInfos(buildEquipmentPowerInfo(datum.getId(), tChargingPiles, chargingGunList)); + + stationStatsInfos.add(supStationPowerInfo); + } + supStationPowerInfoResult.setSupStationPowerInfos(stationStatsInfos); + tcecSuperviseUtil.superviseNotificationRealtimePowerInfo(supStationPowerInfoResult); + } + /** + * 构建桩数据 + * @param tChargingPiles + * @return + */ + public List<SupEquipmentPowerInfo> buildEquipmentPowerInfo(Integer siteId, List<TChargingPile> tChargingPiles, List<TChargingGun> chargingGunList){ + List<SupEquipmentPowerInfo> equipmentInfos = new ArrayList<>(); + List<TChargingPile> collect = tChargingPiles.stream().filter(s -> s.getSiteId().equals(siteId)).collect(Collectors.toList()); + for (TChargingPile tChargingPile : collect) { + SupEquipmentPowerInfo equipmentInfo = new SupEquipmentPowerInfo(); + equipmentInfo.setEquipmentID(tChargingPile.getId().toString()); + equipmentInfo.setEquipmentClassification(1); + equipmentInfo.setDataTime(DateUtils.localDateTimeToString(LocalDateTime.now())); + equipmentInfo.setEquipRealTimePower(tChargingPile.getRatedPower()); + //构建设备接口信息 + equipmentInfo.setConnectorPowerInfos(buildConnectorPowerInfos(tChargingPile.getId(), tChargingPile.getCode(), chargingGunList)); + equipmentInfos.add(equipmentInfo); + } + return equipmentInfos; + } + public List<SupConnectorPowerInfo> buildConnectorPowerInfos(Integer chargingPileId, String code, List<TChargingGun> chargingGunList){ + List<SupConnectorPowerInfo> connectorInfos = new ArrayList<>(); + List<TChargingGun> collect = chargingGunList.stream().filter(s -> s.getChargingPileId().equals(chargingPileId)).collect(Collectors.toList()); + for (TChargingGun chargingGun : collect) { + SupConnectorPowerInfo connectorInfo = new SupConnectorPowerInfo(); + connectorInfo.setConnectorID(chargingGun.getFullNumber()); + connectorInfo.setEquipmentClassification(chargingGun.getEquipmentClassification()); + connectorInfo.setDataTime(DateUtils.localDateTimeToString(LocalDateTime.now())); + connectorInfo.setConnectorRealTimePower(chargingGun.getChargingPower()); + connectorInfos.add(connectorInfo); + } + return connectorInfos; + } + } -- Gitblit v1.7.1