diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index 6943e55b4..1f5c94d99 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -296,20 +296,39 @@ public abstract class AbstractProgramLogic implements InitializingBean { : BigDecimal.ZERO; orderDetail.setSharpUsedElectricity(sharpUsedElectricity); if (sharpUsedElectricity.compareTo(BigDecimal.ZERO) > 0) { - if (data.getSharpPrice() != null) { - orderDetail.setSharpPrice(new BigDecimal(data.getSharpPrice())); - } - if (data.getSharpAmount() != null) { - orderDetail.setSharpAmount(new BigDecimal(data.getSharpAmount())); - } + // 该时段电费单价 + BigDecimal electricityPrice = orderDetail.getSharpElectricityPrice(); + // 计算该时段电费 = 电费单价 x 用电量 - BigDecimal electricityPrice = orderDetail.getSharpElectricityPrice(); // 该时段电费单价 BigDecimal sharpElectricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN); + totalElectricityAmount = totalElectricityAmount.add(sharpElectricityAmount); + + // 该时段服务费单价 + BigDecimal servicePrice = orderDetail.getSharpServicePrice(); + // 计算该时段服务费 - BigDecimal servicePrice = orderDetail.getSharpServicePrice(); // 该时段服务费单价 BigDecimal sharpServiceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN); + totalServiceAmount = totalServiceAmount.add(sharpServiceAmount); + + // 该时段单价 = 电费单价 + 服务费单价 + BigDecimal price = electricityPrice.add(servicePrice); + + // 该时段金额 = 该时段电费 + 该时段服务费 + BigDecimal amount = sharpElectricityAmount.add(sharpServiceAmount); + + // if (data.getSharpPrice() != null) { + // orderDetail.setSharpPrice(new BigDecimal(data.getSharpPrice())); + // } + // if (data.getSharpAmount() != null) { + // orderDetail.setSharpAmount(new BigDecimal(data.getSharpAmount())); + // } + + orderDetail.setSharpPrice(price); + orderDetail.setSharpAmount(amount); + logger.info("更新订单详情:【{}】, 当前为尖时段, 电费单价:{}, 服务费单价:{}, 时段单价:{}, 耗电量:{}, 平台计算该时段消费金额:{}, 桩传的单价:{}, 桩传的金额:{}", + orderCode, electricityPrice, servicePrice, price, sharpUsedElectricity, amount, data.getSharpPrice(), data.getSharpAmount()); } // 峰时段用电量 @@ -318,20 +337,39 @@ public abstract class AbstractProgramLogic implements InitializingBean { : BigDecimal.ZERO; orderDetail.setPeakUsedElectricity(peakUsedElectricity); if (peakUsedElectricity.compareTo(BigDecimal.ZERO) > 0) { - if (data.getPeakPrice() != null) { - orderDetail.setPeakPrice(new BigDecimal(data.getPeakPrice())); - } - if (data.getPeakAmount() != null) { - orderDetail.setPeakAmount(new BigDecimal(data.getPeakAmount())); - } + // 该时段电费单价 + BigDecimal electricityPrice = orderDetail.getPeakElectricityPrice(); + // 计算该时段电费 = 电费单价 x 用电量 - BigDecimal electricityPrice = orderDetail.getPeakElectricityPrice(); // 该时段电费单价 BigDecimal peakElectricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN); + totalElectricityAmount = totalElectricityAmount.add(peakElectricityAmount); + + // 该时段服务费单价 + BigDecimal servicePrice = orderDetail.getPeakServicePrice(); + // 计算该时段服务费 - BigDecimal servicePrice = orderDetail.getPeakServicePrice(); // 该时段服务费单价 BigDecimal peakServiceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN); + totalServiceAmount = totalServiceAmount.add(peakServiceAmount); + + // 该时段单价 = 电费单价 + 服务费单价 + BigDecimal price = electricityPrice.add(servicePrice); + + // 该时段金额 = 该时段电费 + 该时段服务费 + BigDecimal amount = peakElectricityAmount.add(peakServiceAmount); + + // if (data.getPeakPrice() != null) { + // orderDetail.setPeakPrice(new BigDecimal(data.getPeakPrice())); + // } + // if (data.getPeakAmount() != null) { + // orderDetail.setPeakAmount(new BigDecimal(data.getPeakAmount())); + // } + + orderDetail.setPeakPrice(price); + orderDetail.setPeakAmount(amount); + logger.info("更新订单详情:【{}】, 当前为峰时段, 电费单价:{}, 服务费单价:{}, 时段单价:{}, 耗电量:{}, 平台计算该时段消费金额:{}, 桩传的单价:{}, 桩传的金额:{}", + orderCode, electricityPrice, servicePrice, price, peakUsedElectricity, amount, data.getPeakPrice(), data.getPeakAmount()); } // 平时段用电量 @@ -340,20 +378,39 @@ public abstract class AbstractProgramLogic implements InitializingBean { : BigDecimal.ZERO; orderDetail.setFlatUsedElectricity(flatUsedElectricity); if (flatUsedElectricity.compareTo(BigDecimal.ZERO) > 0) { - if (data.getFlatPrice() != null) { - orderDetail.setFlatPrice(new BigDecimal(data.getFlatPrice())); - } - if (data.getFlatAmount() != null) { - orderDetail.setFlatAmount(new BigDecimal(data.getFlatAmount())); - } + // 该时段电费单价 + BigDecimal electricityPrice = orderDetail.getFlatElectricityPrice(); + // 计算该时段电费 = 电费单价 x 用电量 - BigDecimal electricityPrice = orderDetail.getFlatElectricityPrice(); // 该时段电费单价 BigDecimal flatElectricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN); + totalElectricityAmount = totalElectricityAmount.add(flatElectricityAmount); + + // 该时段服务费单价 + BigDecimal servicePrice = orderDetail.getFlatServicePrice(); + // 计算该时段服务费 - BigDecimal servicePrice = orderDetail.getFlatServicePrice(); // 该时段服务费单价 BigDecimal flatServiceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN); + totalServiceAmount = totalServiceAmount.add(flatServiceAmount); + + // 该时段单价 = 电费单价 + 服务费单价 + BigDecimal price = electricityPrice.add(servicePrice); + + // 该时段金额 = 该时段电费 + 该时段服务费 + BigDecimal amount = flatElectricityAmount.add(flatServiceAmount); + + // if (data.getFlatPrice() != null) { + // orderDetail.setFlatPrice(new BigDecimal(data.getFlatPrice())); + // } + // if (data.getFlatAmount() != null) { + // orderDetail.setFlatAmount(new BigDecimal(data.getFlatAmount())); + // } + + orderDetail.setFlatPrice(price); + orderDetail.setFlatAmount(amount); + logger.info("更新订单详情:【{}】, 当前为平时段, 电费单价:{}, 服务费单价:{}, 时段单价:{}, 耗电量:{}, 平台计算该时段消费金额:{}, 桩传的单价:{}, 桩传的金额:{}", + orderCode, electricityPrice, servicePrice, price, flatUsedElectricity, amount, data.getFlatPrice(), data.getFlatAmount()); } // 谷时段用电量 @@ -362,20 +419,39 @@ public abstract class AbstractProgramLogic implements InitializingBean { : BigDecimal.ZERO; orderDetail.setValleyUsedElectricity(valleyUsedElectricity); if (valleyUsedElectricity.compareTo(BigDecimal.ZERO) > 0) { - if (data.getValleyPrice() != null) { - orderDetail.setValleyPrice(new BigDecimal(data.getValleyPrice())); - } - if (data.getValleyAmount() != null) { - orderDetail.setValleyAmount(new BigDecimal(data.getValleyAmount())); - } + // 该时段电费单价 + BigDecimal electricityPrice = orderDetail.getValleyElectricityPrice(); + // 计算该时段电费 = 电费单价 x 用电量 - BigDecimal electricityPrice = orderDetail.getValleyElectricityPrice(); // 该时段电费单价 BigDecimal valleyElectricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN); + totalElectricityAmount = totalElectricityAmount.add(valleyElectricityAmount); - // 计算该时段服务费 + + // 该时段服务费单价 BigDecimal servicePrice = orderDetail.getValleyServicePrice(); + + // 计算该时段服务费 BigDecimal valleyServiceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN); + totalServiceAmount = totalServiceAmount.add(valleyServiceAmount); + + // 该时段单价 = 电费单价 + 服务费单价 + BigDecimal price = electricityPrice.add(servicePrice); + + // 该时段金额 = 该时段电费 + 该时段服务费 + BigDecimal amount = valleyElectricityAmount.add(valleyServiceAmount); + + // if (data.getValleyPrice() != null) { + // orderDetail.setValleyPrice(new BigDecimal(data.getValleyPrice())); + // } + // if (data.getValleyAmount() != null) { + // orderDetail.setValleyAmount(new BigDecimal(data.getValleyAmount())); + // } + + orderDetail.setValleyPrice(price); + orderDetail.setValleyAmount(amount); + logger.info("更新订单详情:【{}】, 当前为谷时段, 电费单价:{}, 服务费单价:{}, 时段单价:{}, 耗电量:{}, 平台计算该时段消费金额:{}, 桩传的单价:{}, 桩传的金额:{}", + orderCode, electricityPrice, servicePrice, price, valleyUsedElectricity, amount, data.getValleyPrice(), data.getValleyAmount()); } // 如果算出来的 电费金额 + 服务费金额 != 总消费金额,则电费金额等于总消费金额 - 服务费金额