如果总耗电量大于0, 并且各个时段耗电量总和为0, 则优惠后金额等于优惠前金额

This commit is contained in:
Guoqs
2026-01-09 17:16:39 +08:00
parent 86c90b9d36
commit 1182427c71

View File

@@ -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
*/