From 9addf07ea96c5de40f35167ca56b8b9f57594ec3 Mon Sep 17 00:00:00 2001 From: luozukai Date: Wed, 29 May 2019 15:32:52 +0800 Subject: [PATCH] =?UTF-8?q?[bug][=E4=BF=AE=E6=94=B9][1001665]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxPropertyContractServiceImpl.java | 16 ++++++---- .../impl/WxRentContractServiceImpl.java | 30 +++++++++++++------ 2 files changed, 31 insertions(+), 15 deletions(-) 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 8cf70940d..52cabf405 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -95,7 +95,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService //init dateDiff if(wxPropertyContract.getRentalStartDate() != null && wxPropertyContract.getRentalEndDate() != null){ - int[] array = DateUtils.getDiff(wxPropertyContract.getRentalStartDate(),wxPropertyContract.getRentalEndDate()); + //加1天 + Date newEndDate = DateUtils.getDaySet(wxPropertyContract.getRentalEndDate(),Calendar.DATE,1); + int[] array = DateUtils.getDiff(wxPropertyContract.getRentalStartDate(),newEndDate); result.put("totalPeriodMonth",array[0]); result.put("totalPeriodDay",array[1]); } @@ -550,7 +552,6 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } List billTimeVoList = WxRentContractServiceImpl.initBillTimeList(wxPropertyContract.getRentalStartDate(),wxPropertyContract.getRentalEndDate(),wxPropertyContract.getAdjustPeriod(),dayType,receivePeriod); - int index = 0; for (BillTimeVo billTimeVo : billTimeVoList){ if(yearList.size() > 1) { @@ -582,16 +583,19 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService long needpay; - //当天也算,加1天 - //Date newEndDate = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1); //按日 if(wxPropertyContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode())){ double needpayD = WxRentContractServiceImpl.getNeedPay(0,price,wxBillProperty.getStarttime(),wxBillProperty.getEndtime()); needpay = new Double(needpayD).longValue(); }else{ + //当天也算,加1天 + Date newEndDate = DateUtils.getDaySet(wxBillProperty.getEndtime(),Calendar.DATE,1); //按月 - double needpayD = WxRentContractServiceImpl.getNeedPay(price,0,wxBillProperty.getStarttime(),wxBillProperty.getEndtime()); - needpay = new Double(needpayD).longValue(); + int[] diff = DateUtils.getDiff(wxBillProperty.getStarttime(),newEndDate); + needpay = diff[0]*price; + + double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxPropertyContract.getRentalEndDate()); + needpay += diff[1] * oneDayProce; } wxBillProperty.setNeedPay(needpay); wxBillProperty.setOwe(needpay); 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 cf527b2dc..04aba6f41 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -119,7 +119,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { //init dateDiff if(wxRentContract.getRentalStartDate() != null && wxRentContract.getRentalEndDate() != null){ - int[] array = DateUtils.getDiff(wxRentContract.getRentalStartDate(),wxRentContract.getRentalEndDate()); + //加1天 + Date newEndDate = DateUtils.getDaySet(wxRentContract.getRentalEndDate(),Calendar.DATE,1); + int[] array = DateUtils.getDiff(wxRentContract.getRentalStartDate(),newEndDate); result.put("totalPeriodMonth",array[0]); result.put("totalPeriodDay",array[1]); } @@ -929,16 +931,19 @@ public class WxRentContractServiceImpl implements WxRentContractService { long needpay; - //当天也算,加1天 - //Date newEndDate = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1); //按日 if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode())){ - double needpayD = this.getNeedPay(0,price,wxBillRent.getStarttime(),wxBillRent.getEndtime()); + double needpayD = WxRentContractServiceImpl.getNeedPay(0,price,wxBillRent.getStarttime(),wxBillRent.getEndtime()); needpay = new Double(needpayD).longValue(); }else{ + //当天也算,加1天 + Date newEndDate = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1); //按月 - double needpayD = this.getNeedPay(price,0,wxBillRent.getStarttime(),wxBillRent.getEndtime()); - needpay = new Double(needpayD).longValue(); + int[] diff = DateUtils.getDiff(wxBillRent.getStarttime(),newEndDate); + needpay = diff[0]*price; + + double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxRentContract.getRentalEndDate()); + needpay += diff[1] * oneDayProce; } wxBillRent.setNeedPay(needpay); @@ -1742,7 +1747,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { public static double getNeedPay(long monthPrice,long dayPrice,Date start,Date end){ SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdM = new SimpleDateFormat("MM"); - Double total; + Double total = new Double(0); + int[] diff; int dayCount = DateUtils.getMonthDayCount(start); double price; @@ -1752,11 +1758,17 @@ public class WxRentContractServiceImpl implements WxRentContractService { price = dayPrice; } Date currEnd = DateUtils.getLastDayForMonth(start); - int[] diff = DateUtils.getDiff(start,currEnd); - total = (diff[1]+1) * price; + + System.out.println("-----------"); + System.out.println(sd.format(start)); + System.out.println(sd.format(currEnd)); if(sdM.format(start).equals(sdM.format(end))){ + total = 1 * price; //算1天 return total; + }else{ + diff = DateUtils.getDiff(start,currEnd); + total = (diff[1]+1) * price; } System.out.println("-------total:"+total);