From 6e52f68d8fde1d38dc13273b61804146329ceaea Mon Sep 17 00:00:00 2001 From: winter Date: Tue, 6 Aug 2024 21:08:17 +0800 Subject: [PATCH] fix --- .../iformall/domain/po/WxRentContract.java | 6 -- .../service/helper/WxRentContractHelper.java | 70 +++++++++++++++++-- .../impl/WxRentContractServiceImpl.java | 11 +-- 3 files changed, 66 insertions(+), 21 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java index 74f5f4cba..c631a33a8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java @@ -473,12 +473,6 @@ public class WxRentContract extends TenantEntity { if (StringUtils.isNotBlank(this.rentArea) && StringUtils.isNotBlank(this.rentPrice)) { this.price = new BigDecimal(this.rentArea).multiply(new BigDecimal(this.rentPrice)).setScale(Constant.default_long_decimal_size, RoundingMode.HALF_UP).toPlainString(); } - }else if (this.type.equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { - if (StringUtils.isBlank(revenue)) { - this.price = "0"; - }else { - this.price = new BigDecimal(this.revenue).multiply(new BigDecimal(this.payRatio)).divide(new BigDecimal(100),Constant.default_long_decimal_size, RoundingMode.HALF_UP).toPlainString(); - } } } diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java index 1df28b685..65dfb9fb3 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java @@ -153,12 +153,15 @@ public class WxRentContractHelper { } revenueYears.add(0,0L); - //联营扣点取高单独计算联营扣点调整。 + //联营扣点取高单据计算联营扣点方式的,再跟租金的对比取高 + String[] revenuePriceArrs = calcuteRevenuePriceByRentAreaJoint(wxRentContract,revenueYears,size); + + //计算所有租金的 if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.RATIO.getCode())) { for (int i = 1; i < size; i++) { //如果纯联营扣点,没有租金的年增长,用联营扣点的年增长;联营扣点取高时priceD已是最高值 String _update = ""; - if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode()) || wxRentContract.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) { + if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { _update = String.valueOf(revenueYears.get(i)); }else { _update = String.valueOf(integers.get(i)); @@ -170,7 +173,7 @@ public class WxRentContractHelper { } else if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.MONEY.getCode())) { for (int i = 1; i < size; i++) { String _update = ""; - if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode()) || wxRentContract.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) { + if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { _update = String.valueOf(revenueYears.get(i)); }else { _update = String.valueOf(integers.get(i)); @@ -181,7 +184,7 @@ public class WxRentContractHelper { } else if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.CUSTOM.getCode())){ for (int i = 1; i < size; i++) { String _update = ""; - if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode()) || wxRentContract.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) { + if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { _update = String.valueOf(revenueYears.get(i)); }else { _update = String.valueOf(integers.get(i)); @@ -191,7 +194,7 @@ public class WxRentContractHelper { }else if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())){ for (int i = 1; i < size; i++) { String _update = ""; - if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode()) || wxRentContract.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) { + if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { _update = String.valueOf(revenueYears.get(i)); }else { _update = String.valueOf(integers.get(i)); @@ -200,9 +203,66 @@ public class WxRentContractHelper { } } + //租金和联营取高 + if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) { + if (null != revenuePriceArrs) { + for (int i = 0 ; i < priceArrs.length; i ++) { + if (new BigDecimal(priceArrs[i]).compareTo(new BigDecimal(revenuePriceArrs[i])) < 0) { + priceArrs[i] = revenuePriceArrs[i]; + } + } + } + } + return priceArrs; } + //联营面积取高计算联营扣点调整。 + private static String[] calcuteRevenuePriceByRentAreaJoint(WxRentContract wxRentContract,List revenueYears,int size) { + //联营面积取高时,联营扣点调整比率设置 + String[] revenuePriceArrs = new String[size]; + if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) { + if (StringUtils.isBlank(wxRentContract.getRevenue())) { + return null; + } + String _revenuePriceD = new BigDecimal(wxRentContract.getRevenue()).multiply(new BigDecimal(wxRentContract.getPayRatio())) + .divide(new BigDecimal(100)).toPlainString(); + revenuePriceArrs[0] = _revenuePriceD; + + BigDecimal revenuePriceD = new BigDecimal(_revenuePriceD); + if (wxRentContract.getRevenueRatioWay().equals(EnumRentContractAdjustRatioWay.RATIO.getCode())) { + for (int i = 1; i < size; i++) { + //联营扣点算法 + if (revenueYears.size() == size) { + BigDecimal _p = new BigDecimal(revenueYears.get(i)).multiply(revenuePriceD).divide(new BigDecimal(100)); + revenuePriceD = revenuePriceD.add(_p); + } + revenuePriceArrs[i] = revenuePriceD.toPlainString(); + } + } else if (wxRentContract.getRevenueRatioWay().equals(EnumRentContractAdjustRatioWay.MONEY.getCode())) { + for (int i = 1; i < size; i++) { + if (revenueYears.size() == size) { + revenuePriceD = revenuePriceD.add(new BigDecimal(revenueYears.get(i))); + } + revenuePriceArrs[i] = revenuePriceD.toPlainString(); + } + } else if (wxRentContract.getRevenueRatioWay().equals(EnumRentContractAdjustRatioWay.CUSTOM.getCode())){ + for (int i = 1; i < size; i++) { + revenuePriceArrs[i] = new BigDecimal(revenueYears.get(i)).toPlainString(); + } + }else if (wxRentContract.getRevenueRatioWay().equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())){ + for (int i = 1; i < size; i++) { + BigDecimal _p = new BigDecimal(0) ; + if (revenueYears.size() == size) { + _p = new BigDecimal(revenueYears.get(i)).multiply(revenuePriceD).divide(new BigDecimal(100)); + } + revenuePriceArrs[i] = _p.toPlainString(); + } + } + } + return revenuePriceArrs; + } + //合铺计算某项计费 private static String[] calcuteRatioByJoin(Integer decimalSize,Integer ratioWay,String ratio,String ratioFirstYearPrice) { List integers = JSONArray.parseArray(ratio, Integer.class); 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 d4768e15d..dc94bb5b3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -679,11 +679,6 @@ public class WxRentContractServiceImpl implements WxRentContractService { } record.setPrice(new BigDecimal(record.getPayRatio()).multiply(new BigDecimal(revenue)).divide(new BigDecimal(100),Constant.default_long_decimal_size,RoundingMode.HALF_UP).toPlainString()); }else if (record.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) { - String revenue = record.getRevenue(); - if (StringUtils.isBlank(revenue)) { - revenue = "0"; - } - BigDecimal renevuePrice = new BigDecimal(record.getPayRatio()).multiply(new BigDecimal(revenue)).divide(new BigDecimal(100),Constant.default_long_decimal_size,RoundingMode.HALF_UP); BigDecimal rentPrice = null; //联营取高,如果是固定金额的话,取固定金额. 不固定的金额,会传price. if (null != record.getRevenueFixedRentPrice() && record.getRevenueFixedRentPrice().intValue() == EnumYesOrNo.YES.getCode()){ @@ -691,11 +686,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { }else { rentPrice = new BigDecimal(record.getPrice()); } - if (renevuePrice.compareTo(rentPrice) > 0 ) { - record.setPrice(renevuePrice.toPlainString()); - }else { - record.setPrice(rentPrice.toPlainString()); - } + record.setPrice(rentPrice.toPlainString()); } } }