diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index dfad3f7fc..05606cf75 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -1112,12 +1112,21 @@ public class WxRentContractServiceImpl implements WxRentContractService { BigDecimal priceD = new BigDecimal(price); String revenueYear = wxRentContract.getRevenueYear(); - List revenueYears = JSONArray.parseArray(revenueYear, Long.class); + List revenueYears = null; + if (!StringUtils.isBlank(revenueYear)) { + revenueYears = JSONArray.parseArray(revenueYear, Long.class); + }else { + revenueYears = new ArrayList(); + } revenueYears.add(0,0L); if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.RATIO.getCode())) { for (int i = 1; i < size; i++) { - BigDecimal divide = new BigDecimal(revenueYears.get(i)).multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(10000)); + BigDecimal _p = priceD; + if (revenueYears.size() == size) { + _p = new BigDecimal(revenueYears.get(i)); + } + BigDecimal divide = _p.multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(10000)); priceD = priceD.add(divide); priceArrs[i] = priceD.setScale(0, RoundingMode.HALF_EVEN).longValue(); } @@ -1142,17 +1151,21 @@ public class WxRentContractServiceImpl implements WxRentContractService { } }else if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())){ for (int i = 1; i < size; i++) { + BigDecimal _p = new BigDecimal(integers.get(i)); + if (revenueYears.size() == size) { + _p = new BigDecimal(revenueYears.get(i)).multiply(_p); + } if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { if (EnumMissTimeType.YEAR.getCode().equals(wxRentContract.getBusDiscountTime())) { - priceArrs[i] = new BigDecimal(revenueYears.get(i)).multiply(new BigDecimal(integers.get(i))).multiply(new BigDecimal(12)).setScale(0, RoundingMode.HALF_EVEN).longValue(); + priceArrs[i] = _p.multiply(new BigDecimal(12)).setScale(0, RoundingMode.HALF_EVEN).longValue(); continue; } if (EnumMissTimeType.PERIOD.getCode().equals(wxRentContract.getBusDiscountTime())) { - priceArrs[i] = new BigDecimal(revenueYears.get(i)).multiply(new BigDecimal(integers.get(i))).multiply(new BigDecimal(wxRentContract.getReceivePeriod())).setScale(0, RoundingMode.HALF_EVEN).longValue(); + priceArrs[i] = _p.multiply(new BigDecimal(wxRentContract.getReceivePeriod())).setScale(0, RoundingMode.HALF_EVEN).longValue(); continue; } } - priceArrs[i] = new BigDecimal(revenueYears.get(i)).multiply(new BigDecimal(integers.get(i))).setScale(0, RoundingMode.HALF_EVEN).longValue(); + priceArrs[i] = _p.setScale(0, RoundingMode.HALF_EVEN).longValue(); } } }