From 13ef98c7ec15380f5ef3e0c624e765ca9fbdeb9d Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 20 三月 2025 13:50:21 +0800
Subject: [PATCH] 充电桩bug修改

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  152 ++++++++++++++++++--------------------------------
 1 files changed, 56 insertions(+), 96 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 7470c9b..282599d 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
@@ -1409,12 +1409,12 @@
 		List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
 				.eq(TChargingOrderRefund::getRefundStatus,2).list();
 
-	    BigDecimal total = new BigDecimal("0");
-	    long time = 0L;
-	    BigDecimal electronicMoney = new BigDecimal("0");
-	    BigDecimal serviceMoney = new BigDecimal("0");
-	    BigDecimal refundMoney = new BigDecimal("0");
-	    BigDecimal paymentMoney = new BigDecimal("0");
+//	    BigDecimal total = new BigDecimal("0");
+//	    long time = 0L;
+//	    BigDecimal electronicMoney = new BigDecimal("0");
+//	    BigDecimal serviceMoney = new BigDecimal("0");
+//	    BigDecimal refundMoney = new BigDecimal("0");
+//	    BigDecimal paymentMoney = new BigDecimal("0");
 		for (ChargingOrderVO chargingOrderVO : list1) {
 			if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
 				continue;
@@ -1819,48 +1819,24 @@
 				for (TChargingOrderAccountingStrategy temp : list2) {
 					switch (temp.getType()){
 						case 1:
-							if (temp.getChargingCapacity()!=null){
-								jian = jian.add(temp.getChargingCapacity());
-							}
-							if (temp.getElectrovalence()!=null){
-								jianElectronic = jianElectronic.add(temp.getElectrovalence());
-							}
-							if (temp.getServiceCharge()!=null){
-								jianService = jianService.add(temp.getServiceCharge());
-							}
+							jian = jian.add(temp.getChargingCapacity());
+							jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
+							jianService = jianService.add(temp.getPeriodServicePrice());
 							break;
 						case 2:
-							if (temp.getChargingCapacity()!=null){
-								feng = feng.add(temp.getChargingCapacity());
-							}
-							if (temp.getElectrovalence()!=null){
-								fengElectronic = fengElectronic.add(temp.getElectrovalence());
-							}
-							if (temp.getServiceCharge()!=null){
-								fengService = fengService.add(temp.getServiceCharge());
-							}
+							feng = feng.add(temp.getChargingCapacity());
+							fengElectronic = fengElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
+							fengService = fengService.add(temp.getPeriodServicePrice());
 							break;
 						case 3:
-							if (temp.getChargingCapacity()!=null){
-								ping = ping.add(temp.getChargingCapacity());
-							}
-							if (temp.getElectrovalence()!=null){
-								pingElectronic = pingElectronic.add(temp.getElectrovalence());
-							}
-							if (temp.getServiceCharge()!=null){
-								pingService = pingService.add(temp.getServiceCharge());
-							}
+							ping = ping.add(temp.getChargingCapacity());
+							pingElectronic = pingElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
+							pingService = pingService.add(temp.getPeriodServicePrice());
 							break;
 						case 4:
-							if (temp.getChargingCapacity()!=null){
-								gu = gu.add(temp.getChargingCapacity());
-							}
-							if (temp.getElectrovalence()!=null){
-								guElectronic = guElectronic.add(temp.getElectrovalence());
-							}
-							if (temp.getServiceCharge()!=null){
-								guService = guService.add(temp.getServiceCharge());
-							}
+							gu = gu.add(temp.getChargingCapacity());
+							guElectronic = guElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
+							guService = guService.add(temp.getPeriodServicePrice());
 							break;
 					}
 				}
@@ -1868,50 +1844,27 @@
 				List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
 						.collect(Collectors.toList());
 				for (TChargingOrderAccountingStrategy temp : list2) {
+					BigDecimal multiply = temp.getPeriodServicePrice().multiply(new BigDecimal("0.8"));
 					switch (temp.getType()){
 						case 1:
-							if (temp.getChargingCapacity()!=null){
-								jian = jian.add(temp.getChargingCapacity());
-							}
-							if (temp.getElectrovalence()!=null){
-								jianElectronic = jianElectronic.add(temp.getElectrovalence());
-							}
-							if (temp.getServiceCharge()!=null){
-								jianService = jianService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
-							}
+							jian = jian.add(temp.getChargingCapacity());
+							jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
+							jianService = jianService.add(multiply);
 							break;
 						case 2:
-							if (temp.getChargingCapacity()!=null){
-								feng = feng.add(temp.getChargingCapacity());
-							}
-							if (temp.getElectrovalence()!=null){
-								fengElectronic = fengElectronic.add(temp.getElectrovalence());
-							}
-							if (temp.getServiceCharge()!=null){
-								fengService = fengService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
-							}
+							feng = feng.add(temp.getChargingCapacity());
+							fengElectronic = fengElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
+							fengService = fengService.add(multiply);
 							break;
 						case 3:
-							if (temp.getChargingCapacity()!=null){
-								ping = ping.add(temp.getChargingCapacity());
-							}
-							if (temp.getElectrovalence()!=null){
-								pingElectronic = pingElectronic.add(temp.getElectrovalence());
-							}
-							if (temp.getServiceCharge()!=null){
-								pingService = pingService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
-							}
+							ping = ping.add(temp.getChargingCapacity());
+							pingElectronic = pingElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
+							pingService = pingService.add(multiply);
 							break;
 						case 4:
-							if (temp.getChargingCapacity()!=null){
-								gu = gu.add(temp.getChargingCapacity());
-							}
-							if (temp.getElectrovalence()!=null){
-								guElectronic = guElectronic.add(temp.getElectrovalence());
-							}
-							if (temp.getServiceCharge()!=null){
-								guService = guService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
-							}
+							gu = gu.add(temp.getChargingCapacity());
+							guElectronic = guElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
+							guService = guService.add(multiply);
 							break;
 					}
 				}
@@ -1923,7 +1876,6 @@
 		chargingOrderTimeVO.setElectrovalence(electrovalence.setScale(2, BigDecimal.ROUND_HALF_EVEN));
 		chargingOrderTimeVO.setServiceCharge(serviceCharge.setScale(2, BigDecimal.ROUND_HALF_EVEN));
 		// 计算尖峰平谷充电到账占比
-
 		BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic);
 		// 计算尖峰平谷服务费占比
 		BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService);
