Browse Source

[合同][修改][开发账单结算]

release_toaliyun_real
luozukai 6 years ago
parent
commit
104679b2b8
2 changed files with 35 additions and 16 deletions
  1. +0
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java
  2. +35
    -13
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

+ 0
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java View File

@@ -275,9 +275,6 @@ public class WxBillRentServiceImpl implements WxBillRentService {
* @param record
*/
public Integer getPayRatio(WxBillRent record,WxRentContract wxRentContract,EnumMissTimeType timeType){
// if(wxRentContract.getPayRatio() != null && wxRentContract.getPayRatio().intValue() > 0){
// return wxRentContract.getPayRatio();
// }
wxRentContract.setPayRatio(0);
BigDecimal revenue = new BigDecimal(record.getRevenue()).divide(new BigDecimal(1000000)).setScale(4, RoundingMode.HALF_EVEN);
List<String> ratioList = JSONArray.parseArray(wxRentContract.getBusDiscountRatio(), String.class);


+ 35
- 13
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java View File

@@ -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());


Loading…
Cancel
Save