From 9bc378e6bb9b4563a0dec222e1c2d5d3278632cb Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 17 九月 2025 17:41:54 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  152 +++++++++++++++++++++-----------------------------
 1 files changed, 63 insertions(+), 89 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 d956b76..88b4cf1 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
@@ -52,7 +52,6 @@
 import com.ruoyi.order.service.TChargingOrderService;
 import com.ruoyi.order.service.TOrderEvaluateService;
 import com.ruoyi.order.service.*;
-import com.ruoyi.order.util.RedisLock;
 import com.ruoyi.order.util.mongodb.service.PlatformStartChargingReplyService;
 import com.ruoyi.order.util.mongodb.service.TransactionRecordService;
 import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService;
@@ -584,6 +583,8 @@
 			AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder();
 			BeanUtils.copyProperties(tAccountingStrategyDetail, accountingStrategyDetailOrder);
 			accountingStrategyDetailOrder.setChargingOrderId(chargingOrder.getId());
+			accountingStrategyDetailOrder.setCreateTime(LocalDateTime.now());
+			accountingStrategyDetailOrder.setDelFlag(false);
 			list1.add(accountingStrategyDetailOrder);
 		}
 		accountingStrategyDetailOrderService.saveBatch(list1);
@@ -940,7 +941,7 @@
 			chargingGun.setStatus(4);
 			chargingGunClient.updateChargingGunById(chargingGun);
 			//推送状态给三方平台
-			tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
+			tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 4);
 		}
 		redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
 		this.updateById(order);
@@ -1289,12 +1290,6 @@
 			sendMessageClient.platformStopCharging(platformStopCharging);
 			log.info(code1 + ":-------------------远程停止充电请求-------------------");
 			log.info(platformStopCharging.toString());
-			
-			//推送监管平台订单状态和订单详情
-			ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
-			BeanUtils.copyProperties(order, chargingOrderVo);
-			chargingMessageClient.pushOrderInfo(chargingOrderVo);
-			chargingMessageClient.pushOrderStatus(chargingOrderVo);
 		});
 		//推送三方平台
 		if (2 == order.getOrderSource()) {
@@ -1609,42 +1604,7 @@
 				
 			}
 		}
-
-//		List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
-//				.eq(TChargingOrderRefund::getRefundStatus,2).list();
-		
-		
 		Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto, startTime1, startTime2, endTime1, endTime2);
-//		for (ChargingOrderVO chargingOrderVO : list1) {
-//			if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
-//				continue;
-//			}
-//			List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
-//			BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-//			BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-//			BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
-//			electronicMoney = electronicMoney.add(electronic_reduce);
-//			total = total.add(chargingCapacity);
-//			if (!chargingOrderVO.getOrderSource().equals(2)) {
-//				serviceMoney = serviceMoney.add(service_reduce);
-//				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
-//			}else{
-//				serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
-//				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
-//			}
-//			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 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
-////					.collect(Collectors.toList());
-////			for (TChargingOrderRefund tChargingOrderRefund : list2) {
-////				refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
-////			}
-//		}
 		if (null != map) {
 			tCharingOrderVO.setTotal(map.get("total") == null ? BigDecimal.ZERO : (BigDecimal) map.get("total"));
 			tCharingOrderVO.setTime(map.get("time") == null ? 0L : (Long) map.get("time"));
@@ -1832,9 +1792,7 @@
 		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();
+		List<Site> sites = siteClient.getSiteAll().getData();
 		
 		for (ChargingOrderListVO chargingOrderListVO : list) {
 			if (roleType == 2) {
@@ -2329,6 +2287,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();
@@ -2539,31 +2501,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);
-				} else if (chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) {
-					order.setEndMode(3);
+					chargingOrder.setEndMode(2);
+				} else if (null != chargingOrder.getResidualAmount() && chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) {
+					chargingOrder.setEndMode(3);
 				} else {
-					order.setEndMode(0);
+					chargingOrder.setEndMode(1);
 				}
 			}
