|
|
@@ -58,10 +58,13 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct |
|
|
//获取订单占比(占比最少的订单用减法,尽量减少误差) |
|
|
//获取订单占比(占比最少的订单用减法,尽量减少误差) |
|
|
List<WxOfflineActivityRecord> recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparingInt(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); |
|
|
List<WxOfflineActivityRecord> recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparingInt(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); |
|
|
int size = recordDescList.size() - 1; |
|
|
int size = recordDescList.size() - 1; |
|
|
BigDecimal lastRatio = BigDecimal.ONE; |
|
|
|
|
|
|
|
|
BigDecimal lastRatio = new BigDecimal(100); |
|
|
for(int i=0; i<size; i++){ |
|
|
for(int i=0; i<size; i++){ |
|
|
WxOfflineActivityRecord record = recordDescList.get(i); |
|
|
WxOfflineActivityRecord record = recordDescList.get(i); |
|
|
BigDecimal orderRatio = new BigDecimal(record.getOrderMoney()).divide(new BigDecimal(wxOfflineActivityGrantAward.getOrderMoneySum()), 2, RoundingMode.HALF_UP); |
|
|
|
|
|
|
|
|
BigDecimal orderRatio = new BigDecimal(record.getOrderMoney()) |
|
|
|
|
|
.divide(new BigDecimal(wxOfflineActivityGrantAward.getOrderMoneySum())) |
|
|
|
|
|
.multiply(new BigDecimal(100)) |
|
|
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
record.setOrderRatio(orderRatio); |
|
|
record.setOrderRatio(orderRatio); |
|
|
lastRatio = lastRatio.subtract(orderRatio); |
|
|
lastRatio = lastRatio.subtract(orderRatio); |
|
|
} |
|
|
} |
|
|
@@ -103,14 +106,18 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct |
|
|
WxOfflineActivityGrantSettlement settlement = itemSettlementList.get(i); |
|
|
WxOfflineActivityGrantSettlement settlement = itemSettlementList.get(i); |
|
|
int realGrantPrice = new BigDecimal(wxOfflineActivityGrantItem.getAwardPrice()).multiply(settlement.getOrderRatio()).setScale(0, RoundingMode.HALF_UP).intValue(); |
|
|
int realGrantPrice = new BigDecimal(wxOfflineActivityGrantItem.getAwardPrice()).multiply(settlement.getOrderRatio()).setScale(0, RoundingMode.HALF_UP).intValue(); |
|
|
settlement.setRealGrantPrice(realGrantPrice); |
|
|
settlement.setRealGrantPrice(realGrantPrice); |
|
|
settlement.setRealMallSharePrice(new BigDecimal(settlement.getRealGrantPrice()).multiply(settlement.getMallShareRate()).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); |
|
|
|
|
|
|
|
|
settlement.setRealMallSharePrice(new BigDecimal(settlement.getRealGrantPrice()) |
|
|
|
|
|
.multiply(settlement.getMallShareRate().divide(new BigDecimal(100))) |
|
|
|
|
|
.setScale(0, RoundingMode.HALF_UP).intValue()); |
|
|
settlement.setRealMerchantSharePrice(settlement.getRealGrantPrice() - settlement.getRealMallSharePrice()); |
|
|
settlement.setRealMerchantSharePrice(settlement.getRealGrantPrice() - settlement.getRealMallSharePrice()); |
|
|
|
|
|
|
|
|
lastGrantPrice = lastGrantPrice - realGrantPrice; |
|
|
lastGrantPrice = lastGrantPrice - realGrantPrice; |
|
|
} |
|
|
} |
|
|
WxOfflineActivityGrantSettlement lastSettlement = itemSettlementList.get(itemSize); |
|
|
WxOfflineActivityGrantSettlement lastSettlement = itemSettlementList.get(itemSize); |
|
|
lastSettlement.setRealGrantPrice(lastGrantPrice); |
|
|
lastSettlement.setRealGrantPrice(lastGrantPrice); |
|
|
lastSettlement.setRealMallSharePrice(new BigDecimal(lastSettlement.getRealGrantPrice()).multiply(lastSettlement.getMallShareRate()).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); |
|
|
|
|
|
|
|
|
lastSettlement.setRealMallSharePrice(new BigDecimal(lastSettlement.getRealGrantPrice()) |
|
|
|
|
|
.multiply(lastSettlement.getMallShareRate().divide(new BigDecimal(100))) |
|
|
|
|
|
.setScale(0, RoundingMode.HALF_UP).intValue()); |
|
|
lastSettlement.setRealMerchantSharePrice(lastSettlement.getRealGrantPrice() - lastSettlement.getRealMallSharePrice()); |
|
|
lastSettlement.setRealMerchantSharePrice(lastSettlement.getRealGrantPrice() - lastSettlement.getRealMallSharePrice()); |
|
|
|
|
|
|
|
|
settlementList.addAll(itemSettlementList); |
|
|
settlementList.addAll(itemSettlementList); |
|
|
|