@@ -2915,6 +2867,8 @@
 	@Override
 	public TSettlementConfirm settlementAdd(SettlementConfirmAdd dto) {
 		List<Site> data = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData();
+		List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
+
 		TSettlementConfirm tSettlementConfirm = new TSettlementConfirm();
 		if (!data.isEmpty()){
 			tSettlementConfirm.setSiteName(data.get(0).getName());
@@ -2941,9 +2895,7 @@
 
 		// 根据站点id和开始时间和结束时间和归属日期 查询充电订单列表
 		QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
-				.eq("site_id", dto.getSiteId())
-				.eq("status", 5)
-				.eq("recharge_payment_status",2);
+				.eq("site_id", dto.getSiteId());
 		switch (dto.getType()){
 			case 1:
 				eq.between("pay_time", localDateTime, localDateTime1);
@@ -2972,25 +2924,37 @@
 		// 支付订单金额 需要减去退款金额
 		BigDecimal paymentAmount = new BigDecimal("0");
 		for (TChargingOrder tChargingOrder : tChargingOrders) {
-			// 累加充电总度数
-			if (tChargingOrder.getChargingCapacity()!=null){
-				chargingElectronic = chargingElectronic.add(tChargingOrder.getChargingCapacity());
-
+			if(null == tChargingOrder.getStatus() || 5 != tChargingOrder.getStatus()){
+				continue;
 			}
+			List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(tChargingOrder.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);
+			// 累加充电总度数
+			chargingElectronic = chargingElectronic.add(chargingCapacity);
 			// 累加分佣
 			if (tChargingOrder.getOrderSource()==2) {
-				sharingAmount = sharingAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
+				sharingAmount = sharingAmount.add(service_reduce.multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
 			}
 			// 累加电费
-			if (tChargingOrder.getElectrovalence()!=null) {
-			electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
+			electrovalence = electrovalence.add(electronic_reduce);
+			if (tChargingOrder.getPaymentAmount()!=null && tChargingOrder.getOrderSource()!=2){
+				paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+
 			}
+			if (tChargingOrder.getRechargeAmount()!=null){
+				orderCommission = orderCommission.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006"))
+						.setScale(2,BigDecimal.ROUND_DOWN));
+			}
+
 			// 累加服务费
 			if (tChargingOrder.getServiceCharge()!=null){
 				if (tChargingOrder.getOrderSource()==2) {
-					serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
+					serviceCharge = serviceCharge.add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2,BigDecimal.ROUND_DOWN));
+					paymentAmount = paymentAmount.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
 				}else{
-					serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
+					serviceCharge = serviceCharge.add(service_reduce);
 				}
 			}
 			// 累加会员折扣
@@ -3001,11 +2965,7 @@
 			if (tChargingOrder.getCouponDiscountAmount()!=null){
 				couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
 			}
-			if (tChargingOrder.getPaymentAmount()!=null){
-				paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
-				orderCommission = orderCommission.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006"))
-						.setScale(2,BigDecimal.ROUND_DOWN));
-			}
+
 
 		}
 

--
Gitblit v1.7.1