From 68c947574d3bee1a620d9de6bb5aad4fb3b5645b Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Fri, 14 Nov 2025 10:43:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E5=8D=95=E8=BD=A6=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E6=8C=89=E5=AE=9E=E9=99=85=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DelayMerchantProgramLogic.java | 59 +++++++++++-------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index ac7a4f5e3..debabc431 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -609,32 +609,43 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { // 查询订单信息 OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderBasicInfo.getOrderCode()); // 订单消费金额, 除了充满自停是需要计算实际消费, 其他金额都是按次收费 - BigDecimal orderAmount; + BigDecimal orderAmount = BigDecimal.ZERO; // 耗电量 BigDecimal consumedEnergy = message.getConsumedEnergy(); - if (fullOfSelfStopping.compareTo(orderBasicInfo.getPayAmount()) == 0) { - // 计费模板, 只取平时段的价格 - BigDecimal flatElectricityPrice = orderDetail.getFlatElectricityPrice() != null ? orderDetail.getFlatElectricityPrice() : BigDecimal.ZERO; // x元/每度 - // BigDecimal flatServicePrice = orderDetail.getFlatServicePrice() != null ? orderDetail.getFlatServicePrice() : BigDecimal.ZERO; // x元/每度 - BigDecimal flatServicePrice = BigDecimal.ZERO; // x元/每度 服务费默认0 - // 单价 = 电费单价 + 服务费单价 - BigDecimal price = flatElectricityPrice.add(flatServicePrice); - // 如果耗电量或单价为空或者为0,则订单消费为0 - // if (consumedEnergy == null || consumedEnergy.compareTo(BigDecimal.ZERO) == 0 || price.compareTo(BigDecimal.ZERO) == 0) { - // logger.info("计算电单车退款逻辑,耗电量或计费模板为空,不执行退款逻辑, orderCode:{}, 耗电量:{}, 每度电费:{}", orderBasicInfo.getOrderCode(), consumedEnergy, price); - // return; - // } - // 计算实际消费, 保留两位小数 - orderAmount = consumedEnergy.multiply(price).setScale(2, RoundingMode.UP); - } else { - // 2025.07.28如果耗电量为 0,也进行退款 - if (consumedEnergy.compareTo(BigDecimal.ZERO) == 0) { - orderAmount = BigDecimal.ZERO; - }else { - // 其他金额、并且耗电量不为 0 ,都是按次收费, 不退款 - orderAmount = orderBasicInfo.getPayAmount(); - } - } + + // 计算实际消费金额 + // 计费模板, 只取平时段的价格 + BigDecimal flatElectricityPrice = orderDetail.getFlatElectricityPrice() != null ? orderDetail.getFlatElectricityPrice() : BigDecimal.ZERO; // x元/每度 + // BigDecimal flatServicePrice = orderDetail.getFlatServicePrice() != null ? orderDetail.getFlatServicePrice() : BigDecimal.ZERO; // x元/每度 + BigDecimal flatServicePrice = BigDecimal.ZERO; // x元/每度 服务费默认0 + // 单价 = 电费单价 + 服务费单价 + BigDecimal price = flatElectricityPrice.add(flatServicePrice); + // 计算实际消费, 保留两位小数 + orderAmount = consumedEnergy.multiply(price).setScale(2, RoundingMode.UP); + + // if (fullOfSelfStopping.compareTo(orderBasicInfo.getPayAmount()) == 0) { + // // 计费模板, 只取平时段的价格 + // BigDecimal flatElectricityPrice = orderDetail.getFlatElectricityPrice() != null ? orderDetail.getFlatElectricityPrice() : BigDecimal.ZERO; // x元/每度 + // // BigDecimal flatServicePrice = orderDetail.getFlatServicePrice() != null ? orderDetail.getFlatServicePrice() : BigDecimal.ZERO; // x元/每度 + // BigDecimal flatServicePrice = BigDecimal.ZERO; // x元/每度 服务费默认0 + // // 单价 = 电费单价 + 服务费单价 + // BigDecimal price = flatElectricityPrice.add(flatServicePrice); + // // 如果耗电量或单价为空或者为0,则订单消费为0 + // // if (consumedEnergy == null || consumedEnergy.compareTo(BigDecimal.ZERO) == 0 || price.compareTo(BigDecimal.ZERO) == 0) { + // // logger.info("计算电单车退款逻辑,耗电量或计费模板为空,不执行退款逻辑, orderCode:{}, 耗电量:{}, 每度电费:{}", orderBasicInfo.getOrderCode(), consumedEnergy, price); + // // return; + // // } + // // 计算实际消费, 保留两位小数 + // orderAmount = consumedEnergy.multiply(price).setScale(2, RoundingMode.UP); + // } else { + // // 2025.07.28如果耗电量为 0,也进行退款 + // if (consumedEnergy.compareTo(BigDecimal.ZERO) == 0) { + // orderAmount = BigDecimal.ZERO; + // }else { + // // 其他金额、并且耗电量不为 0 ,都是按次收费, 不退款 + // orderAmount = orderBasicInfo.getPayAmount(); + // } + // } // 退款金额 = 支付金额 - 优惠后总消费金额 BigDecimal refundAmount = orderBasicInfo.getPayAmount().subtract(orderAmount);