订单用电量,汇总数据和data中数据不相等,取汇总的数据

This commit is contained in:
2024-03-18 09:59:19 +08:00
parent 04afd5aa53
commit dc8933d39e
2 changed files with 3542 additions and 5716 deletions

View File

@@ -424,9 +424,11 @@ public abstract class AbstractProgramLogic implements InitializingBean {
BigDecimal totalServiceAmount = BigDecimal.ZERO;
// 尖时段用电量
String sharpUsedElectricity = data.getSharpUsedElectricity();
if (sharpUsedElectricity != null) {
orderDetail.setSharpUsedElectricity(new BigDecimal(sharpUsedElectricity));
BigDecimal sharpUsedElectricity = StringUtils.isNotBlank(data.getSharpUsedElectricity())
? new BigDecimal(data.getSharpUsedElectricity())
: BigDecimal.ZERO;
orderDetail.setSharpUsedElectricity(sharpUsedElectricity);
if (sharpUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
if (data.getSharpPrice() != null) {
orderDetail.setSharpPrice(new BigDecimal(data.getSharpPrice()));
}
@@ -435,20 +437,22 @@ public abstract class AbstractProgramLogic implements InitializingBean {
}
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal sharpElectricityAmount = orderDetail.getSharpElectricityPrice()
.multiply(new BigDecimal(sharpUsedElectricity))
.multiply(sharpUsedElectricity)
.setScale(2, RoundingMode.DOWN);
totalElectricityAmount = totalElectricityAmount.add(sharpElectricityAmount);
// 计算该时段服务费
BigDecimal sharpServiceAmount = orderDetail.getSharpServicePrice()
.multiply(new BigDecimal(sharpUsedElectricity))
.multiply(sharpUsedElectricity)
.setScale(2, RoundingMode.DOWN);
totalServiceAmount = totalServiceAmount.add(sharpServiceAmount);
}
// 峰时段用电量
String peakUsedElectricity = data.getPeakUsedElectricity();
if (peakUsedElectricity != null) {
orderDetail.setPeakUsedElectricity(new BigDecimal(peakUsedElectricity));
BigDecimal peakUsedElectricity = StringUtils.isNotBlank(data.getPeakUsedElectricity())
? new BigDecimal(data.getPeakUsedElectricity())
: BigDecimal.ZERO;
orderDetail.setPeakUsedElectricity(peakUsedElectricity);
if (peakUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
if (data.getPeakPrice() != null) {
orderDetail.setPeakPrice(new BigDecimal(data.getPeakPrice()));
}
@@ -457,20 +461,22 @@ public abstract class AbstractProgramLogic implements InitializingBean {
}
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal peakElectricityAmount = orderDetail.getPeakElectricityPrice()
.multiply(new BigDecimal(peakUsedElectricity))
.multiply(peakUsedElectricity)
.setScale(2, RoundingMode.DOWN);
totalElectricityAmount = totalElectricityAmount.add(peakElectricityAmount);
// 计算该时段服务费
BigDecimal peakServiceAmount = orderDetail.getPeakServicePrice()
.multiply(new BigDecimal(peakUsedElectricity))
.multiply(peakUsedElectricity)
.setScale(2, RoundingMode.DOWN);
totalServiceAmount = totalServiceAmount.add(peakServiceAmount);
}
// 平时段用电量
String flatUsedElectricity = data.getFlatUsedElectricity();
if (flatUsedElectricity != null) {
orderDetail.setFlatUsedElectricity(new BigDecimal(flatUsedElectricity));
BigDecimal flatUsedElectricity = StringUtils.isNotBlank(data.getFlatUsedElectricity())
? new BigDecimal(data.getFlatUsedElectricity())
: BigDecimal.ZERO;
orderDetail.setFlatUsedElectricity(flatUsedElectricity);
if (flatUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
if (data.getFlatPrice() != null) {
orderDetail.setFlatPrice(new BigDecimal(data.getFlatPrice()));
}
@@ -479,20 +485,22 @@ public abstract class AbstractProgramLogic implements InitializingBean {
}
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal flatElectricityAmount = orderDetail.getFlatElectricityPrice()
.multiply(new BigDecimal(flatUsedElectricity))
.multiply(flatUsedElectricity)
.setScale(2, RoundingMode.DOWN);
totalElectricityAmount = totalElectricityAmount.add(flatElectricityAmount);
// 计算该时段服务费
BigDecimal flatServiceAmount = orderDetail.getFlatServicePrice()
.multiply(new BigDecimal(flatUsedElectricity))
.multiply(flatUsedElectricity)
.setScale(2, RoundingMode.DOWN);
totalServiceAmount = totalServiceAmount.add(flatServiceAmount);
}
// 谷时段用电量
String valleyUsedElectricity = data.getValleyUsedElectricity();
if (valleyUsedElectricity != null) {
orderDetail.setValleyUsedElectricity(new BigDecimal(valleyUsedElectricity));
BigDecimal valleyUsedElectricity = StringUtils.isNotBlank(data.getValleyUsedElectricity())
? new BigDecimal(data.getValleyUsedElectricity())
: BigDecimal.ZERO;
orderDetail.setValleyUsedElectricity(valleyUsedElectricity);
if (valleyUsedElectricity.compareTo(BigDecimal.ZERO) > 0) {
if (data.getValleyPrice() != null) {
orderDetail.setValleyPrice(new BigDecimal(data.getValleyPrice()));
}
@@ -501,12 +509,12 @@ public abstract class AbstractProgramLogic implements InitializingBean {
}
// 计算该时段电费 = 电费单价 x 用电量
BigDecimal valleyElectricityAmount = orderDetail.getValleyElectricityPrice()
.multiply(new BigDecimal(valleyUsedElectricity))
.multiply(valleyUsedElectricity)
.setScale(2, RoundingMode.DOWN);
totalElectricityAmount = totalElectricityAmount.add(valleyElectricityAmount);
// 计算该时段服务费
BigDecimal valleyServiceAmount = orderDetail.getValleyServicePrice()
.multiply(new BigDecimal(valleyUsedElectricity))
.multiply(valleyUsedElectricity)
.setScale(2, RoundingMode.DOWN);
totalServiceAmount = totalServiceAmount.add(valleyServiceAmount);
}
@@ -520,8 +528,16 @@ public abstract class AbstractProgramLogic implements InitializingBean {
orderDetail.setTotalElectricityAmount(totalElectricityAmount);
// 服务费总金额
orderDetail.setTotalServiceAmount(totalServiceAmount);
// 用电量
orderDetail.setTotalUsedElectricity(new BigDecimal(data.getTotalElectricity()));
// 尖峰平谷用电量汇总
BigDecimal sumUsedElectricity = sharpUsedElectricity.add(peakUsedElectricity)
.add(flatUsedElectricity).add(valleyUsedElectricity);
// data中的总用电量
BigDecimal totalElectricity = new BigDecimal(data.getTotalElectricity());
if (sumUsedElectricity.compareTo(totalElectricity) != 0) {
// 汇总数据和data中数据不相等取汇总的数据
totalElectricity = sumUsedElectricity;
}
orderDetail.setTotalUsedElectricity(totalElectricity);
// 订单总金额
orderDetail.setTotalOrderAmount(orderAmount);
} catch (Exception e) {