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