From 94bdecc902b8077de86c24b216348ed92b7749c6 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 17 一月 2025 20:31:51 +0800
Subject: [PATCH] bug修改

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   87 ++++++++++++++++++++++++++++++-------------
 1 files changed, 61 insertions(+), 26 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index d7e1276..cb195dc 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -80,6 +80,7 @@
 import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.time.format.TextStyle;
+import java.time.temporal.ChronoUnit;
 import java.time.temporal.WeekFields;
 import java.util.*;
 import java.util.concurrent.*;
@@ -1147,7 +1148,7 @@
 		TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData();
 		TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, chargingGun.getId())
 				.orderByDesc(TChargingOrder::getEndTime).eq(TChargingOrder::getRechargePaymentStatus, 2).last(" limit 0, 1"));
-		if(null != order && order.getStatus() != 3){
+		if(null != order && order.getStatus() != 4){
 			return;
 		}
 		
@@ -1259,7 +1260,17 @@
 		 BigDecimal commissionMoney = new BigDecimal("0");
 		 BigDecimal refundMoney = new BigDecimal("0");
 		 BigDecimal paymentMoney = new BigDecimal("0");
+		List<String> collect2 = list.stream().map(TChargingOrder::getCode).collect(Collectors.toList());
+		StringBuilder stringBuilder2 = new StringBuilder();
+		List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData2 = new ArrayList<>();
+		for (String s : collect2) {
+			stringBuilder2.append(s).append(",");
+		}
+		if (stringBuilder2.length()>0){
+			StringBuilder ids = stringBuilder2.deleteCharAt(stringBuilder2.length() - 1);
+			uploadRealTimeMonitoringData2 = uploadRealTimeMonitoringDataClient.getOrderInfoByCodes(ids.toString()).getData();
 
+		}
 		for (ChargingOrderVO chargingOrderVO : list) {
 			if (roleType == 2){
 				for (Integer siteId : siteIds) {
@@ -1286,7 +1297,8 @@
 			// 充电订单 明细记录
 			List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
 					.eq("charging_order_id", chargingOrderVO.getId()));
-			UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
+			UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringData2.stream().filter(e -> e.getTransaction_serial_number().equals(chargingOrderVO.getCode()))
+					.findFirst().orElse(null);
 			if (data5!=null && data5.getCumulative_charging_time()!=null){
 				long l = data5.getCumulative_charging_time() * 60L;
 				chargingOrderVO.setChargingSecond(l);
@@ -1310,27 +1322,31 @@
 
 			}
 		}
+
+
+		List<Long> orderIds = list1.stream().map(TChargingOrder::getId).collect(Collectors.toList());
+		if(orderIds.isEmpty())orderIds.add(-1L);
+		List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
+				.in(TChargingOrderRefund::getChargingOrderId, orderIds)
+				.eq(TChargingOrderRefund::getRefundStatus,2).list();
+
 		for (ChargingOrderVO chargingOrderVO : list1) {
 			paymentMoney= paymentMoney.add(chargingOrderVO.getPaymentAmount()!=null?chargingOrderVO.getPaymentAmount():new BigDecimal("0"));
 			commissionMoney = commissionMoney.add(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
 			if (chargingOrderVO.getChargingCapacity()!=null){
 				total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0"));
 			}
-			// 充电订单 明细记录
-			List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
-					.eq("charging_order_id", chargingOrderVO.getId()));
-			UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
-			if (data5!=null && data5.getCumulative_charging_time()!=null){
-				long l = data5.getCumulative_charging_time() * 60L;
-				chargingOrderVO.setChargingSecond(l);
-				time+=l;
+			if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
+				LocalDateTime startTime = chargingOrderVO.getStartTime();
+				LocalDateTime endTime = chargingOrderVO.getEndTime();
+				// 计算时间差 单位秒
+				long between = ChronoUnit.SECONDS.between(startTime, endTime);
+				time+=between;
 			}
-			List<TChargingOrderRefund> list2 = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2)
-					.eq(TChargingOrderRefund::getChargingOrderId, chargingOrderVO.getId()).list();
+			List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
+					.collect(Collectors.toList());
 			for (TChargingOrderRefund tChargingOrderRefund : list2) {
-				if (tChargingOrderRefund.getRefundStatus()==2){
 					refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
-				}
 			}
 			electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()!=null?chargingOrderVO.getElectrovalence():new BigDecimal("0"));
 			serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0"));
@@ -1499,6 +1515,9 @@
 		dto.setSiteIds(siteIds);
 		PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
 		List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
+		List<Integer> siteIdsList = list.stream().map(ChargingOrderListVO::getSiteId).collect(Collectors.toList());
+		if (siteIdsList.isEmpty())siteIdsList.add(-1);
+		List<Site> sites = siteClient.getSiteByIds(siteIdsList).getData();
 
 		for (ChargingOrderListVO chargingOrderListVO : list) {
 			if (roleType==2){
@@ -1515,9 +1534,9 @@
 			chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
 			List<Integer> integers = new ArrayList<>();
 			integers.add(chargingOrderListVO.getSiteId());
-			List<Site> data = siteClient.getSiteByIds(integers).getData();
-			if (!data.isEmpty()) {
-				chargingOrderListVO.setSiteName(data.get(0).getName());
+			Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null);
+			if (site!=null){
+				chargingOrderListVO.setSiteName(site.getName());
 			}
 			if (chargingOrderListVO.getChargingGunId()!=null && chargingOrderListVO.getChargingPileId()!=null){
 				TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrderListVO.getChargingGunId()).getData();
@@ -1568,7 +1587,6 @@
 						}
 					}
 					chargingOrderListVO.setPhone(data3.getPhone());
-
 				}
 			}
 			List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
