|
|
|
@@ -254,18 +254,16 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
* ["1000-1200:10",">3000:20"] |
|
|
|
* @param record |
|
|
|
*/ |
|
|
|
public void getPayRatio(WxRentContract record){ |
|
|
|
// if(record.getPayRatio() != null && record.getPayRatio().intValue() >0){ |
|
|
|
// return; |
|
|
|
// } |
|
|
|
public BigDecimal getPayRatio(WxRentContract record){ |
|
|
|
record.setPayRatio(0); |
|
|
|
if(StringUtils.isBlank(record.getBusDiscountRatio())){ |
|
|
|
return; |
|
|
|
return null; |
|
|
|
} |
|
|
|
BigDecimal revenue = new BigDecimal(record.getRevenue()).divide(new BigDecimal(1000000)).setScale(4, RoundingMode.HALF_EVEN); |
|
|
|
List<String> ratioList = JSONArray.parseArray(record.getBusDiscountRatio(), String.class); |
|
|
|
|
|
|
|
for (String e:ratioList) { |
|
|
|
for (int i = 0; i < ratioList.size(); i++) { |
|
|
|
String e = ratioList.get(i); |
|
|
|
String[] array = e.split(":"); |
|
|
|
Integer ratio = Integer.parseInt(array[1]); |
|
|
|
|
|
|
|
@@ -283,10 +281,22 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
BigDecimal end = new BigDecimal(revenueArray[1]); |
|
|
|
if (revenue.compareTo(end) >= 0){ |
|
|
|
record.setPayRatio(ratio); |
|
|
|
break; |
|
|
|
|
|
|
|
//计算超出部分 |
|
|
|
BigDecimal payRatio = new BigDecimal(record.getPayRatio() == null ? 0 : record.getPayRatio()).divide(new BigDecimal(10000)); |
|
|
|
BigDecimal balance = new BigDecimal(record.getRevenue()).subtract(end.multiply(new BigDecimal(1000000))); |
|
|
|
BigDecimal price = balance.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); |
|
|
|
|
|
|
|
array = ratioList.get(i-1).split(":"); |
|
|
|
Integer frontatio = Integer.parseInt(array[1]); |
|
|
|
BigDecimal frontRatio = new BigDecimal(frontatio).divide(new BigDecimal(10000)); |
|
|
|
BigDecimal frontPrice = end.multiply(new BigDecimal(1000000).multiply(frontRatio).setScale(2, RoundingMode.HALF_EVEN)); |
|
|
|
|
|
|
|
return price.add(frontPrice); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional(rollbackFor = {Exception.class}) |
|
|
|
@@ -312,13 +322,19 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
} |
|
|
|
|
|
|
|
if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { |
|
|
|
getPayRatio(record); |
|
|
|
BigDecimal balance = getPayRatio(record); //有超出部分 |
|
|
|
BigDecimal hundred = new BigDecimal(100); |
|
|
|
BigDecimal revenue = new BigDecimal(record.getRevenue() == null ? 0 : record.getRevenue()).divide(hundred); |
|
|
|
BigDecimal payRatio = new BigDecimal(record.getPayRatio() == null ? 0 : record.getPayRatio()).divide(new BigDecimal(10000)); |
|
|
|
|
|
|
|
BigDecimal price = revenue.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); |
|
|
|
record.setPrice(price.multiply(hundred).longValue()); |
|
|
|
BigDecimal price; |
|
|
|
if(balance != null){ |
|
|
|
//计算超出部分 |
|
|
|
record.setPrice(balance.longValue()); |
|
|
|
}else{ |
|
|
|
price = revenue.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); |
|
|
|
record.setPrice(price.multiply(hundred).longValue()); |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (StringUtils.isNotEmpty(record.getPriceStr())) { |
|
|
|
record.setPrice(new BigDecimal(record.getPriceStr()).multiply(new BigDecimal(100)).longValue()); |
|
|
|
@@ -542,12 +558,18 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
|
|
|
|
if(from != 1){ |
|
|
|
if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { |
|
|
|
getPayRatio(record); |
|
|
|
BigDecimal balance = getPayRatio(record); |
|
|
|
BigDecimal hundred = new BigDecimal(100); |
|
|
|
BigDecimal revenue = new BigDecimal(record.getRevenue() == null ? 0 : record.getRevenue()).divide(hundred); |
|
|
|
BigDecimal payRatio = new BigDecimal(record.getPayRatio() == null ? 0 : record.getPayRatio()).divide(new BigDecimal(10000)); |
|
|
|
BigDecimal price = revenue.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); |
|
|
|
record.setPrice(price.multiply(hundred).longValue()); |
|
|
|
|
|
|
|
BigDecimal price; |
|
|
|
if(balance != null){ |
|
|
|
record.setPrice(balance.longValue()); |
|
|
|
}else { |
|
|
|
price = revenue.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); |
|
|
|
record.setPrice(price.multiply(hundred).longValue()); |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (StringUtils.isNotEmpty(record.getPriceStr())) { |
|
|
|
record.setPrice(new BigDecimal(record.getPriceStr()).multiply(new BigDecimal(100)).longValue()); |
|
|
|
|