From 52e3d91b7edce9dcbc4c63b0a8c1bb89a926f8c7 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Mon, 1 Apr 2019 10:28:53 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=A7=9F=E8=B5=81=E5=90=88=E5=90=8C][?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0][=E5=A4=9A=E5=95=86=E9=93=BA=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=9C=88=E7=A7=9F=E9=87=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxRentContractServiceImpl.java | 59 +++++++++++-------- 1 file changed, 35 insertions(+), 24 deletions(-) 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 ac0f0670f..0c7c09bd3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -481,39 +481,50 @@ public class WxRentContractServiceImpl implements WxRentContractService { return rentList; } - public int[] computePrice(WxRentContract wxRentContract) { + //计算租金 + public int[] computePrice(String rentInfo) { - JSONArray rentInfoArray = JSONArray.parseArray(wxRentContract.getRentInfo()); + JSONArray rentInfoArray = JSONArray.parseArray(rentInfo); int arraySize = rentInfoArray.size(); + List priceList = new ArrayList<>(); + //第一年 int[] priceArr = new int[arraySize]; for (int i = 0; i < arraySize; i++) { - double priceSum = 0; - for (int j = i; j < arraySize; j++) { - JSONObject rentInfoObject = rentInfoArray.getJSONObject(j); - double price = rentInfoObject.getDoubleValue("price");//1000 2000 3000 - JSONArray adjustRatio = rentInfoObject.getJSONArray("adjustRatio");//[1000] - adjustRatio.set(0, 0); - int ratio = adjustRatio.getIntValue(j);//0 1000 - price = price + price * ratio / 10000.0;//1000 2000 3000 - priceSum = priceSum + price;//1000 2000 3000 + JSONObject rentInfoObject = rentInfoArray.getJSONObject(i); + priceArr[i] = rentInfoObject.getIntValue("price"); + } + priceList.add(priceArr); + //大于一年 + JSONObject rentInfoObject = rentInfoArray.getJSONObject(0); + JSONArray adjustRatio = rentInfoObject.getJSONArray("adjustRatio"); + int adjustRatioSize = adjustRatio.size(); + + for (int i = 0; i < adjustRatioSize; i++) { + int[] priceArrs = new int[arraySize]; + for (int j = 0; j < arraySize; j++) { + rentInfoObject = rentInfoArray.getJSONObject(j); + adjustRatio = rentInfoObject.getJSONArray("adjustRatio"); + double price = priceList.get(i)[j] + priceList.get(i)[j] * adjustRatio.getIntValue(i) / 10000.0; + priceArrs[j] = new BigDecimal(price).setScale(0, RoundingMode.HALF_EVEN).intValue(); } - priceArr[i] = new BigDecimal(priceSum).setScale(0, RoundingMode.HALF_EVEN).intValue();//6000 + priceList.add(priceArrs); } - return priceArr; + int size = priceList.size(); + int[] priceArrs = new int[size]; + for (int i = 0; i < size; i++) { + int[] price = priceList.get(i); + int sum = 0; + for (int p : price) { + sum += p; + } + priceArrs[i] = sum; + } + return priceArrs; } public List buildRentMonth(WxMerchant wxMerchant, Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Integer price,Integer isPreview) { - String adjustRatio = wxRentContract.getAdjustRatio(); - List integers = JSONArray.parseArray(adjustRatio, Integer.class); - integers.add(0, 0); - int size = integers.size(); - int[] priceArr = new int[size]; - priceArr[0] = price; - double priceD = price; - for (int i = 1; i < size; i++) { - priceD = priceD + priceD * integers.get(i) / 10000.0; - priceArr[i] = new BigDecimal(priceD).setScale(0, RoundingMode.HALF_EVEN).intValue(); - } + int[] priceArr = computePrice(wxRentContract.getRentInfo()); + int size = priceArr.length; int month = 12; int divide = lease / month; int mod = lease % month;