mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-06-25 01:29:47 +08:00
优化结算订单逻辑
This commit is contained in:
@@ -296,20 +296,39 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
: BigDecimal.ZERO;
|
: BigDecimal.ZERO;
|
||||||
orderDetail.setSharpUsedElectricity(sharpUsedElectricity);
|
orderDetail.setSharpUsedElectricity(sharpUsedElectricity);
|
||||||
if (sharpUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
|
if (sharpUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
if (data.getSharpPrice() != null) {
|
// 该时段电费单价
|
||||||
orderDetail.setSharpPrice(new BigDecimal(data.getSharpPrice()));
|
BigDecimal electricityPrice = orderDetail.getSharpElectricityPrice();
|
||||||
}
|
|
||||||
if (data.getSharpAmount() != null) {
|
|
||||||
orderDetail.setSharpAmount(new BigDecimal(data.getSharpAmount()));
|
|
||||||
}
|
|
||||||
// 计算该时段电费 = 电费单价 x 用电量
|
// 计算该时段电费 = 电费单价 x 用电量
|
||||||
BigDecimal electricityPrice = orderDetail.getSharpElectricityPrice(); // 该时段电费单价
|
|
||||||
BigDecimal sharpElectricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
BigDecimal sharpElectricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
|
||||||
totalElectricityAmount = totalElectricityAmount.add(sharpElectricityAmount);
|
totalElectricityAmount = totalElectricityAmount.add(sharpElectricityAmount);
|
||||||
|
|
||||||
|
// 该时段服务费单价
|
||||||
|
BigDecimal servicePrice = orderDetail.getSharpServicePrice();
|
||||||
|
|
||||||
// 计算该时段服务费
|
// 计算该时段服务费
|
||||||
BigDecimal servicePrice = orderDetail.getSharpServicePrice(); // 该时段服务费单价
|
|
||||||
BigDecimal sharpServiceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
BigDecimal sharpServiceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
|
||||||
totalServiceAmount = totalServiceAmount.add(sharpServiceAmount);
|
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;
|
: BigDecimal.ZERO;
|
||||||
orderDetail.setPeakUsedElectricity(peakUsedElectricity);
|
orderDetail.setPeakUsedElectricity(peakUsedElectricity);
|
||||||
if (peakUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
|
if (peakUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
if (data.getPeakPrice() != null) {
|
// 该时段电费单价
|
||||||
orderDetail.setPeakPrice(new BigDecimal(data.getPeakPrice()));
|
BigDecimal electricityPrice = orderDetail.getPeakElectricityPrice();
|
||||||
}
|
|
||||||
if (data.getPeakAmount() != null) {
|
|
||||||
orderDetail.setPeakAmount(new BigDecimal(data.getPeakAmount()));
|
|
||||||
}
|
|
||||||
// 计算该时段电费 = 电费单价 x 用电量
|
// 计算该时段电费 = 电费单价 x 用电量
|
||||||
BigDecimal electricityPrice = orderDetail.getPeakElectricityPrice(); // 该时段电费单价
|
|
||||||
BigDecimal peakElectricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
BigDecimal peakElectricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
|
||||||
totalElectricityAmount = totalElectricityAmount.add(peakElectricityAmount);
|
totalElectricityAmount = totalElectricityAmount.add(peakElectricityAmount);
|
||||||
|
|
||||||
|
// 该时段服务费单价
|
||||||
|
BigDecimal servicePrice = orderDetail.getPeakServicePrice();
|
||||||
|
|
||||||
// 计算该时段服务费
|
// 计算该时段服务费
|
||||||
BigDecimal servicePrice = orderDetail.getPeakServicePrice(); // 该时段服务费单价
|
|
||||||
BigDecimal peakServiceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
BigDecimal peakServiceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
|
||||||
totalServiceAmount = totalServiceAmount.add(peakServiceAmount);
|
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;
|
: BigDecimal.ZERO;
|
||||||
orderDetail.setFlatUsedElectricity(flatUsedElectricity);
|
orderDetail.setFlatUsedElectricity(flatUsedElectricity);
|
||||||
if (flatUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
|
if (flatUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
if (data.getFlatPrice() != null) {
|
// 该时段电费单价
|
||||||
orderDetail.setFlatPrice(new BigDecimal(data.getFlatPrice()));
|
BigDecimal electricityPrice = orderDetail.getFlatElectricityPrice();
|
||||||
}
|
|
||||||
if (data.getFlatAmount() != null) {
|
|
||||||
orderDetail.setFlatAmount(new BigDecimal(data.getFlatAmount()));
|
|
||||||
}
|
|
||||||
// 计算该时段电费 = 电费单价 x 用电量
|
// 计算该时段电费 = 电费单价 x 用电量
|
||||||
BigDecimal electricityPrice = orderDetail.getFlatElectricityPrice(); // 该时段电费单价
|
|
||||||
BigDecimal flatElectricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
BigDecimal flatElectricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
|
||||||
totalElectricityAmount = totalElectricityAmount.add(flatElectricityAmount);
|
totalElectricityAmount = totalElectricityAmount.add(flatElectricityAmount);
|
||||||
|
|
||||||
|
// 该时段服务费单价
|
||||||
|
BigDecimal servicePrice = orderDetail.getFlatServicePrice();
|
||||||
|
|
||||||
// 计算该时段服务费
|
// 计算该时段服务费
|
||||||
BigDecimal servicePrice = orderDetail.getFlatServicePrice(); // 该时段服务费单价
|
|
||||||
BigDecimal flatServiceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
BigDecimal flatServiceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
|
||||||
totalServiceAmount = totalServiceAmount.add(flatServiceAmount);
|
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;
|
: BigDecimal.ZERO;
|
||||||
orderDetail.setValleyUsedElectricity(valleyUsedElectricity);
|
orderDetail.setValleyUsedElectricity(valleyUsedElectricity);
|
||||||
if (valleyUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
|
if (valleyUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
if (data.getValleyPrice() != null) {
|
// 该时段电费单价
|
||||||
orderDetail.setValleyPrice(new BigDecimal(data.getValleyPrice()));
|
BigDecimal electricityPrice = orderDetail.getValleyElectricityPrice();
|
||||||
}
|
|
||||||
if (data.getValleyAmount() != null) {
|
|
||||||
orderDetail.setValleyAmount(new BigDecimal(data.getValleyAmount()));
|
|
||||||
}
|
|
||||||
// 计算该时段电费 = 电费单价 x 用电量
|
// 计算该时段电费 = 电费单价 x 用电量
|
||||||
BigDecimal electricityPrice = orderDetail.getValleyElectricityPrice(); // 该时段电费单价
|
|
||||||
BigDecimal valleyElectricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
BigDecimal valleyElectricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
|
||||||
totalElectricityAmount = totalElectricityAmount.add(valleyElectricityAmount);
|
totalElectricityAmount = totalElectricityAmount.add(valleyElectricityAmount);
|
||||||
// 计算该时段服务费
|
|
||||||
|
// 该时段服务费单价
|
||||||
BigDecimal servicePrice = orderDetail.getValleyServicePrice();
|
BigDecimal servicePrice = orderDetail.getValleyServicePrice();
|
||||||
|
|
||||||
|
// 计算该时段服务费
|
||||||
BigDecimal valleyServiceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
BigDecimal valleyServiceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
|
||||||
totalServiceAmount = totalServiceAmount.add(valleyServiceAmount);
|
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());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果算出来的 电费金额 + 服务费金额 != 总消费金额,则电费金额等于总消费金额 - 服务费金额
|
// 如果算出来的 电费金额 + 服务费金额 != 总消费金额,则电费金额等于总消费金额 - 服务费金额
|
||||||
|
|||||||
Reference in New Issue
Block a user