From 1182427c7106c0c0f57d109db2eb588d07e0610d Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Fri, 9 Jan 2026 17:16:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=80=BB=E8=80=97=E7=94=B5?= =?UTF-8?q?=E9=87=8F=E5=A4=A7=E4=BA=8E0,=20=E5=B9=B6=E4=B8=94=E5=90=84?= =?UTF-8?q?=E4=B8=AA=E6=97=B6=E6=AE=B5=E8=80=97=E7=94=B5=E9=87=8F=E6=80=BB?= =?UTF-8?q?=E5=92=8C=E4=B8=BA0,=20=E5=88=99=E4=BC=98=E6=83=A0=E5=90=8E?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E7=AD=89=E4=BA=8E=E4=BC=98=E6=83=A0=E5=89=8D?= =?UTF-8?q?=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../programlogic/AbstractProgramLogic.java | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index f9c8718c2..6b5c8181f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -964,10 +964,10 @@ public abstract class AbstractProgramLogic implements InitializingBean { BigDecimal electricityAmountDiscount = BigDecimal.ZERO; // 服务费折扣金额 初始值为0 BigDecimal serviceAmountDiscount = BigDecimal.ZERO; - // 优惠后电费金额 初始值为优惠前金额 - BigDecimal afterDiscountElectricityAmount = new BigDecimal(originalTotalElectricityAmount.toString()); - // 优惠后服务费金额 初始值为优惠前金额 - BigDecimal afterDiscountServiceAmount = new BigDecimal(originalTotalServiceAmount.toString()); + // 优惠后电费金额 初始值为0 + BigDecimal afterDiscountElectricityAmount = BigDecimal.ZERO; + // 优惠后服务费金额 初始值为0 + BigDecimal afterDiscountServiceAmount = BigDecimal.ZERO; // 订单总耗电量 BigDecimal totalUsedElectricity = orderDetail.getTotalUsedElectricity(); @@ -988,8 +988,8 @@ public abstract class AbstractProgramLogic implements InitializingBean { MemberDiscountVO memberDiscountVO = memberGroupService.queryMemberDiscountV2(merchantId, stationId, memberId); if (memberDiscountVO == null) { // 如果没有优惠,则优惠后金额 等于优惠前金额 - afterDiscountElectricityAmount = orderDetail.getTotalElectricityAmount(); - afterDiscountServiceAmount = orderDetail.getTotalServiceAmount(); + afterDiscountElectricityAmount = originalTotalElectricityAmount; + afterDiscountServiceAmount = originalTotalServiceAmount; } else { // 集团会员的订单,记录集团编号 orderBasicInfo.setGroupCode(memberDiscountVO.getGroupCode()); @@ -1076,6 +1076,22 @@ public abstract class AbstractProgramLogic implements InitializingBean { afterDiscountServiceAmount = afterDiscountServiceAmount.add(serviceAmount); } + // 如果4个时段都是0,并且总耗电量大于0,则折扣后电费等于原始电费,折扣后服务费等于原始服务费 + // if (peakUsedElectricity.compareTo(BigDecimal.ZERO) == 0 + // && flatUsedElectricity.compareTo(BigDecimal.ZERO) == 0 + // && valleyUsedElectricity.compareTo(BigDecimal.ZERO) == 0 + // && sharpUsedElectricity.compareTo(BigDecimal.ZERO) == 0 + // && totalUsedElectricity.compareTo(BigDecimal.ZERO) > 0) { + // afterDiscountElectricityAmount = originalTotalElectricityAmount; + // afterDiscountServiceAmount = originalTotalServiceAmount; + // } + + // 如果总耗电量大于0, 并且各个时段耗电量总和为0, 则优惠后金额等于优惠前金额 + if (totalUsedElectricity.compareTo(BigDecimal.ZERO) > 0 && sumUsedElectricity.compareTo(BigDecimal.ZERO) == 0 ) { + afterDiscountElectricityAmount = originalTotalElectricityAmount; + afterDiscountServiceAmount = originalTotalServiceAmount; + } + // 计算优惠了多少钱 // 电费折扣金额 = 优惠前电费 - 优惠后电费 electricityAmountDiscount = originalTotalElectricityAmount.subtract(afterDiscountElectricityAmount); @@ -1086,12 +1102,6 @@ public abstract class AbstractProgramLogic implements InitializingBean { // orderCode, originalTotalElectricityAmount, afterDiscountElectricityAmount, electricityAmountDiscount, originalTotalServiceAmount, afterDiscountServiceAmount, serviceAmountDiscount); } - // 如果总耗电量大于0, 并且各个时段耗电量总和为0, 则优惠后金额等于优惠前金额 - if (totalUsedElectricity.compareTo(BigDecimal.ZERO) > 0 && sumUsedElectricity.compareTo(BigDecimal.ZERO) == 0 ) { - afterDiscountElectricityAmount = orderDetail.getTotalElectricityAmount(); - afterDiscountServiceAmount = orderDetail.getTotalServiceAmount(); - } - /** * 电费折扣金额和服务费折扣金额 应该大于等于0, 如小于0, 则设置为0 */