From f18b75f5e69da40a4dbc7283856884111436842e Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期二, 21 七月 2026 16:40:17 +0800
Subject: [PATCH] 充电时段统计

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   38 ++++++++++++++++++++++++++++----------
 1 files changed, 28 insertions(+), 10 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 363fe6a..3efecde 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
@@ -3770,18 +3770,36 @@
 		if (item == null) {
 			return;
 		}
-		BigDecimal paymentAmount = nullToZero(item.getPaymentAmount());
+		BigDecimal[] income = calculateChargingPeriodIncome(
+				item.getPaymentAmount(),
+				item.getServiceCharge(),
+				siteServiceShareRatioMap.get(item.getSiteId()),
+				item.getOrderSource());
+		item.setPlatformIncome(income[0]);
+		item.setPartnerIncome(income[1]);
+	}
+
+	static BigDecimal[] calculateChargingPeriodIncome(BigDecimal paymentAmount,
+													BigDecimal serviceCharge,
+													BigDecimal serviceShareRatio,
+													Integer orderSource) {
+		BigDecimal paid = zeroIfNull(paymentAmount);
 		BigDecimal partnerIncome = BigDecimal.ZERO;
-		if (!Integer.valueOf(2).equals(item.getOrderSource())) {
-			BigDecimal serviceShareRatio = siteServiceShareRatioMap.get(item.getSiteId());
-			if (serviceShareRatio != null && serviceShareRatio.compareTo(BigDecimal.ZERO) > 0) {
-				partnerIncome = nullToZero(item.getServiceCharge())
-						.multiply(serviceShareRatio)
-						.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
-			}
+		if (!Integer.valueOf(2).equals(orderSource)
+				&& serviceShareRatio != null
+				&& serviceShareRatio.compareTo(BigDecimal.ZERO) > 0) {
+			partnerIncome = zeroIfNull(serviceCharge)
+					.multiply(serviceShareRatio)
+					.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
 		}
-		item.setPartnerIncome(partnerIncome);
-		item.setPlatformIncome(paymentAmount.subtract(partnerIncome).max(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_UP));
+		return new BigDecimal[]{
+				paid.subtract(partnerIncome).max(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_UP),
+				partnerIncome.setScale(2, RoundingMode.HALF_UP)
+		};
+	}
+
+	private static BigDecimal zeroIfNull(BigDecimal amount) {
+		return amount == null ? BigDecimal.ZERO : amount;
 	}
 
 	private Map<Integer, BigDecimal> loadSiteServiceShareRatioMap() {

--
Gitblit v1.7.1