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 de76f89ec..53c93a75a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -1420,11 +1420,39 @@ public class WxRentContractServiceImpl implements WxRentContractService { public Map getRentAndPropertyInfo(Long id) { logger.info("获取租赁物业合同数据>>>>>>id:" + id); - WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(id); - WxShop record = new WxShop(); - record.setId(wxRentContract.getShopId()); - Map wxShop = wxShopMapper.findListMap(record).get(0); Map result = new HashMap<>(); + WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(id); + if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { + JSONArray jsonArray = JSONArray.parseArray(wxRentContract.getRentInfo()); + StringBuffer shopNumberStr = new StringBuffer(); + StringBuffer floorNameStr = new StringBuffer(); + StringBuffer buildingNameStr = new StringBuffer(); + StringBuffer buildAreaStr = new StringBuffer(); + StringBuffer operationAreaStr = new StringBuffer(); + for (int i = 0, size = jsonArray.size(); i < size; i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + shopNumberStr.append("[").append(jsonObject.getString("shopNumber")).append("]"); + floorNameStr.append("[").append(jsonObject.getString("floor")).append("]"); + buildingNameStr.append("[").append(jsonObject.getString("building")).append("]"); + buildAreaStr.append("[").append(jsonObject.getString("buildArea")).append("]"); + operationAreaStr.append("[").append(jsonObject.getString("operationArea")).append("]"); + } + result.put("shopNumber", shopNumberStr); + result.put("floorName", floorNameStr); + result.put("buildingName", buildingNameStr); + result.put("buildArea", buildAreaStr); + result.put("operationArea", operationAreaStr); + } else { + WxShop record = new WxShop(); + record.setId(wxRentContract.getShopId()); + Map wxShop = wxShopMapper.findListMap(record).get(0); + //店铺信息 + result.put("shopNumber", wxShop.get("shopNumber")); + result.put("floorName", wxShop.get("floor")); + result.put("buildingName", wxShop.get("building")); + result.put("buildArea", wxShop.get("buildArea")); + result.put("operationArea", wxShop.get("operationArea")); + } //MALL信息 WxMall wxMall = new WxMall(); wxMall.setTenantId(wxRentContract.getTenantId()); @@ -1435,12 +1463,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { //经营业态 WxBusiness wxBusiness = wxBusinessMapper.selectByPrimaryKey(wxRentContract.getBusinessId()); result.put("business", wxBusiness.getTitle()); - //店铺信息 - result.put("shopNumber", wxShop.get("shopNumber")); - result.put("floorName", wxShop.get("floor")); - result.put("buildingName", wxShop.get("building")); - result.put("buildArea", wxShop.get("buildArea")); - result.put("operationArea", wxShop.get("operationArea")); + //商户信息 WxMerchant merchant = wxMerchantService.getById(wxRentContract.getMerchantId()); if (merchant != null) { @@ -1524,15 +1547,20 @@ public class WxRentContractServiceImpl implements WxRentContractService { int index = 10 - paycount; int count = paycount - 1; BigDecimal rentPrice = new BigDecimal(priceRent); - if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_AREA.getCode())) { - areaWay(wxRentContract, result, lease, 0, extralease, extracount, paycount, index, count, rentPrice); - } else { + if (!wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { //保底 - double revenue = new BigDecimal(wxRentContract.getRevenue()) - .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - result.put("revenue", revenue); - result.put("revenueUpper", digitUppercase(revenue)); - ratioWay(wxRentContract, result, lease, 0, extralease, extracount, paycount, index, count, rentPrice); + if (wxRentContract.getRevenue() != null) { + double revenue = new BigDecimal(wxRentContract.getRevenue()) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + result.put("revenue", revenue); + result.put("revenueUpper", digitUppercase(revenue)); + } else { + result.put("revenue", 0); + result.put("revenueUpper", digitUppercase(0)); + } + areaWay(wxRentContract, result, lease, extralease, extracount, paycount, index, count, rentPrice); + } else { + ratioWay(wxRentContract, result, lease, extralease, extracount, paycount, index, count, rentPrice); } //物业合同信息 WxPropertyContract propertyContract = new WxPropertyContract(); @@ -1625,9 +1653,10 @@ public class WxRentContractServiceImpl implements WxRentContractService { return result; } - public void ratioWay(WxRentContract wxRentContract, Map result, Integer lease, double adjustRatio, int extralease, int extracount, int paycount, int index, int count, BigDecimal rentPrice) { - - double payRatio = wxRentContract.getPayRatio() != null ? wxRentContract.getPayRatio() / 100.0 : 0; + public void ratioWay(WxRentContract wxRentContract, Map result, Integer lease, int extralease, int extracount, int paycount, int index, int count, BigDecimal rentPrice) { + String adjustRatio = wxRentContract.getAdjustRatio(); + List integers = JSONArray.parseArray(adjustRatio, Integer.class); + integers.add(0, 0); //常规租期 for (int i = 0; i <= count; i++) { //开始时间 @@ -1651,7 +1680,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { result.put("rentalEndDateYear" + i, enddate.substring(0, 4)); result.put("rentalEndDateMonth" + i, enddate.substring(5, 7)); result.put("rentalEndDateDay" + i, enddate.substring(8)); - result.put("adjustRatio" + i, wxRentContract.getAdjustRatio()); + String ratio = new BigDecimal(integers.get(i)).divide(new BigDecimal(100)).toPlainString(); + result.put("adjustRatio" + i, ratio); result.put("adjustPeriod" + i, wxRentContract.getAdjustPeriod()); result.put("payRatio" + i, wxRentContract.getPayRatio()); @@ -1685,7 +1715,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { } //无数据租期 - for (int i = paycount; i <= index; i++) { + for (int i = paycount; i <= 10; i++) { result.put("rentalStartDate" + i, "/"); result.put("rentalStartDateYear" + i, "/"); result.put("rentalStartDateMonth" + i, "/"); @@ -1700,7 +1730,50 @@ public class WxRentContractServiceImpl implements WxRentContractService { } } - public void areaWay(WxRentContract wxRentContract, Map result, Integer lease, double adjustRatio, int extralease, int extracount, int paycount, int index, int count, BigDecimal rentPrice) { + public void areaWay(WxRentContract wxRentContract, Map result, Integer lease, int extralease, int extracount, int paycount, int index, int count, BigDecimal rentPrice) { + + int[] priceArrs = new int[]{}; + List adjustRatioList = new ArrayList<>(); + adjustRatioList.add(0, "0"); + if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { + String rentInfo = wxRentContract.getRentInfo(); + JSONArray objects = JSONArray.parseArray(rentInfo); + JSONObject jsonObject = objects.getJSONObject(0); + JSONArray adjustRatio = jsonObject.getJSONArray("adjustRatio"); + for (int i = 0, size = adjustRatio.size(); i < size; i++) { + StringBuffer adjustRatioStr = new StringBuffer(); + for (int j = 0, shopSize = objects.size(); j < shopSize; j++) { + JSONObject shopObject = objects.getJSONObject(j); + JSONArray adjustRatioArr = shopObject.getJSONArray("adjustRatio"); + String shopNumber = shopObject.getString("shopNumber"); + double ratioStr = new BigDecimal(adjustRatioArr.getIntValue(i)).divide(new BigDecimal(100)).doubleValue(); + adjustRatioStr.append(shopNumber).append("[").append(ratioStr).append("]"); + } + adjustRatioList.add(adjustRatioStr.toString()); + } + List priceList = computePrice(rentInfo); + int size = priceList.size(); + priceArrs = new int[size]; + for (int i = 0; i < size; i++) { + int[] priceInt = priceList.get(i); + int sum = 0; + for (int p : priceInt) { + sum += p; + } + priceArrs[i] = sum; + } + } else { + String adjustRatio = wxRentContract.getAdjustRatio(); + List integers = JSONArray.parseArray(adjustRatio, Integer.class); + for (int i = 0, size = integers.size(); i < size; i++) { + double ratioStr = new BigDecimal(integers.get(i)).divide(new BigDecimal(100)).doubleValue(); + adjustRatioList.add(String.valueOf(ratioStr)); + } + } + String payRatioStr = "0"; + if (wxRentContract.getPayRatio() != null) { + payRatioStr = new BigDecimal(wxRentContract.getPayRatio()).divide(new BigDecimal(100)).toPlainString(); + } //常规租期 for (int i = 0; i <= count; i++) { //开始时间 @@ -1724,13 +1797,21 @@ public class WxRentContractServiceImpl implements WxRentContractService { result.put("rentalEndDateYear" + i, enddate.substring(0, 4)); result.put("rentalEndDateMonth" + i, enddate.substring(5, 7)); result.put("rentalEndDateDay" + i, enddate.substring(8)); - if (i > 0) { - rentPrice = rentPrice.multiply(new BigDecimal(adjustRatio)) + + if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { + rentPrice = new BigDecimal(priceArrs[i]).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); + result.put("priceRentUpper" + i, digitUppercase(rentPrice.doubleValue())); + result.put("priceRent" + i, rentPrice.doubleValue()); + result.put("adjustRatio" + i, adjustRatioList.get(i)); + } else { + rentPrice = rentPrice.multiply(new BigDecimal(adjustRatioList.get(i))) .add(rentPrice).setScale(2, RoundingMode.HALF_EVEN); result.put("priceRentUpper" + i, digitUppercase(rentPrice.doubleValue())); result.put("priceRent" + i, rentPrice.doubleValue()); + result.put("adjustRatio" + i, adjustRatioList.get(i)); } - result.put("adjustRatio" + i, wxRentContract.getAdjustRatio()); + result.put("payRatio" + i, payRatioStr); + result.put("adjustPeriod" + i, wxRentContract.getAdjustPeriod()); } if (extracount > 0) { //额外租期 @@ -1756,15 +1837,20 @@ public class WxRentContractServiceImpl implements WxRentContractService { result.put("rentalEndDateMonth" + count, enddate.substring(5, 7)); result.put("rentalEndDateDay" + count, enddate.substring(8)); - rentPrice = rentPrice.multiply(new BigDecimal(adjustRatio)) - .add(rentPrice).setScale(2, RoundingMode.HALF_EVEN); - result.put("priceRentUpper" + count, digitUppercase(rentPrice.doubleValue())); - result.put("priceRent" + count, rentPrice.doubleValue()); - result.put("adjustRatio" + count, wxRentContract.getAdjustRatio()); + if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { + rentPrice = new BigDecimal(priceArrs[count]).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); + result.put("priceRentUpper" + count, digitUppercase(rentPrice.doubleValue())); + result.put("priceRent" + count, rentPrice.doubleValue()); + } else { + rentPrice = rentPrice.multiply(new BigDecimal(adjustRatioList.get(count))) + .add(rentPrice).setScale(2, RoundingMode.HALF_EVEN); + result.put("priceRentUpper" + count, digitUppercase(rentPrice.doubleValue())); + result.put("priceRent" + count, rentPrice.doubleValue()); + } } //无数据租期 - for (int i = paycount; i <= index; i++) { + for (int i = paycount; i <= 10; i++) { result.put("rentalStartDate" + i, "/"); result.put("rentalStartDateYear" + i, "/"); result.put("rentalStartDateMonth" + i, "/"); @@ -1776,6 +1862,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { result.put("priceRentUpper" + i, "/"); result.put("priceRent" + i, "/"); result.put("adjustRatio" + i, "/"); + result.put("payRatio" + i, "/"); + result.put("adjustPeriod" + i, "/"); } }