优化结算订单逻辑

This commit is contained in:
Guoqs
2025-03-25 17:05:25 +08:00
parent 8459098231
commit 0e0f6d6823

View File

@@ -303,14 +303,12 @@ public abstract class AbstractProgramLogic implements InitializingBean {
orderDetail.setSharpAmount(new BigDecimal(data.getSharpAmount()));
}
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal sharpElectricityAmount = orderDetail.getSharpElectricityPrice()
.multiply(sharpUsedElectricity)
.setScale(2, RoundingMode.DOWN);
BigDecimal electricityPrice = orderDetail.getSharpElectricityPrice(); // 该时段电费单价
BigDecimal sharpElectricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
totalElectricityAmount = totalElectricityAmount.add(sharpElectricityAmount);
// 计算该时段服务费
BigDecimal sharpServiceAmount = orderDetail.getSharpServicePrice()
.multiply(sharpUsedElectricity)
.setScale(2, RoundingMode.DOWN);
BigDecimal servicePrice = orderDetail.getSharpServicePrice(); // 该时段服务费单价
BigDecimal sharpServiceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
totalServiceAmount = totalServiceAmount.add(sharpServiceAmount);
}
@@ -327,14 +325,12 @@ public abstract class AbstractProgramLogic implements InitializingBean {
orderDetail.setPeakAmount(new BigDecimal(data.getPeakAmount()));
}
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal peakElectricityAmount = orderDetail.getPeakElectricityPrice()
.multiply(peakUsedElectricity)
.setScale(2, RoundingMode.DOWN);
BigDecimal electricityPrice = orderDetail.getPeakElectricityPrice(); // 该时段电费单价
BigDecimal peakElectricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
totalElectricityAmount = totalElectricityAmount.add(peakElectricityAmount);
// 计算该时段服务费
BigDecimal peakServiceAmount = orderDetail.getPeakServicePrice()
.multiply(peakUsedElectricity)
.setScale(2, RoundingMode.DOWN);
BigDecimal servicePrice = orderDetail.getPeakServicePrice(); // 该时段服务费单价
BigDecimal peakServiceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
totalServiceAmount = totalServiceAmount.add(peakServiceAmount);
}
@@ -351,14 +347,12 @@ public abstract class AbstractProgramLogic implements InitializingBean {
orderDetail.setFlatAmount(new BigDecimal(data.getFlatAmount()));
}
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal flatElectricityAmount = orderDetail.getFlatElectricityPrice()
.multiply(flatUsedElectricity)
.setScale(2, RoundingMode.DOWN);
BigDecimal electricityPrice = orderDetail.getFlatElectricityPrice(); // 该时段电费单价
BigDecimal flatElectricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
totalElectricityAmount = totalElectricityAmount.add(flatElectricityAmount);
// 计算该时段服务费
BigDecimal flatServiceAmount = orderDetail.getFlatServicePrice()
.multiply(flatUsedElectricity)
.setScale(2, RoundingMode.DOWN);
BigDecimal servicePrice = orderDetail.getFlatServicePrice(); // 该时段服务费单价
BigDecimal flatServiceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
totalServiceAmount = totalServiceAmount.add(flatServiceAmount);
}
@@ -375,14 +369,12 @@ public abstract class AbstractProgramLogic implements InitializingBean {
orderDetail.setValleyAmount(new BigDecimal(data.getValleyAmount()));
}
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal valleyElectricityAmount = orderDetail.getValleyElectricityPrice()
.multiply(valleyUsedElectricity)
.setScale(2, RoundingMode.DOWN);
BigDecimal electricityPrice = orderDetail.getValleyElectricityPrice(); // 该时段电费单价
BigDecimal valleyElectricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
totalElectricityAmount = totalElectricityAmount.add(valleyElectricityAmount);
// 计算该时段服务费
BigDecimal valleyServiceAmount = orderDetail.getValleyServicePrice()
.multiply(valleyUsedElectricity)
.setScale(2, RoundingMode.DOWN);
BigDecimal servicePrice = orderDetail.getValleyServicePrice();
BigDecimal valleyServiceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
totalServiceAmount = totalServiceAmount.add(valleyServiceAmount);
}
@@ -396,16 +388,10 @@ public abstract class AbstractProgramLogic implements InitializingBean {
// 服务费总金额
orderDetail.setTotalServiceAmount(totalServiceAmount);
// 尖峰平谷用电量汇总
BigDecimal sumUsedElectricity = sharpUsedElectricity.add(peakUsedElectricity)
.add(flatUsedElectricity).add(valleyUsedElectricity);
BigDecimal sumUsedElectricity = sharpUsedElectricity.add(peakUsedElectricity).add(flatUsedElectricity).add(valleyUsedElectricity);
// data中的总用电量
BigDecimal totalElectricity = new BigDecimal(StringUtils.isBlank(data.getTotalElectricity()) ? Constants.ZERO : data.getTotalElectricity());
// if (sumUsedElectricity.compareTo(totalElectricity) != 0) {
// // 汇总数据和data中数据不相等取汇总的数据
// totalElectricity = sumUsedElectricity;
// }
// totalElectricity = sumUsedElectricity与totalElectricity, 取最大的值
orderDetail.setTotalUsedElectricity(totalElectricity.max(sumUsedElectricity));
orderDetail.setTotalUsedElectricity(totalElectricity.max(sumUsedElectricity)); // sumUsedElectricitytotalElectricity对比, 取最大的值
// 订单总金额
orderDetail.setTotalOrderAmount(orderAmount);
} catch (Exception e) {