diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java index 8cb138d0a..6a30f568d 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java @@ -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 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 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));