mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 02:55:04 +08:00
update 计算订单详情中的总服务费金额
This commit is contained in:
@@ -2,10 +2,7 @@ package com.jsowell.pile.domain;
|
||||
|
||||
import com.jsowell.common.annotation.Excel;
|
||||
import com.jsowell.common.core.domain.BaseEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.*;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
@@ -17,7 +14,8 @@ import java.math.BigDecimal;
|
||||
* @author jsowell
|
||||
* @date 2022-09-30
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
|
||||
@@ -275,12 +275,15 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
virtualAmount = new BigDecimal(orderAmount.toString());
|
||||
}
|
||||
|
||||
// 剩余需要退回的金额 residue
|
||||
// 退款金额 = 支付金额 - 订单消费金额 剩余需要退回的金额 residue
|
||||
BigDecimal residue = payAmount.subtract(orderAmount);
|
||||
|
||||
// 结算金额 = 消费金额 - 虚拟金额 - 优惠金额
|
||||
BigDecimal settleAmount = orderAmount.subtract(virtualAmount);
|
||||
|
||||
// 把交易记录中的用电量,金额等信息 更新到orderBasicInfo和orderDetail
|
||||
orderBasicInfo.setVirtualAmount(virtualAmount); // 虚拟金额
|
||||
orderBasicInfo.setSettleAmount(orderAmount.subtract(virtualAmount)); // 结算金额
|
||||
orderBasicInfo.setSettleAmount(settleAmount); // 结算金额
|
||||
orderBasicInfo.setOrderStatus(OrderStatusEnum.ORDER_COMPLETE.getValue());
|
||||
orderBasicInfo.setReason(data.getStopReasonMsg()); // 充电停止原因
|
||||
orderBasicInfo.setSettlementTime(DateUtils.getNowDate()); // 结算时间
|
||||
@@ -301,6 +304,8 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
try {
|
||||
// 总电费金额
|
||||
BigDecimal totalElectricityAmount = BigDecimal.ZERO;
|
||||
// 总服务费金额
|
||||
BigDecimal totalServiceAmount = BigDecimal.ZERO;
|
||||
|
||||
// 尖时段用电量
|
||||
String sharpUsedElectricity = data.getSharpUsedElectricity();
|
||||
@@ -312,11 +317,16 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
if (data.getSharpAmount() != null) {
|
||||
orderDetail.setSharpAmount(new BigDecimal(data.getSharpAmount()));
|
||||
}
|
||||
// 计算该时段电费
|
||||
BigDecimal multiply = orderDetail.getSharpElectricityPrice()
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal sharpElectricityAmount = orderDetail.getSharpElectricityPrice()
|
||||
.multiply(new BigDecimal(sharpUsedElectricity))
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
totalElectricityAmount = totalElectricityAmount.add(multiply);
|
||||
totalElectricityAmount = totalElectricityAmount.add(sharpElectricityAmount);
|
||||
// 计算该时段服务费
|
||||
BigDecimal sharpServiceAmount = orderDetail.getSharpServicePrice()
|
||||
.multiply(new BigDecimal(sharpUsedElectricity))
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
totalServiceAmount = totalServiceAmount.add(sharpServiceAmount);
|
||||
}
|
||||
|
||||
// 峰时段用电量
|
||||
@@ -329,11 +339,16 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
if (data.getPeakAmount() != null) {
|
||||
orderDetail.setPeakAmount(new BigDecimal(data.getPeakAmount()));
|
||||
}
|
||||
// 计算该时段电费
|
||||
BigDecimal multiply = orderDetail.getPeakElectricityPrice()
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal peakElectricityAmount = orderDetail.getPeakElectricityPrice()
|
||||
.multiply(new BigDecimal(peakUsedElectricity))
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
totalElectricityAmount = totalElectricityAmount.add(multiply);
|
||||
totalElectricityAmount = totalElectricityAmount.add(peakElectricityAmount);
|
||||
// 计算该时段服务费
|
||||
BigDecimal peakServiceAmount = orderDetail.getPeakServicePrice()
|
||||
.multiply(new BigDecimal(peakUsedElectricity))
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
totalServiceAmount = totalServiceAmount.add(peakServiceAmount);
|
||||
}
|
||||
|
||||
// 平时段用电量
|
||||
@@ -346,11 +361,16 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
if (data.getFlatAmount() != null) {
|
||||
orderDetail.setFlatAmount(new BigDecimal(data.getFlatAmount()));
|
||||
}
|
||||
// 计算该时段电费
|
||||
BigDecimal multiply = orderDetail.getFlatElectricityPrice()
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal flatElectricityAmount = orderDetail.getFlatElectricityPrice()
|
||||
.multiply(new BigDecimal(flatUsedElectricity))
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
totalElectricityAmount = totalElectricityAmount.add(multiply);
|
||||
totalElectricityAmount = totalElectricityAmount.add(flatElectricityAmount);
|
||||
// 计算该时段服务费
|
||||
BigDecimal flatServiceAmount = orderDetail.getFlatServicePrice()
|
||||
.multiply(new BigDecimal(flatUsedElectricity))
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
totalServiceAmount = totalServiceAmount.add(flatServiceAmount);
|
||||
}
|
||||
|
||||
// 谷时段用电量
|
||||
@@ -363,19 +383,27 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
if (data.getValleyAmount() != null) {
|
||||
orderDetail.setValleyAmount(new BigDecimal(data.getValleyAmount()));
|
||||
}
|
||||
// 计算该时段电费
|
||||
BigDecimal multiply = orderDetail.getValleyElectricityPrice()
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal valleyElectricityAmount = orderDetail.getValleyElectricityPrice()
|
||||
.multiply(new BigDecimal(valleyUsedElectricity))
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
totalElectricityAmount = totalElectricityAmount.add(multiply);
|
||||
totalElectricityAmount = totalElectricityAmount.add(valleyElectricityAmount);
|
||||
// 计算该时段服务费
|
||||
BigDecimal valleyServiceAmount = orderDetail.getValleyServicePrice()
|
||||
.multiply(new BigDecimal(valleyUsedElectricity))
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
totalServiceAmount = totalServiceAmount.add(valleyServiceAmount);
|
||||
}
|
||||
|
||||
// 如果算出来的电费金额大于总消费金额,则电费金额等于总消费金额
|
||||
if (totalElectricityAmount.compareTo(orderAmount) > 0) {
|
||||
totalElectricityAmount = orderAmount;
|
||||
// 如果算出来的 电费金额 + 服务费金额 != 总消费金额,则电费金额等于总消费金额 - 服务费金额
|
||||
if (totalElectricityAmount.add(totalServiceAmount).compareTo(orderAmount) != 0) {
|
||||
totalElectricityAmount = orderAmount.subtract(totalServiceAmount);
|
||||
}
|
||||
|
||||
// 电费总金额
|
||||
orderDetail.setTotalElectricityAmount(totalElectricityAmount);
|
||||
orderDetail.setTotalServiceAmount(orderAmount.subtract(totalElectricityAmount));
|
||||
// 服务费总金额
|
||||
orderDetail.setTotalServiceAmount(totalServiceAmount);
|
||||
orderDetail.setTotalUsedElectricity(new BigDecimal(data.getTotalElectricity())); // 总用电量
|
||||
orderDetail.setTotalOrderAmount(orderAmount); // 订单总金额
|
||||
} catch (Exception e) {
|
||||
|
||||
Reference in New Issue
Block a user