This commit is contained in:
2023-09-01 09:07:38 +08:00
parent 504a8e2f8d
commit 554b1482ee

View File

@@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -549,6 +550,10 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
BigDecimal totalOrderAmount = BigDecimal.ZERO;
BigDecimal totalVirtualAmount = BigDecimal.ZERO;
BigDecimal totalSettleAmount = BigDecimal.ZERO;
// 总手续费
BigDecimal totalFeeAmount = BigDecimal.ZERO;
BigDecimal totalTradeAmount = BigDecimal.ZERO;
List<String> orderCodeList = Lists.newArrayList();
for (OrderListVO vo : orderListVOS) {
// 统计结算金额大于0的
@@ -598,6 +603,11 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
// 结算金额
totalSettleAmount = totalSettleAmount.add(settleAmount);
// 计算手续费 = 结算金额 * 0.55%
SplitSettleAmountVO splitSettleAmountVO = splitSettleAmount(settleAmount);
totalFeeAmount = totalFeeAmount.add(splitSettleAmountVO.getFeeAmount());
totalTradeAmount = totalTradeAmount.add(splitSettleAmountVO.getTradeAmount());
}
// 计算报表
@@ -616,9 +626,9 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
settleOrderReport.setTradeDate(tradeDate);
settleOrderReport.setOrderCodes(Joiner.on(",").join(orderCodeList));
// 计算手续费 = 结算金额 * 0.55%
SplitSettleAmountVO splitSettleAmountVO = splitSettleAmount(totalSettleAmount);
settleOrderReport.setTradeFee(splitSettleAmountVO.getFeeAmount());
settleOrderReport.setTradeAmount(splitSettleAmountVO.getTradeAmount());
// SplitSettleAmountVO splitSettleAmountVO = splitSettleAmount(totalSettleAmount);
settleOrderReport.setTradeFee(totalFeeAmount);
settleOrderReport.setTradeAmount(totalTradeAmount);
// 根据站点id和交易日期查询
SettleOrderReport selectResult = this.selectByStationIdAndDate(stationId, tradeDate);
if (selectResult != null) {
@@ -641,7 +651,7 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
return resultVO;
}
// 计算手续费 = 结算金额 * 0.55%
BigDecimal fee = settleAmount.multiply(new BigDecimal(Constants.FEE_RATES));
BigDecimal fee = settleAmount.multiply(new BigDecimal(Constants.FEE_RATES)).setScale(2, RoundingMode.UP);
resultVO.setSettleAmount(settleAmount);
resultVO.setFeeAmount(fee);
resultVO.setTradeAmount(settleAmount.subtract(fee));
@@ -649,6 +659,39 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
}
public static void main(String[] args) {
List<String> list = Lists.newArrayList(
"17.56",
"26.13",
"11.79",
"34.80",
"12.72",
"18.03",
"19.80",
"66.76",
"15.27",
"37.50",
"28.45",
"24.81",
"16.75");
// 总手续费
BigDecimal totalFeeAmount = BigDecimal.ZERO;
BigDecimal totalTradeAmount = BigDecimal.ZERO;
for (String s : list) {
BigDecimal settleAmount = new BigDecimal(s);
BigDecimal feeAmount = settleAmount.multiply(new BigDecimal(Constants.FEE_RATES)).setScale(2, RoundingMode.UP);
// 交易金额 = 结算金额 - 手续费
BigDecimal tradeAmount = settleAmount.subtract(feeAmount);
totalFeeAmount = totalFeeAmount.add(feeAmount);
totalTradeAmount = totalTradeAmount.add(tradeAmount);
}
System.out.println("总手续费" + totalFeeAmount);
System.out.println("总交易金额" + totalTradeAmount);
BigDecimal settleAmount = new BigDecimal("330.37");
// 计算手续费 = 结算金额 * 0.55%
BigDecimal fee = settleAmount.multiply(new BigDecimal(Constants.FEE_RATES));