From a3657cc4e9fd9f13e4838db8eebaf914c529beee Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 15 七月 2026 14:34:44 +0800
Subject: [PATCH] 结算的已支付订单
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargingSimulationSupport.java | 64 ++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargingSimulationSupport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargingSimulationSupport.java
index 3b54db4..950b585 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargingSimulationSupport.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargingSimulationSupport.java
@@ -1,10 +1,12 @@
package com.ruoyi.order.service.impl;
import com.ruoyi.order.api.model.AccountingStrategyDetailOrder;
+import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
import java.lang.reflect.Method;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
@@ -16,6 +18,68 @@
private ChargingSimulationSupport() {
}
+ static BigDecimal availableAmount(TChargingOrder order) {
+ if (order == null) {
+ return BigDecimal.ZERO.setScale(2);
+ }
+ BigDecimal chargeAmount = money(order.getChargeAmount());
+ return chargeAmount.compareTo(BigDecimal.ZERO) > 0 ? chargeAmount : money(order.getRechargeAmount());
+ }
+
+ static String paymentMode(TChargingOrder order) {
+ if (order == null) {
+ return "未知";
+ }
+ if (Integer.valueOf(1).equals(order.getIsWhitelist())
+ && Integer.valueOf(1).equals(order.getWhitelistBenefitType())) {
+ return "免支付";
+ }
+ BigDecimal balanceAmount = money(order.getBalancePayAmount());
+ BigDecimal thirdAmount = thirdPayAmount(order);
+ if (balanceAmount.compareTo(BigDecimal.ZERO) == 0 && thirdAmount.compareTo(BigDecimal.ZERO) == 0) {
+ return "免支付";
+ }
+ String thirdChannel = thirdChannel(order);
+ if (balanceAmount.compareTo(BigDecimal.ZERO) > 0 && thirdAmount.compareTo(BigDecimal.ZERO) == 0) {
+ return "余额支付";
+ }
+ if (balanceAmount.compareTo(BigDecimal.ZERO) > 0 && thirdAmount.compareTo(BigDecimal.ZERO) > 0) {
+ return "余额+" + thirdChannel;
+ }
+ return thirdChannel;
+ }
+
+ static BigDecimal thirdPayAmount(TChargingOrder order) {
+ if (order == null) {
+ return BigDecimal.ZERO.setScale(2);
+ }
+ BigDecimal thirdAmount = money(order.getThirdPayAmount());
+ if (thirdAmount.compareTo(BigDecimal.ZERO) > 0 || Integer.valueOf(1).equals(order.getPayMethod())) {
+ return thirdAmount;
+ }
+ return money(order.getRechargeAmount())
+ .subtract(money(order.getBalancePayAmount()))
+ .max(BigDecimal.ZERO)
+ .setScale(2, RoundingMode.HALF_UP);
+ }
+
+ private static String thirdChannel(TChargingOrder order) {
+ if ("ICBC".equalsIgnoreCase(order.getSourceName())) {
+ return "工行支付";
+ }
+ if (Integer.valueOf(2).equals(order.getRechargePaymentType())) {
+ return "支付宝支付";
+ }
+ if (Integer.valueOf(3).equals(order.getRechargePaymentType())) {
+ return "支付宝H5支付";
+ }
+ return "微信支付";
+ }
+
+ private static BigDecimal money(BigDecimal amount) {
+ return amount == null ? BigDecimal.ZERO.setScale(2) : amount.setScale(2, RoundingMode.HALF_UP);
+ }
+
static PreparedSimulation prepare(String orderCode,
List<AccountingStrategyDetailOrder> tariffs,
BigDecimal electricityFee,
--
Gitblit v1.7.1