@@ -1617,6 +1635,21 @@
 		// 不分页
 		PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1,999999999);
 		List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2);
+		for (ChargingOrderListVO chargingOrderListVO : list1) {
+			List<Integer> integers = new ArrayList<>();
+			integers.add(chargingOrderListVO.getSiteId());
+			Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null);
+			if (site!=null){
+				chargingOrderListVO.setSiteName(site.getName());
+			}
+			if (chargingOrderListVO.getChargingGunId()!=null && chargingOrderListVO.getChargingPileId()!=null){
+				TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrderListVO.getChargingGunId()).getData();
+				TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderListVO.getChargingPileId()).getData();
+				if (data2 != null && data1 != null) {
+					chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
+				}
+			}
+		}
 		chargingOrderTimeVO.setExportList(list1);
 		chargingOrderTimeVO.setOrderCount(list1.size());
 		// 计算充电总度数
@@ -1642,14 +1675,17 @@
 		BigDecimal feng = new BigDecimal("0");
 		BigDecimal ping = new BigDecimal("0");
 		BigDecimal gu = new BigDecimal("0");
+		List<Long> collect = list1.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList());
+		List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.lambdaQuery()
+				.in(TChargingOrderAccountingStrategy::getChargingOrderId,collect).list();
 		for (ChargingOrderListVO chargingOrderListVO : list1) {
 			if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
 
 			if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
 			if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
 			if (chargingOrderListVO.getServiceCharge()!=null)serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
-			List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
-					.eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list();
+			List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
+					.collect(Collectors.toList());
 			for (TChargingOrderAccountingStrategy temp : list2) {
 				switch (temp.getType()){
 					case 1:
@@ -2283,6 +2319,7 @@
 		referralReward(chargingOrder);
 		
 		//开始构建退款费用
+		refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN);
 		if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
 			Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
 			//构建退款明细
@@ -2320,15 +2357,13 @@
 			if(2 == rechargePaymentType){
 				RefundReq dto = new RefundReq();
 				dto.setOutTradeNo(chargingOrder.getCode());
-				dto.setOutRequestNo(chargingOrderRefund.getCode());
+				dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
 				dto.setRefundAmount(refundAmount.toString());
 				dto.setRefundReason("充电完成退款");
 				RefundResp resp = aliPaymentClient.refund(dto).getData();
 				if(null != resp){
-					AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null);
-					if(success.isSuccess()){
-						chargingOrderRefundService.save(chargingOrderRefund);
-					}
+					chargingOrderRefundService.save(chargingOrderRefund);
+					this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
 				}
 			}
 			
@@ -3126,7 +3161,7 @@
 				.eq("recharge_payment_status",2);
 		switch (dto.getType()){
 			case 1:
-				eq.between("start_time", localDateTime, localDateTime1);
+				eq.between("pay_time", localDateTime, localDateTime1);
 				break;
 			case 2:
 				eq.between("end_time", localDateTime, localDateTime1);

--
Gitblit v1.7.1