From 88f8a06039ddb14cb1c8ac0c012b6d1ee8bd933a Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 18 七月 2025 16:55:03 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   61 ++++++++++++++++--------------
 1 files changed, 32 insertions(+), 29 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 2eb375b..01740da 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
@@ -2323,6 +2323,10 @@
 			return R.ok();
 		}
 		try {
+			Object cacheObject = redisService.getCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number());
+			if(null != cacheObject && 5 == (int)cacheObject){
+				return R.ok();
+			}
 			TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
 			if (null == chargingOrder) {
 				return R.ok();
@@ -2533,31 +2537,28 @@
 			//退款金额=充值金额-实际支付金额
 			BigDecimal refundAmount = rechargeAmount.subtract(payAmount);
 			
-			TChargingOrder order = new TChargingOrder();
-			order.setId(chargingOrder.getId());
-			order.setAppUserId(chargingOrder.getAppUserId());
 			UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode());
 			if (null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()) {
 				Integer soc = uploadRealTimeMonitoringData.getSoc();
 				if (soc >= 98) {
-					order.setEndMode(2);
+					chargingOrder.setEndMode(2);
 				} else if (chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) {
-					order.setEndMode(3);
+					chargingOrder.setEndMode(3);
 				} else {
-					order.setEndMode(0);
+					chargingOrder.setEndMode(0);
 				}
 			}
-			order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN));
-			order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
-			order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
-			order.setStatus(5);
-			order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
-			order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
-			order.setChargingCapacity(vo.getTotal_electricity());
-			order.setElectricity(vo.getTotal_electricity());
-			order.setVipDiscountAmount(vipDiscountAmount_total);
+			chargingOrder.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN));
+			chargingOrder.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
+			chargingOrder.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
+			chargingOrder.setStatus(5);
+			chargingOrder.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
+			chargingOrder.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
+			chargingOrder.setChargingCapacity(vo.getTotal_electricity());
+			chargingOrder.setElectricity(vo.getTotal_electricity());
+			chargingOrder.setVipDiscountAmount(vipDiscountAmount_total);
 			if (vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0) {
-				order.setVipDiscount(BigDecimal.valueOf(1));
+				chargingOrder.setVipDiscount(BigDecimal.valueOf(1));
 			}
 			
 			//计算优惠券
@@ -2582,9 +2583,9 @@
 						appCoupon.setStatus(2);
 						appCouponClient.updateAppCoupon(appCoupon);
 					} else {
-						order.setAppCouponId(null);
-						order.setCouponDiscountAmount(BigDecimal.ZERO);
 						appCouponClient.refund(chargingOrder.getAppCouponId().toString());
+						chargingOrder.setAppCouponId(null);
+						chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
 					}
 				}
 				if (2 == preferentialMode) {
@@ -2604,8 +2605,8 @@
 						appCoupon.setStatus(2);
 						appCouponClient.updateAppCoupon(appCoupon);
 					} else {
-						order.setAppCouponId(null);
-						order.setCouponDiscountAmount(BigDecimal.ZERO);
+						chargingOrder.setAppCouponId(null);
+						chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
 						appCouponClient.refund(chargingOrder.getAppCouponId().toString());
 					}
 				}
@@ -2619,13 +2620,15 @@
 			if (serviceCharge_total.compareTo(BigDecimal.ZERO) > 0) {
 				serviceCharge_total = serviceCharge_total.subtract(couponDiscount);
 			}
-			order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN));
-			order.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN));
-			order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
-			order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
-			order.setRefundStatus(1);
-			this.updateById(order);
-			chargingOrder = this.getById(order.getId());
+			chargingOrder.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN));
+			chargingOrder.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN));
+			chargingOrder.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
+			chargingOrder.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
+			chargingOrder.setRefundStatus(1);
+			this.updateById(chargingOrder);
+			redisService.setCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number(), 5, 100L, TimeUnit.SECONDS);
+			
+			chargingOrder = this.getById(chargingOrder.getId());
 			
 			//推送三方平台
 			if (2 == chargingOrder.getOrderSource()) {
@@ -2642,9 +2645,9 @@
 			}
 			
 			//开始将优惠券优惠的金额添加到明细中
-			BigDecimal couponDiscountAmount = order.getCouponDiscountAmount();
+			BigDecimal couponDiscountAmount = chargingOrder.getCouponDiscountAmount();
 			if (null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0) {
-				List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId()));
+				List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
 				BigDecimal reduce = list.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
 				for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
 					BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();

--
Gitblit v1.7.1