折扣后电费不能大于原始电费金额, 折扣后服务费不能大于原始服务费金额

This commit is contained in:
Guoqs
2025-04-11 11:17:09 +08:00
parent a84d5dcd9a
commit 05d35978cc

View File

@@ -957,6 +957,8 @@ public abstract class AbstractProgramLogic implements InitializingBean {
// 尖时段用电量
BigDecimal sharpUsedElectricity = orderDetail.getSharpUsedElectricity();
if (sharpUsedElectricity != null) {
logger.info("计算订单折扣V2:【{}】, 当前为尖时段, 用电量:{}, orderDetail记录的单价({} + {}), 优惠模板单价({} - {})",
orderCode, sharpUsedElectricity, orderDetail.getSharpElectricityPrice(), orderDetail.getSharpServicePrice(), billingTemplateVO.getSharpElectricityPrice(), billingTemplateVO.getSharpServicePrice());
// 该时段电费单价与orderDetail中的电价比较取最小值
// BigDecimal electricityPrice = billingTemplateVO.getSharpElectricityPrice();
BigDecimal electricityPrice = getMinWithPositiveConstraint(billingTemplateVO.getSharpElectricityPrice(), orderDetail.getSharpElectricityPrice());
@@ -978,6 +980,8 @@ public abstract class AbstractProgramLogic implements InitializingBean {
// 峰时段用电量
BigDecimal peakUsedElectricity = orderDetail.getPeakUsedElectricity();
if (peakUsedElectricity != null) {
logger.info("计算订单折扣V2:【{}】, 当前为峰时段, 用电量:{}, orderDetail记录的单价({} + {}), 优惠模板单价({} - {})",
orderCode, peakUsedElectricity, orderDetail.getPeakElectricityPrice(), orderDetail.getPeakServicePrice(), billingTemplateVO.getPeakElectricityPrice(), billingTemplateVO.getPeakServicePrice());
// 计算该时段电费单价
BigDecimal electricityPrice = getMinWithPositiveConstraint(billingTemplateVO.getPeakElectricityPrice(), orderDetail.getPeakElectricityPrice());
// 计算该时段电费 = 电费单价 x 用电量
@@ -996,6 +1000,8 @@ public abstract class AbstractProgramLogic implements InitializingBean {
// 平时段用电量
BigDecimal flatUsedElectricity = orderDetail.getFlatUsedElectricity();
if (flatUsedElectricity != null) {
logger.info("计算订单折扣V2:【{}】, 当前为平时段, 用电量:{}, orderDetail记录的单价({} + {}), 优惠模板单价({} - {})",
orderCode, flatUsedElectricity, orderDetail.getFlatElectricityPrice(), orderDetail.getFlatServicePrice(), billingTemplateVO.getFlatElectricityPrice(), billingTemplateVO.getFlatServicePrice());
// 计算该时段电费单价
BigDecimal electricityPrice = getMinWithPositiveConstraint(billingTemplateVO.getFlatElectricityPrice(), orderDetail.getFlatElectricityPrice());
// 计算该时段电费 = 电费单价 x 用电量
@@ -1014,6 +1020,8 @@ public abstract class AbstractProgramLogic implements InitializingBean {
// 谷时段用电量
BigDecimal valleyUsedElectricity = orderDetail.getValleyUsedElectricity();
if (valleyUsedElectricity != null) {
logger.info("计算订单折扣V2:【{}】, 当前为谷时段, 用电量:{}, orderDetail记录的单价({} + {}), 优惠模板单价({} - {})",
orderCode, valleyUsedElectricity, orderDetail.getValleyElectricityPrice(), orderDetail.getValleyServicePrice(), billingTemplateVO.getValleyElectricityPrice(), billingTemplateVO.getValleyServicePrice());
// 计算该时段电费单价
BigDecimal electricityPrice = getMinWithPositiveConstraint(billingTemplateVO.getValleyElectricityPrice(), orderDetail.getValleyElectricityPrice());
// 计算该时段电费 = 电费单价 x 用电量
@@ -1093,6 +1101,7 @@ public abstract class AbstractProgramLogic implements InitializingBean {
* @return
*/
private BigDecimal getMinWithPositiveConstraint(BigDecimal num1, BigDecimal num2) {
logger.info("获取较小值并且满足大于0的条件, num1:{}, num2:{}", num1, num2);
BigDecimal valid1 = num1.compareTo(BigDecimal.ZERO) > 0 ? num1 : null;
BigDecimal valid2 = num2.compareTo(BigDecimal.ZERO) > 0 ? num2 : null;