winter 1 год назад
Родитель
Сommit
6e52f68d8f
3 измененных файлов: 66 добавлений и 21 удалений
  1. +0
    -6
      mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java
  2. +65
    -5
      mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java
  3. +1
    -10
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

+ 0
- 6
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();
}
}
}


+ 65
- 5
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<Long> 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<Integer> integers = JSONArray.parseArray(ratio, Integer.class);


+ 1
- 10
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());
}
}
}


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