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 ++++++++++++++++++++++++++++----------
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java             |    2 --
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java            |    2 +-
 3 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
index e46ece6..82d1c5e 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
@@ -94,8 +94,6 @@
     private BigDecimal electrovalence;
     @ApiModelProperty(value = "累计服务费")
     private BigDecimal serviceCharge;
-    @ApiModelProperty(value = "平台手续费")
-    private BigDecimal commissionAmount;
     @ApiModelProperty(value = "引流平台")
     private String tripartitePlatformName;
     @ApiModelProperty(value = "平台分佣")
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java
index 7214c5b..6db8523 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java
@@ -127,7 +127,7 @@
     private String isSecurity;
     @Excel(name = "引流平台分佣",width = 30)
     private String sharingAmount;
-    @Excel(name = "是否白名单",width = 30)
+    @Excel(name = "是否白名单用户",width = 30)
     private String isWhitelist;
     @Excel(name = "白名单电费退款金额",width = 30)
     private String whitelistElectricRefundAmount;
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