From 9b85b0286f74dd9fdb7acdb4a36e99fad2bc9ba8 Mon Sep 17 00:00:00 2001 From: zhengfangyuan Date: Sat, 31 Dec 2022 14:42:23 +0800 Subject: [PATCH] fix bug --- .../db/migration/V202301200001__contract.sql | 2 + .../impl/WxRentContractServiceImpl.java | 40 ++++++++++++++----- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202301200001__contract.sql b/mallinkAdmin/src/main/resources/db/migration/V202301200001__contract.sql index 046a3521f..532d4f263 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202301200001__contract.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202301200001__contract.sql @@ -12,3 +12,5 @@ ADD COLUMN `revenue_ratio_set` JSON COMMENT '联营扣点调整比率(仅联 ALTER TABLE `mallink`.`wx_rent_contract` ADD COLUMN `end_contract_time` datetime COMMENT '终止时间'; + + 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 bc2f3e5f0..06789543c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -1077,6 +1077,18 @@ public class WxRentContractServiceImpl implements WxRentContractService { priceList.add(priceArrs); } } + if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())) { + for (int i = 0; i < adjustRatioSize; i++) { + long[] priceArrs = new long[arraySize]; + for (int j = 0; j < arraySize; j++) { + rentInfoObject = rentInfoArray.getJSONObject(j); + adjustRatio = rentInfoObject.getJSONArray("adjustRatio"); + BigDecimal price = new BigDecimal(priceList.get(i)[j]).multiply(new BigDecimal(adjustRatio.getString(i)).divide(new BigDecimal(100))); + priceArrs[j] = price.setScale(0, RoundingMode.HALF_EVEN).longValue(); + } + priceList.add(priceArrs); + } + } return priceList; } @@ -1438,18 +1450,24 @@ public class WxRentContractServiceImpl implements WxRentContractService { } JSONObject otherRentPriceInfo = rentInfoObject.getJSONObject("otherRentPriceInfo"); if(otherRentPriceInfo != null ){ + + //场地费 String siteMoney1 = otherRentPriceInfo.getString("siteMoney"); if(StringUtils.isNotBlank(siteMoney1)){ b = new BigDecimal(siteMoney1); } + //设备费 String facilityMoney1 = otherRentPriceInfo.getString("facilityMoney"); if(StringUtils.isNotBlank(facilityMoney1)){ c = new BigDecimal(facilityMoney1); } + //商业管理费 String administratorMoney1 = otherRentPriceInfo.getString("administratorMoney"); if(StringUtils.isNotBlank(administratorMoney1)){ d = new BigDecimal(administratorMoney1); } + + //营业管理费 String managementMoney1 = otherRentPriceInfo.getString("managementMoney"); if(StringUtils.isNotBlank(managementMoney1)){ e = new BigDecimal(managementMoney1); @@ -1457,15 +1475,15 @@ public class WxRentContractServiceImpl implements WxRentContractService { } rentPrice += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) - .multiply(a).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + .multiply(a).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); siteMoney += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) - .multiply(b).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + .multiply(b).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); facilityMoney += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) - .multiply(c).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + .multiply(c).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); administratorMoney += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) - .multiply(d).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + .multiply(d).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); managementMoney += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) - .multiply(e).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + .multiply(e).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); } }else{ @@ -1478,6 +1496,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { if(StringUtils.isNotBlank(otherRentPriceInfo1)){ JSONObject jsonObject = JSONObject.parseObject(otherRentPriceInfo1); + String siteMoney1 = jsonObject.getString("siteMoney"); if(StringUtils.isNotBlank(siteMoney1)){ b = new BigDecimal(siteMoney1); @@ -1490,16 +1509,17 @@ public class WxRentContractServiceImpl implements WxRentContractService { if(StringUtils.isNotBlank(administratorMoney1)){ d = new BigDecimal(administratorMoney1); } + String managementMoney1 = jsonObject.getString("managementMoney"); if(StringUtils.isNotBlank(managementMoney1)){ e = new BigDecimal(managementMoney1); } } - rentPrice = new BigDecimal(contractNeedPay).multiply(a).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); - siteMoney = new BigDecimal(contractNeedPay).multiply(b).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); - facilityMoney = new BigDecimal(contractNeedPay).multiply(c).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); - administratorMoney = new BigDecimal(contractNeedPay).multiply(d).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); - managementMoney = new BigDecimal(contractNeedPay).multiply(e).divide(a.add(b).add(c).add(d),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + rentPrice = new BigDecimal(contractNeedPay).multiply(a).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + siteMoney = new BigDecimal(contractNeedPay).multiply(b).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + facilityMoney = new BigDecimal(contractNeedPay).multiply(c).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + administratorMoney = new BigDecimal(contractNeedPay).multiply(d).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); + managementMoney = new BigDecimal(contractNeedPay).multiply(e).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); } }else{ rentPrice = contractNeedPay;