update 计算订单优惠金额

This commit is contained in:
Guoqs
2025-04-10 16:32:04 +08:00
parent 58549f4a04
commit 8e0042a7bb

View File

@@ -960,11 +960,23 @@ public abstract class AbstractProgramLogic implements InitializingBean {
// 计算该时段电费单价
BigDecimal electricityPrice = billingTemplateVO.getSharpElectricityPrice();
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal electricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
BigDecimal electricityAmount = BigDecimal.ZERO;
// 如果优惠模板电价低于orderDetail快照中的电价则计算优惠金额
if (electricityPrice.compareTo(orderDetail.getSharpElectricityPrice()) < 0) {
// 计算该时段电费优惠金额 = 优惠前电费 - 优惠后电费
electricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
}
// 计算该时段服务费单价
BigDecimal servicePrice = billingTemplateVO.getSharpServicePrice();
// 计算该时段服务费
BigDecimal serviceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
BigDecimal serviceAmount = BigDecimal.ZERO;
// 如果优惠模板中服务费低于orderDetail快照中的服务费价则计算优惠金额
if (servicePrice.compareTo(orderDetail.getSharpServicePrice()) < 0) {
// 计算该时段服务费优惠金额 = 优惠前服务费 - 优惠后服务费
serviceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
}
// 汇总
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(electricityAmount);
@@ -978,11 +990,22 @@ public abstract class AbstractProgramLogic implements InitializingBean {
// 计算该时段电费单价
BigDecimal electricityPrice = billingTemplateVO.getPeakElectricityPrice();
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal electricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
BigDecimal electricityAmount = BigDecimal.ZERO;
// 如果优惠模板电价低于orderDetail快照中的电价则计算优惠金额
if (electricityPrice.compareTo(orderDetail.getPeakElectricityPrice()) < 0) {
// 计算该时段电费优惠金额 = 优惠前电费 - 优惠后电费
electricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
}
// 计算该时段服务费
BigDecimal servicePrice = billingTemplateVO.getPeakServicePrice();
// 计算该时段服务费 = 服务费单价 x 用电量
BigDecimal serviceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
BigDecimal serviceAmount = BigDecimal.ZERO;
// 如果优惠模板中服务费低于orderDetail快照中的服务费价则计算优惠金额
if (servicePrice.compareTo(orderDetail.getPeakServicePrice()) < 0) {
// 计算该时段服务费优惠金额 = 优惠前服务费 - 优惠后服务费
serviceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
}
// 汇总
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(electricityAmount);
@@ -995,11 +1018,23 @@ public abstract class AbstractProgramLogic implements InitializingBean {
// 计算该时段电费单价
BigDecimal electricityPrice = billingTemplateVO.getFlatElectricityPrice();
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal electricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
BigDecimal electricityAmount = BigDecimal.ZERO;
// 如果优惠模板电价低于orderDetail快照中的电价则计算优惠金额
if (electricityPrice.compareTo(orderDetail.getFlatElectricityPrice()) < 0) {
// 计算该时段电费优惠金额 = 优惠前电费 - 优惠后电费
electricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
}
// 计算该时段服务费单价
BigDecimal servicePrice = billingTemplateVO.getFlatServicePrice();
// 计算该时段服务费
BigDecimal serviceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
BigDecimal serviceAmount = BigDecimal.ZERO;
// 如果优惠模板中服务费低于orderDetail快照中的服务费价则计算优惠金额
if (servicePrice.compareTo(orderDetail.getFlatServicePrice()) < 0) {
// 计算该时段服务费优惠金额 = 优惠前服务费 - 优惠后服务费
serviceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
}
// 汇总
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(electricityAmount);
@@ -1012,11 +1047,22 @@ public abstract class AbstractProgramLogic implements InitializingBean {
// 计算该时段电费单价
BigDecimal electricityPrice = billingTemplateVO.getValleyElectricityPrice();
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal electricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
BigDecimal electricityAmount = BigDecimal.ZERO;
// 如果优惠模板电价低于orderDetail快照中的电价则计算优惠金额
if (electricityPrice.compareTo(orderDetail.getValleyElectricityPrice()) < 0) {
// 计算该时段电费优惠金额 = 优惠前电费 - 优惠后电费
electricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
}
// 计算该时段服务费单价
BigDecimal servicePrice = billingTemplateVO.getValleyServicePrice();
// 计算该时段服务费
BigDecimal serviceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
BigDecimal serviceAmount = BigDecimal.ZERO;
// 如果优惠模板中服务费低于orderDetail快照中的服务费价则计算优惠金额
if (servicePrice.compareTo(orderDetail.getValleyServicePrice()) < 0) {
// 计算该时段服务费优惠金额 = 优惠前服务费 - 优惠后服务费
serviceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
}
// 汇总
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(electricityAmount);