From 351a335e1e77053ea78841a5caa0ad160b73cc5a Mon Sep 17 00:00:00 2001 From: luozukai Date: Fri, 31 May 2019 13:56:56 +0800 Subject: [PATCH] =?UTF-8?q?[bug][=E4=BF=AE=E6=94=B9][=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E8=B4=A6=E5=8D=95=E9=97=AE=E9=A2=98]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxPropertyContractServiceImpl.java | 13 +++++++--- .../impl/WxRentContractServiceImpl.java | 25 ++++++++++--------- 2 files changed, 23 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 530b20244..3c5e23372 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -554,16 +554,23 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService //按日 if (wxPropertyContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){ - double needpayD = WxRentContractServiceImpl.getNeedPay(0,price,wxBillProperty.getStarttime(),wxBillProperty.getEndtime()); + Double priceD = new Double(price); + double needpayD = WxRentContractServiceImpl.getNeedPay(0,priceD,wxBillProperty.getStarttime(),wxBillProperty.getEndtime()); needpay = new Double(needpayD).longValue(); }else{ + //年 需要除12 + Double priceD = new Double(price); + if(EnumPriceUnit.Y.getCode().equals(wxPropertyContract.getPriceUnit())){ + priceD = new Double(price)/12; + } + //当天也算,加1天 Date newEndDate = DateUtils.getDaySet(wxBillProperty.getEndtime(),Calendar.DATE,1); //按月 int[] diff = DateUtils.getDiff(wxBillProperty.getStarttime(),newEndDate); - needpay = diff[0]*price; + needpay =new Double( diff[0]*priceD).longValue(); - double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxPropertyContract.getRentalEndDate()); + double oneDayProce = priceD/DateUtils.getMonthDayCount(wxPropertyContract.getRentalEndDate()); needpay += diff[1] * oneDayProce; } wxBillProperty.setNeedPay(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 6ed5276ad..452ce435d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -760,13 +760,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { long[] priceArr = new long[arraySize]; for (int i = 0; i < arraySize; i++) { JSONObject rentInfoObject = rentInfoArray.getJSONObject(i); - //年 需要除12 - if(EnumPriceUnit.Y.getCode().equals(priceUnit)){ - BigDecimal yprice = new BigDecimal(rentInfoObject.getString("price")).divide(new BigDecimal(12),2, BigDecimal.ROUND_HALF_DOWN); - priceArr[i] = yprice.multiply(new BigDecimal(100)).longValue(); - }else{ - priceArr[i] = new BigDecimal(rentInfoObject.getString("price")).multiply(new BigDecimal(100)).longValue(); - } + priceArr[i] = new BigDecimal(rentInfoObject.getString("price")).multiply(new BigDecimal(100)).longValue(); } priceList.add(priceArr); //大于一年 @@ -946,16 +940,23 @@ public class WxRentContractServiceImpl implements WxRentContractService { //按日 if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){ - double needpayD = WxRentContractServiceImpl.getNeedPay(0,price,wxBillRent.getStarttime(),wxBillRent.getEndtime()); + Double priceD = new Double(price); + double needpayD = WxRentContractServiceImpl.getNeedPay(0,priceD,wxBillRent.getStarttime(),wxBillRent.getEndtime()); needpay = new Double(needpayD).longValue(); }else{ + //年 需要除12 + Double priceD = new Double(price); + if(EnumPriceUnit.Y.getCode().equals(wxRentContract.getPriceUnit())){ + priceD = new Double(price)/12; + } + //当天也算,加1天 Date newEndDate = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1); //按月 int[] diff = DateUtils.getDiff(wxBillRent.getStarttime(),newEndDate); - needpay = diff[0]*price; + needpay =new Double( diff[0]*priceD).longValue(); - double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxRentContract.getRentalEndDate()); + double oneDayProce = priceD/DateUtils.getMonthDayCount(wxRentContract.getRentalEndDate()); needpay += diff[1] * oneDayProce; } @@ -1778,7 +1779,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { * @param end * @return */ - public static double getNeedPay(long monthPrice,long dayPrice,Date start,Date end){ + public static double getNeedPay(long monthPrice,Double dayPrice,Date start,Date end){ SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdM = new SimpleDateFormat("yyyy-MM"); Double total; @@ -1842,7 +1843,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { Date start = sd.parse("2020-05-29"); Date end = sd.parse("2020-07-28"); - System.out.println("===="+new WxRentContractServiceImpl().getNeedPay(tprice,0,start,end));; +// System.out.println("===="+new WxRentContractServiceImpl().getNeedPay(tprice,0,start,end));; } public static List initBillTimeList(Date start,Date end,Integer adjustPeriod,Integer dayType,int receivePeriod){