Просмотр исходного кода

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

release_toaliyun_real
luozukai 6 лет назад
Родитель
Сommit
104679b2b8
2 измененных файлов: 35 добавлений и 16 удалений
  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 Просмотреть файл

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


+ 35
- 13
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java Просмотреть файл

@@ -254,18 +254,16 @@ public class WxRentContractServiceImpl implements WxRentContractService {
* ["1000-1200:10",">3000:20"] * ["1000-1200:10",">3000:20"]
* @param record * @param record
*/ */
public void getPayRatio(WxRentContract record){
// if(record.getPayRatio() != null && record.getPayRatio().intValue() >0){
// return;
// }
public BigDecimal getPayRatio(WxRentContract record){
record.setPayRatio(0); record.setPayRatio(0);
if(StringUtils.isBlank(record.getBusDiscountRatio())){ if(StringUtils.isBlank(record.getBusDiscountRatio())){
return;
return null;
} }
BigDecimal revenue = new BigDecimal(record.getRevenue()).divide(new BigDecimal(1000000)).setScale(4, RoundingMode.HALF_EVEN); BigDecimal revenue = new BigDecimal(record.getRevenue()).divide(new BigDecimal(1000000)).setScale(4, RoundingMode.HALF_EVEN);
List<String> ratioList = JSONArray.parseArray(record.getBusDiscountRatio(), String.class); 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(":"); String[] array = e.split(":");
Integer ratio = Integer.parseInt(array[1]); Integer ratio = Integer.parseInt(array[1]);


@@ -283,10 +281,22 @@ public class WxRentContractServiceImpl implements WxRentContractService {
BigDecimal end = new BigDecimal(revenueArray[1]); BigDecimal end = new BigDecimal(revenueArray[1]);
if (revenue.compareTo(end) >= 0){ if (revenue.compareTo(end) >= 0){
record.setPayRatio(ratio); 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}) @Transactional(rollbackFor = {Exception.class})
@@ -312,13 +322,19 @@ public class WxRentContractServiceImpl implements WxRentContractService {
} }


if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
getPayRatio(record);
BigDecimal balance = getPayRatio(record); //有超出部分
BigDecimal hundred = new BigDecimal(100); BigDecimal hundred = new BigDecimal(100);
BigDecimal revenue = new BigDecimal(record.getRevenue() == null ? 0 : record.getRevenue()).divide(hundred); 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 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 { } else {
if (StringUtils.isNotEmpty(record.getPriceStr())) { if (StringUtils.isNotEmpty(record.getPriceStr())) {
record.setPrice(new BigDecimal(record.getPriceStr()).multiply(new BigDecimal(100)).longValue()); record.setPrice(new BigDecimal(record.getPriceStr()).multiply(new BigDecimal(100)).longValue());
@@ -542,12 +558,18 @@ public class WxRentContractServiceImpl implements WxRentContractService {


if(from != 1){ if(from != 1){
if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
getPayRatio(record);
BigDecimal balance = getPayRatio(record);
BigDecimal hundred = new BigDecimal(100); BigDecimal hundred = new BigDecimal(100);
BigDecimal revenue = new BigDecimal(record.getRevenue() == null ? 0 : record.getRevenue()).divide(hundred); 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 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 { } else {
if (StringUtils.isNotEmpty(record.getPriceStr())) { if (StringUtils.isNotEmpty(record.getPriceStr())) {
record.setPrice(new BigDecimal(record.getPriceStr()).multiply(new BigDecimal(100)).longValue()); record.setPrice(new BigDecimal(record.getPriceStr()).multiply(new BigDecimal(100)).longValue());


Загрузка…
Отмена
Сохранить