优化结算订单逻辑

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