mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-06-13 11:49:49 +08:00
结算订单时计算金额, 最后保留2位小数
This commit is contained in:
@@ -399,6 +399,12 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService {
|
|||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询运营商订单报告
|
||||||
|
* 财务中心-财务详情-运营汇总
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private OrderReportDetail queryMerchantOrderReport(MerchantOrderReportDTO dto) {
|
private OrderReportDetail queryMerchantOrderReport(MerchantOrderReportDTO dto) {
|
||||||
// 进行数据汇总
|
// 进行数据汇总
|
||||||
OrderReportDetail report = new OrderReportDetail();
|
OrderReportDetail report = new OrderReportDetail();
|
||||||
@@ -420,6 +426,10 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService {
|
|||||||
BigDecimal amount = settleOrderReportVO.getSettleAmount() != null
|
BigDecimal amount = settleOrderReportVO.getSettleAmount() != null
|
||||||
? settleOrderReportVO.getSettleAmount()
|
? settleOrderReportVO.getSettleAmount()
|
||||||
: settleOrderReportVO.getTotalAmount();
|
: settleOrderReportVO.getTotalAmount();
|
||||||
|
|
||||||
|
// 2025年6月19日15点11分 修改逻辑, 使用实收金额进行计算
|
||||||
|
|
||||||
|
|
||||||
totalAmount = totalAmount.add(amount);
|
totalAmount = totalAmount.add(amount);
|
||||||
virtualAmount = virtualAmount.add(settleOrderReportVO.getVirtualAmount());
|
virtualAmount = virtualAmount.add(settleOrderReportVO.getVirtualAmount());
|
||||||
}
|
}
|
||||||
@@ -437,10 +447,6 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService {
|
|||||||
report.setTotalAmount(totalAmount);
|
report.setTotalAmount(totalAmount);
|
||||||
// 虚拟金额
|
// 虚拟金额
|
||||||
report.setVirtualAmount(virtualAmount);
|
report.setVirtualAmount(virtualAmount);
|
||||||
// 交易金额
|
|
||||||
// report.setTradeAmount(list.stream().map(SettleOrderReportVO::getTradeAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
||||||
// 交易手续费
|
|
||||||
// report.setTradeFee(list.stream().map(SettleOrderReportVO::getTradeFee).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
||||||
|
|
||||||
// 从清分账单中计算交易金额,交易手续费
|
// 从清分账单中计算交易金额,交易手续费
|
||||||
GetClearingBillDTO clearingBillDTO = GetClearingBillDTO.builder()
|
GetClearingBillDTO clearingBillDTO = GetClearingBillDTO.builder()
|
||||||
|
|||||||
@@ -495,11 +495,13 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
// 该时段电费单价
|
// 该时段电费单价
|
||||||
BigDecimal electricityPrice = orderDetail.getSharpElectricityPrice();
|
BigDecimal electricityPrice = orderDetail.getSharpElectricityPrice();
|
||||||
// 计算该时段电费 = 电费单价 x 用电量
|
// 计算该时段电费 = 电费单价 x 用电量
|
||||||
BigDecimal electricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
// BigDecimal electricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
BigDecimal electricityAmount = electricityPrice.multiply(sharpUsedElectricity);
|
||||||
// 该时段服务费单价
|
// 该时段服务费单价
|
||||||
BigDecimal servicePrice = orderDetail.getSharpServicePrice();
|
BigDecimal servicePrice = orderDetail.getSharpServicePrice();
|
||||||
// 计算该时段服务费 = 服务费单价 x 用电量
|
// 计算该时段服务费 = 服务费单价 x 用电量
|
||||||
BigDecimal serviceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
// BigDecimal serviceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
BigDecimal serviceAmount = servicePrice.multiply(sharpUsedElectricity);
|
||||||
// 汇总
|
// 汇总
|
||||||
totalElectricityAmount = totalElectricityAmount.add(electricityAmount);
|
totalElectricityAmount = totalElectricityAmount.add(electricityAmount);
|
||||||
totalServiceAmount = totalServiceAmount.add(serviceAmount);
|
totalServiceAmount = totalServiceAmount.add(serviceAmount);
|
||||||
@@ -519,11 +521,13 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
// 该时段电费单价
|
// 该时段电费单价
|
||||||
BigDecimal electricityPrice = orderDetail.getPeakElectricityPrice();
|
BigDecimal electricityPrice = orderDetail.getPeakElectricityPrice();
|
||||||
// 计算该时段电费 = 电费单价 x 用电量
|
// 计算该时段电费 = 电费单价 x 用电量
|
||||||
BigDecimal electricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
// BigDecimal electricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
BigDecimal electricityAmount = electricityPrice.multiply(peakUsedElectricity);
|
||||||
// 该时段服务费单价
|
// 该时段服务费单价
|
||||||
BigDecimal servicePrice = orderDetail.getPeakServicePrice();
|
BigDecimal servicePrice = orderDetail.getPeakServicePrice();
|
||||||
// 计算该时段服务费 = 服务费单价 x 用电量
|
// 计算该时段服务费 = 服务费单价 x 用电量
|
||||||
BigDecimal serviceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
// BigDecimal serviceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
BigDecimal serviceAmount = servicePrice.multiply(peakUsedElectricity);
|
||||||
// 汇总
|
// 汇总
|
||||||
totalElectricityAmount = totalElectricityAmount.add(electricityAmount);
|
totalElectricityAmount = totalElectricityAmount.add(electricityAmount);
|
||||||
totalServiceAmount = totalServiceAmount.add(serviceAmount);
|
totalServiceAmount = totalServiceAmount.add(serviceAmount);
|
||||||
@@ -543,11 +547,13 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
// 该时段电费单价
|
// 该时段电费单价
|
||||||
BigDecimal electricityPrice = orderDetail.getFlatElectricityPrice();
|
BigDecimal electricityPrice = orderDetail.getFlatElectricityPrice();
|
||||||
// 计算该时段电费 = 电费单价 x 用电量
|
// 计算该时段电费 = 电费单价 x 用电量
|
||||||
BigDecimal electricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
// BigDecimal electricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
BigDecimal electricityAmount = electricityPrice.multiply(flatUsedElectricity);
|
||||||
// 该时段服务费单价
|
// 该时段服务费单价
|
||||||
BigDecimal servicePrice = orderDetail.getFlatServicePrice();
|
BigDecimal servicePrice = orderDetail.getFlatServicePrice();
|
||||||
// 计算该时段服务费 = 服务费单价 x 用电量
|
// 计算该时段服务费 = 服务费单价 x 用电量
|
||||||
BigDecimal serviceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
// BigDecimal serviceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
BigDecimal serviceAmount = servicePrice.multiply(flatUsedElectricity);
|
||||||
// 汇总
|
// 汇总
|
||||||
totalElectricityAmount = totalElectricityAmount.add(electricityAmount);
|
totalElectricityAmount = totalElectricityAmount.add(electricityAmount);
|
||||||
totalServiceAmount = totalServiceAmount.add(serviceAmount);
|
totalServiceAmount = totalServiceAmount.add(serviceAmount);
|
||||||
@@ -567,11 +573,13 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
// 该时段电费单价
|
// 该时段电费单价
|
||||||
BigDecimal electricityPrice = orderDetail.getValleyElectricityPrice();
|
BigDecimal electricityPrice = orderDetail.getValleyElectricityPrice();
|
||||||
// 计算该时段电费 = 电费单价 x 用电量
|
// 计算该时段电费 = 电费单价 x 用电量
|
||||||
BigDecimal electricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
// BigDecimal electricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
BigDecimal electricityAmount = electricityPrice.multiply(valleyUsedElectricity);
|
||||||
// 该时段服务费单价
|
// 该时段服务费单价
|
||||||
BigDecimal servicePrice = orderDetail.getValleyServicePrice();
|
BigDecimal servicePrice = orderDetail.getValleyServicePrice();
|
||||||
// 计算该时段服务费 = 服务费单价 x 用电量
|
// 计算该时段服务费 = 服务费单价 x 用电量
|
||||||
BigDecimal serviceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
// BigDecimal serviceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||||
|
BigDecimal serviceAmount = servicePrice.multiply(valleyUsedElectricity);
|
||||||
// 汇总
|
// 汇总
|
||||||
totalElectricityAmount = totalElectricityAmount.add(electricityAmount);
|
totalElectricityAmount = totalElectricityAmount.add(electricityAmount);
|
||||||
totalServiceAmount = totalServiceAmount.add(serviceAmount);
|
totalServiceAmount = totalServiceAmount.add(serviceAmount);
|
||||||
@@ -588,8 +596,8 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
// 尖峰平谷用电量汇总
|
// 尖峰平谷用电量汇总
|
||||||
BigDecimal sumUsedElectricity = sharpUsedElectricity.add(peakUsedElectricity).add(flatUsedElectricity).add(valleyUsedElectricity);
|
BigDecimal sumUsedElectricity = sharpUsedElectricity.add(peakUsedElectricity).add(flatUsedElectricity).add(valleyUsedElectricity);
|
||||||
|
|
||||||
// 平台计算的总消费金额 平台计算总电费金额 + 平台计算总服务费金额
|
// 平台计算的总消费金额 平台计算总电费金额 + 平台计算总服务费金额, 保留2位小数
|
||||||
BigDecimal computeTotalAmount = totalElectricityAmount.add(totalServiceAmount);
|
BigDecimal computeTotalAmount = totalElectricityAmount.add(totalServiceAmount).setScale(2, RoundingMode.DOWN);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
如果算出来的 电费金额 + 服务费金额 != 总消费金额,并且尖峰平谷总用电量大于0, 则使用平台计算金额
|
如果算出来的 电费金额 + 服务费金额 != 总消费金额,并且尖峰平谷总用电量大于0, 则使用平台计算金额
|
||||||
@@ -623,6 +631,8 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
// 如果totalElectricityAmount + totalServiceAmount != dataOrderAmount,则totalElectricityAmount = dataOrderAmount - totalServiceAmount
|
// 如果totalElectricityAmount + totalServiceAmount != dataOrderAmount,则totalElectricityAmount = dataOrderAmount - totalServiceAmount
|
||||||
if (totalElectricityAmount.add(totalServiceAmount).compareTo(dataOrderAmount) != 0) {
|
if (totalElectricityAmount.add(totalServiceAmount).compareTo(dataOrderAmount) != 0) {
|
||||||
logger.info("updateOrderBasicInfoAndOrderDetail结算订单:【{}】, 电费金额({}) + 服务费金额({}) != 订单金额({}), 电费金额设置为订单金额- 服务费金额", orderCode, totalElectricityAmount, totalServiceAmount, dataOrderAmount);
|
logger.info("updateOrderBasicInfoAndOrderDetail结算订单:【{}】, 电费金额({}) + 服务费金额({}) != 订单金额({}), 电费金额设置为订单金额- 服务费金额", orderCode, totalElectricityAmount, totalServiceAmount, dataOrderAmount);
|
||||||
|
// 订单总服务费金额保留2位小数
|
||||||
|
totalServiceAmount = totalServiceAmount.setScale(2, RoundingMode.DOWN);
|
||||||
totalElectricityAmount = dataOrderAmount.subtract(totalServiceAmount);
|
totalElectricityAmount = dataOrderAmount.subtract(totalServiceAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user