winter 1 год назад
Родитель
Сommit
a8af76e5df
1 измененных файлов: 25 добавлений и 15 удалений
  1. +25
    -15
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

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

@@ -2353,30 +2353,40 @@ public class WxRentContractServiceImpl implements WxRentContractService {
//按照当前金额,当前时间区间,计算每一年的单价
//当前时间有多少个月
int months = diffs[0];
//计算当前区间算多少年
if (dayPriceCalcute.intValue() == EnumRentDayPriceCalcute.AVERAGE_DAYS.getCode()) {
int days = DateUtils.daysBetween(startDate, endDate)+1;
BigDecimal _months = new BigDecimal(days).divide(new BigDecimal(mothAverageDays),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP).add(new BigDecimal(months));
unitPrice = salesDeciaml.multiply(new BigDecimal(12)).divide(_months,Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
int lastdays = diffs[1];
if (lastdays > 0) {
//计算当前区间算多少年
if (dayPriceCalcute.intValue() == EnumRentDayPriceCalcute.AVERAGE_DAYS.getCode()) {
Date lastmonthStartDate = DateUtils.getTimeAfterMonths(diffs[0], startDate);
int days = DateUtils.daysBetween(lastmonthStartDate, endDate)+1;
BigDecimal _months = new BigDecimal(days).divide(new BigDecimal(mothAverageDays),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP).add(new BigDecimal(months));
unitPrice = salesDeciaml.multiply(new BigDecimal(12)).divide(_months,Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}else {
BigDecimal _months = getMonthsByRealDays(months,startDate,endDate,adjustPeriod,receivePeriodUnit);
unitPrice = salesDeciaml.multiply(new BigDecimal(12)).divide(_months,Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}
}else {
BigDecimal _months = getMonthsByRealDays(months,startDate,endDate,mothAverageDays,adjustPeriod,receivePeriodUnit);
unitPrice = salesDeciaml.multiply(new BigDecimal(12)).divide(_months,Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}
unitPrice = salesDeciaml.multiply(new BigDecimal(12)).divide(new BigDecimal(months),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}
}else if(EnumPriceUnit.M.getCode().equals(priceUnit)) {
//每一月的单价
BigDecimal months = new BigDecimal(diffs[0]);
if (dayPriceCalcute.intValue() == EnumRentDayPriceCalcute.AVERAGE_DAYS.getCode()) {
int days = DateUtils.daysBetween(startDate, endDate)+1;
months = new BigDecimal(days).divide(new BigDecimal(mothAverageDays),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}else {
months = getMonthsByRealDays(diffs[0],startDate,endDate,mothAverageDays,adjustPeriod,receivePeriodUnit);
}
int lastdays = diffs[1];
if (lastdays > 0) {
if (dayPriceCalcute.intValue() == EnumRentDayPriceCalcute.AVERAGE_DAYS.getCode()) {
Date lastmonthStartDate = DateUtils.getTimeAfterMonths(diffs[0], startDate);
int days = DateUtils.daysBetween(lastmonthStartDate, endDate)+1;
months = months.add(new BigDecimal(days).divide(new BigDecimal(mothAverageDays),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP));
}else {
months = getMonthsByRealDays(diffs[0],startDate,endDate,adjustPeriod,receivePeriodUnit);
}
}
unitPrice = salesDeciaml.divide(months,Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}
return unitPrice;
}
private BigDecimal getMonthsByRealDays(int months,Date startDate,Date endDate,Integer mothAverageDays,Integer adjustPeriod,Integer receivePeriodUnit) {
private BigDecimal getMonthsByRealDays(int months,Date startDate,Date endDate,Integer adjustPeriod,Integer receivePeriodUnit) {
BigDecimal _months = new BigDecimal(0);
//如果是自然月或者自然季度,则是到月底
if (adjustPeriod == EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode() ||


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