| | |
| | | if (item == null) { |
| | | return; |
| | | } |
| | | BigDecimal paymentAmount = nullToZero(item.getPaymentAmount()); |
| | | BigDecimal[] income = calculateChargingPeriodIncome( |
| | | item.getPaymentAmount(), |
| | | item.getServiceCharge(), |
| | | siteServiceShareRatioMap.get(item.getSiteId()), |
| | | item.getOrderSource()); |
| | | item.setPlatformIncome(income[0]); |
| | | item.setPartnerIncome(income[1]); |
| | | } |
| | | |
| | | static BigDecimal[] calculateChargingPeriodIncome(BigDecimal paymentAmount, |
| | | BigDecimal serviceCharge, |
| | | BigDecimal serviceShareRatio, |
| | | Integer orderSource) { |
| | | BigDecimal paid = zeroIfNull(paymentAmount); |
| | | BigDecimal partnerIncome = BigDecimal.ZERO; |
| | | if (!Integer.valueOf(2).equals(item.getOrderSource())) { |
| | | BigDecimal serviceShareRatio = siteServiceShareRatioMap.get(item.getSiteId()); |
| | | if (serviceShareRatio != null && serviceShareRatio.compareTo(BigDecimal.ZERO) > 0) { |
| | | partnerIncome = nullToZero(item.getServiceCharge()) |
| | | .multiply(serviceShareRatio) |
| | | .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP); |
| | | } |
| | | if (!Integer.valueOf(2).equals(orderSource) |
| | | && serviceShareRatio != null |
| | | && serviceShareRatio.compareTo(BigDecimal.ZERO) > 0) { |
| | | partnerIncome = zeroIfNull(serviceCharge) |
| | | .multiply(serviceShareRatio) |
| | | .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP); |
| | | } |
| | | item.setPartnerIncome(partnerIncome); |
| | | item.setPlatformIncome(paymentAmount.subtract(partnerIncome).max(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_UP)); |
| | | return new BigDecimal[]{ |
| | | paid.subtract(partnerIncome).max(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_UP), |
| | | partnerIncome.setScale(2, RoundingMode.HALF_UP) |
| | | }; |
| | | } |
| | | |
| | | private static BigDecimal zeroIfNull(BigDecimal amount) { |
| | | return amount == null ? BigDecimal.ZERO : amount; |
| | | } |
| | | |
| | | private Map<Integer, BigDecimal> loadSiteServiceShareRatioMap() { |