From 6748f80e9eca09fe050395fea0ea3aee45e03e53 Mon Sep 17 00:00:00 2001 From: winter Date: Wed, 7 Aug 2024 13:31:22 +0800 Subject: [PATCH] fix --- .../com/iformall/domain/po/WxEnergyFees.java | 10 +-- .../impl/WxPropertyContractServiceImpl.java | 61 ++++--------------- 2 files changed, 18 insertions(+), 53 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java index a97967256..df92e39c1 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java @@ -129,7 +129,7 @@ public class WxEnergyFees extends TenantEntity { priceD = priceD.multiply(new BigDecimal(count)); return priceD.toPlainString(); } - + //按天计算 if (this.timeUnit.intValue() == EnumFeesStandardsTimeUnit.DAY.getCode().intValue()) { BigDecimal priceD = new BigDecimal(this.price); priceD = priceD.multiply(new BigDecimal(count)); @@ -157,12 +157,12 @@ public class WxEnergyFees extends TenantEntity { } }else { Date startMonthEndDay = DateUtils.getLastDayForMonth(start); - int startDays = DateUtils.daysBetween(start, startMonthEndDay); - int startMonthDays = DateUtils.daysBetween(startMonthFirstDay, startMonthEndDay); + int startDays = DateUtils.daysBetween(start, startMonthEndDay)+1; + int startMonthDays = DateUtils.daysBetween(startMonthFirstDay, startMonthEndDay)+1; Date endMontFirstDay = DateUtils.getFirstDayForCurrMonth(end); - int endDays = DateUtils.daysBetween(endMontFirstDay, end); - int endMonthDays = DateUtils.daysBetween(endMontFirstDay, endMonthLastDay); + int endDays = DateUtils.daysBetween(endMontFirstDay, end)+1; + int endMonthDays = DateUtils.daysBetween(endMontFirstDay, endMonthLastDay)+1; int months = WxRentContractHelper.getMonths(sd.format(DateUtils.getDaySet(startMonthEndDay, Calendar.DATE, 1)),sd.format(DateUtils.getDaySet(endMontFirstDay, Calendar.DATE, -1))); months++; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java index 46a65cf6b..a44101f08 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -622,18 +622,23 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService if (wxPropertyContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.RATIO.getCode())) { BigDecimal priceD = new BigDecimal(price); for (int i = 1; i < size; i++) { - priceD = priceD.add(priceD.multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(100))); - priceArr[i] = priceD.setScale(wxPropertyContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); + priceD = priceD.add(priceD.multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(10000))); + priceArr[i] = priceD.setScale(Constant.default_long_decimal_size, RoundingMode.HALF_EVEN).toPlainString(); } } else if (wxPropertyContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.MONEY.getCode())) { BigDecimal priceD = new BigDecimal(price); for (int i = 1; i < size; i++) { - priceD = priceD.add(new BigDecimal(integers.get(i))); - priceArr[i] = priceD.setScale(wxPropertyContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); + priceD = priceD.add(new BigDecimal(integers.get(i)).divide(new BigDecimal(100))); + priceArr[i] = priceD.setScale(Constant.default_long_decimal_size, RoundingMode.HALF_EVEN).toPlainString(); } - } else { - for (int i = 1; i < size; i++) { - priceArr[i] = new BigDecimal(integers.get(i)).setScale(wxPropertyContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); + }else if (wxPropertyContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.CUSTOM.getCode())){ + for (int i = 1; i < size; i++) { + priceArr[i] = new BigDecimal(integers.get(i)).divide(new BigDecimal(100)).setScale(Constant.default_long_decimal_size, RoundingMode.HALF_UP).toPlainString(); + } + }else if (wxPropertyContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())){ + BigDecimal priceD = new BigDecimal(price); + for (int i = 1; i < size; i++) { + priceArr[i] = priceD.multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(100)).toPlainString(); } } @@ -921,47 +926,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService needpay = WxRentContractHelper.getMonthNeedPay(null,wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,wxRentContract.getDayPriceCalcute(),wxRentContract.getMonthAverageDays()); return needpay; } - - SimpleDateFormat sdM = new SimpleDateFormat("yyyy-MM"); - SimpleDateFormat sdD = new SimpleDateFormat("d"); - SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat sdMR = new SimpleDateFormat("MM-dd"); - - if(i == billTimeVoListSize - 1){//最后 - if(sdMR.format(startDate).equals(sdMR.format(wxRentContract.getStartDate())) && sdMR.format(endDate).equals(sdMR.format(wxRentContract.getEndDate())) ){ - int months = WxRentContractHelper.getMonths(sdM.format(startDate)+"-01",sdM.format(endDate)+"-01"); - months++; - needpay = new BigDecimal(months).multiply(priceD).toPlainString(); - }else { - needpay = WxRentContractHelper.getMonthNeedPay(null,wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,wxRentContract.getDayPriceCalcute(),wxRentContract.getMonthAverageDays()); - } - }else if(i == 0){//第一期 - if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){ - if(isFirstDay(startDate)){ - int months = WxRentContractHelper.getMonths(sdM.format(startDate)+"-01",sdM.format(endDate)+"-01"); - months++; - needpay = new BigDecimal(months).multiply(priceD).toPlainString(); - }else{ - needpay = WxRentContractHelper.getMonthNeedPay(null,wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,wxRentContract.getDayPriceCalcute(),wxRentContract.getMonthAverageDays()); - } - }else{ - if(isFirstDay(startDate)){ - int months = WxRentContractHelper.getMonths(sdM.format(startDate)+"-01",sdM.format(endDate)+"-01"); - if(isFirstDay(startDate)){ - months++; - } - needpay = new BigDecimal(months).multiply(priceD).toPlainString(); - }else{ - needpay = WxRentContractHelper.getMonthNeedPay(null,wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,wxRentContract.getDayPriceCalcute(),wxRentContract.getMonthAverageDays()); - } - } - }else{//中间 - int months = WxRentContractHelper.getMonths(sdM.format(startDate)+"-01",sdM.format(endDate)+"-01"); - if(isFirstDay(startDate)){ - months++; - } - needpay = new BigDecimal(months).multiply(priceD).toPlainString(); - } + needpay = WxRentContractHelper.getMonthNeedPay(null,wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,wxRentContract.getDayPriceCalcute(),wxRentContract.getMonthAverageDays()); } return needpay; }