-			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));
 			}
 			
 			//计算优惠券
@@ -2588,9 +2547,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) {
@@ -2610,8 +2569,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());
 					}
 				}
@@ -2625,13 +2584,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()) {
@@ -2648,9 +2609,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();
@@ -2668,9 +2629,10 @@
 			chargingGun.setStatus(2);
 			chargingGun.setChargingPower(BigDecimal.ZERO);
 			chargingGunClient.updateChargingGunById(chargingGun);
+			chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
 			//推送状态给三方平台
 			if (2 == chargingOrder.getOrderSource()) {
-				tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
+				tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 2);
 			}
 			
 			//添加积分
@@ -2807,6 +2769,12 @@
 			summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
 			summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
 			chargingOrderSummaryDataService.save(summaryData);
+			
+			//推送监管平台订单状态和订单详情
+			ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
+			BeanUtils.copyProperties(chargingOrder, chargingOrderVo);
+			chargingMessageClient.pushOrderInfo(chargingOrderVo);
+			chargingMessageClient.pushOrderStatus(chargingOrderVo);
 		} catch (Exception e) {
 			e.printStackTrace();
 		} finally {
@@ -4104,6 +4072,8 @@
 			AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder();
 			BeanUtils.copyProperties(tAccountingStrategyDetail, accountingStrategyDetailOrder);
 			accountingStrategyDetailOrder.setChargingOrderId(chargingOrder.getId());
+			accountingStrategyDetailOrder.setCreateTime(LocalDateTime.now());
+			accountingStrategyDetailOrder.setDelFlag(false);
 			list1.add(accountingStrategyDetailOrder);
 		}
 		accountingStrategyDetailOrderService.saveBatch(list1);
@@ -4183,12 +4153,6 @@
 			sendMessageClient.platformStopCharging(platformStopCharging);
 			log.info(code1 + ":-------------------远程停止充电请求-------------------");
 			log.info(platformStopCharging.toString());
-			
-			//推送监管平台订单状态和订单详情
-			ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
-			BeanUtils.copyProperties(chargingOrder, chargingOrderVo);
-			chargingMessageClient.pushOrderInfo(chargingOrderVo);
-			chargingMessageClient.pushOrderStatus(chargingOrderVo);
 		});
 		return R.ok();
 	}
@@ -4224,9 +4188,9 @@
 	@Override
 	public R pushOrderInfo(String code) {
 		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
-		tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
-		tcecClient.notificationStopChargeResult(chargingOrder.getStartChargeSeq(), chargingOrder.getChargingGunId().toString(),
-				chargingOrder.getOperatorId());
+//		tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+//		tcecClient.notificationStopChargeResult(chargingOrder.getStartChargeSeq(), chargingOrder.getChargingGunId().toString(),
+//				chargingOrder.getOperatorId());
 		tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
 		return R.ok();
 	}
@@ -4330,9 +4294,10 @@
 	}
 	
 	@Override
-	public BigDecimal getSumDegreeBySiteIds(List<Integer> siteIds) {
-		
-		return this.baseMapper.getSumDegreeBySiteIds(siteIds);
+	public Double getSumDegreeBySiteIds(List<Integer> siteIds) {
+		Double sumDegreeBySiteIds = this.baseMapper.getSumDegreeBySiteIds(siteIds);
+
+		return sumDegreeBySiteIds;
 		
 	}
 	
@@ -4368,4 +4333,13 @@
 	public List<TChargingOrder> findChargingOrder() {
 		return this.baseMapper.findChargingOrder();
 	}
+
+	/**
+	 * 获取已结束的数据
+	 * @return
+	 */
+	@Override
+	public List<TChargingOrder> findEndChargingOrder() {
+		return this.baseMapper.findEndChargingOrder();
+	}
 }

--
Gitblit v1.7.1